La semaine passée, nous avons créé notre page d’accueil (si vous n’avez pas encore lu ce chapitre, il est accessible ICI), mais comme nous souhaiterions aussi avoir accès à toutes les données d’un seul article lorsque l’on clique dessus, il faut créer une page spécialement dédiée aux articles. Ce sera l’objet du chapitre d’aujourd’hui.
Tout d’abord, il faut modifier notre page d’accueil, car nous souhaitons pouvoir cliquer sur le titre d’un article pour y accéder.
A la ligne 15 de notre fichier index.php:
Il y avait initialement:
echo $data['title']."<br />";
et nous allons remplacer ce code par celui-ci:
echo '<a href=article.php?id='.$data['ID'].'>'.$data['title'].'</a>'."<br />";
le <a href=””>
renvois vers un lien cliquable. article.php sera notre page d’article, et pour récupérer l’ID unique de l’article que l’on veut voir détaillé, nous ajoutons ‘?id=”$data[‘id’]’.
Maintenant créons le fichier article.php. Pour simplifier le travail et car il ne sera pas très différents de la page d’accueil, nous pouvons réutiliser le code de index.php comme base.
Première différence: Il va nous falloir récupérer la valeur de ?id=
Pour cela, nous pouvons définir une variable $id qui a pour valeur celle de ?id=
$id = $_GET['id'];
Aussi, cette fois on ne veut pas récupérer toutes les données de la table mais uniquement celle où ID (de la table) = $id (donc celui dont on veut récupérer les infos). Il faut donc modifier la query que l’on exécute comme suit:
$sql = "SELECT * FROM articles WHERE ID = '$id'";
La boucle if() peut être supprimée, car nous partons du principe que si l’on a cliqué sur le titre d’un article sur la page d’accueil, il existe dans notre Base.
Seul le contenu de la boucle while() doit être modifié:
echo "TITRE: ".$data['title']."<br /><br />";
echo "SOUS-TITRE: ".$data['subtitle']."<br /><br />";
echo "CONTENU: ".$data['content']."<br /><br />";
echo "DATE: ".$data['date']."<br /><br />";
echo "NOTE: ".$data['note']."<br /><br />";
Avec ce code j’affiche tous les éléments importants de l’article. A vous de remplacez les $data[] par vos nom de colonne si vous avez choisis de ne pas prendre les mêmes que moi.
Dans le fichier final j’ai pris la liberté d’ajouter en haut de la page un lien cliquable ‘Retour à l’index’ pour éviter d’a chaque fois retaper l’url.
Pour finir, voici de code source de la page article.php que nous venons de construire:
<?php
$id = $_GET['id'];
?>
<html>
<head>
<title>Accueil</title>
<meta charset="utf-8" />
</head>
<body>
<a href="./index.php">Retour à l'index</a><br /><br />
<?php
if (isset($_GET['id'])){
$conn = mysqli_connect('localhost', 'root','', 'cms');
$sql = "SELECT * FROM articles WHERE ID = '$id'";
$result = mysqli_query($conn, $sql);
while ($data = mysqli_fetch_assoc($result)){
echo "TITRE: ".$data['title']."<br /><br />";
echo "SOUS-TITRE: ".$data['subtitle']."<br /><br />";
echo "CONTENU: ".$data['content']."<br /><br />";
echo "DATE: ".$data['date']."<br /><br />";
echo "NOTE: ".$data['note']."<br /><br />";
}
}
?>
</body>
</html>
J’espère que ce chapitre vous aura plu. Maintenant vous savez afficher tous les articles de notre base mais aussi les afficher individuellements.
La semaine prochaine nous verrons comment ajouter la possibilité d’éditer des articles sans avoir à se connecter à chaque fois à PhpMyAdmin pour le faire.
N’hésitez pas à partager si vous pensez que cela peut aussi permettre d’aider d’autres personnes.
Merci pour votre présence sur le blog, on avance ensemble !