Boucle foreach [Résolu]

Messages postés
28
Date d'inscription
mercredi 16 mai 2012
Statut
Membre
Dernière intervention
1 septembre 2012
- - Dernière réponse : astroma
Messages postés
28
Date d'inscription
mercredi 16 mai 2012
Statut
Membre
Dernière intervention
1 septembre 2012
- 3 août 2012 à 17:37
Bonjour à tous,


Je me permet de revenir encore vers vous tous car je bloque encore sur les boucles.

Mon problème est le suivant. J'ai 4 tables dont deux (musée et mh) me rapporte plusieurs lignes. Suite à des conseils sur les forums j'ai crée une double boucle foreach pour regrouper les musées, mais en faisant cela les réponses de la table musée se démultiplie dans les réponses de la table mh.

Je n'arrive pas à trouver la solution pour avoir mes réultats regroupé.

Comme je fatigue et je crains de ne pas être clair, voici le code en question




$resultats=$connexion->query("

SELECT 	ville.vil_nom,
ville.vil_long,
ville.vil_lat,
musee.mus_nom,
musee.mus_ad,
musee.mus_sit,
office.ot_ad,
office.ot_tel,
office.ot_fax,
office.ot_ml,
office.ot_sit,
mh.mh_nom
FROM ville, office, musee, mh
WHERE 	ville.vil_insee ='41018' 
AND musee.mus_insee ='41018' 
AND office.ot_ins = '41018'
AND mh.mh_insee = '41018'



"); // on va chercher tous les membres de la table qu'on trie par ordre croissant



foreach ($resultats->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP) as $ville => $leslignes) {
echo "";
print_r($ville);
echo "

";

echo "";
print_r($leslignes[0]['vil_long']);
echo "

";

echo "";
print_r($leslignes[0]['vil_lat']);
echo "

";

echo "";
print_r($leslignes[0]['ot_ad']);
echo "

";

echo "";
print_r($leslignes[0]['ot_tel']);
echo "

";

echo "";
print_r($leslignes[0]['ot_ml']);
echo "

";

echo "";
print_r($leslignes[0]['ot_fax']);
echo "

";

echo "";
print_r($leslignes[0]['ot_sit']);
echo "

";

    foreach ($leslignes as $leslignes) {

echo "";
print_r($leslignes['mus_nom']);
echo "

";

echo "";
print_r($leslignes['mus_ad']);
echo "

";

echo "";
print_r($leslignes['mus_sit']);
echo "

";

echo "";
print_r($leslignes['mh_nom']);
echo "

";

    }
}

$resultats->closeCursor();
// je ferme le curseur des résultats



Le code fonctionne

Mais j'obtiens ceci

ville
ville_long
vil_lat
ot_ad
mh_nom
musee1
musee2
musee3
mh_nom2
musee1
musee2
...

Et je cherche a obtenir cela

ville
ville_long
vil_lat
ot_ad
mh_nom1
mh_nom2
musee1
musee2
musee3




Quelqu'un peut il me conseiller ou me donner une piste s'il vous plait.

Merci d'avance

Astroma
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
28
Date d'inscription
mercredi 16 mai 2012
Statut
Membre
Dernière intervention
1 septembre 2012
3
Merci
Bonjour,

Merci pour l'idée.

En fait comme je suis débutant et amateur j'avais surtout fais plusieurs grosses erreurs dans la construction de mes tables.

Après avoir découvert la méthode Merise j'ai pu régler les problèmes au niveau de la requete.

Merci pour le message

Astroma

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de astroma
0
Merci
Met un order BY dans ton select.
Le tri sera fait automatiquement
Commenter la réponse de twitch59