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

PHP & Base de données Discussion :

Liste déroulante liée, chargée par SQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Liste déroulante liée, chargée par SQL
    Bonjour,
    Voilà j'ai encore un petit problème dans un de mes codes , alors je viens quémander votre aide

    Je suis entrain de faire une liste deroulante liée. Pour ce faire j'utilise l'evenement "onChange" sur ma première liste, qui me lance un fonction fait en JavaScript et PHP. Si quelqu'un arriverai à m'expliquer ce que j'ai fait de faut.


    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
     
    <script language="JavaScript">
    function listderou()
    {
      var classe_array = new Arry();
    <?
      include("config.php");
      include("connexion.php");
      $i = 0;
      $sql_c ="SELECT * FROM $tbl_classe ";
      $req_c = mysql_query($sql_c) or die('Erreure Sql!! <br>'.$sql_c.'<br>'.mysql_error());
      while($data_c = mysql_fetch_array($req_c))
      {
    ?>
      classe_array[<?echo $i;?>][0] = <?echo $data_c['IdClasse'];?>;
      classe_array[<?echo $i;?>][1] = <?echo $data_c['IdRace'];?>;
      classe_array[<?echo $i;?>][2] = <?echo $data_c['Classe'];?>;
    <?
        $i++;
      }
    ?>
    Voilà jusque là, il n'y a pas de problème. Par contre il ne me fait pas la suite de la fonction, donc ma 2ème "liste déroulante" ne recois aucun champs .

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
      var indice = 1;
      for(j=0; j<=classe_array.length; j++)
      {
        alert(classe_array.length);
        if(classe_array[j][1] == document.form1.race.value)
        {
          var choix = new Option(classe_array[j][2]);
          document.form1.classe.options[indice] = choix;
          document.form1.classe.options[indice].value = classe_array[j][0];
          indice++;
        }
      }
    }
    </script>
    <form method="post" action="controle_inscription.php" name="form1">
      <h1>
        Inscrire un Avatar
      </h1>
      <br>
      <label class="label_form">
        Pseudo
      </label>
      <input type="text" name="login" size="20" maxlength="30" class="input">
      <br>
      <label class="label_form">
        Race
      </label>
        <select name="race" onChange="listderou()">  <---- 1ère liste déroulante
          <option value="0">-Choisir une race</option>
    <?
    include("config.php");
    include("connexion.php");
     
    $sql_r = "SELECT * FROM $tbl_race";
    $req_r = mysql_query($sql_r) or die('Erreure Sql!! <br>'.$sql_r.'<br>'.mysql_error());
    while($data_r = mysql_fetch_array($req_r))
    {
      $idrace = $data_r['IdRace'];
      echo '<option value='.$idrace.'>'.$data_r['Race'].$idrace.'</option>';
    }
    ?>
        </select>
      <br>
      <label class="label_form">
        Classe
      </label>
        <select name="classe">  <------ 2ème liste déroulante
          <option value="">-Choisir une classe</option>
     
     
     
        </select>
      <br>
      <label class="label_form">
        Lvl
      </label>
      <input type="text" name="email" size="20" maxlength="30" class="input">
      <br>
      <input type="submit" value="Inscription" class="button_form">
    </form>

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    problème SUPER ULTRA RECURRENT !!!

    cf topic liste liées dans forum JavaScript + tutos AJAX (section JavaScript)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Oula tu veux faire quoi dans ta deuxieme liste?
    Ajouter des options?

  4. #4
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    il me semble que ce post vient au moins une fois par semaine

    -liste déroulante lié entre elle...
    un peu de recherche dans les post et je suis meme certain que cé dans la faq et/ou tuto!
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Anduriel
    Oula tu veux faire quoi dans ta deuxieme liste?
    Ajouter des options?

    Oui exactement, mais c'est option sont tirées d'une base de donnée et liée d'après un des champs de la BDD (le [1] de mon tableau Java correspond a ce lien).

    J'ai bien regardé les pages et j'ai été lire le tuto mais il n'y en a pas comme le mien (c'est pour ca que je pose ma question d'ailleur :p). J'ai toujours pas trouvé ce qui n'allait pas et je ne veux pas utiliser d'AJAX.

    Le proplème se sitant juste dans la boucle for. J'ai teste avec des getElementById mais cela ne change pas grand chose à mon problème.

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut
    dans ta premiere liste tu appel lors de l'évenement onChange() une function
    ce que tu peux faire c'est de soummetre ta page vers elle meme...
    pour ton 2e select
    tu vérifies que le value du premier select est différent de 0...qui est la valeur du premier champs lorsqu'il ny a rien de choisis...et si c'est différent de 0 tu fais ta requete a ta bd en fonction de l'option choisi dans le select 1 et tu ajoute tes option dans le 2e select grace a un while exactement comme tu fais
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ozzmax
    salut
    dans ta premiere liste tu appel lors de l'évenement onChange() une function
    ce que tu peux faire c'est de soummetre ta page vers elle meme...
    pour ton 2e select
    tu vérifies que le value du premier select est différent de 0...qui est la valeur du premier champs lorsqu'il ny a rien de choisis...et si c'est différent de 0 tu fais ta requete a ta bd en fonction de l'option choisi dans le select 1 et tu ajoute tes option dans le 2e select grace a un while exactement comme tu fais
    Oki, je vais tester de suite pour le test à 0 que je n'ai pas fait.

    Par contre vu que ma 1ere liste est aussi generée par un select dans une "tbl" et que la valeur égal sont ID elle ne peut être null non?

    Par contre j'ai déjà mis "this" dans l'évènement.

    Edit:
    En fait il me semble que ma fonction n'arrive pas à recevoir les données des listes du formulaire. Je viens d'appliquer le test et mis un nouvel "alert()" dans le "else" mais il ne declance aucune alerte ni n'inscrit les options :'(.

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    mais attend la...
    ton code de validation tu le fais en php et non en javascript
    une fois que tu as envoyer ton formulaire vers la meme page

    je te donne du code t'aura juste a l'adapter
    Dans mon exemple, mon premier select est une compagnie d'assurance et le 2e sont les employés de cette compagnie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript" language="javascript">
    function submitAssurance(pageAction){
      document.frmNewDossier.action = pageAction;
      document.frmNewDossier.submit();
     }
    </script>
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    //Premier select
    <td align="left">
     
    <select name="cieAssurance" onChange="submitAssurance('newDossier.php?cie=1#rev');">
     <option value="0" selected>Sélectionner la Compagnie</option>
    <?
     //Remplir les champs des compagnies d'assurance
     $strScript = "Select cieAssuranceID,cieAssuranceNom ";
     $strScript .= "FROM tblcieassurance ";
     $strScript .= "WHERE assureurActif = '1' ";
     $strScript .= "ORDER BY cieAssuranceNom";
     
     $req = $objCon->dbQuery($strScript);
     
     while($lig = mysql_fetch_array($req)){
      if(isset($_GET["cie"])&&($_POST["cieAssurance"] == $lig['cieAssuranceID'])){
       echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
      }
      else if(isset($_GET['manquant'])&&($_POST["cieAssurance"] == $lig['cieAssuranceID'])){
       echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
      }
      else{
       echo"<option value=\"".$lig['cieAssuranceID']."\">".$lig['cieAssuranceNom']."</option>";
      }
     }
    ?>
    </select>
     
    </td>
    2e Select en fonction du premier

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <td align="right" width="30%">
     <a name="rev"></a><b>Nom du réviseur<? if(isset($_GET["manquant"])){echo"<font color=\"red\">*</font>";}?> :</b>
    </td>
    <td align="left">
     <select name="reviseur">
      <option value="0" selected>Sélectionner le réviseur</option>
      <?
      if(isset($_POST['cieAssurance']) && $_POST['cieAssurance'] != 0){          
       //Remplir les reviseurs par rapport à la compagnie selectionnée
       $strScript = "SELECT reviseurID, reviseurNom, reviseurPrenom ";
       $strScript .= "FROM tblreviseur ";
       $strScript .= "WHERE cieAssuranceID = '".$_POST['cieAssurance']."' ";
       $strScript .= "ORDER BY reviseurNom";
     
       $req = $objCon->dbQuery($strScript);
       while($lig = mysql_fetch_array($req)){
        if(isset($_GET["cie"])&&($_POST["reviseur"] == $lig['reviseurID'])){
         echo"<option value=\"".$lig['reviseurID']."\" selected>".$lig['reviseurNom'].', '.$lig['reviseurPrenom']."</option>";
        }
        else if(isset($_GET['manquant'])&&($_POST["reviseur"] == $lig[1])){
         echo"<option value=\"".$lig['reviseurID']."\" selected>".$lig['reviseurNom'].', '.$lig['reviseurPrenom']."</option>";
        }
        else{
         echo"<option value=\"".$lig['reviseurID']."\">".$lig['reviseurNom'].', '.$lig['reviseurPrenom']."</option>";
        }
     
       }
      }
     ?>
     </select>
     
    </td>
    J'espere que c'est un peu compréhensible
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je vais tester ça de suite, je te remercie déjà pour ce que tu es entrain de faire :p

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Liste deroulante help
    Bonjour,
    J'ai un petit soucis avec ma liste deroulante
    j'ai une liste deroulante liée pays et region quand je selectionne la premiere liste la deuxieme change en fonction de la premiere c en javascript et dans la base de donnée il me stock le numéro du pays selectionné et qd j'affiche il m'affiche le numero du pays alors que je veux afficher le nom du pays
    par exemple
    <option value= 1>Belgique </option>
    a l'affichage il m'affiche la valeur 1 au lieu de Belgique alors que je veux qu'il m'affiche belgique et j'ai le meme probleme pour les region
    Merci de bien vouloir m'aider
    bonne journée

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

Discussions similaires

  1. IE 8 : Listes déroulantes liées bloquées par anti pop-up
    Par Plastifieurs dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 27/07/2010, 11h07
  2. Liste déroulante (liée à une table SQL) dans un formulaire
    Par helico57570 dans le forum Modélisation
    Réponses: 1
    Dernier message: 09/11/2009, 13h41
  3. 3 listes déroulantes liées remplies par requêtes sql
    Par Daviloppeur dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 27/08/2009, 13h44
  4. Gestion de 5 listes déroulantes liées avec paramètres SQL
    Par kenshir0 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/04/2007, 18h46
  5. [MySQL] Problème de listes déroulantes liées avec requêtes sql
    Par richton95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/12/2005, 16h04

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