Affichage des données

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.

Dans cette partie du tutorielle, nous allons voir comment  afficher les données de notre table "COMMENTAIRES". Pour ce faire, nous allons utiliser plusieurs fonctions indispensables et notamment la fameuse boucle while() . Pour bien comprendre, je vais "disséquer" les étapes une par une et expliquer au mieux celles-ci.

Allé, c'est partie.

On reprend notre fichier "commentaire.php" et cette fois-ci nous allons écrire notre code en dessous de notre formulaire. Comme d'habitude, on ouvre une connection avec la base de données puis on sélectionne toutes les entrées (SELECT *).

<?php
// on se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On sélectionne tout dans la table COMMENTAIRES par "id" croissant $result = mysql_query("SELECT * FROM COMMENTAIRES ORDER BY id ASC");   //On vérifie que la table contient quelque chose if(mysql_num_rows($result) == 0) { echo '<p>Aucun commentaire!</p>'; } //Si il y a des entrées else { //Ici le reste du code //on ferme le else } // Fermeture de la connexion à la base de données mysql_close(); ?>
Je vous rappel que toutes les entrées sont contenuent dans la variable nommé $result.

Le premier "soucis" que l'on va rencontrer sur l'affichage des commentaires, c'est comment afficher un texte si notre table est complètement vide. Nous voullons donc un code qui dit : "Si il n'y a aucune entrée (donc 0), on affiche notre texte.".

Dans un premier temps, on utilise une simple condition PHP soit if() .
En second, on utilise la fonction mysql_num_rows() qui permet de retourner le nombre de lignes d'un résultat MySQL. En gros, cette fonction va compter le nombre d'entrée.

Après, c'est de la logique :
On veut compter quoi? -> le nombre de ligne, soit :
if(mysql_num_rows())
Le nombre de ligne de quoi? -> de la variable $result, soit :
if(mysql_num_rows($result))
Pour faire quoi? -> pour afficher un texte si n'y a rien, soit : if(mysql_num_rows($result) == 0)

Boucle while() et mysql_fetch_array()

La boucle while() permet de répéter une suite d'instructions tant qu'une condition est vraie.
while signifie en gros («tant que») et prend généralement la forme suivante :

while (condition) {
  instruction(s);
}

La fonction mysql_fetch_array() permet de retourner une ligne de résultat MySQL sous la forme d'un tableau.
Ici, nous voullons dans notre condition retourner les résultats de notre variable $result qui contient toutes les entrées de notre table "COMMENTAIRES".

Ce qui nous donne donc:

while (mysql_fetch_array($result)) {
  instruction(s);
}

Pour terminer notre condition, nous allons tout simplement lui attribuer une variable. Dans cette exemple, je nomme ma variable $affiche_commentaire et c'est cette variable qui va nous servir d'instruction(s), donc, qui va nous permettre d'afficher nos résultats .

while ($affiche_commentaire = mysql_fetch_array($result)) {
  instruction(s);
}
Notre code :
<?php
// on se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On sélectionne tout dans la table COMMENTAIRES par "id" croissant $result = mysql_query("SELECT * FROM COMMENTAIRES ORDER BY id ASC");   //On vérifie que la table contient quelque chose if(mysql_num_rows($result) == 0) { echo '<p>Aucun commentaire!</p>'; } //Si il y a des entrées else { //On fait une boucle pour sortir toutes les entrées while($affiche_commentaire = mysql_fetch_array($result)) {   //Ici les instructions //On ferme la boucle while } //on ferme le else } // Fermeture de la connexion à la base de données mysql_close(); ?>

Les instructions de la boucle while()

Maintenant que notre boucle est "préparé", on va lui demandé d'affiché nos instructions.

Quelles sont les instructions?

  1. Afficher les numéros id.
  2. Afficher les pseudos.
  3. Afficher les commentaires.

Quand aux adresses email, on les gardent pour nous, sinon ça va raller ^^.

Et comment on fait ?

C'est très simple, on utilise notre variable $affiche_commentaire suivit du nom du champ à afficher entre crochet et le tout concaténé.  En PHP, la concaténation d'une chaîne s'effectue grâce au point, c'est pour celà que chaque instruction est précédé de '. et se termine par .' .

'.$affiche_commentaire["id"].'
'.$affiche_commentaire["pseudo"].'
'.$affiche_commentaire["commentaire"].'

Et pour afficher le tout, on utilise un simple "echo".

<?php
// on se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On sélectionne tout dans la table COMMENTAIRES par "id" croissant $result = mysql_query("SELECT * FROM COMMENTAIRES ORDER BY id ASC");   //On vérifie que la table contient quelque chose if(mysql_num_rows($result) == 0) { echo '<p>Aucun commentaire!</p>'; } //Si il y a des entrées else { //On fait une boucle pour sortir toutes les entrées while($affiche_commentaire = mysql_fetch_array($result)) { //On affiche les entrées echo '<p>'.$affiche_commentaire["id"].'-Commentaire de '.$affiche_commentaire["pseudo"]
.' :<br/>'; echo ''.nl2br($affiche_commentaire["commentaire"]).'</p>'; //On ferme la boucle while } //on ferme le else } // Fermeture de la connexion à la base de données mysql_close(); ?>
Principe d'une boucle while

nl2br()

Vous avez sans doute remarquer l'utilisation de cette fonction lors de l'affichage des commentaires dans notre code ...

'.nl2br($affiche_commentaire["commentaire"]).'
Mais à quoi sert  nl2br() ?

nl2br() permet tout simplement de convertir en balise XHTML les retours à la ligne d'une chaine. En gros, cette fonction agit comme la balise <br/>. Si vous avez du mal à comprendre son utilitée, amusez-vous à enregister un commentaire avec plein de retour à la ligne via votre formulaire. Ensuite vous allez sous PhpMyAdmin pour voir comment votre commentaire a été enregistré et vous constaterez que malgré vos retour à la ligne acharné, que aucune balise <br/> n'est présente ... d'ou son utilitée .

Voilou, ce tuto. prend fin. et vous savez maintenant comment afficher des données enregistrées en base de données.

Voir/déposer un commentaire (3) | Signaler un problème