Bonjour,
sur un formulaire j'ai 2 select et un input.
Quand je sélectionne un item du 1er select, pas de problème, le 2nd select se met à jour (merci siddh!).
Théoriquement, en changeant la valeur du 2nd select, une valeur devrait apparaître dans l'input. En pratique, rien ne se passe!
Avec cet excellent topic http://www.developpez.net/forums/d77...te-liees-ajax/, j'ai réussi à le faire mais avec 3 select
Merci de jeter un oeil sur les différents codes ci-dessous et m'indiquer ce que je fais de travers (ou que je n'ai pas compris!).
La page principale:
La 1ère page php appelée:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 html> <head> <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title> <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; } /** * Méthode qui sera appelée sur le click du bouton */ function go(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var rst = xhr.responseText; document.getElementById('menu').innerHTML = rst; } } xhr.open("POST","ajaxMenu.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel = document.getElementById('theme'); idtheme = sel.options[sel.selectedIndex].value; xhr.send("idtheme="+idtheme); } function go2(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var rst2=xhr.rseponseText; document.getElementById('href').value=rst2; } } xhr.open("POST", "ajaxHref.php"); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel = document.getElementById('menu'); idmenu = sel.options[sel.selectedIndex].value; xhr.send("idmenu="+idmenu); } </script> </head> <?php include('base.cnx.php'); $sqlTheme="select * from theme order by 1"; $rqTheme=mysqli_query($cnx,$sqlTheme) or die("Exécution de la requête rqTheme impossible"); ?> <body> <form> <fieldset style="width: 500px"> <legend>Liste liées</legend> <label>T H E M E S</label> <select name='theme' id='theme' onchange='go()'> <option value='-1'>Aucun</option> <?php while($dataTheme = mysqli_fetch_assoc($rqTheme)){ extract($dataTheme); echo "<option value='".$thnum."'>".$thlibelle."</option>"; } ?> </select> <label>Menu</label> <div id='menu' style='display:inline'> <select name='menu' onchange="go2()"> <option value='-1'>M E N U S</option> </select> </div> <div id="href" style='display:inline'> <input type="text" name="href"> </div> </fieldset> </form> </body> </html>
La 2nde page php appelée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ?php include('base.cnx.php'); $sqlMenu="select * from menu where metheme=".$_POST['idtheme']; $rqMenu=mysqli_query($cnx,$sqlMenu) or die("Exécution de la requête rqMenu impossible"); echo "<select name='menu' onchange='go2()'>"; while($dataMenu = mysqli_fetch_assoc($rqMenu)){ extract($dataMenu); echo "<option value='".$menum."'>".$melibelle."</option>"; } echo "</select>"; ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php include 'base.cnx.php'; $sqlHref="select mehref from menu where menum=".$_POST['idmenu']; $rqHref=mysqli_query($cnx, $sqlHref) or die("Exécution de la requête rqHref impossible"); $dataHref=mysqli_fetch_assoc($rqHref); extract($dataHref); echo $dataHref; ?>
Partager