Affichage des données de la base
Affichage des données de la table listeJV
Durée approximative de l'activité pratique (1h00) :
Pour la suite de l'initiation, on va crée une page web qui va lire une table d'une base de donnée contenant des descriptions de jeu vidéo.
Créer une requête
On va demander à MySQL de nous dire tout ce que contient la table listeJV.
Pour récupérer des informations de la base de données, nous avons besoin de notre objet représentant la connexion à la base.
$reponse = $bdd->query('Tapez votre requête SQL ici');
On demande ainsi à effectuer une requête sur la base de données (query en anglais signifie « requête »).
On récupère ce que la base de données nous a renvoyé dans un autre objet, que l'on a appelé ici $reponse .
Voici la première requête SQL que nous allons utiliser :
SELECT * FROM listeJV
Cela peut se traduire par : « Prendre tout ce qu'il y a dans la table listeJV ».
Analysons chaque terme de cette requête.
- SELECT : en langage SQL, le premier mot indique quel type d'opération doit effectuer MySQL. Dans ce chapitre, nous ne verrons que SELECT. Ce mot-clé demande à MySQL d'afficher ce que contient une table.
- * : après le SELECT, on doit indiquer quels champs MySQL doit récupérer dans la table. Si on n'est intéressé que par les champs « nom » et « support », il faudra taper :
SELECT nom, support FROM listeJV
Si vous voulez prendre tous les champs, tapez * . Cette petite étoile peut se traduire par « tout » : « Prendre tout ce qu'il y a… ».
- FROM : c'est un mot de liaison qui se traduit par « dans ». FROM fait la liaison entre le nom des champs et le nom de la table.
- listeJV : c'est le nom de la table dans laquelle il faut aller piocher.
Effectuons la requête avec la méthode que l'on vient de découvrir :
<?php
$reponse = $bdd->query('SELECT * FROM listeJV);
?>
$reponse contient maintenant la réponse de MySQL. L'ensemble des colonnes de la 1ère ligne.
Pour ne pas tout traiter d'un coup, on extrait cette réponse ligne par ligne, c'est-à-dire entrée par entrée.
Pour récupérer une entrée, on prend la réponse de MySQL et on y exécute fetch() , ce qui nous renvoie la première ligne.
<?php
$donnees = $reponse->fetch();
?>
fetch en anglais signifie « va chercher ».
$donnees est un array (tableau) qui contient champ par champ les valeurs de la première entrée. Par exemple, si vous vous intéressez uniquement au champ "typeDeJeu" , vous utiliserez l'array $donnees['typeDeJeu'] .
Il faut faire une boucle pour parcourir les entrées une à une. Chaque fois que vous appelez $reponse->fetch() , vous passez à l'entrée suivante. La boucle est donc répétée autant de fois qu'il y a d'entrées dans votre table.
En résumé cela donne :
<?php
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=initiation;charset=utf8', 'lecteurJV', 'lecteurJV');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
// Si tout va bien, on peut continuer
// On récupère tout le contenu de la table listeJV
$reponse = $bdd->query('SELECT * FROM listeJV');
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
Le jeu existe sur : <?php echo $donnees['support']; ?>, c'est un jeu de <?php echo $donnees['typeDeJeu']; ?> <br />
A sa sortie le jeu valait <?php echo $donnees['prix']; ?> <br />
Commentaires : <em><?php echo $donnees['commentaires']; ?></em>
</p>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
Ce qui affichera ceci lors de l'appel de la page listeJV.php

On fait une boucle pour chaque entrée de la table. On commence par l'entrée n° 1, puis l'entrée n° 2, etc. Chaque fois qu'on fait une nouvelle boucle, on passe en revue une autre entrée.
Quelle est la différence entre $reponse et $donnees ?
$reponse contenait toute la réponse de MySQL en vrac, sous forme d'objet.
$donnees est un array renvoyé par le fetch() . Chaque fois qu'on fait une boucle, fetch va chercher dans $reponse l'entrée suivante et organise les champs dans l'array $donnees .
La ligne while ($donnees = $reponse->fetch()) ...
Cette ligne fait deux choses à la fois :
- elle récupère une nouvelle entrée et place son contenu dans $donnees ;
- elle vérifie si $donnees vaut vrai ou faux.
Le fetch renvoie faux ( false ) dans $donnees lorsqu'il est arrivé à la fin des données, c'est-à-dire quand toutes les entrées ont été passées en revue. Dans ce cas, la condition du while vaut faux et la boucle s'arrête.
Vous noterez à la fin la présence de la ligne :
<?php $reponse->closeCursor(); ?>
Elle provoque la « fermeture du curseur d'analyse des résultats », cela évite d'avoir des problèmes à la requête suivante. Cela veut dire qu'on a terminé le travail sur la requête.
Si on ne veut récupérer qu'un seul champ, il faut faire :
SELECT nom FROM jeux_video
Reprenons le code complet précédent et adaptons-le pour afficher un nom de jeu par ligne :
<html>
<body>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=initiation;charset=utf8', 'lecteurJV', 'lecteurJV');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT nom FROM listeJV order by nom');
while ($donnees = $reponse->fetch())
{
echo $donnees['nom'] . '<br />';
}
$reponse->closeCursor();
?>
</body>
</html>
Renverra uniquement le nom des jeux vidéo :

Maintenant que vous savez créer une base de données, insérer des données et lire ses données sur une page PHP, vous pouvez continuer votre activité pratique ici.
Créé avec HelpNDoc Personal Edition: Simplifiez votre processus de documentation d'aide avec un outil de création d'aide