begin process at 2012 05 29 13:53:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

vendredi 21 novembre 2008 à 12:02:51 | Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

beegeezzz

Bonjour tout le monde,

J'ai lié trois listes déroulantes avec ajax.

La première liste déroulante contient par exemple :

BA1
BA2
BA3

Quand je choisis BA2, les cours de BA2 apparaissent dans la 2e liste déroulante par contre, la 3e liste déroulante avec les types ne bouge pas.

J'aimerais juste que la 3e liste déroulante se mette à jour en même temps que la 2e.

Sauriez-vous me dire qu'est-ce que je dois modifier dans mon code pour y arriver ?

Voici le code de la première liste déroulante, celle-ci n'est PAS alimentée via AJAX :

[CODE]<?php
    //include('connexion.php');
    $res = "SELECT * FROM cours WHERE MNEMONIC IN (SELECT MNEMONIC FROM enseigner WHERE MATRICULE_PROF = '" . $_SESSION['Matricule'] . "')";
    $query = mysql_query($res);
    $nbrow = mysql_num_rows($query);
    echo($nbrow);
?>
    
    <form>
        <select name='annee' id='annee' onChange='javascript:go(this.value)'>
            <option value='-1'> (1) Choisissez une année </option>
                <?php
                    while($row = mysql_fetch_assoc($query))
                    {
                        echo "<option value='".$row["NOM_ANNEE"]."'>".$row["NOM_ANNEE"]."</option>";
                    }
                ?>
        </select>
        
        
    </form>
    
<!-- appel du code AJAX pour compléter la liste déroulante suivante -->
    
    <script language="javascript" src="Scripts/Ajax_Listes_Deroulantes_Generiques.js"></script>[/CODE]

La seconde liste déroulante est elle alimentée en AJAX :

[CODE]    function getXhr()
    {
        var xhr = null;
        if(window.XMLHttpRequest) // Firefox et autres
            xhr = new XMLHttpRequest();
        else if(window.ActiveXObject)
        { // Internet Explorer
            try
            {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            }
            
            catch (e)
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else
        {     // XMLHttpRequest non supporté par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            xhr = false;
        }
        return xhr;
    }
        // ... et ici il n'y a aucune valeur qui change pour le générique
    
    /**
    * Méthode qui sera appelée sur le changement de la liste déroulante annees
    */
    function go(annee)
    {
        //alert(annee);
        var xhr = getXhr();
        //alert(xhr);
        // 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
            //alert(xhr.readyState);
            if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0 ) )
            {
                //alert('cool'); //cette alerte me permet de savoir qu'on arrive au moins à cet endroit du code
                //alert(xhr.status);
                
                //******  Je ne comprends pas comment le contenu de leselect est connu à cet endroit alors que xhr.open("POST","Scripts/ajaxLivre.php",true); se trouve                          plus bas
                //*******
                
                
                leselect = xhr.responseText;
                //alert('xhr.responseText vaut '+xhr.responseText);

                
                //alert(xhr.responseText);
                //                        alert(leselect);
                // On se sert de innerHTML pour rajouter les options a la liste
                document.getElementById('select_Nom_mnemonics').innerHTML = leselect; //ici, le nom du select devrait être générique !!!!
                //alert(leselect);
            }
        }
    
        // Ici on va voir comment faire du post
        xhr.open("POST","Scripts/ajaxLivre.php",true); //ici, on devrait rend ajaxLivre générique !!!!
        // 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 de l'auteur
        xhr.send("NOM_ANNEE="+annee); //ici, NOM_ANNEE et annee devraient être génériques !!!!            
    }[/CODE]

et via cette requête :

