La semaine précédente nous avons vu comment ajouter des données dans notre BDD (si vous ne l’avez pas encore lu, il est disponible ICI). Maintenant que nous pouvons envoyer des données vers cette base, il faut désormais les récupérer et les afficher. Ce sera l’objet du chapitre d’aujourd’hui: Comment créer une page d’accueil qui affiche les titres et dates des derniers articles.
Cet article va être court car étant possible de généraliser le cas de récupération des données, nous allons pouvoir aussi généraliser les conditions pour récupérer ces données. Cette fois, nous allons aller plus profondément dans l’utilisation du langage PHP en utilisant des fonctions prédéfinies qui nous faciliteront le travail. C’est parti.
Comme toujours, il faut d’abord se connecter à la base de donnée, pour cela toujours le même code:
$conn = mysqli_connect('localhost', 'root','', 'cms');
Maintenant, il va falloir sélectionner toutes les données de la table ‘articles’. Nous exécutons donc une query qui se chargera de faire ce que l’on veut:
$select = "SELECT * FROM articles";
$result = mysqli_query($conn, $select);
Si vous faites un var_dump($result); vous verrez que cela nous renvoie un tableau. Une fonction PHP nommée mysqli_num_rows permet de récupérer comme son nom l’indique, le nombre de lignes dans un tableau.
Pour vérifier que notre table n’est pas vide, on vérifiera que notre fonction renvoie un résultat supérieur à 0.
Nous allons aussi utiliser la fonction mysqli_fetch_assoc de PHP. Elle permet de récupérer une ligne de résultat sous forme de tableau associatif.
Pour couvrir toutes les lignes de notre table, nous allons utiliser une boucle ‘while’.
En français, while signifie ‘Tant que’ et donc cette boucle s’exécute Tant que la condition est vérifiée.
En utilisant ces deux fonctions, on arrive avec ce code:
if (mysqli_num_rows($result) > 0){
while ($data = mysqli_fetch_assoc($result)){
echo $data['title']."<br />";
echo $data['date']."<br /><br />";
}
}
Dans un premier temps on vérifie que le tableau n’est pas vide (ligne 1) et ensuite le tableau se crée. $data est une variable dite ‘locale’ car elle est créée dans une boucle. Elle n’existe que dans cette boucle.
‘echo’ permet d’afficher une variable ou du texte depuis php. Ici on affiche donc le titre, on saute une ligne, puis on affiche la data à laquelle l’article a été posté et on saute deux lignes. Ensuite se répète ce motif jusqu’à ce que la table contenant nos articles ait été entièrement parcourue.
Nous pouvons accéder à notre site, pour vérifier ce que cela affiche. Nous constatons que cela fonctionne comme prévu. Et vous devriez avoir un rendu similaire à celui-là:
Pour finir, on se retrouve donc avec un fichier index.php (à la racinne du répertoire) comme ceci:
<html>
<head>
<title>Accueil</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$conn = mysqli_connect('localhost', 'root','', 'cms');
$sql = "SELECT * FROM articles";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0){
while ($data = mysqli_fetch_assoc($result)){
echo $data['title']."<br />";
echo $data['date']."<br /><br />";
}
}
?>
</body>
</html>
Sur index.php nous n’affichons que la date et le titre car ce serait trop brouillon d’afficher toutes les données relatives aux articles.
La semaine prochaine nous allons créer la page relative aux article. Cette dernière permettra, elle, d’afficher toutes les infos sur notre article sélectionné.
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 !