Php listes déroulantes

neimad -  
 neimad -
Bonjour, mon problème est le suivant :
comment dois je procéder pour, grâce à une liste déroulante, accéder dans mon cas aux différentes pages proposées par la liste, sans qu'il y'ait besoin d'appuyer sur un boutton qui valide la requête (comme le choix des pages sur skyblog). Faut-il utiliser un formulaire?
Merci d'avance
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. chanteur06 Messages postés 131 Statut Membre 1
     
    voici un exemple avec des specialistes par departement
    Un 1er champ est affiché avec les departements,et un deuxieme champ apparait automatiquement avec une liste de specialistes
    En esperant avoir éclairé un peu...
    Essaie en changeant les données

    <?php
    /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
    *  car on aura besoin de la connexion un peu plus loin dans le script */
    $connexion = mysql_pconnect($serveur, $admin, $mdp);
    if($connexion != false)
    {
        $choixbase = mysql_select_db($base, $connexion);
        $sql1 = "SELECT `id_departement`, `departement`".
        " FROM `departement`".
        " ORDER BY `id_departement`";
        $rech_depts = mysql_query($sql1);
        $code_dept = array();
        $dept = array();
        /* On active un compteur pour les departements */
    	/*On gère l'affichage des depts ds le menu déroulant*/
        $nb_depts = 0;
        if($rech_depts != false)
        {
            while($ligne = mysql_fetch_assoc($rech_depts))
            {
                array_push($code_dept, $ligne['id_departement']);
                array_push($dept, $ligne['departement']);
                /* On incrémente de compteur */
                $nb_depts++;
            }
        }
        ?>
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
    <fieldset style="border: 0px">
    
      <legend>  <h4>Choisissez un spécialiste dans votre département</h4>
    </legend>
        <select name="departement" id="departement" onchange="document.forms['chgdept'].submit();">
          <option value="-1">- - - Choisissez un departement - - -</option>
          <?php
        for($i = 0; $i < $nb_depts; $i++)
        {
    ?>
          <option value="<?php echo($code_dept[$i]); ?>"<?php echo((isset($idr) && $idr == $code_dept[$i])?" selected=\"selected\"":null); ?>><?php echo($dept[$i]); ?></option>
          <?php
        }
        ?>
    
        </select>
    	
        <?php
        mysql_free_result($rech_depts);
        /* On commence par vérifier si on a envoyé un numéro de departement et le cas échéant s'il est différent de -1 */
        if(isset($idr) && $idr != -1)
        {
            /* Création de la requête pour avoir les specialistes de ce departement */
            $sql2 = "SELECT `id_specialiste`, `specialiste`,`ville`,`detail`".
            " FROM `specialiste`".
            " WHERE `id_departement` = ". $idr ."".
            " ORDER BY `ville`;";
            if($connexion != false)
            {
                $rech_spec = mysql_query($sql2, $connexion);
                /* Un petit compteur pour les specialistes */
                $nd = 0;
                /* On crée trois tableaux pour les numéros et les noms des specialistes */
                $code_spec = array();
                $nom_spec = array();
    			$ville_spec = array();
    			$det_spec = array();
                /* On va mettre les numéros et noms des specialistes dans les trois tableaux */
                while($ligne_spec = mysql_fetch_assoc($rech_spec))
                {
                    array_push($code_spec, $ligne_spec['id_specialiste']);
                    array_push($nom_spec, $ligne_spec['specialiste']);
    				array_push($ville_spec, $ligne_spec['ville']);
    				array_push($det_spec, $ligne_spec['detail']);
                    $nd++;
                }
    			 /* Maintenant on peut construire la liste déroulante */
                ?>
        <select name="specialiste" id="specialiste" >
          <?php  
                for($d = 0; $d<$nd; $d++)
                {
                    ?>
          <option value="<?php echo($nom_spec[$d]); ?>"<?php echo((isset($spec_selectionne) && $spec_selectionne == $code_spec[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_spec[$d]." "); ?>
          <br>
          <br />
    	  <?php echo ($det_spec[$d]." ".à." "); ?>
    	   <br>
          <br />
          <?php echo($ville_spec[$d]); ?></option>
          <?php
                }
    	?>
        </select>
        <?php
    }
            /* Un petit coup de balai */
            mysql_free_result($rech_spec);
    		}
    		?>
      
        <input type="submit" name="ok" id="ok" value="Envoyer" />
      <br />
    <?php
    if(isset($_POST['ok']) && isset($_POST['specialiste']) && $_POST['specialiste'] != "")
    {
        $spec_selectionne =$_POST['specialiste'];
    	
    ?>
    <br />Votre choix<br /> <b><?php echo($spec_selectionne); ?></b>
    <?php 
    }
    ?>
    
    <?php
    
    $query  = "SELECT specialiste, adresse, code, ville, detail, tel FROM specialiste WHERE specialiste='$spec_selectionne' order by ville asc";
    $result = mysql_query($query);
    
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
       echo "<br>"."<strong>{$row['detail']}</strong>"." " ."<br>{$row['adresse']}"." "."{$row['code']}"." "."{$row['ville']}"." "." "."<br><b>{$row['tel']}"."<br></b> ";
    		 
    } 
    /* Terminé, on ferme la connexion */
        mysql_close($connexion);
    }
    else
    {
        /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
        * paramètres de connexion, mot de passe, serveur pas démarré etc... */
    ?>
    
    0
  2. neimad
     
    Désolé mais ton exemple ne m'aide pas parceque tu utilise quand même <input type="submit" name="ok" id="ok" value="Envoyer" /> et moi justement je veux m'en passer. Merci quand même et si quelqu'un peut m'aider je suis preneur^^
    0