Le code du TP blog et ses défauts



Nous allons reprendre le TP blog sur lequel nous avons travaillé un peu plus tôt dans le cours.


Nous allons nous intéresser au code de la page qui affiche les derniers billets du blog. Voici ce que nous avions produit à la fin de ce TP :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

    <head>

        <title>Mon blog</title>

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    <link href="style.css" rel="stylesheet" type="text/css" /> 

    </head>

         

    <body>

        <h1>Mon super blog !</h1>

        <p>Derniers billets du blog :</p>

  

<?php

// Connexion à la base de données

try

{

    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');

}

catch(Exception $e)

{

        die('Erreur : '.$e->getMessage());

}

 

// On récupère les 5 derniers billets

$req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT 0, 5');

 

while ($donnees = $req->fetch())

{

?>

<div class="news">

    <h3>

        <?php echo htmlspecialchars($donnees['titre']); ?>

        <em>le <?php echo $donnees['date_creation_fr']; ?></em>

    </h3>

     

    <p>

    <?php

    // On affiche le contenu du billet

    echo nl2br(htmlspecialchars($donnees['contenu']));

    ?>

    <br />

    <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>

    </p>

</div>

<?php

} // Fin de la boucle des billets

$req->closeCursor();

?>

</body>

</html>


Et alors ? Ce code marche bien, non ? On repère les requêtes SQL, le HTML, etc. Moi je le comprends bien en tout cas, je ne vois pas ce qu'il faut améliorer !


À l'époque, nous avions écrit le script PHP de façon intuitive sans trop nous soucier de son organisation. Résultat : notre code était un joyeux mélange d'instructions PHP, de requêtes SQL et de HTML. Sur une page simple comme celle-là, cela ne posait pas trop de problèmes car il n'y avait pas beaucoup de lignes de code. En revanche, si vous ajoutez plus tard des fonctionnalités et des requêtes SQL à cette page… cela va vite devenir un vrai capharnaüm !


Si on prend la peine de construire cette page en respectant l'architecture MVC, cela va nous prendre un peu plus de temps : il y aura probablement trois fichiers au lieu d'un seul, mais au final le code sera beaucoup plus clair et mieux découpé.


L'intérêt de respecter l'architecture MVC ne se voit pas forcément de suite. En revanche, si vous améliorez votre site plus tard, vous serez bien heureux d'avoir pris la peine de vous organiser avant ! De plus, si vous travaillez à plusieurs, cela vous permet de séparer les tâches : une personne peut s'occuper du contrôleur, une autre de la vue et la dernière du modèle. Si vous vous mettez d'accord au préalable sur les noms des variables et fonctions à appeler entre les fichiers, vous pouvez travailler ensemble en parallèle et avancer ainsi beaucoup plus vite !

Créé avec HelpNDoc Personal Edition: Comment protéger vos PDF avec le cryptage et les mots de passe