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 : 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 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
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

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>
J'ai déjà essayé quelques trucs avec des addslashes ou autre mais sans succès.

Merci de votre aide