remplir une liste déroulante à partir d'une autre
Posté : 15 déc. 2005, 17:03
Bonjour,
Je cherche un moyen de remplir une liste déroulante en allant chercher dans ma bdd les enregistrements correspondants à ce que j'aurais sélectionnés dans une autre liste déroulante, le tout en évitant de recharger la page à chaque fois.
Voici la page que j'ai construite mais impossible de trouver pourquoi ce la ne fonctionne pas :
Je cherche un moyen de remplir une liste déroulante en allant chercher dans ma bdd les enregistrements correspondants à ce que j'aurais sélectionnés dans une autre liste déroulante, le tout en évitant de recharger la page à chaque fois.
Voici la page que j'ai construite mais impossible de trouver pourquoi ce la ne fonctionne pas :
<html>
<head>
<title>TEST </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="http://robloche.free.fr/common.js"></script>
<script type="text/javascript" src="http://robloche.free.fr/tuto.js"></script>
<script type="text/javascript" >
var l1 = f.elements["list1"];
var l2 = f.elements["list2"];
var index = l1.selectedIndex;
if(index < 1)
l2.options.length = 0;
else {
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "testXML.php", true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "$codeprestation="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";
xhr_object.send(data);
}
</script>
</head>
<body>
<? include "f_base"; ?>
<div class="Centered">
<form class="CenteredForm" name="form_selects" id="form_selects" action="" method="" onsubmit="return false;">
<fieldset>
<legend>Faites un choix dans la liste de gauche et observez le résultat dans celle de droite</legend>
<div class="Left">
Famille :
<select name="list1" id="list1" class="ButtonL" onchange="request05(this.form)">
<option value="0" selected>-- Sélectionnez un code prestation --</option>
<?
$sql = "SELECT codeprestation FROM prestations ORDER BY codeprestation ASC";
$option = mysql_query($sql);
while ($row = mysql_fetch_row($option))
{
$query="SELECT codeprestation FROM prestations WHERE codeprestation=\"$row[0]\"";
$codeprestation=mysql_query($query);
$codeprestation=mysql_result($codeprestation,"codeprestation");
print "<option value=\"$codeprestation\">".($row[0])."</option>\n";
}
?>
</select>
Espèces :
<select name="list2" id="list2" class="ButtonL">
<?php
$query = "SELECT `libelle` FROM `prestations` WHERE `codeprestation` = '".$_POST["$codeprestation"]."'";
$query .= " ORDER BY `libelle`";
$result = @mysql_query($query);
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
while($r = mysql_fetch_array($result))
echo 's.options[s.options.length] = new Option("'.$r["libelle"].'");';
?>
</select>
</div>
</fieldset>
</form>
</div>
</body></html>