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 :

Liste déroulante : actualisation par rapport à la précédente


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut Liste déroulante : actualisation par rapport à la précédente
    Bonjours, voilà mon problème j'ai 2 liste déroulante j'aimerais qu'après avoir sélectionner une valeur dans la première les valeur de la seconde s'actualise.

    exemple la première contient les région française la seconde contient les département, je sélectionne Bretagne dans la 1ère et la seconde me propose Cote d'Armor ; Finistère ; Morbihan ; Ille-et-Vilaine

    j'avais oublier les département son dans une base de données (comme les région d'ailleurs)


    j'ai fait une recherche mais infructueuse :'(
    voici le bout de code que j'aimerais traiter.
    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
    ...<tr><td ><b>Catégorie de l'article</b></td>
           <td>
                  <SELECT name="Cat">
                         <option value="LEG" selected>Légumes</option>
                         <option value="FRU">Fruits</option>
                  </SELECT>
           </td>
     </tr>
    <?php
           $SelFam = "SELECT * FROM t_familles"/* WHERE CodeCategorie = '$CodCat'" (correspond au value de la liste précédente)*/;
           $RetSelFam = Fonc_AccesBDDRequete($SelFam);
    ?>                        
    <tr>
           <td><b>Famille de l'article</b></td>
           <td>
                  <SELECT name="Fam">
                         <option value="0" selected>Choisisez dans la liste</option>
    <?php
                         while($EnrCA = mysql_fetch_object($RetSelFam))
                         {
    ?>
                                <option value="<?php echo $EnrCA->CodeFamille; ?>">
    <?php
                                                                    
                                       echo $EnrCA->DesFam; ?>
                                </option>
    <?PHP
                         }
    ?>
                  </SELECT>
           </td>...
    c'est pour l'ajout d'un article :
    en 1) on doit sélectionner une catégorie (fruits ou légume)
    en 2) la famille (agrumes, choux, laitue...)


    le problème que j'ai actuellement c'est que toute les famille arrive dans ma liste déroulante.
    Je connais une méthode qui consisterais à rajouter un bouton pouractualiser la page avec le paramètre de la catégorie sélectionner mais j'aimerais l'éviter.
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 185
    Points : 160
    Points
    160
    Par défaut
    Tu t'es trompé de catégorie, c'est du javascript ce que tu souhaites !

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    je penseais que l'on pouvais le faire en php mais bon dans c'est condition si un modo ou un admin pouvais déplacer mon topic pour ne pas faire de double post je ne le remercierais jamais assez
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    La réponse à ton problème existentiel commence ici :
    http://www.developpez.net/forums/showthread.php?t=598

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    merci mais j'ai quelque difficulter à transformer le code pour l'intégrer à ma page

    je préfert la réponse de la FAQ

    qui me parais mieux car fonctionnel sur tout les navigateurs. cependant un probème se pose à moi ma premièrs liste est fixe (pour le moment, 2 valeurs demans ne vallent pas la peine d'un appelle à la base de donnée la seconde je doit à peler la base de donée pour lui charger ces valeurs en fonction de la sélection de la première et la on me propose de géré avec des tableau personellement j'aurais préférer en java récuperer la "value" de la sélection pour l'intégrer à la requète suivante est-ce possible?

    ps : je continue les recherches dans la section javascript
    me reste à trouver comment utiliser le résultat obtenu pour compléter la list suivante

    bon mes recherche avance je viens de trouver comment récupérer la valeur de la list Ici
    maintenant comment intégrer du java dans du php (l'inverse d'après le titre) mais c'est bien le java qui est dans du php

    moi il me faudrais l'inverse
    voilà ou j'en suis dans mon script :
    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
     <SCRIPT  language="javascript">
                function raz(liste)
    			{
    				f=document.formu
    				l=f.elements[liste];
    				for (i=l.length; i>=0; i--)
    				f.options[i]=null;
    			}
    			function filltheselect(/*QueMettreIciPourDélivrerCodCatCorectement*/)
    			{
    				l=document.getElementById('Cat')
    				raz("Fam");
    				Codcat=l.options[l.selectedIndex].value
    				return CodCat
    <?php
                                    $SelFam = "Select * From t_famille Where CodeCategorie = codeCat"  ;
                                $resultat = Fonc_AccesBDDRequete($SelFam);
                                $Enr = mysql_fetch_object($resultat);
     
    ?>
    			}
            </SCRIPT>
    je sais plus que faire
    puis plus loin

    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
         <tr>
              <td ><b>Catégorie de l article</b></td>
              <td>
                   <SELECT name="Cat" onChange="filltheselect( /*IciJeVoudraisAvoirSoitLaChaîneDeMaRequèteSoitL'objetSoitLaCatégorieSélectionner*/)">
                        <option value="LEG" selected>Légumes</option>
                        <option value="FRU">Fruits</option>
                   </SELECT>
              </td>
         </tr>
    <?php
    /*Si c'est la catégorie sélectionner que j'ai renvoyer par ma fonction*/
    $CodCat=/*CatégorieSélectionnerQueJeRécupertParRapportACeQuiEstAuDessus*/
              $SelFam = "SELECT * FROM t_familles"/* WHERE CodeCategorie = '$CodCat'"*/;
    /*Si c'est la chaîne de ma requète*/
    $SelFam=/*ChaineQueJeRécupertParRapportACeQuiEstAuDessus*/
              $RetSelFam = Fonc_AccesBDDRequete($SelFam);
    /*Si c'est l'objet avec le jeu d'enregistrement*/
    $EnrCA=/*JeuD'EnregistrementQueJeRécupertParRapportACeQuiEstAuDessus*/
    ?>
         <tr>
         <td><b>Famille de l article</b><br><br>Si la famille de l'article que vous voulez ajouter n'existe pas, veuilliez contacter LP</td>
         <td>
              <SELECT name="Fam">
                   <option value="0" selected>Choisisez dans la liste</option>
    <?php
                   while($EnrCA = mysql_fetch_object($RetSelFam))
                   {
    ?>
                        <option value="<?php echo $EnrCA->CodeFamille; ?>">
    <?php
                                                                    
                        echo $EnrCA->DesFam; ?>
                   </option>
    <?PHP
                                    }
    ?>
              </SELECT>
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    alors y a plus personne pour m'aider? par-ce que la je suis en manque d'inspiration et comme c'est pas pour la partie administration j'aurais préférer qu'il n'y ai pas de possibiliter d'ajout de famille, vous me direz que j'ai cas ne pas mettre la requète pour ajouter mais une recherche par nom ne peu s'effectuer que si le nom est dans la base donc en cas de faute d'orthographe ou de non présence du dit nom l'article sera mal ajouter.
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    donc j"ai avancer et je test la solution Ajax et siddh
    cependant après copier/coller le tuto marche parfaitement et lorsque je l'adapte à mes données sa ne marche plus

    je vous met mon code si vous voyez ou je me suis égarer je vous en serais éternelement reconaissant

    page Categories.php correspond à auteurs.php du tuto

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <html>
        <head>
            <title>test pour moi</title>
            <script type='text/javascript'>
    			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, vous pouvez essayer de le mettre à jour ou en installer un nouveau tel internet explorer, mozilla firefox"); 
    				   xhr = false; 
    				} 
                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function alertSelect(){
    				sel = document.getElementById('Fam');
    				codefamille = sel.options[sel.selectedIndex].value;
    				alert('le code de la famille sélectioner est '+codefamille);
    			}
    			function go(){
    				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('Fam').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxFamille.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, le code de la catégorie de l'auteur
    				sel = document.getElementById('Categorie');
    				CodCat = sel.options[sel.selectedIndex].value;
    				xhr.send("CodCat="+CodCat);
    			}
            </script>
        </head>
        <body>
        	<form>
        		<fieldset style="width: 500px">
    				<legend>Liste liees</legend>
    					<label>Categorie</label>
                    		<select name='Categorie' id='CodCat' onchange='go()'>
                            	<option value='-1'>Selectionnez une categorie</option>
    	                        <?php
                                                                    require_once("BaseDeDonnees/AccesBDDRequete.php");
                                        $res = Fonc_AccesBDDRequete("SELECT * FROM t_categories ORDER BY Categorie");
                                    while($row = mysql_fetch_assoc($res)){
                                            echo "<option value='".$row["CodeCategorie"]."'>".$row["Categorie"]."</option>";
                                    }
                                    ?>
    	                     </select>
        	            <label>Famille</label>
    				<div id='Fam' style='display:inline'>
                        <select name='Fam' onChange='alertSelect()'>
                            <option value='-1'>Choisir une Categorie</option>
                        </select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    l'affichage des catégorie marche mais lorsque je change la catégorie la famille n'est pas actualisé

    donc maintenant le code de ajaxFamille.php qui correspond à ajaxlivre.php
    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
     
    <?php
            require_once("BaseDeDonnees/AccesBDDRequete.php");
            echo "<select name='Fam'>";
            if(isset($_POST["CodCat"]))
            {
                    $CodCat=$_POST["CodCat"];
                    echo $CodCat;
                    $res = Fonc_AccesBDDRequete("SELECT CodeFamille,DesFam FROM t_familles WHERE CodeCategorie='".$CodCat."' ORDER BY DesFam");
                    while($row = mysql_fetch_assoc($res)){
                            echo "<option value='".$row["CodeFamille"]."'>".$row["DesFam"]."</option>";
                    }
            }
            else
            {
                    echo 'la poste est en grève';
            }
            echo "</select>";
    ?>
    voilà j'espert que vous verrez ce que je n'ai pas vue

    [EDIT]
    les table concerné par les requètes

    t_categories

    CodeCategorie
    -> Char(3) -> 'LEG' ou 'FRU'
    Categorie -> VarChar -> 'Légumes' ou 'Fruits'


    t_familles
    CodeFamille -> smallInt auto-incrément
    DesFam -> Varchar(20) -> 'choux', 'Carottes' ... ou 'agrumes'...
    CodeCategorie -> 'LEG' ou 'FRU' ^^

    [/EDIT]
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    j'ai fait d'autre test, sur d'autre machine, et il s'avéré que sur mes PC un sous Vista et l'autre sous XP familial que le code ne marche pas alors que sur un autre pc avec XP pro (il me semble le code marche) quelqu'un peut-il me dire pourquoi sa ne marche pas avec tout les pc?

    merci d'avance pour vos réponce
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    heu dsl pour la petite erreur au dessus c'est parceque j'ai plus ie sur mon pc en faite sa marche sur ie mais sous firefox sa marche po quelqu'un pourrait'il me montrer mon erreur car la je vois pas même en faisant copier coller des requêtes dans la page du tutoriel sa marche pa sous firefox bien que avec les tables auteurs et des livres dans la base de données le tutoriel marche sous firefox, mais avec ce que je veux afficher sa marche pas sous firefox
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    sa y ai j'ai trouver mon erreur!!!
    un truc tout con mais il a fallut qu'un collègue m'aide,

    je vous met le code que j'avais et la ligne fautive, si jamais qq'1 tombe sur le même pb...

    page Categories.php correspond à auteurs.php du tuto

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <html>
        <head>
            <title>test pour moi</title>
            <script type='text/javascript'>
    			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, vous pouvez essayer de le mettre à jour ou en installer un nouveau tel internet explorer, mozilla firefox"); 
    				   xhr = false; 
    				} 
                    return xhr;
    			}
    			
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function alertSelect(){
    				sel = document.getElementById('Fam');
    				codefamille = sel.options[sel.selectedIndex].value;
    				alert('le code de la famille sélectioner est '+codefamille);
    			}
    			function go(){
    				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('Fam').innerHTML = leselect;
    					}
    				}
    
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxFamille.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, le code de la catégorie de l'auteur
    				//sel = document.getElementById('Categorie') ;/*sa venait de là!!!*/
    sel = document.getElementById('CodCat');// falais mettre l'id pas le name!! personne n'aurais pu me le dire... 
    				CodCat = sel.options[sel.selectedIndex].value;
    				xhr.send("CodCat="+CodCat);
    			}
            </script>
        </head>
        <body>
        	<form>
        		<fieldset style="width: 500px">
    				<legend>Liste liees</legend>
    					<label>Categorie</label>
                    		<select name='Categorie' id='CodCat' onchange='go()'>
                            	<option value='-1'>Selectionnez une categorie</option>
    	                        <?php
    								require_once("BaseDeDonnees/AccesBDDRequete.php");
            	                    $res = Fonc_AccesBDDRequete("SELECT * FROM t_categories ORDER BY Categorie");
                	                while($row = mysql_fetch_assoc($res)){
                    	                echo "<option value='".$row["CodeCategorie"]."'>".$row["Categorie"]."</option>";
                        	        }
                            	?>
    	                     </select>
        	            <label>Famille</label>
    				<div id='Fam' style='display:inline'>
                        <select name='Fam' onChange='alertSelect()'>
                            <option value='-1'>Choisir une Categorie</option>
                        </select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    bon ben résolut byebye
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  11. #11
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    Si tu veux j'avais essayé de faire la meme chose en ajax et ca marchait très bien.

    lien vers la discussion que j'ai créé à ce sujet dans le forum ajax

    sinon tu as un cours dessus sur ce site (ce que j'avais fait était un copier coller c'est pour ca que ca marchait ^^ ) : cours

    il faut se rendre dans la partie IV - A et c'est exactement ce que tu veux faire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2007, 21h55
  2. Tri par rapport au précédent
    Par AciDation dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/12/2006, 16h31
  3. Avoir un contenu de liste déroulante différent par rapprot à une liste déroulante
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 19/10/2006, 08h07
  4. Html : liste de choix par rapport à des choix
    Par Djwaves dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/03/2006, 16h52
  5. [ JSP ][ Débutant ] Liste déroulante + actualisation de page
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/04/2004, 19h51

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