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 :

Menu déroulant dynamique et automatique [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut Menu déroulant dynamique et automatique
    Bonjour,
    J'ai un formulaire où j'affiche les âges des utilisateurs et leurs noms...

    Voici le 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
    <?php
     
    include"bd_db/connection.php";
     
    include"bd_db/selection.php";
     
    	$req=  " select bd_age,bd_nom FROM $table_db  ";
    	$rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
     
    	while($row=mysql_fetch_row($rep)){
    		$var_age=$row[0];
    		$var_nom=$row[1];
     
    	echo "<tr><td>$var_age</td><td>$var_nom</td></tr>"  ;
    		 			}	
     
     
    				 ?>
    Ça fonctionne...

    Je vais mettre un menu déroulant au lieu d'afficher tous les ages dans la table...
    Donc ce menu déroulant va prendre les infos dans la bdd MySql.

    J’arrive afficher les valeurs dans mon menu.

    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
    <select name="age_menu" id="age_menu" onchange="submit()">
            <?php
                echo "<option selected=\"selected\" value='null'>Choissiez une option</option>"; 
     
     
    			$res =   " select bd_age FROM $table_db  ";
    			$rep_menu =  mysql_query($res, $cnx) or die( mysql_error() ) ;
     
     
     
                while($affiche_contenu = mysql_fetch_assoc($rep_menu)) {
                    echo '<option value="'.$affiche_contenu['bd_age'].'">'.$affiche_contenu['bd_age'].'</option>';
                }
            ?>
        </select>
    1er question : comment je peux regrouper les informations::rolleyes:
    Exemple
    +---------+-------------+----------+
    | ID | bd_age | bd_nom |
    +---------+-------------+----------+
    | 1 | 5 ans | nathalie |
    | 2 | 5 ans | alice |
    | 3 | 2 ans | nathalie |
    | 4 | 2 ans | john |
    | 5 | 10 ans | gilles |
    +---------+-------------+----------+
    En fait avec le code actuel, les options de mon menu sont 2 fois "5 ans", 2 fois "2 ans" et une fois "10 ans". Comment je peux afficher seulement 3 options au lieu de 5 options (sans répéter) ?:rolleyes:



    2e question : comment je peux afficher les résultats de ce menu, par exemple : lorsque l'on sélecte 5 ans, il faut que j'affiche Nathalie et Alice...:rolleyes:

  2. #2
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Utilise un distinct dans ta requête pour ne sélectionner qu'une occurrence de chaque age.

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT Colonne
    FROM Table

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise DISTINCT dans ta requête.

    Par contre, pour stocker un âge, utilise un champ SMALLINT et ne stocke que la valeur : actuellement tu stockes x fois " ans" pour rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Merci 2h15Crew et sabotage
    Ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res =   " select DISTINCT bd_age FROM $table_db  ";


    Bonsoir sabotage,

    c'est vrais ... tu as raison
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$affiche_contenu['bd_age'].'">'.$affiche_contenu['bd_age'].'ans</option>';
    Est ce que vous avez la solution pour ma 2e question ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $an = ($affiche_contenu['bd_age'] == 1) ? ' an' : ' ans';
    echo '<option value="'.$affiche_contenu['bd_age'].'">'.$affiche_contenu['bd_age'].$an.'</option>';
    Pour le résultat, tu as juste à faire une requête avec le critère selectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'select bd_nom FROM table WHERE bd_age = ' . intval($_POST['age_menu']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Bonjour Sabotage,

    Merci pour le variable $an que je n'ai pas pu penser...

    Pour le critère de sélection j'ai essayé de trouver la solution sans te demander, mais...
    ce que j'ai fait à partir de ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     			$cherche_menu =   " select bd_nom FROM $table_db WHERE bd_age = " . intval($_POST['age_menu']);
    			$rep_cherche_menu =  mysql_query($cherche_menu, $cnx) or die( mysql_error() ) ;
     
    			while($row_menu=mysql_fetch_row($rep_cherche_menu)){
    				$var_nom=$row_menu[0];
     
    				echo "<table><tr><td>$var_nom</td><td></tr></table>"  ;
    		 										}	
     
     
      ?>
    mais je ne sais pas s'il faut mettre un bouton soumettre et envoyer tout cela dans une autre page pour afficher les résultats ?

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    alors, j'ai mis mon code dans 2e page et ça marche lorsqu’on sélectionne un article dans 1er écran, et on click sur le bouton envoyer pour afficher les résultats dans la 2e page

    Voici le code et merci...
    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
    <?php
     
    	//connection au serveur
    	include"bd_db/connection.php";
    	//sélection de la base de données et table
    	include"bd_db/selection_test.php";
     
    		$var_age_menu=$_POST["age_menu"];
    					$var_age_menu= htmlspecialchars($var_age_menu, ENT_QUOTES);
     
     
     			$cherche_menu =   " select bd_nom FROM $table_db WHERE bd_age = " . intval($_POST['age_menu']);
    			$rep_cherche_menu =  mysql_query($cherche_menu, $cnx) or die( mysql_error() ) ;
     
    			while($row_menu=mysql_fetch_row($rep_cherche_menu)){
    				$var_nom=$row_menu[0];
     
    				echo "<table><tr><td>$var_nom</td><td></tr></table>"  ;
    		 										}	
     
    ?>

    j'ai une question*: comment je peux afficher les informations dans 1er (le même) écran où il y a le menu déroulant lorsqu’un article a été sélectionné par l"utilisateur sans cliquer sur un bouton "Envoyer" ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise du Javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 22/03/2007, 08h36
  2. menu déroulant dynamique
    Par jojo971 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2006, 14h43
  3. [Conception] Menu déroulant dynamique et administrable
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/05/2006, 15h37
  4. Menu déroulant avec préselection automatique
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2005, 12h11

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