Bonjour à tous,

voilà mon problème : j'ai trois liste liées avec ajax, pour la première, pas de pb elle est alimentée par une table nommée 'orientation' qui contient 2 champs : Num_orient, Libelle_orient. Pour la deuxième liste pas de pb non plus elle est aussi alimenter par une table se nommant 'objectif ' et qui contient 3 champs Num_object, Libelle_object et Obj_num_orient, cette deuxième liste est bien conditionnée par le choix de la première. Le soucis arrive sur la troisième liste qui elle, reste vide et doit être alimenté par la table 'action' comportant 2 champs : Num_action et Libelle action, de plus j'ai une quatrième table qui est une table de liaison entre objectif et action et qui se nomme obj_action et qui contient obj_act_numaction, obj_act_numobject, obj_act_numorient. Ce que je souhaiterais c'est que cette liste soit conditionnée par le choix de la deuxième, et qu'elle contienne la liste des actions. Pour le code de base je me suis inspiré d'un tutoriel trouvé sur ce forum, car je n'ai aucune connaissance en JavaSript et AJAX. A priori, j'ai l'impression que lorsque l'on clique sur la deuxième liste on ne passe jamais par la fonction change2(). Auriez vous une idée sur la question ? et pourriez vous me dire d'où vient le pb. Voilà mon code :

fichier principale. (testliste.php)

<html>
<head>
<title></title>
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" href="style.css">

<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;
}

function change(){

var xhr = getXhr();

// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
alert(xhr.readyState);
// 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){
di = document.getElementById('objectif');
di.innerHTML = xhr.responseText;
}
}

// Ici on va voir comment faire du post
xhr.open("POST","ajaxListeAction.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
idauteur = document.getElementById('orientatio').options[document.getElementById('orientatio').selectedIndex].value;
alert(idauteur);
xhr.send("Num_orient="+idauteur);
}
function change2(){

var xhr = getXhr();

// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
alert(xhr.readyState);
// 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){
di = document.getElementById('action');
di.innerHTML = xhr.responseText;
}
}

// Ici on va voir comment faire du post
xhr.open("POST","ajaxListe3Action.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
idauteur = document.getElementById('objecti[]').options[document.getElementById('objecti[]').selectedIndex].value;
//alert(idauteur);
xhr.send("Num_object="+idauteur);
}

</script>
</head>
<body>
<form action='Insert.php?insertEtape=vrai&recommencerEtape=vrai' method='post'>
<fieldset id='field24'> <!--creation des listes déroulantes liées-->
<legend id='leg'>Indiquez l'orientation/l'objectif</legend>
<label>Orientation</label>
<select name='orientatio' onchange='change()'>
<option value='-1'>Aucun</option>
<?php
require_once('connect.inc');
$res = mysql_query("SELECT Num_orient, Libelle_orient FROM orientation ORDER BY Libelle_orient");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Num_orient"]."'>".$row["Libelle_orient"]."</option>";
}
?>

</select>
<label>Objectif</label>
<div id='objectif' style='display:inline'>
<select name='objecti[]' multiple='multiple' size='1' onchange='change2()'>
<option value='-1'>Choisir un objectif</option>
</select>
</div>

<label>Action</label>
<div id='action' style='display:inline'>
<select name='actio'>
<option value='-1'>Choisir une action</option>
</select>
</div>
</fieldset>
</form>
</body>
</html>

fichier qui reçoit le poste de la première liste.(ajacListeAction.php)

<?php
if(isset($_REQUEST["Num_orient"])){
echo "<select name='objecti[]'multiple='multiple'>";

require_once('connect.inc');
$res = mysql_query("SELECT Num_object,Libelle_object FROM objectif WHERE Object_num_orient =".$_REQUEST["Num_orient"]." ORDER BY Libelle_object");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Num_object"]."'>".$row["Libelle_object"]."</option>";
}
}
else
echo "<option value='-1'>Choisir une orientation</option>";
echo "</select>";

?>

fichier pour la deuxième liste. (ajacListe3Action.php)

<?php
if(!isset($_REQUEST["Num_object"])){
echo "<select name='actio'>";

require_once('connect.inc');
$res = mysql_query("SELECT Obj_act_numaction, Libelle_action FROM obj_action, action WHERE Obj_act_numaction=Num_action AND Obj_act_numobject =".$_REQUEST["Num_object"]." ORDER BY Libelle_object");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Obj_act_numaction"]."'>".$row["Libelle_action"]."</option>";
}
}
else
echo "<option value='-1'>Choisir une orientation</option>";
echo "</select>";
?>

Pour infos j'ai testé la requête du fichier ajaxListe3Action.php sous phpmyadmin elle fonctionne.

Merci pour votre aide ou vos conseils car ça fait plusieurs jours que je bloque.