[PHP]liste déroulante et affichage

Bonjour à tous.
Voilà j'ai créé en PHP une liste déroulante alimentée par une base de donnée MYSQL et maintenant je souhaiterais, à partir de la liste déroulante, afficher toute les informations relatives au choix. Je m'explique : ma liste affiche des adhérents et je voudrais, après avoir choisi un adhérents et cliquer sur un bouton "valider", afficher sur la même page (juste en dessous) toute les informations relatives à cet adhérent.
voici le code :
<?php
$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
$db=mysql_select_db('fcjo',$connexion) or die ("base de données non accessible");
?>
<p>Choisissez un adhérent: </p>
  <select name="menuadherents" id="menuadherents">
<?php
$resultat=mysql_query("select ADHERENT from adhérents order by ADHERENT") or die ("requète non executé");
if (! $resultat) { echo "Erreur requete"; exit;} 
while ($ligne=mysql_fetch_array($resultat))
{
?>
<option><?php echo ''.$ligne['ADHERENT'].'';?> </option>
<?php
}
mysql_close($connexion);
?>


Voila je voulais savoir ce qu'il faut que j'ajoute pour avoir un bouton et où le mettre ou encore si vous avez une bonne adresse...
merci
Configuration: easy php 1.8
windows xp
macromédia dreamweaver MX

35 réponses

Résumé de la discussion

Le problème central est d'afficher les informations d'un adhérent choisi dans une liste déroulante alimentée par MySQL, et de les afficher sur la même page juste en dessous après validation. La solution courante consiste à envelopper le select dans un formulaire, récupérer la valeur avec GET ou POST (par exemple ADrent), puis lancer une requête SELECT * FROM adhérents WHERE ADHERENT=… et afficher le résultat. Des approches existent: certains préconisent d'utiliser onchange='submit()' pour éviter un bouton, D'autres recommandent d'ajouter un bouton 'Afficher' si une validation manuelle est préférée parfois également. Pour sécuriser, il est préférable d'utiliser mysqli ou PDO avec des requêtes préparées et d'échapper les valeurs avant d'exécuter la requête, plutôt que l'ancienne extension mysql_.

