construire une liste déroulante en cascade

WRInaute accro
Bonjour,

Je suis en train de me prendre la tête pour construire une liste déroulante pour laquelle je souhaiterai que le résultat soit de la sorte:
sport
--sports mécaniques
----sport automobiles
------F1
------Nascar
----sport moto
------GP1
------etc...
--sports de combats
etc....
Mes données sont stockées dans une bdd.
j'ai pensé le faire en PHP mais vu que cela est dynanique au niveau de la construction des noeuds (parent/fille), je vais me perdre ??!! :(
Ensuite j'ai pensé en faire un arbre XML mais c'est pareil, il faudrait que je le construise pour ensuite le parser au moment d'afficher la liste déroulante !

Je stocke mes données selon l'architecture SQL suivante:
colonne ID
colonne ID_PARENT

ID_PARENT : correspond à un noeud

Voilà, j'espère avoir répondu à certains nombres de questions

Merci de votre aide!
 
WRInaute accro
http://articles.sitepoint.com/article/hierarchical-data-database

Il faut adapter cette fonction:
Code:
<?php
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
//        used to display a nice indented tree
function display_children($parent, $level) {
   // retrieve all children of $parent
   $result = mysql_query('SELECT title FROM tree '.
                          'WHERE parent="'.$parent.'";');

   // display each child
   while ($row = mysql_fetch_array($result)) {
       // indent and display the title of this child
       echo str_repeat('  ',$level).$row['title']."\n";

       // call this function again to display this
       // child's children
       display_children($row['title'], $level+1);
   }
}
?>
Pour ca remplisse les <option>

La ligne:
Code:
echo str_repeat('  ',$level).$row['title']."\n";
A remplacer par un truc du genre:
Code:
echo '<option value="'.$row['id'].'">'.str_repeat('--',$level).$row['title']."</option>\n";
Et ne pas oublier d'ajouter "id" dans la requête SELECT.
 
Discussions similaires
Haut