construire une liste déroulante en cascade

passion
WRInaute accro
WRInaute accro
 
Messages: 3124
Inscription: 6 Jan 2006

construire une liste déroulante en cascade

Message le Mar Déc 14, 2010 10:20

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!


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: construire une liste déroulante en cascade

Message le Mar Déc 14, 2010 11:22

http://articles.sitepoint.com/article/hierarchical-data-database

Il faut adapter cette fonction:
Code: Tout sélectionner
<?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: Tout sélectionner
echo str_repeat('  ',$level).$row['title']."\n";

A remplacer par un truc du genre:
Code: Tout sélectionner
echo '<option value="'.$row['id'].'">'.str_repeat('--',$level).$row['title']."</option>\n";

Et ne pas oublier d'ajouter "id" dans la requête SELECT.

passion
WRInaute accro
WRInaute accro
 
Messages: 3124
Inscription: 6 Jan 2006

Re: construire une liste déroulante en cascade

Message le Mar Déc 14, 2010 11:31

ah merci de ta réponse !
Je vais voir ton lien !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité