[AJAX] Listes déroulantes
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:
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 Ajax :
Code:
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:
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
Code:
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> |
J'ai déjà essayé quelques trucs avec des addslashes ou autre mais sans succès.
Merci de votre aide