IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Listes d�roulantes


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2005
    Messages
    81
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 81
    Par d�faut [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 : 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

  2. #2
    Expert confirm�

    Avatar de denisC
    Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2005
    Messages
    4 050
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Service public

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 4 050
    Par d�faut
    Citation Envoy� par gscorpio
    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.
    A quel niveau est-ce que �a ne marche pas?

    Tu as essay� htmlentities en PHP?

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2005
    Messages
    81
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 81
    Par d�faut
    Salut!

    Merci d'avoir r�pondu.
    En fait j'ai aucune erreur donc je ne sais pas vraiment ce qui cloche.
    Avec tous les tests que j'ai fait, il semble que ca soit au niveau du remplissage des listes en PHP.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      echo '<option value="'.$sql->recup($i,"LOCATION").'">'.$sql->recup($i,"LOCATION").'</option>';
    Ici on remplit la premi�re (la value et le texte affich� contiennent une apostrophe) mais la liste s'affiche en entier (l'apostrophe ne g�ne pas le remplissage du reste de la liste).

    Ensuite on a l'ajax (je maitrise pas donc peut etre qu'il y a un probl�me aussi)
    Notamment sur cette ligne (pure supposition) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    idbatiment = document.getElementById("batiment").options[document.getElementById("batiment").selectedIndex].value;
    Et enfin (l� ou je pense le plus que le probl�me se situe), au niveau de l'extraction dans la base. (si on rajoute addslashes ou htmlentities, le test est faux : l\'entracte!=l'entracte)...

    Voici le code qui va chercher la valeur de la liste "batiment", qui est cens�es s�lectionner les activit�s en lien avec ce batiment, les afficher dans la liste, et �ventuellement en selectionner une si elle a d�j� �t� remplie

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $batiment=$_REQUEST["idbatiment"];
     
            $query = "select distinct SUBLOCATION1 from LOCATION WHERE LOCATION='".$batiment."'";		
    		$sql->execute($query);
           // if ($sql->execute($query)=="ok")
        //    {
                for ($i=0;$i<$sql->nbresults();$i++)
                {
                    echo '<option value="'.$sql->recup($i,"SUBLOCATION1").'"';
    					if ($sql->recup($i,"SUBLOCATION1")==$activite) echo' selected="selected"';
    				echo'>'.$sql->recup($i,"SUBLOCATION1").'</option>';
                }

Discussions similaires

  1. [AJAX] Listes d�roulantes li�es
    Par Jiraiya42 dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 14/04/2008, 09h58
  2. [AJAX] Liste d�roulante et tableau
    Par Ludodor dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 04/02/2008, 11h52
  3. [AJAX] Liste d�roulante pour afficher les informations en ajax div ?
    Par rob2-9 dans le forum G�n�ral JavaScript
    R�ponses: 13
    Dernier message: 17/11/2006, 09h06
  4. [AJAX] Liste d�roulante qui ne s'actualise pas avec XMLHttpRequest
    Par zoom61 dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 14/11/2006, 09h52
  5. [AJAX] Listes d�roulantes li�es avec Ajax
    Par paupiette dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 01/08/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo