Liste deroulante liee

Fermé
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 - 23 juil. 2010 à 06:27
Bonjour,
Voila mon but c'est d'alimenter une liste déroulante "B" en tenant compte de la valeur de la liste déroulante "A" qu'un utilisateur a choisi, tout en sachant que les valeurs de la liste "B" seraient extraites d'une base de données.

Voici mon code

if (isset($_GET['id']))
{
	$requeteann = mysql_query('Select * From articles Where ann_cat= '.$_GET['id']) or die('Erreur SQL !'.$requeteann.'<br>'.mysql_error()); 
		 
?>
<form>
			<fieldset style="width: 500px">
				<legend>Liste liées</legend>
				<label>Auteurs</label>
				<select name='auteur' id='auteur' onchange='go()'>
					<option value='-1'>Aucun</option>
 <?php
	while ($repann= mysql_fetch_array($requeteann))
	{
		echo('<option value="'.$repann["ann_cat"].'">'. $repann["ann_cat"] .' </option>');
	}			  			
?></select>
				<label>Livres</label>
				<div id='livre' style='display:inline'>
				<select name='livre'>
					<option value='-1'>Choisir un auteur</option>
				</select>
				</div>
			</fieldset>
		</form>
<?php

	if(isset($_POST["idAuteur"])){echo "<select name='livre'>";
		
		$requetemar = mysql_query('Select distinct * From articledepot Where ann_auteur= "'. $_POST['idAuteur'] .'"' ) or die('Erreur SQL !'.$requeteann.'<br>'.mysql_error());
		while($row = mysql_fetch_assoc($requetemar)){
			echo "<option value='".$row["ann_rubrique"]."'>".$row["ann_rubrique"]."</option>";
		}
	}
	echo "</select>";

}		


Et voici le code javascript qui va avec
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('livre').innerHTML = leselect;
					}
				}

				// Ici on va voir comment faire du post
				xhr.open("POST","rechmulti.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('auteur');
				idauteur = sel.options[sel.selectedIndex].value;
				xhr.send("idAuteur="+idauteur);
			}


Mon problème c'est en sélectionnant la valeur de la liste déroulante "A" la liste déroulante "B" disparait !!