Dans le cours : PHP : La programmation orientée objet avec les bases de données

Ajouter la méthode FindById

Dans la vidéo précédente, on avait mis en place la connexion et la méthode findAll. Et ici on voit bien qu'elle nous retourne bien les résultats attendus. Donc maintenant, on va essayer de voir dans cette vidéo comment faire pour afficher ces résultats-là à l'intérieur du tableau. Pour ce faire, je vais tout simplement revenir sur l'éditeur de code ici. Et comme on récupère les articles ici, on va retirer le print_r, il n'y a plus besoin de l'afficher. Donc ça, je vais l'enlever, et je vais me servir du print_r pour afficher mes résultats directement à l'intérieur de mon tableau. Donc ici, je vais tout simplement prendre l'élément du tableau que je veux répéter, et faire une boucle foreach pour dynamiser les données. Je vais répéter cette partie-là de mon tableau. Pour ça, je vais mettre en place une boucle. C'est parti, php, et je vais mettre en place une boucle foreach qui va récupérer donc mes articles et qui va les afficher dans la boucle : $articles as $article au singulier. Là, je vais fermer ma foreach ici, et je vais ouvrir le php et fermer ma boucle à cet endroit-là. Parfait ! Si on regarde un petit peu les résultats ici, on a pas mal de choses, mais $articles est retourné en tant que tableau. Ici, on est sur une formation en programmation orientée objet. Donc moi, ce que j'aimerais, c'est que les informations retournées ici ne soient pas sous forme de tableau, mais soient retournées sous forme d'objets. Pour ça, PDO va être très utile, parce que PDO, je vais pouvoir lui passer un paramètre, et il va me retourner la réponse ici sous forme de tableau. Donc là, je vais revenir au niveau du code, et je vais aller au niveau de ma requête. Donc là, je vais aller dans Article. Et ma requête, je l'ai faite ici et là, c'est le fetchAll qui me fait le retour, qui me renvoie le résultat. Dans la méthode fetchAll, je vais passer une constante de PDO pour lui dire que je ne veux pas un tableau associatif ici, c'est ce qu'il m'a retourné, mais je veux un objet. Donc je vais faire un PDO FETCH_OBJ pour récupérer un objet à la place. Là maintenant, en faisant ça, je demande à PDO de me retourner un objet plutôt qu'un tableau, et ça c'est hyper pratique. En revenant maintenant sur la partie show, ce que j'ai là maintenant, ce n'est plus vraiment un tableau, c'est un objet. Et donc pour appeler mes éléments dans ma boucle, je vais appeler mes éléments comme des objets et non comme des tableaux. Par exemple, si je veux afficher l'identifiant, je vais faire un php ici echo $article et je vais passer par la flèche plutôt que par les crochets. Et je vais dire par exemple que je veux récupérer ici article _id, et je ferme le php. Et voilà, je mets un point-virgule. Pareil pour récupérer le title, je vais faire un php echo, et on va faire un $article. Et je vais aller chercher cette fois-ci le title. Pour récupérer le contenu, je vais faire un php echo $article, et je vais chercher le content. Et pour afficher la date, je vais faire un echo, php echo $article et je vais chercher la date. Là, maintenant, regardez, si je reviens sur ma page, je mets à jour ma page, normalement, ici dans le tableau, les données vont être dynamiques. PDO not found. J'ai une belle erreur, mais on va la corriger en direct. Effectivement, j'ai une belle erreur. Je sais d'où elle vient. C'est tout simplement parce que j'ai appelé PDO. Mais effectivement il faut mettre un \ devant. Je vais me rendre dans les fichiers, je vais aller dans Article, et c'est ici quand j'ai appelé ma constante, comme j'ai mis en place un namespace, il faut faire attention à mettre un \ ici pour pouvoir appeler PDO. Là c'est bon, là je vais mettre à jour ma page, et on voit que mon tableau s'affiche. Et j'ai une deuxième erreur, c'est qu'ici j'ai mis article_ id, et ce n'est pas article id, c'est id. Donc je vais tout simplement le changer. Je vais me rendre dans le fichier show, et ici j'ai appelé article_id, et ça, ça n'existe pas, c'est id. Je n'ai plus qu'à sauvegarder. Je reviens sur ma page. Là vous voyez que ça marche très bien. J'ai bien ici title, j'ai bien les identifiants, j'ai bien ici le title avec le contenu et la date, ça marche parfaitement.

Table des matières