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
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
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>
ajaxBatiment.php
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
<?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>"; 
?>