Récupérer les bonnes données d'une jointure de table
RichieZz
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je travaille sur un projet sur lequel je génère une page en fonction d'un titre de formation.
J'ai réussi à afficher mon titre de formations et ses détails mais à la suite j'ai deux autres tables "items" et "sous_items" dans lesquelles il y a des jointures entre formation et items, et entre items et sous_items (j'espère que c'est à peu près clair).
Je voudrais donc que les données que je récupère à la suite soit les données de la table qui correspondent à la formation choisie. Mon code me récupère des items et sous items de la table mais seulement les premiers de la liste au lieu de chercher l'item qui correspond à la formation.
Je vous affiche mon code qui me permet d'afficher ce que j'ai à l'heure actuelle:
La partie du haut fonctionne bien c'est à partir de la ligne 29 que j'ai mon problème ou peut être dans les requêtes au dessus.
Voila donc mon problème est que je n'arrive pas à gérer ma sélection de récupération d'items en fonction de la formation. De plus j'ai une erreur qui s'affiche à ma première ligne (celle avvec le $_GET), si certains auraient des conseils je suis preneur.
Merci d'avance!
Je travaille sur un projet sur lequel je génère une page en fonction d'un titre de formation.
J'ai réussi à afficher mon titre de formations et ses détails mais à la suite j'ai deux autres tables "items" et "sous_items" dans lesquelles il y a des jointures entre formation et items, et entre items et sous_items (j'espère que c'est à peu près clair).
Je voudrais donc que les données que je récupère à la suite soit les données de la table qui correspondent à la formation choisie. Mon code me récupère des items et sous items de la table mais seulement les premiers de la liste au lieu de chercher l'item qui correspond à la formation.
Je vous affiche mon code qui me permet d'afficher ce que j'ai à l'heure actuelle:
<?php // On récupère tout le contenu de la table formation $reponse = $bdd->query('SELECT * FROM formation'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()){ ?> <h1><?php echo $donnees['form_titre']; ?></h1> <p>Référence: <?php echo $donnees['form_reference']; ?></p> <p>Prix: <?php echo $donnees['form_prix']; ?></p> <p>Durée de la formation: <?php echo $donnees['form_nb_jour']; ?></p> <p>Objectifs: <?php echo $donnees['form_objectifs']; ?></p> <p>Participants: <?php echo $donnees['form_participants']; ?></p> <p>Prérequis: <?php echo $donnees['form_prerequis']; ?></p> <?php $reponse->closeCursor(); // Termine le traitement de la requête } //On récupère le contenu de mes 3 tables avec les liaisons $item_id = $_GET['item_id']; $resultat = $bdd->query('SELECT * FROM formation f INNER JOIN items i ON i.form_id = f.form_id'); $si_item = $bdd->query('SELECT * FROM items i LEFT OUTER JOIN sous_items si ON si.item_id = i.item_id'); while ($donnees = $resultat->fetch()){ ?> <ul> <li> <?php echo $donnees['item_titre']; ?> <ul> <?php while ($donnees = $si_item->fetch()){ ?> <li><?php echo $donnees['sous_items_titre']; ?></li> <?php $si_item->closeCursor(); } ?> </ul> </li> </ul> <?php $resultat->closeCursor(); } ?>
La partie du haut fonctionne bien c'est à partir de la ligne 29 que j'ai mon problème ou peut être dans les requêtes au dessus.
Voila donc mon problème est que je n'arrive pas à gérer ma sélection de récupération d'items en fonction de la formation. De plus j'ai une erreur qui s'affiche à ma première ligne (celle avvec le $_GET), si certains auraient des conseils je suis preneur.
Merci d'avance!
A voir également:
- Récupérer les bonnes données d'une jointure de table
- Fuite données maif - Guide
- Table ascii - Guide
- Table des matières word - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Supprimer les données de navigation - Guide
1 réponse
Bonjour,
normal de ne pas récupérer les autres....Si tu fermes le curseur avant la fin du while....
Et quelle est l'erreur ??
Ne serait-ce pas un truc genre "undefined index" ?
Car si la variable n'existe pas.. en effet... il t'affiche cette erreur...
Pour éviter cela, il faut récupérer PROPREMENT les variables AVANT de les utiliser
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.
La partie du haut fonctionne bien c'est à partir de la ligne 29 que j'ai mon problème ou peut être dans les requêtes au dessus.
while ($donnees = $si_item->fetch()){ ?> <li><?php echo $donnees['sous_items_titre']; ?></li> <?php $si_item->closeCursor(); }
normal de ne pas récupérer les autres....Si tu fermes le curseur avant la fin du while....
De plus j'ai une erreur qui s'affiche à ma première ligne (celle avvec le $_GET),
Et quelle est l'erreur ??
Ne serait-ce pas un truc genre "undefined index" ?
Car si la variable n'existe pas.. en effet... il t'affiche cette erreur...
Pour éviter cela, il faut récupérer PROPREMENT les variables AVANT de les utiliser
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.
effectivement ce closeCursor m'arrêtait à un seul sous_items
et grâce à ton lien je n'ai plus d'erreur sur mon $_GET
Il n'y a pas de WHERE dans tes requêtes...
Regarde ce que donne un truc du genre
Et au passage, vu que tu bosses en PDO, je t'invite à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs