Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2332 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  recursivité et menu multiniveaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recursivité et menu multiniveaux

n°813243
le_zell
Posté le 03-08-2004 à 10:45:21  profilanswer
 

Bonjour,
 
Soit un un arbre :
 
node_id node_name node_parent
0 Root -1
2 2_2 0
3 3_3 2
4 4_4 0
5 5_5 4
6 6_6 0
7 7_7 6
8 8_8 0
9 9_9 8
10 10_10 0
11 11_11 10
12 12_12 0
13 13_13 12
 
Je voudrais parcourir cet arbre pour afficher des lignes javascripts et
ainsi contruire un menu multiniveaux.
 
Il faudrait sortir des lignes du genre :
 
Menu1_1 = new Array(''..'''.......) (1er element du 1er niveau)
Menu1_2 = new Array(''..'''.......)
Menu1_3 = new Array(''..'''.......)
Menu2_1 = new Array(''..'''.......)
Menu2_1_1 = new Array(''..'''.......)
Menu2_1_2 = new Array(''..'''.......)  (2eme element du 1er element du 2eme
niveau)
Menu2_2_1 = new Array(''..'''.......)
Menu2_2_2 = new Array(''..'''.......)  (2eme element du 2eme element du 2eme
niveau)
....
 
Et la je coince je ne sais pas rédiger de fonction récursive et je vois pas
comment faire pour écrire une sortie comme celle ci.
 
Vous avez surement deja fait ca et ca serait sympa de m'aiguiller voire de
me donner un petit bout de code.
 
Merci de m'éclairer.
 
Cordialement.
 
Jérôme Rautureau
Webmaster - Développeur
La Rochelle-Rochefort : territoire interactif
contact@larochellerochefort.com
Qui fait quoi sur La Rochelle - Rochefort : www.larochellerochefort.com

mood
Publicité
Posté le 03-08-2004 à 10:45:21  profilanswer
 

n°813515
fb@alphalo​g
Posté le 03-08-2004 à 12:41:51  profilanswer
 

tu as plusieurs solution :  

  • la plus propre ( mais la plus complexe )  est de faire de la programmation objet en php  
  • la plus rapide a develloper  

tu utilise un tableau dont chaque element est un tableau : array(node_name,node_parent)
ainsi , tu accede a un tableau de tableau
dans ce cas il te faudra faire une fonction du genre :  

Code :
  1. function getDepthById($tree,$idNode){
  2.     if($idParent = getIdParent($tree,$idNode) != -1 )
  3.          return getDepthById($tree,$idParent) +1;
  4.     else
  5.           return 0;
  6. }
  7. function getNodeByLevel($tree,$level){
  8. $resultat = array();
  9. foreach($tree as $idNode => $node)
  10.     if(getDepthById($tree,$idNode) == $level)
  11.        array_push($resultat,$idNode);
  12. return $resultat;
  13. }

n°813935
pascal_
Posté le 03-08-2004 à 17:27:13  profilanswer
 

Si tu ne veux pas t'embéter avec de la récursivité : http://sql.developpez.com/arborescence/ . Assez complexe quand même.
 
Sinon en récursif (mais peu performant => à mettre en cache à la limite)

Code :
  1. function menu( $idPere=null, $arbo='1' ){
  2.   $req = ' SELECT * FROM menu WHERE node_parent';
  3.    if( $idPere==null )
  4.      $req .= 'IS NULL';
  5.    else
  6.      $req .= '=$idPere';
  7.   $res = mysql_query( $req );
  8.   $i=0;
  9.   while( $ligne_menu=mysql_fetch_object($res) ){
  10.     $i++;
  11.     $nArbo = $arbo.'_'.$i;
  12.     echo "Menu$arbo =  new Array( '$ligne_menu->node_name' )";
  13.     menu( $ligne_menu->node_id, $nArbo );
  14.   }
  15. }


 
C'est pas testé hein :o  
 
 [:figti] je m'aperçois que je ne comprens pas le champ node_name dans ta table ? C'est quoi, le nom du menu ?
 

n°813967
karamilo
Posté le 03-08-2004 à 17:48:03  profilanswer
 

Merci pascal_ pour ce lien, je connaissais pas cette methode et c'est sacrément efficace et ingénieux :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  recursivité et menu multiniveaux

 

Sujets relatifs
Recursivité des .htaccessExpressions régulières et récursivité
[HTML] Tableaux Menu/Main[JS] Créer un menu transparent en javascript plutot qu'avec des css
[VB] Menu "Projet" - "Références" disparu (???)un sous sous menu
Incompatibilité menu déroulant et menu dynamique ?Positionnement de calques dans menu généré automatiquement
[c#] débutant : Ajout d'un menu déroulantmenu php mysql
Plus de sujets relatifs à : recursivité et menu multiniveaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR