Menu arborescent

Menu arborescent - PHP - Programmation

Marsh Posté le 24-02-2005 à 11:22:16    

Bonjour à tous !
 
Voilà, je cherche à créer un script de menu arborescent multi-niveaux en PHP (couplé à une base de données mySQL)
 
Ma table "rayons"  est sous la forme:
 
id  => int(11)               >>>> id du rayon
rayon => text              >>>> nom du rayon
id_parent => int(11)     >>>> id du rayon "parent"
 
Mon script actuel:
 

Code :
  1. $qry = mysql_query("SELECT * FROM rayons" );
  2. while ($ob = mysql_fetch_array($qry)) $idr[] = $ob[id_parent];
  3. arbo (min($idr),$_GET["niveau"]);
  4. function arbo($niveau,$nivDev)
  5. {
  6. $qry = mysql_query("SELECT * FROM rayons WHERE id_parent='$niveau' ORDER BY rayon" );
  7. while ($ob = mysql_fetch_array($qry))
  8. {
  9.  echo "<a href=$PHP_SELF?niveau=$ob[id]>+</a> $ob[rayon]<br>";
  10.  if ($ob[id] == $nivDev) arbo($ob[id],$nivDev);
  11. }
  12. }


 
Sous cette forme il ne fonctionne que pour 1 niveau.
 
Si je fais:
 

Code :
  1. $qry = mysql_query("SELECT * FROM rayons" );
  2. while ($ob = mysql_fetch_array($qry)) $idr[] = $ob[id_parent];
  3. if (!$_GET["niveau"]) $niveau = min($idr); else $niveau = $_GET["niveau"];
  4. arbo ($niveau);
  5. function arbo($niveau)
  6. {
  7. $qry = mysql_query("SELECT * FROM rayons WHERE id_parent='$niveau' ORDER BY rayon" );
  8. while ($ob = mysql_fetch_array($qry))
  9. {
  10.  echo "<a href=$PHP_SELF?niveau=$ob[id]>+</a> $blanc $ob[rayon]<br>";
  11. }
  12. }


 
Je peux le faire fonctionner en multi-niveau, mais je n'ai pas l'aborescence du menu...
 
Pouvez vous m'aider ? ça fait deux jours que me butte là-dessus ...
 
Merci !


Message édité par huggy le 24-02-2005 à 11:48:32
Reply

Marsh Posté le 24-02-2005 à 11:22:16   

Reply

Marsh Posté le 25-02-2005 à 16:42:15    

Il faut une fonction récursive... mais y'a un truc louche dans ta première implémentation, avec la variable $niv_dev :heink: Normalement faudrait passer en paramètre le parent, non ?

Reply

Marsh Posté le 26-02-2005 à 16:39:25    

Je sais que je ne répond pas à la question, mais j'aimerai savoir à quoi cela sert-il de faire un "Select *" lorsque tu n'as pas besoin de tous les champs de la table?


---------------
"le logiciel libre est une question de liberté, pas de prix" - Richard M. Stallman - (http://www.gnu.org/philosophy/why-free.fr.html)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed