Tp 3 php functions utils blogpoo
Thème :
Junior
1 vues ·7/10 leçons

06 - Utilisation dans l’Accueil et l’Affichage

Dans ce document, nous allons voir comment les fonctions utilitaires sont appelées dans les pages publiques du blog : l’index (liste des articles) et la page de lecture d’un article.


1. Page d’accueil (index.php)

Le Code Complet

<?php

declare(strict_types=1);

session_start();
require_once 'database/database.php';
require_once 'flash.php';
require_once 'app/helpers.php';

// 1. Récupération du total pour la pagination
$totalItems = countArticles();

$itemsPerPage = 12;
$currentPage = (int)($_GET['page'] ?? 1);
$totalPages = (int)ceil($totalItems / $itemsPerPage);

// 2. Calcul du décalage (offset)
$offset = ($currentPage - 1) * $itemsPerPage;

// 3. Récupération des articles paginés
$articles = findAllArticles($itemsPerPage, $offset);

render('blog/index', [
    'pageTitle' => 'Notre blog d\'accueil',
    'articles' => $articles,
    'currentPage' => $currentPage,
    'totalPages' => $totalPages
], 'blog-layout');

Explications détaillées

  1. countArticles() : Au lieu d’écrire une requête SELECT COUNT(*), on appelle cette fonction. Elle nous retourne directement un entier. C’est propre et réutilisable.
  2. findAllArticles($limit, $offset) : C’est le cœur de la page. On lui passe le nombre d’articles par page (12) et le point de départ ($offset). La fonction s’occupe de toute la complexité SQL (jointures, tris, limites).
  3. L’objet $articles : La variable $articles contient maintenant un tableau propre que l’on passe directement à la vue render().

2. Page Article (user-article-show.php)

Le Code Complet (Extrait)

// ... initialisation ...
$article_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

// 1. Récupération de l'article seul
$article = findArticle((int) $article_id);

// 2. Récupération des commentaires de cet article
$commentaires = findCommentsByArticle((int) $article_id);

// 3. Récupération des statistiques globales
$usersCount = countUsers();
$commentsCount = countComments();
$articlesCount = countArticles();

// 4. Récupération des derniers articles pour la sidebar
$latestArticles = findAllArticles(5, 0);

render('blog/user-article-show', [
    // ... passage des variables ...
], 'blog-layout');

Explications détaillées

  1. findArticle($id) : On récupère toutes les colonnes d’un article précis. Plus besoin de prepare ou fetch ici, la fonction nous renvoie soit le tableau de l’article, soit false s’il n’existe pas.
  2. findCommentsByArticle($id) : Cette fonction est magique car elle nous renvoie non seulement les commentaires, mais elle fait aussi la jointure avec la table users pour nous donner le pseudo de chaque auteur.
  3. Les fonctions de compte (countUsers, etc.) : On les utilise pour remplir le bloc “Statistiques” de la barre latérale. C’est beaucoup plus lisible que d’avoir 4 requêtes SQL à la suite.
  4. findAllArticles(5, 0) : On réutilise la même fonction que pour l’accueil, mais cette fois on demande seulement les 5 derniers articles (offset 0) pour l’affichage “Derniers articles” dans la sidebar.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 06 - Utilisation dans l'Accueil et l'Affichage. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.