PHP : Pages 'liste' et pages 'détails'

Quand tu développes un site web dynamique, tu as souvent une page liste (ex. tous les livres) et une page détails (ex. fiche d’un livre). Pour accéder à la fiche d’un élément, on utilise généralement son identifiant (ID), qu’on passe dans l’URL.

    5tq
  • Intérmédiaire

Objectif du cours

À la fin de ce cours, tu seras capable de :

  • Créer une page "liste" d’éléments (ex : livres, produits…)
  • Créer un lien vers une page "détails" à partir d’un ID
  • Récupérer l’ID dans l’URL avec PHP ($_GET)
  • Afficher dynamiquement les informations d’un seul élément

Ce système est utilisé partout : site.com/livre.php?id=5 → on veut voir le livre avec l’ID 5.


Étape 1 : Créer une page liste avec des liens

Imaginons une page livres.php qui liste des livres stockés dans un tableau PHP.

<?php
$livres = [
  ['id' => 1, 'titre' => '1984'],
  ['id' => 2, 'titre' => 'Le Petit Prince'],
  ['id' => 3, 'titre' => 'Fahrenheit 451']
];
?>

<h1>Liste des livres</h1>
<ul>
  <?php foreach ($livres as $livre): ?>
    <li>
      <a href="details.php?id=<?= $livre['id'] ?>">
        <?= $livre['titre'] ?>
      </a>
    </li>
  <?php endforeach; ?>
</ul>

📌 Ici, chaque lien contient un paramètre id dans l’URL.

🔍 Que fait cette ligne exactement ?

<a href="details.php?id=<?= $livre['id'] ?>">

Cette ligne génère un lien HTML dynamique, dont l'URL contient un paramètre id.


✨ Décomposons-la :

1. details.php?id=<?= $livre['id'] ?>

  • details.php est le nom de la page cible. C’est la page qui affichera les détails d’un seul livre.

  • ?id= commence la partie dynamique de l’URL : on passe un paramètre GET nommé id.

  • <?= $livre['id'] ?> est une écriture courte de <?php echo $livre['id']; ?>.

    • Cela signifie : "affiche la valeur de l'ID du livre actuel dans la boucle".

Par exemple, si $livre['id'] vaut 2, alors le lien devient :

<a href="details.php?id=2">

📌 Résultat dans la page HTML générée

Tu obtiendras un lien cliquable comme :

<a href="details.php?id=2">Le Petit Prince</a>

Quand l’utilisateur clique dessus, il est redirigé vers la page details.php, et l’ID 2 est transmis via l’URL.

Pourquoi c’est utile ?

Parce que ça te permet de réutiliser la même page details.php pour afficher n’importe quel livre. Il suffit que details.php lise l’ID dans l’URL et affiche les bonnes infos.


Étape 2 : Créer la page details.php

Dans cette page, on va lire l’ID depuis l’URL et afficher les informations du livre correspondant.

<?php
// Exemple de données
$livres = [
  1 => ['titre' => '1984', 'auteur' => 'George Orwell'],
  2 => ['titre' => 'Le Petit Prince', 'auteur' => 'Saint-Exupéry'],
  3 => ['titre' => 'Fahrenheit 451', 'auteur' => 'Ray Bradbury']
];

// Vérifie que l'ID est bien présent dans l'URL
if (isset($_GET['id'])) {
  $id = (int) $_GET['id'];

  // Si le livre existe
  if (isset($livres[$id])) {
    $livre = $livres[$id];
  } else {
    die("Livre non trouvé.");
  }
} else {
  die("ID manquant.");
}
?>

<h1>Détails du livre</h1>
<p><strong>Titre :</strong> <?= htmlspecialchars($livre['titre']) ?></p>
<p><strong>Auteur :</strong> <?= htmlspecialchars($livre['auteur']) ?></p>

<a href="livres.php">⬅️ Retour à la liste</a>

Comment ça fonctionne ?

  • Dans livres.php, on construit un lien vers details.php?id=...
  • Le ?id=2 est ce qu’on appelle un paramètre GET dans l’URL
  • Dans details.php, on le récupère avec $_GET['id']
  • On utilise cet ID pour sélectionner les bonnes données

Résumé : 5 choses à retenir

  1. Tu peux passer des infos dans l’URL grâce à ?id=...
  2. Tu récupères ce paramètre avec $_GET['id']
  3. Toujours vérifier que l’ID est présent et valide
  4. Tu peux stocker les données dans un tableau ou une base de données
  5. Les liens dynamiques se font avec href="page.php?id=..."

Pour aller plus loin