Boucles imbriquées

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 6 déc. 2008 à 19:03
willeraser Messages postés 55 Date d'inscription mercredi 15 octobre 2003 Statut Membre Dernière intervention 6 mai 2009 - 8 déc. 2008 à 00:54
Bonjour,
J'aimerais afficher mon site de maniere dynamique, mais il semblerait qui faut utiliser 2 boucles imbriquées.
pb je ne sais pas comment faire.

Voici un bout du code mais sans les boucles ;)



/* LA BOUCLE DES MENUS /*
<li>[# ' . $row_menu2['menu'] . ']
/* LA BOUCLE DES SOUS MENUS /*
<li>[' . $row_menu2['url'] . '.html ' . $row_menu2['s_menu'] . ']</li>
/* FIN BOUCLE DES SOUS MENUS /*
</li>
/* FIN BOUCLE DES MENUS /*



Merci de votre aide

5 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 déc. 2008 à 19:16
salut
quel est le probleme ?

pour faire deux boucles imbriquees :

for ($i=0;$i<...;$i++){
for ($j=0;$j<...;$j++){

}
}
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
6 déc. 2008 à 19:29
A flute avec safari le code html de mon poste n'a pas été pris en compte.
je recommance sous IE.

info complémentaire : le pb et que j'ai besoin d'une boucle pour afficher les menus et une boucle dans la boucle pour afficher dans chq menu les sous menu correspondant.

 
/* LA BOUCLE DES MENUS /* 
        <li> [# ' . $row_menu2['menu'] . ']
           
            /* LA BOUCLE DES SOUS MENUS /*
             <li> [' . $row_menu2['url'] . '.html ' . $row_menu2['s_menu'] . '] </li>
            /* FIN DE LA BOUCLE DES SOUS MENUS /*    
           
        </li>
/* FIN DE LA  BOUCLE DES SOUS MENUS /*  
 
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 déc. 2008 à 19:33
ca n'explique pas le probleme hein...
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
6 déc. 2008 à 19:46
Bah le pb est que je ne sais pas comment faire pour imbriquer 2 boucles.
ni quel type de boucle utiliser.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
willeraser Messages postés 55 Date d'inscription mercredi 15 octobre 2003 Statut Membre Dernière intervention 6 mai 2009
8 déc. 2008 à 00:54
Si tu veux que ton site soit dynamique, je présume que tu extrais les données de ton menu depuis une base de données (MySQL ?).
Même si tu essayes de tuer une mouche au missile, je vais quand même t'expliquer.

Tu dois avoir 1 seule table mysql contenant tout tes menus
chaque menu doit pouvoir avoir un nombre infini de sous menus (conceptuellement c'est beau, même si c'est pas forcément ce dont tu as besoin :p)
Donc un tuple de menu se compose d'un ID, d'un LIBELLE, d'un LIEN et d'un PARENT_ID.
Le parent id contiendra l'id du menu qui est hiérarchiquement supérieur au sous menu.
Apres, pour la requete SQL, je te laisse la trouver, il est trop tard pour moi ^^

Sinon, la méthode pourrie mais plus simple consiste à faire 2 tables. menu et sous_menu
La table menu est liée a celle du sous menu. Par transitivité, tu vas pouvoir connaitre tous les sous menus appartenants au menu en cours.

Le principe de tes boucles imbriquées est :

Je parcours séquentiellement la catégorie la plus large (les menus)
Pour chaque menu ( 1er tour de boucle) je regarde s'il existe un/des sous-menus avec comme parent_id l'id du menu le plus large.
Si oui, alors je crée une 2ème boucle qui va sequentiellement tous les parcourir.
Admettons qu'il y ai 3 sous menu pour le menu1, je vais faire 3 tours de boucle, car au 3eme, mon while ne sera plus vrai, je sors de ma boucle, ce qui me fait passer à la 2eme itération de ma grande boucle, c'est à dire au 2ème menu.
Ceci est vrai pour 2 niveaux de menu (menu+sousmenu). Si tu veux davantage, tu remarqueras le motif de récursivité ;)

Bonne chance
0
Rejoignez-nous