[AJAX-PHP] Liste liées

Fermé
almaje - 13 janv. 2010 à 04:19
 almaje - 13 janv. 2010 à 23:09
Bonjour,
S'il vous plait je suis encore débutant en AJAX, j'ai pris un script d'AJAX et je l'ai édité en fonction de ma base et de mon formulaire pour me remplir mes deux listes (la deuxieme en fonction de la premiere), la première marche bien mais la deuxième ne se remplie pas.
Je vous mets le code de mes 2 pages

classe.php
<html>
<head>
<title>affichage étudiants par rapport à une classe</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('etudiant').innerHTML =
leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajaxEtudiant.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 la classe
sel = document.getElementById('classe');
id_classe = sel.options[sel.selectedIndex].value;
xhr.send("id_classe="+id_classe);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 500px">
<legend>Liste liées</legend>
<label>Classes</label>
<?php
include ("connexion.php");
connection();
?>
<select name="classe" id="classe" onChange='go()'>
		<option value='-1'>Aucun</option>
		<?php
		// select de la table classe
		$slct_classe="select id_classe,libelle_classe from classe";
		if (!$result_classe=mysql_query($slct_classe)) die(mysql_error()); 
		while($row_classe=mysql_fetch_row($result_classe))
		{
		// id de la table classe
		$id_classe=$row_classe[0];
		
		// requete de selection sur la table filiere
		$slct_filiere="select * from filiere inner join classe on filiere.id_filiere=classe.id_filiere where classe.id_classe=$id_classe";
		if (!$result_filiere=mysql_query($slct_filiere)) dir(mysql_error());
		while($row_filiere=mysql_fetch_row($result_filiere))
		{
		// affichage classe filiere
		 ?>
		<option value="<?php echo $row_classe[0]; ?>" > <?php echo $row_classe[1]." ".$row_filiere[1] ; ?></option><?php 
		}
		
		}
		?>
        </select>
<label>Etudiants</label>
<div id='etudiant' style='display:inline'>
<select name='etudiant'>
<option value='-1'>Choisir un étudiant</option>
</select>
</div>
</fieldset>
</form>
</body>
</html>


ajaxEtudiant.php
<?php
echo "<select name='etudiant'>";
include ("connexion.php");
connection();
if(isset($_POST["id_classe"])){
$res = mysql_query("SELECT * FROM etudiant
WHERE id_classe='".$_POST["id_classe"]."' ORDER BY nom_etudiant");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["0"]."'>".$row["1"]." ".$row[2]."</option>";
}
}
echo "</select>";
?>


merci d'avance
A voir également:

2 réponses

personne :s
0
allez, svp c'est pas toujours que je demande de l'aide !
0