[php]liste dérouante liée

salut,
j'ai une base de données nommée voiture, elle contient deux table: table genre et table type
je veux créer deux listes déroulante la première affiche les genres de voiture contenu dans la table genre, et la deuxième m'affiche le type de voiture en fonction du genre choisi dans la 1ère liste.
je débute en php et je ne sais pas comment faire ceci.
voici le code que j'ai essayer il m'affiche la 1ère liste mais pas la 2ème

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>mon-site</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>


          <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgt"> 
              Genre véhicule:

             <select name="genre" id="genre" onchange="document.forms['chgt'].submit();"> 
                <?php
                 mysql_connect(" "," "," ")or die("erreur dans la requette mysql_connect");
                 mysql_select_db("voiture")or die("erreur dans la requette mysql_select_db");
                $req=mysql_query("select nom_g from genre");
                 while ($res=mysql_fetch_array($req))
                    {
                        echo "<option>".$res["nom_g"]."</option>";
                    }
               ?>
             </select>

              <?php   
                 if (isset ($res))
                {
                 mysql_select_db("voiture")or die("erreur dans la requette mysql_select_db");
                 $reqt=mysql_query("select nom_t from type where genre=='$res'");
                 while ($rest=mysql_fetch_array($reqt))
                    {
                        echo "<option>".$rest["nom_t"]."</option>";
                     }
                 }
              ?>
       </form>

   </body>
</html>


le message d'erreur est:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource on line 30
c'est dans la ligne en gras.
Merci de votre aide.
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  1. $reqt=mysql_query("select nom_t from type where genre ='$res'");

    un seul égal ici
    1. Bonsoir,
      merci pour ta réponse, y'a pas de message d'erreur maintenant mais lorsque je sélectionne un genre de la 1ère liste déroulante, la deuxième liste s'affiche mais elle est vide. j'ai du faire une erreur on utilisant onchange peut être parce qu'on faite je la connais pas je l'ai fais au hasard ou bien l'erreur est ici:
      <select>
      <?php
      if (isset ($res))
      {
      mysql_select_db("voiture")or die("erreur dans la requette mysql_select_db");
      $reqt=mysql_query("select nom_t from type where genre='$res'");
      while ($rest=mysql_fetch_array($reqt))
      {
      echo "<option>".$rest["nom_t"]."</option>";
      }
      }
      ?>
      </select>


      Merci
  2. UP please, je ne connais pas javascript, qui peut m'aider
    1. le problème, c'est que ta page n'est pas correctement construite pour faire ce que tu veux..
      Le problème, c'est que lorsque tu clik le premier select, ton formulaire part tout de suite..

      Voici une réécriture plus fonctionnelle:

               
      <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgt"> 
                    Genre véhicule:
      
                   <select name="genre" id="genre" onchange="document.forms['chgt'].submit();"> 
                      <?php
                       mysql_connect(" "," "," ")or die("erreur dans la requette mysql_connect");
                       mysql_select_db("voiture")or die("erreur dans la requette mysql_select_db");
                      $req=mysql_query("select nom_g from genre");
                       while ($res=mysql_fetch_array($req))
                          {
                        if (isset ($_POST['genre']) && $_POST['genre'] == $res["nom_g"])
      { $selected = "selected='selected'";
      }else{
      $selected = "";
      }
      
                             echo "<option ".$selected.">".$res["nom_g"]."</option>";
                          }
                     ?>
                   </select>
      
                   <select name="type" id="type" onchange="document.forms['chgt'].submit();"> 
                    <?php   
                       if (isset ($_POST['genre']))
                      {
                       mysql_select_db("voiture")or die("erreur dans la requette mysql_select_db");
                       $reqt=mysql_query("select nom_t from type where genre = '".$_POST['genre']."'");
                       while ($rest=mysql_fetch_array($reqt))
                          {
                              echo "<option>".$rest["nom_t"]."</option>";
                           }
                       }
                    ?>
                   </select>
            </form>
      
      


      ça devrait être plus fonctionnel comme ça.. par contre, je sais pas si "document.forms['chgt'].submit();" fonctionne, si oui , alors pas de problème.
      1. Salut Daddy cool,

        She's crazy like a fool
        What about it Daddy Cool
        Daddy, Daddy Cool
        Daddy, Daddy Cool.......lollll..T un fan de BoneyM?

        Merci pour ta réponse mais y a rien qui s'affiche dans la deuxième liste déroulante??
        est ce que je dois faire une fonction javascript??
    2. rien ne s'affiche dans ton menu déroulant : avant ou après que tu es soumis une première fois ?
      1. Non après, je choisi dans la première liste un genre et puis dans la deuxième liste le type ne s'affiche pas!!
    3. on parle bien de la même chose j'espère.. je suis pas sur du comportement de ta page. Quand tu clik la première boite, ta page est "rechargée" ?
      1. A ok j'ai pas bien compris, en fait quand je click dans la première liste y 'a rien qui s'affiche dans la deuxième
        1. `c normal, ta page doit se rechRGER CÔTÉ SERVEUR POUR QUE TA 2EME liste se remplisse

          ca n'est pas du javascript
          1. et comment je ferai alors pour la recharger?
        2. J'ai pas compris, comment faire pour que quand je click sur un choix dans la 1ère liste la deuxième se recharge selon le choix effectué dans la 1ère?