Boucles imbriquées

Signaler
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011
-
Messages postés
55
Date d'inscription
mercredi 15 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2009
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut
quel est le probleme ?

pour faire deux boucles imbriquees :

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

}
}
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

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 /*  
 
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
ca n'explique pas le probleme hein...
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

Bah le pb est que je ne sais pas comment faire pour imbriquer 2 boucles.
ni quel type de boucle utiliser.
Messages postés
55
Date d'inscription
mercredi 15 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2009

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