PDO
Activité pratique
Section titled “Activité pratique”Mise en place
Section titled “Mise en place”-
On repart d’un fichier simple pour le blog (On efface le code avec session)
blog.php <?php include 'header.php'; ?><h1>Mini-Blog</h1><?php// Simuler un stockage en tableau$articles[] = ["titre" => "Mon Titre", "contenu" => "Mon contenu"];echo "<h2>Articles publiés</h2>";foreach ($articles as $article) {echo "<article>";echo "<h3>" . htmlspecialchars($article['titre']) . "</h3>";echo "<p>" . nl2br(htmlspecialchars($article['contenu'])) . "</p>";echo "</article>";}?><?php include 'footer.php'; ?> -
On créer une base de donnée et une table articles pour stocker nos articles
Terminal window sqlite3sqlite> .open database.sqlitesqlite> CREATE TABLE articles (id INTEGER PRIMARY KEY AUTOINCREMENT,titre TEXT NOT NULL,contenu TEXT NOT NULL); -
Puis on créer deux articles de test
Terminal window sqlite> INSERT INTO articles (titre, contenu) VALUES ('Article 1','lorem ipsum');sqlite> INSERT INTO articles (titre, contenu) VALUES ('Article 2','lorem ipsum'); -
Vous pouvez vérifier votre base de donnée dans vscode en ajoutant l’extension SQLite Viewer
Mise en place repo
Section titled “Mise en place repo”https://github.com/nn-teach/PHP-intro/tree/PDO---clean-start
Exercice
Section titled “Exercice”-
Créer un fichier
admin_data.phppuis l’inclure au début du fichierblog.php -
Dans le ficher
admin_data.phpcréer une variable $articles = []; -
Créer une connexion à la base de donnée
$pdo = new \PDO('sqlite:' . realpath("./database.sqlite")); -
Récupérer les données de la table articles et les mettre dans la variable $articles Vous pouvez vérifier que la variable $articles contient bien les données en ajoutant cette ligne
echo "<pre>".print_r($articles,true)."</pre>";die;Commenter la ligne en ajoutant
//devant lorsque vous obtenez bien les données -
Modifier le fichier
blog.phppour afficher les articles. (supprimer la variable articles et modifier la boucle)
Correction
Section titled “Correction”<?php//une variable PHP de type tableau pour stocker les articles que l'on va récupérer dans la BDD$articles = [];
//Base de donnéestry { // Connextion à la base de données SQLite $pdo = new \PDO('sqlite:' . realpath("./database.sqlite"));
//Récupération des données de la table articles $query = $pdo->prepare('SELECT * FROM articles'); $query->execute(); $articles = $query->fetchAll(PDO::FETCH_CLASS); //echo "<pre>".print_r($articles,true)."</pre>";die; //décommenter pour voir le condtenu du tableau articles
} catch (Exception $e) { //le bloc try / catch permet de capturer les erreurs print "Erreur base de données : " . $e->getMessage() . "<br/>"; die();}?><?php include 'admin_data.php'; ?><?php include 'header.php'; ?><h1>Mini-Blog</h1><?php echo "<h2>Articles publiés</h2>";foreach ($articles as $article) { echo "<article>"; echo "<h3>" . htmlspecialchars($article->titre) . "</h3>"; echo "<p>" . nl2br(htmlspecialchars($article->contenu)) . "</p>"; echo "</article>";}?><?php include 'footer.php'; ?>