Bonjour,
je me bats depuis 2 jours avec cette technique intéressante mais complexe pour moi qui ne connais pas vraiment javascript.
voici ce que je veux obtenir : dans un formulaire, j'ai 2 menus : un menu établissements, un menu psychologues. Quand je sélectionne un établissement, je voudrais que le psychologue attaché à cet établissement soit automatiquement sélectionné dans le second menu. Je mets ça sous forme de menu parce que l'utilisateur doit pouvoir modifier le choix du psycho (il y a des cas où c'est nécessaire). J'ai fait ci-dessous un test que je vous soumets, car il ne marche pas. J'avoue avoir recopié des trucs sans tout comprendre ...
Si vous pouvez m'éclairer, ou me signaler des pistes pour piger tout ça, je veux bien (j'ai déjà épluché le tuto de toutjavascript, mais je trouve qu'il est fait pour les bêtes de code !)
Merci d'avance
Corinne M
Voici le code de la page html principale :
<html>
<head>
<script>
function requestmenu(form)
{
var liste1 = form.elements["menuEtb"];
var liste2 = form.elements["menuPsy"];
var index = liste1.selectedIndex;
var xhr_object = null;
xhr_object = new XMLHttpRequest(); // appli à usage interne : je ne teste que sous firefox pour l'instant
xhr_object.open("POST", "menuderoulant.php", true);
xhr_object.onreadystatechange = function anonymous() {
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "etb="+escape(menuEtb.options[index].value)+"&form="+f.name+"&select=menuPsy";
xhr_object.send(data);
}
}
</script>
</head>
<body>
<form class="CenteredForm" name="formulaire" id="formulaire" action="" method="" onsubmit="return false;">
<fieldset>
<div class="Left">Etablissement :
<select name="menuEtb" id="menuEtb" class="ButtonL" onchange="requestmenu(this.form)">
<option value="" selected="selected"></option>
<!-- menu simplifié et en dur pour le test : 5 villes, avec leur ID dans la base de données comme valeur -->
<option value="1">rennes</option>
<option value="2">vannes</option>
<option value="3">nantes</option>
<option value="4">brest</option>
<option value="5">angers</option>
</select>
Psychologue :
<select name="menuPsy" id="menuPsy" class="ButtonL">
<!-- menu psychologues -->
<option value="" selected="selected"></option>
<option value="1">durand</option>
<option value="2">dupont</option><br />
<option value="3">dugenou</option>
</select>
</div>
</fieldset></form>
</body>
</html>
voici le code de la page "menuderoulant.php" qui traite la requête :
<?
// ça sert à quoi ce header ?
header('Content-type: text/html; charset=iso-8859-1');
// ici je mets ce qu'il faut pour me connecter à la base de donénes
// je cherche l'établissement dont l'id est transmis en paramètre
// je pourrai ainsi récupérer l'id du psycho attaché à cet établissement
$query = "SELECT * FROM `etablissements` WHERE `etb_ID` = '".$_POST["etb"]."'";
$result = mysql_query($query);
// pourquoi des echo ?
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
// pour simplifier l'exemple je considère que la base de données a renvoyé 1 établissement et qu'il n'y a pas d'erreur
$ligne = mysql_fetch_array($result);
// et là, SVP que dois-je mettre pour demander à modifier la sélection du menuPsy ?
// j'ai vu des ex où on alimentait entièrement un menu, mais rien pigé : sais pas comment adapter
// je veux que dans menuPsy soit select la ligne correspondant à l'ID du psy concerné
mysql_close();
?>