XMLHttpRequest 2 liste déroulantes

molasson Messages postés 67 Statut Membre -  
molasson Messages postés 67 Statut Membre -
Bonjour,

Grâce à XMLHttpRequest je recharge ma liste déroulante dont le contenu se trouve dans une bdd mysql. Tant queje n'ai que 1 formulaire qui influence le deuxième, tout va bien, mais dès que j'en rajoute un deuxième, la sa ne fonctionne pas :'(

Voici mon code :

<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
var xhr = getXMLHttpRequest();
var value1 = "1";
var value2 = "1";
get();
function request(oSelect) {
	value1 = oSelect.options[oSelect.selectedIndex].value;
	get();
}
function request2(oSelect2) {
	value2 = oSelect2.options[oSelect2.selectedIndex].value;
	get();
}
function get(){
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readData(xhr.responseXML);
		}
	};
	alert(value1);
	alert(value2);
	xhr.open("POST", "XMLHttpRequest.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("id_entreprise=" + value1 && "id_materiel=" + value2);
}
function readData(oData) {
	var nodes   = oData.getElementsByTagName("item");
	var oSelect = document.getElementById("modelesSelect");
	var oOption, oInner;
	
	oSelect.innerHTML = "";
	for (var i=0, c=nodes.length; i<c; i++) {
		oOption = document.createElement("option");
		oInner  = document.createTextNode(nodes[i].getAttribute("name"));
		oOption.value = nodes[i].getAttribute("id");
		
		oOption.appendChild(oInner);
		oSelect.appendChild(oOption);
	}
}
</script>
</head>

<body>
	<div id="programBox">
			Client : <select id="entreprisesSelect" onchange="request(this);">
				<?php					
					mysql_connect('localhost', 'root', '');
					mysql_select_db('tpi');
					
					$query = mysql_query("SELECT * FROM entreprises ORDER BY id");
					while ($back = mysql_fetch_assoc($query)) {
						echo "\t\t\t\t<option value=\"" . $back["id"] . "\">" . $back["nom"] . "</option>\n";
					}
				?>			
			</select>
			Type : <select id="typeSelect" onchange="request2(this);">
				<?php					
					mysql_connect('localhost', 'root', '');
					mysql_select_db('tpi');
					
					$query = mysql_query("SELECT * FROM type ORDER BY id");
					while ($back = mysql_fetch_assoc($query)) {
						echo "\t\t\t\t<option value=\"" . $back["id"] . "\">" . $back["nom"] . "</option>\n";
					}
				?>			
			</select>
			Modèle : <select id="modelesSelect"></select>
	</div>
</body>
</html>


<?php
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<list>";
$id_entreprise = (isset($_POST["id_entreprise"])) ? htmlentities($_POST["id_entreprise"]) : NULL;
$id_materiel = (isset($_POST["id_materiel"])) ? htmlentities($_POST["id_materiel"]) : NULL;
if ($id_entreprise && $id_materiel) {
	mysql_connect('localhost', 'root', '');
	mysql_select_db('tpi');
	$query = mysql_query("SELECT * FROM modeles WHERE id_entreprise=" . mysql_real_escape_string($id_entreprise) . " AND id_materiel=" . mysql_real_escape_string($id_materiel) . " ORDER BY nom");
	while ($back = mysql_fetch_assoc($query)) {
		echo "<item id=\"" . $back["id"] . "\" name=\"" . $back["nom"] . "\" />";
	}
}
echo "</list>";
?>


La page script.js contient l'XMLHttpRequest. Quelqu'un pourrait-il m'aider ? Je découvre XMLHttpRequest, et je galère ;)
A voir également:

1 réponse

molasson Messages postés 67 Statut Membre 4
 
Personne n'a de solution ? Je rajoute que ce code fonctionne sur firefox mais pas sur IE 7 :'( c'est embêtant car justement tout les utilisateurs de cette appi auront IE ... Quelqu'un a-il déjà rencontré ce problème ?
0