Bonjour,
comme le suggère le titre de ce post, encore un problème de liste liée...
J'ai lu et testé tous les tutoriels disponibles (merci à tous les contributeurs) et j'ai déjà fait tourner ce type de fonctionnalité (3 listes liées) à une autre occasion sans aucun problème.
Je vous remercie de bien vouloir jeter un oeil sur le code suivant en sachant que c'est la liste déroulante "commune" qui ne se construit pas (le 3e select).
Le fichier principal:
Le fichier php utilisé dans la fonction niveau():
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 <html> <head> <script type="text/javascript" src=".././Modeles/js/getXhr.js"></script> <script type="text/javascript"> function niveau(){ var xhr = getXhr(); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var rst = xhr.responseText; document.getElementById('niv').value = rst; } } xhr.open("POST", "ajaxNiveau.php", true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); sel = document.getElementById('archer'); idArcher = sel.options[sel.selectedIndex].value; xhr.send("idArcher="+idArcher); } function departement(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var rst2 = xhr.responseXML; var items = getElementsByTagName('element'); for(var i=0;i<items.length;i++){ var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true); document.getElementById('commune').options[i]=myOption; } document.getElementById('commune').selectedIndex = 0; } } xhr.open("POST", "ajaxCommune.php", true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); sel2=document.getElementById('dept'); idDept=sel2.options[sel2.selectedIndex].value; xhr.send("idDept="+idDept); } </script> </head> <body> <?php include '.././Controleur/verif_session.php'; include '.././Controleur/base.cnx.php'; include '.././Vues/menu.php'; include '.././Modeles/rqArcher.php'; include '.././Modeles/rqDept.php'; ?> <form id="fpassindiv" name="fpassindiv" method="post" action=".././Modeles/fp_prochain.php"> <fieldset> <legend>Saisie individuelle d'un passage de niveau</legend> <select name="archer" id="archer" onchange="niveau()"> <option value="-1">---> A R C H E R <---</option> <?php while ($dataArcher=mysqli_fetch_assoc($rqArcher)){ extract($dataArcher); echo "<option value='".$arnum."'>".$arnom." ".$arprenom."</option>"; } ?> </select> <input type="text" name="niv" id="niv"> <select name="dept" id="dept" onchange="departement()"> <option value="078">---> 078 <---</option> <?php while ($dataDept = mysqli_fetch_assoc($rqDept)){ extract($dataDept); echo "<option value='".$ncodept."'>".$ncodept."</option>"; } ?> </select> <select name="commune" id="commune"> <option value="31941">---> RAMBOUILLET <---</option> </select> Date (jj/mm/aaaa) <input type="text" name="date" id="date" size="10"> Score <input type="text" name="score" id="score" size="10"> <br><br> <input type="submit" name="btnMAJ" id="btnMAJ" value="Enregistrer"> </fieldset> </form> </body> </html>
Le fichier php utilisé dans la fonction departement():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php if(isset($_POST['idArcher'])){ include '.././Controleur/verif_session.php'; include '.././Controleur/base.cnx.php'; $sqlNiveau="select nblibelle, nclibelle from badge, nbadge, ncouleur where badge.batype=nbadge.nbnum and badge.bacouleur=ncouleur.ncnum and badge.baarcher='".$_POST['idArcher']."' and badge.badate='0000-00-00'"; $rqNiveau=mysqli_query($cnx, $sqlNiveau) or die("Exécution de la requête rqNiveau impossible"); $dataNiveau=mysqli_fetch_assoc($rqNiveau); extract($dataNiveau); echo utf8_encode($nblibelle." ".$nclibelle); } ?>
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 <?php header("Content-Type: text/xml; charset=utf-8"); echo "<?xml version='1.0' encoding='utf-8'?>"; echo "<elements>"; if(isset($_POST['idDept'])){ include '../Tilalac/Controleur/base.cnx.php'; $sqlCommune="select * from ncommune where ncodept='".$_POST['idDept']."' order by ncolibelle"; $rqCommune=mysqli_query($cnx, $sqlCommune) or die("Exécution de la requête rqCommune impossible"); while ($dataCommune=mysqli_fetch_assoc($rqCommune)) { extract($dataCommune); echo "<element>"; echo "<option>".$ncolibelle."</option>"; echo "<valeur>".$nconum."</valeur>"; echo "</element>"; } } echo "</elements>"; ?>
Partager