Skip to content

PDO

  • 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
    sqlite3
    sqlite> .open database.sqlite
    sqlite> 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

https://github.com/nn-teach/PHP-intro/tree/PDO---clean-start

  • Créer un fichier admin_data.php puis l’inclure au début du fichier blog.php

  • Dans le ficher admin_data.php cré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.php pour afficher les articles. (supprimer la variable articles et modifier la boucle)

admin_data.php
<?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ées
try {
// 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();
}
?>
blog.php
<?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'; ?>

https://github.com/nn-teach/PHP-intro/tree/PDO-Article