Bonjour,
Voilà je cherche à faire des listes déroulantes liées. J'ai bien entendu regardé la doc.
Alors le contexte, on a plusieurs services, lorsqu'on en sélectionne un, on a le choix entre plusieurs antennes puis lors du choix de l'antenne, on a plusieurs équipes propre à cette antenne.
Pour le moment je n'ai fait que la partie service/antenne.
Voilà mes fichiers :
traitement.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
30
31
32
33
34
35
36
37
38
39
40 function getXhr() { var xhr = null; if(window.XMLHttpRequest) // Firefox etc... xhr = new XMLHttpRequest(); else if(window.ActiveXObject) { try{ xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { alert("Votre navigateur ner supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } /* Appel de la methode lors de la selection */ function go() { var xhr = getXhr(); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { leselect = xhr.responsetext; document.getElementById('antenne').innerHTML = leselect; } } xhr.open("POST","refreshAntennes.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel = document.getElementById('service'); idservice = sel.options[sel.selectedIndex].value; //alert(idservice); //verif que la bonne valeur est stockée xhr.send("idservice="+idservice); }
Code html : 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 <body> <form> <fieldset style = "width: 500px"> <legend> Liste liées</legend> <label>Services</label> <select name='service' id='service' onchange='go()'> <option value='-1'>Aucun</option> <?php include("connect.php"); $res = mysql_query("SELECT Id_service AS ids, Lib_service FROM SERVICE ORDER BY No_Service"); while($row = mysql_fetch_assoc($res)) { echo "<option value='".$row["ids"]."'>".$row["Lib_service"]."</option>"; } ?> </select> <label>Antenne</label> <div id='antenne' style='display:inline'> <select name='antenne'> <option value='-1'>---- Antenne---</option> </select> </div> </fieldset> </form> </body>
refreshAntennes.php
Code php : 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 <?php echo"<select name='antenne'>"; if(isset($_POST["idservice"])) { $champs = $_POST['idservice']; include("connect.php"); echo ($_POST["idService"]); $sql = mysql_query('SELECT Id_antenne AS ida,No_antenne, Lib_antenne FROM ANTENNE WHERE Id_service = $champs ORDER BY No_antenne'); while($row= mysql_fetch_assoc($res)) { echo "<option value='".$row["ida"]."'>".$row["Lib_antenne"]."</options>"; } } echo "</select>"; ?>
La requête POST est bel et bien effectué. Coté JS la valeur du choix du service est bel et bien stockée et c'est bien l'id qui est gardée. Lorsque je sélectionne un service, la liste déroulante "antenne" se met directement en "Undefined".
Merci d'avance et bonne journée![]()
Partager