Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2011, 17h57   #1
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Par défaut Une boucle pour faire un menu

Bonjour,
Voila j'ai fait un table pour gérer et structurer les accès à des modules d'admin et de fait en faire un menu dynamique.

En gros ça donne :
id - titre - url - id_rattachement
1 - Admin - - 0
2 - user - /user.php - 1
se qui signifie que dans le point de menu Admin on à le sous menu User.

Le menu est géré en css avec un ensemble de ul li.

Du coups je me demandai comment faire ma boucle pour justement pouvoir créé ces sous menu et d'autre niveau inférieur.

C'est un peux confus comme demande, mais je me demandai si en une seule boucle on peux organiser le menu avec autant de niveau d'arbo que l'on souhaite ou s'il faut faire des boucles dans des boucles autant que l'on pense qu'il y aura de niveau arborescence.

Dsl si c'est pas compréhensible

Merci et bonne soirée du nouvelle an
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 20h30   #2
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
Bonjour,

Tu fais une fonction principale qui affiche le 1er niveau et qui pour chaque noeud lu appelle une fonction afficheNoeudEnfant qui affiche tous ses noeuds enfants.

Le fonction afficheNoeudEnfant est récursive. Elle s'appelle elle même pour chaque noeud enfant trouvé.
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 18h03   #3
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
En gros tu me dit de faire une première fonction du style select tout les id_rattachement = 0, car ce sont les nœud de 1er niveau.
Bon ça je gère.

Et ensuite une autre fonction récursive ?!, je connais le principe, je vien sde relire certain tuto mais j'ai jamais bien compris comment en faire surtout dans mon cas.
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 19h12   #4
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
Je ne suis pas un pro du php mais tu devrais y arriver en t'inspirant du bout de code ci-dessous.
En fait une seule fonction suffit. Tu peux aussi gérer plusieurs menu dans ta table en rajoutant une colonne avec le nom du menu et en adaptant la fonction.
Pour l'appel de la fonction :
Code :
1
2
 
afficherMenu(0,0);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
function afficherMenu($IdPere, $niveau) {
    // Requête de sélection des éléments enfant de IdPere dans le menu
    $query = "SELECT <colonnes> WHERE IdRattachement = ".$IdPere;
    $result = mysql_query($query);
 
    // Recuperation des resultats
    while($row = mysql_fetch_row($result)) {
        $id = $row[1];
 
        // Traitement de l'affichage en fonction de $niveau
 
        // Appel récursif
        afficherMenu($id, $niveau + 1);
    }
}
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 21h42   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Pour que ce soit vraiment récursif, ne vaudrait-il pas mieux remplacer "afficherEnfants" par "afficherMenu" ? (Simple intuition, car je ne suis pas un pro non plus...)
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 21h45   #6
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
Citation:
Envoyé par laurentSc Voir le message
Pour que ce soit vraiment récursif, ne vaudrait-il pas mieux remplacer "afficherEnfants" par "afficherMenu" ? (Simple intuition, car je ne suis pas un pro non plus...)
Merci pour ta remarque, j'ai corrigé... Ça m'apprendra à mal me relire
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 22h58   #7
Membre du Club
 
Inscription : mai 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 209
Points : 50
Points : 50
Merci a vous deux et bonne année
christobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h45.


 
 
 
 
Partenaires

Hébergement Web