IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Une boucle pour faire un menu


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    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

  2. #2
    Membre régulier
    Homme Profil pro
    Data Analyste Senior
    Inscrit en
    Août 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyste Senior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2010
    Messages : 53
    Points : 101
    Points
    101
    Par défaut
    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é.

  3. #3
    Invité
    Invité(e)
    Par défaut
    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.

  4. #4
    Membre régulier
    Homme Profil pro
    Data Analyste Senior
    Inscrit en
    Août 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyste Senior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2010
    Messages : 53
    Points : 101
    Points
    101
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    afficherMenu(0,0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
        }
    }

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 406
    Points : 5 762
    Points
    5 762
    Billets dans le blog
    1
    Par défaut
    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

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Membre régulier
    Homme Profil pro
    Data Analyste Senior
    Inscrit en
    Août 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyste Senior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2010
    Messages : 53
    Points : 101
    Points
    101
    Par défaut
    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

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci a vous deux et bonne année

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/06/2014, 17h47
  2. Une boucle pour faire une repetition infini
    Par saibri dans le forum jQuery
    Réponses: 1
    Dernier message: 11/11/2011, 12h24
  3. Faire une boucle pour facilité le calcul
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 25/03/2009, 12h52
  4. Faire une Boucle pour lire dans Settings.settinge
    Par totoen dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/10/2008, 10h44
  5. Faire une boucle pour l'alphabet
    Par El-Diablo- dans le forum Langage
    Réponses: 2
    Dernier message: 08/04/2008, 23h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo