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 :

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 -->
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
 
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 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.

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