query($requete)
.
1
2
3
4
5
| // On établis la connection require_once ( 'conf/connection.php' ); // On envois la requète $select = $connection ->query( "SELECT * FROM createurs" ); |
$select
contiend maintenant le résultat de la requète, mais sous une forme un peu particulière : un PDOStatement. Vous pourrez allé consulter la documentation pour obtenir des informations complémentaires sur cette classe.
http://www.php.net/manual/fr/class.pdostatement.php : Documentation officiel pour PDOStatement
Cet objet contiend la réponse du serveur de données à la requète que
nous lui avons envoyé. Cette objet va nous permettre de gérer
l'affichage des données reçues, pour cela il existe plusieurs méthodes :Avec setFetchMode / fetch
PDO nous offre la libertée d'utiliser la réponse au format que nous voulons, nous pouvons dire que nous voulons traiter les enregistrements reçus comme des tableaux, comme des objets typés, etc... Comme nous débutons, nous allons traiter les enregistrements comme des objets simples.Donc juste après avoir envoyé la requète (ou avant peu importe), nous allons "configurer" notre objet PDOStatement pour qu'ils nous livre les enregistrements comme des objets :
1
2
| // On indique que nous utiliserons les résultats en tant qu'objet $select ->setFetchMode(PDO::FETCH_OBJ); |
$select
contiend maintenant un objet pour
chaque enregistrement obtenu, pour traiter tous les résultats nous
allons utilise la boucle TANT QUE (la boucle while) :
1
2
3
4
5
6
| // Nous traitons les résultats en boucle while ( $enregistrement = $select ->fetch() ) { // Affichage d'un des champs echo '<h1>' , $enregistrement ->nom, ' ' , $enregistrement ->prenom, '</h1>' ; } |
Si la réponse ne contiens pas de résutats,
$select->fetch()
va retourner NULL
/FALSE
. (Et donc l'éxécution de la boucle sera interrompue).Si vous faites une requète qui ne doit retourner qu'un seul enregistrement, vous n'avez pas besoin d'utiliser une boucle pour traiter les résultats, mais utilisez quand même une condition pour éviter un message d'erreur disgracieux au moment de l'affichage :
1
2
3
4
5
6
7
8
9
10
11
12
| // Traitement d'un seul résultat $enregistrement = $select ->fetch(); // On test si la variable $enregistrement, au cas // ou elle serait vide. if ( $enregistrement ) { echo '<h1>' , $enregistrement ->nom, ' ' , $enregistrement ->prenom, '</h1>' ; } // La requète n'a pas retournée de résultat else { echo "Aucun résultat" ; } |
Méthode fetch(PDO::FETCH_OBJ)
Petite variante avec une ligne de moins, dans cette exemple, le format de récupération (Format Objet) est précisé au moment dufetch()
:
1
2
3
4
5
6
7
8
| // Nous traitons les résultats en boucle // C'est lors de l'utilisation de fetch() que nous spécifions // le format de récupération pour le traitement. while ( $enregistrement = $select ->fetch(PDO::FETCH_OBJ) ) { // Affichage d'un des champs echo '<h1>' , $enregistrement ->nom, ' ' , $enregistrement ->prenom, '</h1>' ; } |
Méthode fetchAll
Cette méthode va convertir notre objet de résultats en un tableau d'objet, ensuite nous traitons le tableau comme un tableau classique, ce cas d'application est surtout utilisé pour traiter des listes de résultats (Lorsque l'on s'attend à plusieurs résultats) :
1
2
3
4
5
6
7
8
9
| // On transforme les résultats en tableaux d'objet $createurs = $select ->fetchAll(PDO::FETCH_OBJ); // On traite le tableau $créateur while ( $enregistrement = next( $createurs ) ) { // Affichage d'un des champs echo '<h1>' , $enregistrement ->nom, ' ' , $enregistrement ->prenom, '</h1>' ; } |
C'est quoi ces caractères bizarres ???
Si vous avez mis des caractères spéciaux dans l'une des données affichées, c'est le drame.Rien ne sert de vérifier le format de document ça ne viens pas de lui :P (Mais faites le quand même ça ne coute rien).
En effet, lors d'un echange avec le serveur web, l'encodage de transmission n'est pas formement l'UTF8 !!!
Pour corriger/forcer ça nous avons 2 solutions :
- Une solution standard mais pas très lisible
- Une solution moins standard mais plus facile à lire.
Aucun commentaire:
Enregistrer un commentaire