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 :
ainsi que les 2 codes php appelés
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); } }
ajax_cours.php : (j'ai essayé ici de faire en sorte que ma liste 3 soit mise à jour...)
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
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); ?>
Merci d'avance de votre précieuse aide...
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); ?>
Partager