📘 Chapitre 2 – Exécuter une requête SELECT et afficher les résultats

1. 🎯 Objectif pédagogique

Être capable d’exécuter une requête SELECT via PDO et d’afficher les résultats dans une page PHP.

2. 📚 Concepts abordés

  • Méthode query() et prepare()/execute() de PDO
  • Récupération des résultats avec fetch() et fetchAll()
  • Boucles pour afficher les données (while/foreach)
  • Gestion des exceptions lors de l’exécution des requêtes
  • Affichage formaté dans une page web (HTML + PHP)

3. 🧠 Explication théorique

Pour exécuter une requête SELECT, PDO offre deux approches principales :

  • query() : utilisée pour des requêtes simples et directes.
  • prepare() / execute() : utilisée pour des requêtes plus complexes ou sécurisées (avec paramètres).

Exemple de récupération simple :

$sql = "SELECT * FROM Utilisateur";
$result = $pdo->query($sql);

Les données peuvent ensuite être affichées en utilisant fetch() (ligne par ligne) ou fetchAll() (toutes les lignes en un tableau).

4. 🛠 Tutoriel pratique

Résumé du travail : Créer un fichier liste_utilisateurs.php qui affiche les utilisateurs d’une table Utilisateur.

Arborescence projet :

projet_bdd/
 ├── connexion.php
 └── liste_utilisateurs.php

Étape 1 : Préparer la table Utilisateur

Exécuter dans MySQL :

CREATE TABLE Utilisateur (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(100),
  email VARCHAR(100)
);

INSERT INTO Utilisateur (nom, email)
VALUES ('Alice', 'alice@test.com'), ('Bob', 'bob@test.com');

Étape 2 : Écrire la requête SELECT

Dans liste_utilisateurs.php :

<?php
require 'connexion.php';

try {
    $sql = "SELECT * FROM Utilisateur";
    $stmt = $pdo->query($sql);

    $utilisateurs = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($utilisateurs as $user) {
        echo "ID : " . $user['id'] . " - Nom : " . $user['nom'] . " - Email : " . $user['email'] . "<br>";
    }
} catch (PDOException $e) {
    echo "Erreur : " . $e->getMessage();
}

Étape 3 : Test et affichage

Étape 4 : Affichage sous forme de tableau HTML (optionnel)

echo "<table border='1'>
<tr><th>ID</th><th>Nom</th><th>Email</th></tr>";
foreach ($utilisateurs as $user) {
    echo "<tr><td>{$user['id']}</td><td>{$user['nom']}</td><td>{$user['email']}</td></tr>";
}
echo "</table>";

5. 🧾 Résumé et points-clés

  • query() exécute une requête simple et retourne un objet PDOStatement.
  • fetchAll(PDO::FETCH_ASSOC) retourne un tableau associatif de tous les résultats.
  • Utiliser des boucles pour parcourir et afficher les données.
  • Toujours gérer les erreurs avec try/catch.