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 :

Récuperation valeur select rempli dynamiquement


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut Récuperation valeur select rempli dynamiquement
    Bonjour,

    J'ai un petit problème qui m'embête beaucoup en ce moment. J'ai un formulaire de deux listes liées. Un champ projet qui se remplit par une requête mysql et un champs sous_product qui se remplit par une requête mysql mais selon le choix du projet. Je souhaite récupérer les valeurs de ces deux champs :

    Pour le champ projet il n'y a aucun problème cela marche très bien mais le champs sous_product impossible.

    code pour récuperer les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sel = document.getElementById('projet');
    projet = sel.options[sel.selectedIndex].value;
     
    sel2 = document.getElementById('sous_product');
    sous_product = sel.options[sel2.selectedIndex].value;
    code de mon formulaire
    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
    21
    22
    <form action="test2.php" method="post" enctype="multipart/form-data">
        <h2>Test de listes</h2><br>
        <label>projets</label>
        <select name='projet' id='projet' onchange='go("sous_product")'>
                <option value='-1'>Aucun</option>
                <?php
    	    mysql_connect("localhost","","");
    	    mysql_select_db("eprbdd");
    	    $res = mysql_query("SELECT * FROM projet ORDER BY libelle");
    	    while($row = mysql_fetch_assoc($res)){
    	        echo "<option value='".$row["id"]."'>".$row["libelle"]."</option>";
    	    }
    	    ?>
        </select>
     
        <label>sous_product</label>
        <div id='sous_product' style='display:inline'>
    	<select name='sous_product' id='sous_product'>
    	    <option value='-1'>Choisir un projet</option>
            </select>
        </div>
    </form>
    Il me semble que le problème est du au div mais je n'arrive pas à valider le diplay:inline si je n'utilise pas cette méthode. En effet sel 2 prend la valeur div#sous_product au lieu de select#sous_product

    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    il est interdit d'utiliser le même id (sous_product) deux fois dans une page

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Le problème c'est que si je change le nom de ma div alors l'affichage dans la liste sous_product ne marche pas. J'ai une liste imbriquée dans une autre et impossible de faire un choix

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par titi6913 Voir le message
    Le problème c'est que si je change le nom de ma div alors l'affichage dans la liste sous_product ne marche pas. J'ai une liste imbriquée dans une autre et impossible de faire un choix
    Ben si tu changes l'id de la div, il va forcément falloir le changer partout où tu y fais référence, notamment dans tes fonctions JS

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Je suis débutant en javascript et je n'y arrive toujours pas. Je ne souhaite pas appeler les div mais le select donc il ne me semble pas que j'appelle les div dans mes fonctions javascript.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    alors supprime simplement l'id de tes div, si tu t'en sert pour le css, modifie les id de tes div dans ton formulaire et dans ton css

    (sauf erreur de ma part)

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par titi6913 Voir le message
    Je ne souhaite pas appeler les div mais le select donc il ne me semble pas que j'appelle les div dans mes fonctions javascript.
    Visiblement ta seconde liste (sous_product) est alimentée par une fonction Ajax.
    C'est certainement dans cette fonction (entre autres) qu'il faut répercuter la modification de l'id que tu as faites dans le code HTML.

    A+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    si je supprime l'id de mes div même probleme liste imbriqué dans une autre

    vu qu'avant le div et le select avait le même id si je modifie le div en <div style='display:inline'> alors tout devrait marcher non ?

    Mais cela ne marche pas je comprends pas pourquoi

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    On ne pourra pas être plus précis si tu ne nous donnes pas plus de code ...
    (code généré de la page de départ + fonction Ajax JavaScript + page PHP appelée par Ajax)

    A+

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Désolé voici les codes qui vous interessent il me semble

    fonction 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    function getXhr(){
        var xhr = null; 
        if(window.XMLHttpRequest) 
            xhr = new XMLHttpRequest(); 
            else if(window.ActiveXObject){ 
                try {
                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
    		     xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			     }
    		}
    		else { 
    		        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			xhr = false; 
    		      } 
        return xhr;
    }
     
    function go(nom)
    {
        var xhr = 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){
        leselect = xhr.responseText;
        // On se sert de innerHTML pour rajouter les options a la liste
    						 document.getElementById(nom).innerHTML = leselect;
    					}
    				}
     
        // Ici on va voir comment faire du post
        xhr.open("POST","ajax_" + nom + ".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 projet
        sel = document.getElementById('projet');
        id_projet = sel.options[sel.selectedIndex].value;
        xhr.send("id_projet="+id_projet);
    }


    page php (ajax_sous_product.php) appelée par ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    	echo "<select name='sous_product' id='sous_product'>";
    	if(isset($_POST["id_projet"])){
    		mysql_connect("localhost","","");
    		mysql_select_db("eprbdd");
    		$res = mysql_query("SELECT id,libelle FROM sous_product 
    			WHERE id_projet=".$_POST["id_projet"]." ORDER BY libelle");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<li><option value='".$row["id"]."'>".$row["libelle"]."</option></li>";
    		}
    	}
    	echo "</select>";
    ?>
    le formulaire :
    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
    21
    22
    <form action="test2.php" method="post" enctype="multipart/form-data">
        <h2>Test de listes</h2><br>
        <label>projets</label>
        <select name='projet' id='projet' onchange='go("sous_product")'>
                <option value='-1'>Aucun</option>
                <?php
    	    mysql_connect("localhost","","");
    	    mysql_select_db("eprbdd");
    	    $res = mysql_query("SELECT * FROM projet ORDER BY libelle");
    	    while($row = mysql_fetch_assoc($res)){
    	        echo "<option value='".$row["id"]."'>".$row["libelle"]."</option>";
    	    }
    	    ?>
        </select>
     
        <label>sous_product</label>
        <div id='sous_product' style='display:inline'>
    	<select name='sous_product' id='sous_product'>
    	    <option value='-1'>Choisir un projet</option>
            </select>
        </div>
    </form>
    et je souhaite donc récuperer la valeur du select de sous_product mais impossible alors que pour le projet aucun problème

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Alors en 3 étapes :
    1. dans le formulaire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <select name='projet' id='projet' onchange='go("div_sous_product")'>
    2. dans le formulaire toujours :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <div id='div_sous_product' style='display:inline'>
    3. dans ajax_sous_product.php :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      echo "<option value='".$row["id"]."'>".$row["libelle"]."</option>";
      (z'ont rien à faire là ces <li></li> )

    A+

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Merci beaucoup ca marche très bien maintenant en plus j'ai compris mon erreur.

    Tu m'as fait avancer sur beaucoup de points

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut

    Bienvenue sur developpez ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    J'ai proposé l'utilisation d'un retour XML depuis PHP pour remplir le select avec DOM dans le forum AJAX:
    http://www.developpez.net/forums/d77...x/#post4489970
    Je pense que c'est mieux que d'utiliser innerHTML pour remplacer le select.

Discussions similaires

  1. [DOM] Récuperation valeur Select modifié dynamiquement sous Explorer
    Par camcam8782 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 31/03/2009, 10h49
  2. [E-03] Récuperer valeurs avec des textbox dynamiques
    Par UltrAzimut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/11/2008, 11h27
  3. Récuperer valeur d'un select!
    Par vibration76 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/06/2008, 14h12
  4. les tag select remplie dynamiquement
    Par ayoub2010 dans le forum Struts 1
    Réponses: 8
    Dernier message: 10/04/2007, 09h03
  5. Method Post et Select rempli dynamiquement
    Par bor1s dans le forum ASP
    Réponses: 3
    Dernier message: 06/03/2007, 08h01

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