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 :

Menu dynamique en PHP


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut Menu dynamique en PHP
    Bonjour à tous,

    je ne parviens pas à pondre un algo qui me permette de générer un menu php - html afin de créer un menu <ul><li> et ses sous imbrications en fonction d'une requette MySQL.

    Resultat MYSQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sString[0] = "menu|titi|tutu";
    $sString[1] = "toto|titi|tata|toto";
    $sString[2] = "toto|titi|tata|toto|tutu";
    $sString[3] = "toto|titi|tata|toto|lili";
    $sString[4] = "jeux|carte|poker";
    $sString[5] = "jeux|carte|belote";
    dans ce cas j'aurais aimé afficher pour cette exemple:
    Code html : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <ul>
        <li>menu</li>
        <ul>
            <li>titi</li>
            <ul>
            <li>tutu</li>
            </ul>
        </ul>
     
        <li>toto</li>
        <ul>
            <li>titi</li>
            <ul>
                <li>tata</li>
                <ul>
                    <li>toto</li>
                    <ul>
                        <li>tutu</li>
                        <li>lili</li>
                    </ul>
                </ul>
            </ul>
        </ul>
     
        <li>jeux</li>
        <ul>
            <li>carte</li>
            <ul>
                <li>poker</li>
                <li>belote</li>
            </ul>
        </ul>
    </ul>

    j'ai essayé d'écrire un algorithme qui s'en sort pas trop mal si la réponse MySQL arrive trié. j'ai quelques ratés tout de même ce n'est donc pas hyper fonctionnel.

    Maintenant le problème serait de gérer l'ajout par un utilisateur des sous menu personnel et là mon algo ne fonctionne plus.

    Comment dans mon cas traiteriez vous mon probleme? Existe t'il un patern qui pourrait réaliser ça?
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  2. #2
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Déjà tu gères ton menu de façon assez étrange.
    Etant donné que tu stocks ton menu dans ta base, tu devrais avoir une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    menu(id_menu, name, title, desc, lien, num, profondeur, pos)
    num correspondant au numéro du menu, profondeur à "l'étage" du l'entrée et pos à la position dans ce menu, ou plutôt dans une des entrée.

    num allant de 1 à n, profondeur de 0 à n (0 correspondant à la racine) et pos de 0 à n (0 correspondant à un titre et donc une nouvelle branche)

    Pour récupérer ce menu il suffirait de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT title, num, profondeur, pos
    FROM menu
    ORDER BY num, profondeur, pos;
    qui te retournerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    title      | num | profondeur | pos
    -----------------------------
    menu1   | 1    | 0               | 0
    smenu11 | 1    | 0               | 1
    smenu12 | 1    | 0               | 2
    menu2   | 2    | 0               | 0
    smenu21 | 2    | 0               | 0
    smenu22 | 2    | 1               | 1
    Ensuite tu boucle sur ce tableau en fonction des positions tu crées ton tableau html, cependant je te conseillerais d'utiliser une lib XML, pour gérer les nœuds enfants ect.



    Si tableau est statique ce n'est pas nécessaire de le stocker en base, un tableau multidimensionnel suffit et est plus simple à gérer dans les boucle. Si ton utilisateur ne peut ajouter qu'une seule entrée, ou une simple colonne supplémentaire, c'est la meilleurs solution.
    S'il peut créer un menu complet et/ou modifier le menu actuelle, le principe de positionnement est plus clair.

    Mon exemple n'est pas parfait, à toi de l'améliorer.
    deY!

Discussions similaires

  1. Script Menu dynamique mysql / php
    Par remrem13 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/04/2009, 21h14
  2. [PHP-JS] Problème dans un menu dynamique
    Par jujutonio dans le forum Langage
    Réponses: 8
    Dernier message: 07/02/2007, 15h32
  3. Menu dynamique PHP
    Par JamesP dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2006, 12h25
  4. [PHP-JS] menu dynamique, comment faire?
    Par jeff1985 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 13h57
  5. [PostgreSQL] [PostGreSQL] menu dynamique php-postgre-css
    Par tyrann dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/11/2005, 17h23

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