Bonjour,

J'ai récupéré ce tutoriel http://robloche.free.fr/javascript/t...tml#section_05 que j'ai adapté afin d'avoir 3 listes plutot que 2.
Le problème que je rencontre est que sur le choix de la première liste, il faudrait initialiser, bien sur la 2ème (ce qui fonctionne), mais aussi la 3ème (ce qui ne fonctionne pas). L'initialisation de la 3ème ne se fait actuellement que sur choix de la 2ème.
Un autre soucis, est que si on sélectionne le premier choix de la liste 2, ca ne met pas à jour la liste 3...
Mes connaissances en AJAX, Javascript sont proches du néant...
Vous pouvez tester le résultat final ici : http://www.alliancefrancaisecork.eu/...page=enrolment (vers la fin de la page)

voici le code javascript :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function request05(f){ 
	var l1    = f.elements["list1"]; //on prend la liste des categories
	var l2    = f.elements["list2"]; //on prend la liste des lignes de 
                                                           //produit 
 
	var index = l1.selectedIndex; //on prend la valeur sélectionnée 
                                                           //dans la liste des categories 
 
	if(index < 1) 
                   // si rien n'est sélectionné, liste2 vide 
	   l2.options.length = 0; 
 	else { 
	   var xhr_object = null; // élément sélectionné en liste 1 
 
	   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", "en/ajax_cours.php", true); //init de la requete 
 
	   xhr_object.onreadystatechange = function() { 
	      if(xhr_object.readyState == 4){ //si les données sont 
                                                                   //accessibles 
	         eval(xhr_object.responseText);
			 request06(f);
			 }
	   } 
 
	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
	   var data = "categorie="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2"; 
	   xhr_object.send(data); 
	} 
}
 
function request06(f){ 
	var l2    = f.elements["list2"]; //on prend la liste des categories
	var l3    = f.elements["list3"]; //on prend la liste des lignes de 
                                                           //produit 
 
	var index = l2.selectedIndex; //on prend la valeur sélectionnée 
                                                           //dans la liste des categories 
 
	if(index < 1) 
                   // si rien n'est sélectionné, liste2 vide 
	   l3.options.length = 0; 
 	else { 
	   var xhr_object = null; // élément sélectionné en liste 1 
 
	   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", "en/ajax_session.php", true); //init de la requete 
 
	   xhr_object.onreadystatechange = function() { 
	      if(xhr_object.readyState == 4) //si les données sont 
                                                                   //accessibles 
	         eval(xhr_object.responseText); 
	   } 
 
	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
	   var data = "titre="+escape(l2.options[index].value)+"&form="+f.name+"&select=list3"; 
	   xhr_object.send(data); 
	} 
}
ainsi que les 2 codes php appelés

ajax_cours.php : (j'ai essayé ici de faire en sorte que ma liste 3 soit mise à jour...)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$mysql_db = @mysql_connect("sql2", "alliancefrancai", "EHwdVfCX"); 
                @mysql_select_db("alliancefrancai_cours"); 
 
                $query  = "SELECT `titre` FROM `liste_cours` WHERE `categorie` = '".$_POST["categorie"]."'"; 
                $query .= "GROUP BY `titre` ORDER BY `titre` "; 
                $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["titre"].'");'; 
         
        
        $query2  = "SELECT `session` FROM `liste_cours` WHERE `titre` = '".$r[0]["session"]."'";
        $query2 .= "GROUP BY `session` ORDER BY `session` ";
        $result2 = @mysql_query($query);
 
        echo 'var o2 = null;';
        echo 'var s2 = document.forms["'.$_POST["form"].'"].elements["list3"];';
        echo 's2.options.length = 0;';
        while($r2 = mysql_fetch_array($result2))
        echo 's2.options[s2.options.length] = new Option("'.$r2["session"].'");'; 
         
         
        @mysql_close($mysql_db); 
        
        ?>
et ajax_session.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$mysql_db = @mysql_connect("sql2", "alliancefrancai", "EHwdVfCX"); 
                @mysql_select_db("alliancefrancai_cours"); 
 
                $query  = "SELECT `session` FROM `liste_cours` WHERE `titre` = '".$_POST["titre"]."'"; 
                $query .= "GROUP BY `session` ORDER BY `session` "; 
                $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["session"].'");'; 
         
        @mysql_close($mysql_db); 
        
        ?>
Merci d'avance de votre précieuse aide...