Bonjour,
Voici mon problème, je désire faire un formulaire avec 3 liste déroulantes dynamiques.
Le choix de la première liste affectant la seconde, le choix de la seconde affectant la troisième.
Pour chaque liste, le remplissage s'effectue à chaque fois par une requête mysql avec des paramètres différents suivant la valeur trouvé à la liste précédente.
Voici le code que j'ai produit partie html :
et mon javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 <?php //Déclaration de variables utiles (valeurs des fieldid) $fieldid_departement = 59; $fieldid_type = 67; $fieldid_type_sport = 70; $fieldid_type_sorties = 71; $fieldid_type_loisirs = 72; $fieldid_activite_sportcombat = 73; $fieldid_activite_sportnautique = 75; $fieldid_activite_sportequestre = 74; ?> <!-- GESTION DU TYPE --> <div id='type'> <select id='type_liste' name='type_liste' style='width:160px;' onChange='change_type();'> <?php $resultat_type = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_type); while($row = mysql_fetch_array($resultat_type)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <div id='Sports' class='select' style='display:block;'> <select id='typeliste' name='typeliste' style='width:160px;' onChange='change_categorie()'> <?php $resultat_typelistsport = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_type_sport); while($row = mysql_fetch_array($resultat_typelistsport)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <div id='Sorties' class='select' style='display:none;'> <select id='typeliste' name='typeliste' style='width:160px;' onChange='change_categorie()'> <?php $resultat_typelistsorties = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_type_sorties); while($row = mysql_fetch_array($resultat_typelistsorties)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <div id='Loisirs' class='select' style='display:none;'> <select id='typeliste' name='typeliste' style='width:160px;' onChange='change_categorie()'> <?php $resultat_typelistloisirs = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_type_loisirs); while($row = mysql_fetch_array($resultat_typelistloisirs)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <!-- FIN GESTION DU TYPE --> <!-- GESTION DE LA CATEGORIE --> <div id='Sport de combat' class='selectcategorie' style='display:block;'> <select id='typelisteactivite' name='typelisteactivite' style='width:160px;'> <?php $resultat_categorie_combat = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_activite_sportcombat); while($row = mysql_fetch_array($resultat_categorie_combat)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <div id='Sport équestre' class='selectcategorie' style='display:none;'> <select id='typelisteactivite' name='typelisteactivite' style='width:160px;'> <?php $resultat_categorie_equestre = mysql_query('SELECT fieldtitle FROM jos_comprofiler_field_values WHERE fieldid ='.$fieldid_activite_sportequestre); while($row = mysql_fetch_array($resultat_categorie_equestre)) { echo '<option >'.$row["fieldtitle"].'</option>'; } ?> </select> </div> <!-- FIN GESTION CATEGORIE -->
Je peux envoyé ma bdd par MP si besoin. Pour le moment la première liste s'affiche comme il faut, la seconde aussi mais impossible d'afficher correctement la troisième.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function change_type() { var type = $('type_liste'); var selects = $$('div.select'); for ( var i = 0; i < selects.length; i++ ) { if (selects[i].id == type.value ) { selects[i].style.display = 'block'; } else { selects[i].style.display = 'none'; } } } function change_categorie() { var type = $('typeliste'); var selects = $$('div.selectcategorie'); for ( var i = 0; i < selectcategorie.length; i++) { if (selects[i].id == type.value ) { selects[i].style.display = 'block'; } else { selects[i].style.display = 'none'; } } }
Je pense que ma fonction change_categorie n'est pas bonne, notemment la déclaration de typeliste.
merci de votre aide
ps:j'ai cherché sur le forum mais je n'ai trouvé la réponse que pour 2 listes dynamiques, jamais 3 et pas en sql
Partager