Bonjour,
Je me suis inspiré de cette discussion :
http://www.developpez.net/forums/d80...nds-ne-marche/
J'ai un problème lors de l'affichage de ma deuxième liste en fonction de la sélection de la première. J'ai pourtant l'ID de la 1ere liste que j'affiche (donc, que je récupères) mais après lorsque je passe cette variable dans ma requête pour afficher la deuxième liste, cette dernière se trouve vide.
auteurs.php
ajaxBatiment.phpCode:
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 <html> <head> <title></title> <script type='text/javascript'> function getXhr() { var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else // XMLHttpRequest non supporté par le navigateur { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } /** * Méthode qui sera appelée sur le click du bouton */ function go() { var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200) { leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('lebatiment').innerHTML = leselect; document.getElementById('lebatiment').onchange = golivre; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxBatiment.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de l'auteur sel = document.getElementById('corpsdemetier'); idcorpsdemetier = sel.options[sel.selectedIndex].value; xhr.send("id_corpsdemetier="+idcorpsdemetier); } function golivre() { var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200) { leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('leprix').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxPrix.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de l'auteur sel = document.getElementById('livre'); idlivre = sel.options[sel.selectedIndex].value; xhr.send("idLivre="+idlivre); } </script> </head> <body> <form> <fieldset style="width: 500px"> <legend>Liste liées</legend> <label>Corps de Métier</label> <select name='corpsdemetier' id='corpsdemetier' onchange='go()'> <option value='-1'>Aucun</option> <?php mysql_connect("localhost","root",""); mysql_select_db("base"); $res = mysql_query("SELECT id_cdm,designation_cdm FROM corps_de_metier"); while($row = mysql_fetch_assoc($res)){ echo "<option value='".$row["id_cdm"]."'>".$row["designation_cdm"]."</option>"; } ?> </select> <br /> <label>Batiment</label> <div id='lebatiment' style='display:inline'> <select name='batiment' id='batiment'> <option value='-1'>Choisir un batiment</option> </select> </div> <br /> <label>Prix</label> <div id='leprix' style='display:inline'> <select name='prix' id='prix'> <option value='-1'>Choisir un prix</option> </select> </div> </fieldset> </form> </body> </html>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php $id_corps_de_metier=$_POST["id_corpsdemetier"]; echo $id_corps_de_metier; echo "<select name='batiment' id='batiment'>"; if(isset($_POST["id_corpsdemetier"])){ mysql_connect("localhost","root",""); mysql_select_db("test"); $res = mysql_query("SELECT id_batiment,nom_batiment FROM batiment WHERE id_batiment='".$_POST["id_corpsdemetier"]."' "); while($row = mysql_fetch_row($res)){ echo "<option value='".$row["id_batiment"]."'>".$row["nom_batiment"]."</option>"; } } echo "</select>"; ?>