Menu déroulant dynamique et automatique

Eléphant du PHP | 92 Messages

31 mai 2011, 21:42

Bonjour,

J'ai un formulaire où j'affiche les âges des utilisateurs et leurs noms...

Voici le code :

Code : Tout sélectionner

<?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 : Tout sélectionner

<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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 mai 2011, 21:48

salut,

pour le 1er utilise distinct (par exemple select distinct age from table).

Pour la suite soit tu recherche la page (et donc une simple requête select prenom from table where age=$_POST['champ formulaire'] suffit).

soit la requête est la même mais tu utilise AJAX pour le faire sans rechargement de la page ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 92 Messages

01 juin 2011, 20:07

Merci moggli,

Merci, ca 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
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" ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 juin 2011, 22:34

Tu peux utiliser l'attribut onchange du select pour détecter la sélection d'un age et soumettre le formulaire automatiquement en javascript...

Le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Formulaires : Listes déroulantes dynamiques liées
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 92 Messages

02 juin 2011, 16:34

voila la solution

Code : Tout sélectionner

<select name="age_menu" id="age_menu" onChange="location.href='?age='+this.value;">
( plus loin)

Code : Tout sélectionner

$age=0+@$_GET['age']; $cherche_option_menu = " select bd_nom,bd_age FROM $table_db WHERE bd_age =".$age; $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>" ;