Boucle foreach

Résolu
astroma Messages postés 27 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 1 septembre 2012 - 26 juil. 2012 à 23:23
astroma Messages postés 27 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

2 réponses

astroma Messages postés 27 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 1 septembre 2012
3 août 2012 à 17:37
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
3
Met un order BY dans ton select.
Le tri sera fait automatiquement
0
Rejoignez-nous