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

Langage PHP Discussion :

les résultats selon 2 menus déroulants dynamiques, liés entre eux [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut les résultats selon 2 menus déroulants dynamiques, liés entre eux
    Bonjour,

    J'ai deux menus déroulants dynamiques "nom_menu" et "enfant_menu" : les contenus (les options) de ces menus viennet d'un bdd MySql. En outre, on affiche les options du 2e menu selon la selectionne du 1er menu.

    Mes deux menus marchent...

    j'ai fait la condition pour afficher le résultat
    - soit selon la sélection par 1er menu (nom_menu) --> if (!empty($_GET['nom']) && empty($_GET['enfant']))
    - soit par les sélections par 2 menus... --> elseif (!empty($_GET['nom']) && !empty($_GET['enfant']))

    La première condition marche, mais 2e condition ne marche pas...

    Lorsque l'on choisit l'option du 1er menu, on affiche le résultat et 1er menu (nom_menu) affiche aussi l'option sélectionnée...
    Je vois, par echo, que ma variable, $nom="".@$_GET['nom']; contient la valeur

    Par contre, lorsque l'on sélectionne une option du 2e menu (enfant_menu), je n'arrive pas affiche le résultat selon les critères de 2 menus en plus 1er et 2 menus n'affiche plus l'option sélectionnée...

    En outre, je vois, par echo, que ma variable, $nom="".@$_GET['nom']; ne contient plus sa valeur, mais ma 2e variable, $enfant="".@$_GET['enfant']; contient la valeur

    Mes questions comment je peux afficher les résultats selon 2 menus ou bien comment je peux garder les valeurs de mes 2 variables ($nom et $enfant) et comment je peux garder les 2 menus avec leurs options sélectionnées ?

    Voici mon code :
    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
    82
    83
    84
    85
    <select name="nom_menu" id="nom_menu" onChange="location.href='?nom='+this.value;">
            <?php
    			include"bd_db/selection_test.php";
                echo "<option selected=\"selected\" value='null'>Choissiez une option</option>"; 
               $res =   " select DISTINCT bd_nom FROM $table_db ORDER BY bd_nom ";
     
    			$rep_menu =  mysql_query($res, $cnx) or die( mysql_error() ) ;
     
    						 while($affiche_contenu = mysql_fetch_assoc($rep_menu)) {
     
    							echo '<option value="'.$affiche_contenu['bd_nom'].'"';
    								if($nom==$affiche_contenu['bd_nom']){echo " selected";} // pour afficher la selectionne
    								echo '>'.$affiche_contenu['bd_nom'].'</option>';
    							}
        ?>
        </select><br />
    <br />
     
    <select name="enfant_menu" id="enfant_menu" onChange="location.href='?enfant='+this.value;">
            <?php
     
                echo "<option selected=\"selected\" value='null'>Choissiez une option</option>"; 
     
    		   if (!empty($_GET['nom'])) //si nom n’est pas vide
     
    			   {
     
    				$res_enfant =   " select DISTINCT bd_enfant FROM $table_db WHERE bd_nom ='".$_GET['nom']."'";
     
    				$rep_menu_enfant =  mysql_query($res_enfant, $cnx) or die( mysql_error() ) ;
     
    							 while($affiche_contenu_enfant = mysql_fetch_assoc($rep_menu_enfant)) {
     
    								echo '<option value="'.$affiche_contenu_enfant['bd_enfant'].'"';
    									if($enfant==$affiche_contenu_enfant['bd_enfant']){echo " selected";} // pour afficher la selectionne
    									echo '>'.$affiche_contenu_enfant['bd_enfant'].'</option>';
    								}
    				 }
     
            ?>
        </select><br />
    <br />
     
    <?php 
    			// $age=0+@$_GET['age']; // si numérique
    			  $nom="".@$_GET['nom'];  // si alpha
    			  $enfant="".@$_GET['enfant']; 
     
    			  if (!empty($_GET['nom']) && empty($_GET['enfant'])) 
    				{
    						$cherche_option_menu =   " select bd_age,bd_nom FROM $table_db WHERE bd_nom ='".$nom."'";   //::::--*   requête sur un champ alphanumérique   NOM ---//\\
     
    						$rep_cherche_option_menu =  mysql_query($cherche_option_menu, $cnx) or die( mysql_error() ) ;
     
    							while($row_menu=mysql_fetch_row($rep_cherche_option_menu))
    								{
    									$var_nom=$row_menu[0];
     
    									echo "<table><tr><td>$var_nom</td><td></tr></table>"  ;
    		 						}	
    				}
    			elseif (!empty($_GET['nom']) && !empty($_GET['enfant'])) 
    			   {
    				                                                                           //::::--*  requête sur un champ alphanumérique   enfant ---//\\
    				   $cherche_option_2menu =   " select bd_nom,bd_enfant,bd_age  FROM $table_db WHERE bd_nom ='".$nom."' AND bd_enfant ='".$enfant."'";
     
    						$rep_cherche_option_2menu =  mysql_query($cherche_option_2menu, $cnx) or die( mysql_error() ) ;
     
    						while($row_2menu=mysql_fetch_row($rep_cherche_option_2menu))
    						{
    							$var_nom=$row_2menu[0];
    							$var_enfant=$row_2menu[1];
    							$var_age=$row_2menu[2];
     
    							echo "<table><tr><td>$var_nom - $var_enfant - $var_age</td><td></tr></table>"  ;
    						}
    				}
     
    			else
    				{
     
    				}
     
     
    ?>

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Je ne sais pas si j'ai tout saisi mais à priori le problème vient du fait que tu utilise onChange="location.href='?..." dans les deux select.
    Du coup quand tu en change un, les données d'un passent en GET mais l'autre GET n'est plus envoyé. Tu te retrouves donc forcement avec soit $_GET['nom'] soit $_GET['prenom'] mais jamais avec les deux.

    Est-ce que tu as envisagé de lier tes listes à l'aide d'AJAX?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Salut titinesaku,

    Merci pour tes explications...

    Que tu veux dire de lier tes listes à l'aide d'AJAX?
    Comment je peux les lier par AjAx ? Tu peux me donner un exemple...

    Par contre suite tes explications voici la solution avec javaScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="nom_menu" id="nom_menu"        onChange="location.href='?nom='+this.value+'&amp;enfant=<?php echo $enfant;?>';">
    <select name="enfant_menu" id="enfant_menu" onChange="location.href='?enfant='+this.value+'&amp;nom=<?php echo $nom;?>';">

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Alors en fait je t'ai parlé d'AJAX vu que tu indiquais dans le premier post que tes deux listes sont liées :
    En outre, on affiche les options du 2e menu selon la sélectionne du 1er menu.
    En gros j'ai compris que quand on choisit un nom, une liste de prénoms possibles apparait et inversement c'est bien ça ?

    Si c'est bien le cas tu peux donc charger les listes avec AJAX ce qui te permet de ne pas recharger la page entière mais uniquement les liste et donc ça te dispense d'utiliser des données en GET

    Si ça t'intéresse tu peux avoir des infos à ce sujet grâce à ce lien
    http://javascript.developpez.com/faq...js#listesLiees

    Enfin en tout cas ta solution marche donc c'est vraiment à titre d'information si tu as le temps et l'envie de poursuivre tes recherches.

    Voili voila, sur ce bonne journée et bon courage pour la suite

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

Discussions similaires

  1. [XL-2010] 2 Graphiques croisés dynamiques liés entre eux
    Par beabianchini dans le forum Excel
    Réponses: 4
    Dernier message: 27/02/2014, 13h44
  2. [DOM] Menus déroulants dynamiques par groupes
    Par carmi dans le forum Général JavaScript
    Réponses: 59
    Dernier message: 11/08/2008, 08h52
  3. [SQL] Relation entre deux menus déroulants dynamiques
    Par intissar_g dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/11/2007, 15h36
  4. Deux menus déroulants liés entre eux
    Par coco38 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/04/2007, 15h31
  5. Réponses: 2
    Dernier message: 31/10/2003, 16h32

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