[CODE]<?php
session_start();
//print_r($_POST);
    if(isset($_POST["NOM_ANNEE"]))
    {

        mysql_connect("localhost","root","mdp");
        mysql_select_db("deliberations");
        $res = mysql_query("SELECT MNEMONIC FROM cours WHERE NOM_ANNEE = '" . $_POST['NOM_ANNEE'] . "' AND MATRICULE_PROF = '" . $_SESSION['Matricule'] . "'");
        //echo("SELECT MNEMONIC FROM cours WHERE NOM_ANNEE = '" . $_POST['select_Nom_annees'] . "' AND MATRICULE_PROF = '" . $_SESSION['Matricule'] . "'");

        while($row = mysql_fetch_assoc($res))
        {
            echo "<option value='".$row["MNEMONIC"]."'>".$row["MNEMONIC"]."</option>";
        }
    }
?>[/CODE]

Par contre, comme je l'ai dis plus haut, la 3e ne bouge pas :

[CODE]    function getXhr2()
    {
        //alert('salut');
        var xhr2 = null;
        if(window.XMLHttpRequest) // Firefox et autres
            xhr2 = new XMLHttpRequest();
        else if(window.ActiveXObject)
        { // Internet Explorer
            try
            {
                xhr2 = new ActiveXObject("Msxml2.XMLHTTP");
            }
            
            catch (e)
            {
                xhr2 = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else
        {     // XMLHttpRequest non supporté par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            xhr2 = false;
        }
//        alert('ici '+xhr2);
        return xhr2;
    }

/**
    * Méthode qui sera appelée sur le changement de la liste déroulante annees
    */
    function fnctcours(cours)
    {
        //alert(cours);
        var xhr2 = getXhr2();
    //    alert(xhr2);
        // On défini ce qu'on va faire quand on aura la réponse
        xhr2.onreadystatechange = function()
        {
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            //alert(xhr2.readyState);
            //alert(xhr2.status);
            if(xhr2.readyState == 4 && (xhr2.status == 200 || xhr2.status == 0 ) )
            {
                //alert('cool'); //cette alerte me permet de savoir qu'on arrive au moins à cet endroit du code
                //alert(xhr2.status);
                
                //******  Je ne comprends pas comment le contenu de leselect2 est connu à cet endroit alors que xhr2.open("POST","Scripts/ajaxLivre.php",true); se trouve                          plus bas
                //*******
                
                
                leselect2 = xhr2.responseText;

                
                //alert('xhr2.responseText vaut '+xhr2.responseText);
                //                        alert(leselect2);
                // On se sert de innerHTML pour rajouter les options a la liste
                document.getElementById('select_Nom_types').innerHTML = leselect2; //ici, le nom du select devrait être générique !!!!
                //alert(leselect2);
            }
        }
    
        // Ici on va voir comment faire du post
        xhr2.open("POST","Scripts/ajaxTypes.php",true); //ici, on devrait rend ajaxLivre générique !!!!
        // ne pas oublier ça pour le post
        xhr2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // ne pas oublier de poster les arguments
        // ici, l'id de l'auteur
        xhr2.send("MNEMONIC="+cours); //ici, NOM_ANNEE et annee devraient être génériques !!!!            
    }[/CODE]

[CODE]<?php
session_start();
//print_r($_POST);
    if(isset($_POST["MNEMONIC"]))
    {
        //echo($_POST["MNEMONIC"]);
        mysql_connect("localhost","root","mdp");
        mysql_select_db("deliberations");
        $res = mysql_query("SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = '" . $_POST["MNEMONIC"] . "'");
        //echo("SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = '" . $_POST["MNEMONIC"] . "'");
        $nombre = mysql_num_rows($res);
        //echo($nombre);
        

        while($row = mysql_fetch_assoc($res))
        {
            echo "<option value='".$row["Type_de_Cours"]."'>".$row["Type_de_Cours"]."</option>";
        }
    }
?>[/CODE]

Elle se modifie si je choisi une autre valeur dans la liste déroulante 2 mais le problème est que quand je n'ai qu'une valeur dans la liste déroulante 2, la liste déroulante 3 ne se met pas à jour, il met impossible de mettre à jour la liste de sélection 3 vue que je ne sais pas faire de changement dans la liste de sélection 2 (il n'y a qu'une seule valeur) et donc pas d'enclenchement de l'évènement "onChange" et donc pas de code AJAX.

Un tout grand merci d'avance pour l'aide.

beegees
vendredi 21 novembre 2008 à 12:07:22 | Re : Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

Bul3

Membre Club
bonjour,
>>J'aimerais juste que la 3e liste déroulante se mette à jour en même temps que la 2e.
ce que tu fais pour la 2ème, là où tu le fais, fais le aussi pour la 3ème...
   [mon Site] [M'écrire] Bul  

vendredi 21 novembre 2008 à 12:15:38 | Re : Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

beegeezzz

Merci pour ta réposne Bul3,

Saurais-tu me montrer par rapport à mon code comment je peux faire ?

Merci d'avance.

beegees


vendredi 21 novembre 2008 à 12:32:14 | Re : Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

Bul3

Membre Club
j'ai lu.
          [mon Site] [M'écrire] Bul         

vendredi 21 novembre 2008 à 12:39:54 | Re : Mettre à jour la 3e liste déroulante en même temps que la seconde liste déroulante

Bul3

Membre Club
navré, c'était sur "l'autre message" que je voulais mettre cette réponse
ma je m'a gouré...

quand à ici....
___
         fait appel à un php qui te permettra de mettre à jour liste 2
puis    
fait appel à un php qui te permettra de mettre à jour liste 3
ou _____________
fait appel à un php qui retourne 2 array, l'un pour liste 2, l'autre pour liste 3
ou ___
??

         [mon Site] [M'écrireBul         



Cette discussion est classée dans : liste, alert, post, xhr, xhr2


Répondre à ce message

Sujets en rapport avec ce message

[AJAX] Plusieurs Champs mis à jour à partir d'un seul [ par Souboc ] Bonjour, En m'inspirant d'un tuto, je souhaite mettre à jour plusieurs champs de formulaire en fonction du choix fait dans une dropdown. Voilà mon co xmlhttprequest et select [ par cseagle ] Bonjour tout le monde, Suite à la source d'Antomicro pour son chat sur phpcs (http://www.phpcs.com/code.aspx?ID=32681) j'ai decidé d'essayer de tra fonction qui ne retourne rien [ par lOeil ] Bonjour à tous,je ne comprend pas j'ai une fonction ajax qui est censée me retourner responseText, je suis bien dans la boucle else if(reponse == "ret Ajax et IE7 [ par arnaultp ] Bonjour à tous!Je viens de me mettre à l'AJAX, et en reprenant un tutorial j'ai une erreur (voire 2 d'ailleurs) qui apparaît et que je n'arrive pas à Rafraichir la page via choix dans liste [ par pasdie ] Bonjour à tous,Voilà mon problème :J'ai une page PHP contenant deux listes.Ma première liste est remplie via une requete sur mon serveur (je possède E IE7 non reconnu ? [ par caviar ] Salué ...j'ai ce code qui fonctionne parfaitement avec FF mais impossible sous IE7 (pas testé sur d'autres versions)            var xhr = null;        Deroulement de script [ par blatip ] Bonjour,Je suis nouveau, donc toutes mes excuses si je ne suis pas assez clair ...Mon souci :J'ai fait une page qui fait appel à un script JSCe script une seul variable post passe avec ajax ? [ par caviar ] Saluté...j'ai un petit problème bizare avec une fonction ajaxen fait un seul des paramètres que je veux envoyer à mon script php passe apparamentsi le Réinitialisation d'une liste déroulante après requete ajax [ par lowkey ] Bonjour,Voici ce que je développe :une question s'affiche, les réponses sont dans une liste déroulante.Lorsque je sélectionne une réponse, la question Contenu qui s'efface après XmlHttpRequest [ par Yoanned ] Bonjour à tous !Je suis débutant en Javacript, et je m'arrache les cheveux sur un problème que je ne sais pas résoudre...J'essaie de récupérer des inf


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales