• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/11/2019

Isoler l'accès aux données

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Notre code est déjà beaucoup mieux, mais nous pouvons aller un cran plus loin. Nous allons séparer complètement l'accès aux données (tout le traitement SQL) dans un fichier spécifique.

Nous allons avoir 3 fichiers :

  • modele.php : se connecte à la base de données et récupère les billets.

  • affichageAccueil.php : affiche la page. Ce fichier ne va pas changer du tout.

  • index.php : fait le lien entre le modèle et l'affichage (oui, juste ça !).

modele.php

Notre nouveau fichier modele.php contient une fonction getBillets() qui renvoie la liste des billets :

<?php
function getBillets()
{
	try
	{
	    $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
	}
	catch(Exception $e)
	{
	    die('Erreur : '.$e->getMessage());
	}

	$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');

	return $req;
}
?>

affichageAccueil.php

L'affichage n'a pas du tout changé. Je vous remets le code ici, mais il n'y a aucune différence par rapport au chapitre précédent :

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mon blog</title>
        <link href="style.css" rel="stylesheet" /> 
    </head>
        
    <body>
        <h1>Mon super blog !</h1>
        <p>Derniers billets du blog :</p>
 
        
        <?php
        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
            echo nl2br(htmlspecialchars($donnees['contenu']));
            ?>
            <br />
            <em><a href="#">Commentaires</a></em>
            </p>
        </div>
        <?php
        }
        $req->closeCursor();
        ?>
    </body>
</html>

index.php

La nouveauté, c'est désormais l'index (aussi appelé le contrôleur) qui sert d'intermédiaire entre le modèle et la vue :

<?php
require('modele.php');

$req = getBillets();

require('affichageAccueil.php');
?>

3 lignes, 3 étapes toutes simples :

  1. On charge le fichier du modèle. Il ne se passe rien pour l'instant, parce qu'il ne contient qu'une fonction.

  2. On appelle la fonction, ce qui exécute le code à l'intérieur de modele.php . On y récupère la liste des billets dans la variable $req.

  3. On charge le fichier de la vue (l'affichage), qui va présenter les informations dans une page HTML.

Voilà, notre code commence à avoir les bases d'une structure plus solide !

Essayez !

https://www.codevolve.com/api/v1/publishable_key/2A9CAA3419124E3E8C3F5AFCE5306292?content_id=7938cfd2-aaf6-45a6-88de-8a787a0d6eb8

Exemple de certificat de réussite
Exemple de certificat de réussite