Bobot (l’IA à votre service)
  1. c sympa de me repondre...
    1. c'est pas en parlant comme ça que t'auras une réponse... un petit "up svp" aurait suffit...
  2. oué salut alex j'ai le meme probleme que toi je débute en php et j'aimerai trop savoir faire ca mais je bug
    1. Contributeur
      Salut,

      Essaye ça :
      <?php
      $connexion=mysql_connect('localhost','root',"") or die ("Connexion impossible.");
      $db=mysql_select_db('fcjo',$connexion) or die ("Base de données non accessible.");
      
      echo '<p>Choisissez un adhérent:</p>';
      echo '<form method="GET" action="'$_SERVER['PHP_SELF']'">';
      echo '  <select name="ADrent" id="menuadherents">';
      
      $resultat=mysql_query("select ADHERENT from adhérents order by ADHERENT") or die ("Requête non executée.");
      
      while ($ligne=mysql_fetch_array($resultat))
      {
      echo '<option>'.$ligne["ADHERENT"].'</option>';
      }
      echo '</select>';
      echo '<input type="submit" value="Afficher" name="go">';
      echo '</form>';
      
      //Les lignes suivantes affichent le détail d'un adhérent
      // si l'utilisateur en a choisi un
      
      
      if(!$_GET['ADrent']){
         exit;
      }
      $resultat2 = mysql_query("Select * from adhérents where ADHERENT=".$ADrent) or die ("Requête non executée.");
      $ligne2 = mysql_fetch_array($resultat2);
      
      echo $ligne2['ADHERENT'].'<br>';
      echo $ligne2['info2'].'<br>';
      
      mysql_close($connexion);
      ?>

      Ou tu rajoute et modifie à la fin les lignes echo $ligne2['tuMetTesAutresDonnées'].'<br>';

      @+
      1. Je te remercie infiniment Erdnax de m'avoir répondu j'ai copié collé ta correction mais ca ne marchait pas (il me mettait "Undefined index" sur ADrent de
        if(!$_GET['ADrent']){
        donc g tenté de faire quelques modifications sans succès en fait maintenant le bouton afficher me renvoi sur une page "NOT FOUND" et la deuxième requète n'est pas exécutée . Voici le code : (en gras ce que j'ai ajouté)
        <?php
        $connexion=mysql_connect('localhost','root',"") or die ("Connexion impossible.");
        $db=mysql_select_db('fcjo',$connexion) or die ("Base de données non accessible.");
        
        echo '<p>Choisissez un adhérent:</p>';
        
        echo"<form name='form1' action=",$_SERVER['PHP_SELF']," method='POST'>"; 
        echo '<select name="ADrent" id="menuadherents">';
        
        $resultat=mysql_query("select ADHERENT from adhérents order by ADHERENT") or die ("Requête non executée.");
        
        while ($ligne=mysql_fetch_array($resultat))
        {
        echo '<option>'.$ligne["ADHERENT"].'</option>';
        }
        echo '</select>';
        echo '<input type="submit" value="Afficher" name="go">';
        echo '</form>';
        
        $_GET['ADrent']=$ligne["ADHERENT"];
        $ADrent=$_GET['ADrent'];
        
        //Les lignes suivantes affichent le détail d'un adhérent
        // si l'utilisateur en a choisi un
        
        $resultat2 = mysql_query("Select * from adhérents where ADHERENT=".$ADrent) or die ("Requête non executée.");
        $ligne2 = mysql_fetch_array($resultat2);
        
        		echo "<br>";
        		echo "<br>";
        		echo ' <b>Adhérent : </b>'.$ligne2['ADHERENT'].' '.$ligne2['LIBELLELONGADHERENT'].' '.$ligne2['ADRESSEADHERENT'].' '.$ligne2['VILLEADHERENT'].' '.$ligne2['TELEPHONEADHERENT'].' '.$ligne2['EMAILADHERENT'].' '.$ligne2['SITEINTERNETADHERENT'].'<br>';
        	  	echo "<br>";
        		echo ' <b>Correspondant 1 : </b>'.$ligne2['CORRESPONDANTUN'].' '.$ligne2['ADRESSECORRESPONDANTUN'].' '.$ligne2['VILLECORRESPONDANTUN'].' '.$ligne2['EMAILCORRESPONDANTUN'].' '.$ligne2['TELEPHONECORRESPONDANTUN'].'<br>' ;
              	echo "<br>";
        		echo ' <b>Correspondant 2 :  </b>'.$ligne2['CORRESPONDANTDEUX'].' '.$ligne2['ADRESSECORRESPONDANTDEUX'].' '.$ligne2['VILLECORRESPONDANTDEUX'].' '.$ligne2['EMAILCORRESPONDANTDEUX'].' '.$ligne2['TELEPHONECORRESPONDANTDEUX'].'<br>';
        		echo "<br>";
        		echo ' <b>Président D\'Honneur :  </b>'.$ligne2['PRESIDENTHONNEUR'].'<br>';
        		echo "<br>";
        		echo ' <b>Président :  </b>'.$ligne2['PRESIDENT'].' '.$ligne2['ADRESSEPRESIDENT'].' '.$ligne2['VILLEPRESIDENT'].' '.$ligne2['EMAILPRESIDENT'].' '.$ligne2['TELEPHONEPRESIDENT'].'<br>';
        		echo "<br>";
        		echo ' <b>Premier Vice Président :  </b>'.$ligne2['PREMIERVICEPRESIDENT'].'<br>';
        		echo "<br>";
        		echo ' <b>Deuxième Vice Président :  </b>'.$ligne2['DEUXIEMEVICEPRESIDENT'].'<br>';
        		echo "<br>";
        		echo ' <b>Secrétaire :  </b>'.$ligne2['SECRETAIRE'].'<br>';
        		echo "<br>";
        		echo ' <b>Trésorier :  </b>'.$ligne2['TRESORIER'].'<br>';
        mysql_close($connexion);
        ?>


        MERCI ENCORE
        1. Contributeur
          Alors essaye simplement avec :
          if(!isset($_GET['ADrent'])){
             exit;
          }
          

          @+
          1. Merci mais ca ne change rien le Afficher renvoie toujours sur un Not found et a parament il sort grace au
            if(!isset($_GET['ADrent'])){
               exit;
            }

            ca ve donc dire qu'il n'y a rien dans le $_GET['ADrent'] ???
            comment y remèdier ?
            merci
            salut
            1. Contributeur
              Déjà un est-ce que ton formulaire s'affiche ou rien, juste ton erreur ?
              1. bah en fait mon menu déroulant s'affiche et il est correctement remplie j'ai le bouton afficher a coté mais il mène a un not found et c tout
                1. Contributeur
                  Comment s'appelle ta page (ou tu as ton code, formulaire etc) ?
                  1. Ma page entiere s'appelle Adhérents3.php
                    en fait j'ai créer mon site a partir de photoshop et ma partie en php se trouve a l'intérieur d'un calque créé sous dreamweaver MX
                    1. Contributeur
                      Alors vers le début du code, lorsqu'il y a :
                      echo '<p>Choisissez un adhérent:</p>';
                      echo '<form method="GET" action="'$_SERVER['PHP_SELF']'">';
                      echo '  <select name="ADrent" id="menuadherents">';
                      

                      Remplace l'action du form par action="tonNomDePage.php", mais je trouve ton nom pas super, vire la majuscule et les accents si possible.

                      Et di moi ce qui se passe.
                      1. ca va un peu mieux ca me renvoi aucune erreur le bouton afficher me renvoie bien sur la page adherents.php (g changé) par contre le design du site n'est toujours par revenu et ca n'affiche pas les caractéristiques.

                        merci de m'aider
                        1. Contributeur
                          D'accord, mais en fait c'est là que moi je comprends pas qqch. Ce que tu veux, c'est que tu puisse sélectionner dans ta liste d'adhérent 1 adhérent, de manière à afficher ses données. Bon. Mais alors pourquoi avoir paramétré la suite de ta page avec je sais pas combien de
                          		echo ' <b>Adhérent : </b>'.$ligne2['ADHERENT'].' '.$ligne2['LIBELLELONGADHERENT'].' '.$ligne2['ADRESSEADHERENT'].' '.$ligne2['VILLEADHERENT'].' '.$ligne2['TELEPHONEADHERENT'].' '.$ligne2['EMAILADHERENT'].' '.$ligne2['SITEINTERNETADHERENT'].'<br>';
                          	  	echo "<br>";
                          
                          ?
                          Je comprends pas à quoi cela sert...
                          1. Bah en fait ADHERENT c'est le nom de l'adherent et juste le nom qui fait partie de la table "adhérents" et toute les autres
                            echo ' <b>Adhérent : </b>'.$ligne2['ADHERENT'].' '.$ligne2['LIBELLELONGADHERENT'].' '.$ligne2['ADRESSEADHERENT'].' '.$ligne2['VILLEADHERENT'].' '.$ligne2['TELEPHONEADHERENT'].' '.$ligne2['EMAILADHERENT'].' '.$ligne2['SITEINTERNETADHERENT'].'<br>';.......


                            C'est les caractéristiques de l'ADHERENT qui sont aussi dans la table adhérents
                            1. Contributeur
                              Pour un, ça je suis d'accord, mais pourquoi avoir paramétré ta page en voulant afficher (on dirait) tous les enregistrements de ta page ? Que tu aies un bloc

                              echo ' <b>Adhérent : </b>'.$ligne2['ADHERENT'].' '.$ligne2['LIBELLELONGADHERENT'].' '.$ligne2['ADRESSEADHERENT'].' '.$ligne2['VILLEADHERENT'].' '.$ligne2['TELEPHONEADHERENT'].' '.$ligne2['EMAILADHERENT'].' '.$ligne2['SITEINTERNETADHERENT'].'<br>';.......

                              ok, mais pourquoi en as-tu mis plusieurs ?

                              ( http://www.commentcamarche.net/forum/affich-1577911?page=1#5 )

                              Correspondant 1, 2 etc
                              1. C'est mon maitre de stage qui m'a donné les tables et dans la table adhérents il y a tout ces champs et il veut que j'affiche tout ca en meme temps.
                                1. Contributeur
                                  Alors s'il veut tout afficher en même temps pourquoi faire une liste déroulante ?!?!?! Ca n'as pas de sens...
                                  1. en fait à chaque adhérent correspond un libellé, une adresse, un ou plusieurs correspondant, un président spécifique a chaque adhérent . en fait pour lui un adhérent est une association d'où tout les champs a afficher en rapport a celle-ci.
                                    1. Contributeur
                                      Ah m**de, je suis désolé, il y a un élément qui m'avais échapé, j'avais pas vu qqch. Oui, maintenant je comprends. Mais je comprends pas pourquoi ça ne s'affiche pas...

                                      Est-ce que la ligne que tu as modifiée en

                                      $_GET['ADrent']=$ligne["ADHERENT"];
                                      $ADrent=$_GET['ADrent'];

                                      tu l'as remise à l'originale ? Car là, si tu gardes ça c'est normal que rien ne s'affiche.
                                      1. j'ai enlevé
                                        $_GET['ADrent']=$ligne["ADHERENT"];
                                        $ADrent=$_GET['ADrent'];
                                        


                                        mais quand je lance maintenant ca me met au dessous de ma liste déroulante "Undefined variable: ADrent " sur la ligne :
                                        $resultat2 = mysql_query("Select * from adhérents where ADHERENT=".$ADrent) or die ("Requête non executée.");


                                        suivi de "requête non executée"
                                        • 1
                                        • 2