Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/06/2011, 22h18   #1
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
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
				{
 
				}
 
 
?>
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h37   #2
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
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?
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 17h18   #3
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
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;?>';">
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 12h36   #4
Futur Membre du Club
 
Femme
Développeur Web
Inscription : avril 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 50
Points : 18
Points : 18
Alors en fait je t'ai parlé d'AJAX vu que tu indiquais dans le premier post que tes deux listes sont liées :
Citation:
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
titinesaku est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web