Titre: Listes déroulantes liées
Posté par: enjoy man le le 10-06-2005 a 14:25:33
Bonjour à tous Voila mon problème. Je veux créer deux listes déroulantes liées entre elles. Cad: les valeurs de la deuxième liste dépendent du choix du visiteur dans la première. Un exemple sur www.autoscout24.lu Le problème c'est que mes valeurs sont stockées dans une base de données. Mais est-ce un problème ? J'ai bien trouvé des javascript mais ils font appel à des chaînes, pour appeller une bdd je bloque. (exemple: http://www.alistapart.com/d/complexdynamiclists/dynamicselect.html ) Quelqu'un aurait-il une idée, un conseil ? Merci à vous et bonne journée Cyril |
Titre: Re:Listes déroulantes liées
Posté par: tavman le le 11-06-2005 a 12:11:27
regarde un peu la taille du script :
<script type="text/javascript"> function populate(o) { d=document.getElementById('de'); if(!d){return;} var mitems=new Array(); mitems['Main Courses']=['Burger Meals','Breakfast','Steaks','Fish Dishes','Vegetarian Dishes']; mitems['Snacks']=['Brownies','Cookies']; mitems['Drinks']=['Shakes','Sodas','Cocktails','Juices']; mitems['Salads']=['Tuna Salad','Cesar Salad','Green Salad','Prawn Salad']; mitems['Deserts']=['Pancakes','Waffles','Ice Cream','Fresh Fruit']; d.options.length=0; cur=mitems[o.options[o.selectedIndex].value]; if(!cur){return;} d.options.length=cur.length; for(var i=0;i<cur.length;i++) { d.options.text=cur; d.options.value=cur; } } </script>
alors quand c'est aussi court que ca, tu regarde vite fait et tu voit ca :
mitems['Main Courses']=['Burger Meals','Breakfast','Steaks','Fish Dishes','Vegetarian Dishes']; mitems['Snacks']=['Brownies','Cookies']; mitems['Drinks']=['Shakes','Sodas','Cocktails','Juices']; mitems['Salads']=['Tuna Salad','Cesar Salad','Green Salad','Prawn Salad']; mitems['Deserts']=['Pancakes','Waffles','Ice Cream','Fresh Fruit'];
et tu te dit que t'as plus qu'a essayer de réécrire ca en php avec les éléments de ta bdd... je pense pas que ce soit vraiment trop compliqué.
Après ca, si tu veut t'y retrouver dans tes items, plutot que de faire passer tes données en chaine de caractère, t'as cas faire passer tes chiffres :
<select name="or" id="or" onchange="populate(this)"> <option value="1">Main Courses</option> <option value="2">Snacks</option> <option value="3">Salads</option> <option value="4">Drinks</option> <option value="5">Deserts</option> </select>
et dans le JS, tu met ca :
for(var i=0;i<cur.length;i++) { d.options.text=cur; d.options.value=i; }
et tu devrait pouvoir t'y retrouver...
Voila, bonne chance a toi |
Titre: Re:Listes déroulantes liées
Posté par: enjoy man le le 13-06-2005 a 10:03:40
merci pour ta réponse. ya pas de souci pour le code. Mais le problème c'est que dans les variables,le script stocke des chaînes de caractères : mitems['Snacks']=['Brownies','Cookies'];
Moi je voudrais pouvoir générer ca automatiquement en appelant ma base... Est-ce possible? |
Titre: Re:Listes déroulantes liées
Posté par: tavman le le 13-06-2005 a 12:10:09
biensur que c'est possible... le php ne fait que générer du texte interpreté ensuite en HTML ou javascript (après, ca dépend ou c'est placé) :
<script type="text/javascript"> function populate(o) { d=document.getElementById('de'); if(!d){return;} var mitems=new Array(); mitems['Main Courses']=[ <? $requete = mysql_query ("SELECT * FROM `mabase`;");
while ( $T = mysql_fetch_array($requete) ) {
echo "'" . $T['element'] . "' , ";
}
?> ];
// et puis tu termine ton code après... suffit juste que tu regarde exactement le code que tu génère et après c'est assez facile. Faut bien comprendre que php ne fait que générer du texte (ou faire des opérations sur le serveur...), après, c'est le navigateur qui interprete le texte et puis voila.
Aller bonen chance a toi ;) |
Titre: Re:Listes déroulantes liées
Posté par: enjoy man le le 13-06-2005 a 13:44:17
nickel mec, c justement ce que j'avais esquissé ! je te remercie, je v me pencher la dessus :D
par contre je n'ai pas trop compris : et dans le js tu mets ça: for(var i=0;i<cur.length;i++) { d.options.text=cur; d.options.value=i; } |
Titre: Re:Listes déroulantes liées
Posté par: tavman le le 13-06-2005 a 20:08:03
par contre je n'ai pas trop compris : et dans le js tu mets ça: for(var i=0;i<cur.length;i++) { d.options.text=cur; d.options.value=i; }
|
|
bahh c'est plutot simple : la seule ligne que j'ai changé la dedans en fait, c'est ca : d.options.value=cur;
que j'ai remplacé par ca : d.options.value=i;
ainsi, lorsque tu récupère tes variables, tu récupère un chiffre et non une String... Donc c'est plus facile pour t'y retrouver dans ta base de données... Perso, jte conseil plutot de faire deux base comme ca :
base 1 (les valeurs de ta première liste) : ____________ ID1 | VALUE |
base 2 (les valeurs de la seconde liste) : ______________________________ ID2 | ID1 | Pos_Objet | VALUE |
ID1 renvoit la valeur pour savoir si on met l'objet dans telle ou telle liste... et Pos_Objet, c'est son numéro dans la liste... Donc quand tu voudra récupèrer quelque chose, t'aura cas faire une recherche pour voir les objet ou ID1 c'est la valeur renvoyée par la première liste et Pos_Objet c'est la valeur renvoyée par la deuxième liste....
Remarque, t'aurai pu utilisé VALUE de la même manière, mais c'est juste une mesure de sécurité : si jamais un jour t'as 2 fois la même VALUE qui correspond a l'ID1, tu pourra toujours le retrouvé... Enfin là, c'est un peu compliqué, c'est clair...
Une autre remarque : tu pourrait aussi faire une 2ème liste dans ton javascript qui contient n parallèle de l'autre les ID2 correspondantes aux VALUE....
Enfin bon, a chacun ses techniques pour s'y retrouver entre un tableau et une base de données, après, c'est a toi de gérer... |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|