Bonjour!!
Je dois mettre à jour 5 listes déroulantes en cascade, chacune en fonction du contenu de la précédente.
J'ai fait quelque chose qui marche, mais mon problème est que lorsque l'une des valeurs contient une apostrophe ca ne marche plus.
je vous donne le code pour les 2 premières listes, je saurais me débrouiller pour les autres... Je précise que je vais chercher mes valeurs dans une base Oracle.
Voilà :
Première liste en PHP qui va appeler l'ajax :
Code Ajax :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <select name='batiment' id='batiments' onclick='change_batiment()'> <?php $sql = new oracle(); $sql->connect(); $query = "select distinct LOCATION from LOCATION order by LOCATION"; $sql->execute($query); for ($i=0;$i<$sql->nbresults();$i++) { echo '<option value="'.$sql->recup($i,"LOCATION").'">'.$sql->recup($i,"LOCATION").'</option>'; } $sql->fermer(); ?> </select>
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 function change_batiment(){ getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ di = document.getElementById('activites'); di.innerHTML = xhr.responseText; } } // on va envoyre les infos xhr.open("POST","activite.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id du batiment idbatiment = document.getElementById("batiment").options[document.getElementById("batiment").selectedIndex].value; xhr.send("idbatiment="+idbatiment); }
2ème liste en php appelée par l'ajax :
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 <select name='activite' onchange='change_activite()'> <?php if(isset($_REQUEST["idbatiment"])){ include("oracle.php"); $sql = new oracle(); $sql->connect(); $batiment=$_REQUEST["idbatiment"]; $query = "select distinct SUBLOCATION1 from LOCATION WHERE LOCATION='".$batiment."'"; $sql->execute($query); for ($i=0;$i<$sql->nbresults();$i++) { echo '<option value="'.$sql->recup($i,"SUBLOCATION1").'">'.$sql->recup($i,"SUBLOCATION1").'</option>'; } $sql->fermer(); } else echo "<option value='-1'>Choisir un site</option>"; echo "</select>"; ?>
et enfin quelque part dans le code, l'id pour afficher la liste
J'ai déjà essayé quelques trucs avec des addslashes ou autre mais sans succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <label>Activite</label> <div id='activites' > <select name='activite' onclick='change_activite()'> <option value='-1'>Choisir une activité</option> </select> </div>
Merci de votre aide
Partager