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 :

select interdépendants qui ne s'affichent pas


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut select interdépendants qui ne s'affichent pas
    bonjour a tous,

    j'ai développé 2 select interdependants avec des valeurs qui proviennent d'une BDD.

    quand je les fais fonctionner juste à 2, ca marche mais quand je les intègre dans ma page ( un peu plus compliquée ), le 2eme select ne s'affiche pas.

    Ci dessous le code :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
     
    <?php
     
    /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
     
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $base    = "test";
     
    /* On récupère si elle existe la valeur du contrat envoyée par le formulaire */
     
    $info_imputation = isset($_POST['imputation'])?$_POST['imputation']:null;
    /*$info_contrat = isset($_POST['contrat'])$_POST['contrat']:null; */
     
    ?>
    <html lang="fr">
       <head>
          <meta content="text/html; charset=windows-1252" http-equiv="content-type">
          <link rel="stylesheet" href="style.css">
          <title>Ajouter une RNC</title>
       </head>
       <body style="color:rgb(175,0,124); font-family:arial; background-color : rgb(179,179,179);"  >
     
          <?php
             if(isset($_POST['ok']) && isset($_POST['item']) && $_POST['item'] != "")
             {   $contrat_selectionnee = $_POST['contrat'];
                $item_selectionne = $_POST['item'];
             }
             $connexion = mysql_pconnect($serveur, $admin, $mdp);
     
             if($connexion != false)
             {   $choixbase = mysql_select_db($base, $connexion);
     
                $sql1 = "SELECT num_contrat, nom_client, type_equipement FROM test.commande";
                $rech_contrat = mysql_query($sql1);
     
                $num_contrat = array();
                $nom_client = array();
                $type_equipement = array();
     
                /* On active un compteur pour les contrats */
                $nb_contrat = 0;
     
                if($rech_contrat != false)
                {   while($ligne = mysql_fetch_assoc($rech_contrat))
                   {   array_push($num_contrat, $ligne['num_contrat']);
                      array_push($nom_client, $ligne['nom_client']);
                      array_push($type_equipement, $ligne['type_equipement']);
     
                      /* On incrémente de compteur */
                      $nb_contrat++;
                   }
                }
          ?>
     
       <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgitem">
     
          <!-- IMPUTATION -->
          <table name ="Imputation" width = "100%" class= "tabcontrat">
             <tbody>
                <tr>
                   <td width = "15%"> <!--label Imputation-->
                      <label for="imputation">Imputation :</label>
                   </td>
                   <td width = "35%"> <!--input Imputation-->
                      <select required="required" style="width:200px; background-color : rgb(229,229,229);" name="imputation"; >
                         <option>Type d'imputation</option>
                         <?php                 
                            $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
                            $requete = $bdd->query('select * from test.imputation'); 
                            while ($donnees = $requete->fetch()) 
                            { echo '<option>'.$donnees['imputation'].'</option>'; }
                         ?>;
                      </select>
                   </td>
                </tr>
                <tr>
                   <td width = "20%"> <!--label Contrat--> 
                      <label for="contratClient">Contrat :</label>
                   </td>
                   <td width = "35%"> <!--input Contrat--> 
                      <select style="width:200px; background-color : rgb(229,229,229);">
                      <option value="-1">Numéro de Contrat</option>
                         <?php
                            for($i = 0; $i < $nb_contrat; $i++)
                            {
                         ?>
                            <option value="<?php echo($num_contrat[$i]); ?>"<?php echo((isset($idr) && $idr == $num_contrat[$i])?" selected=\"selected\"":null); ?>><?php echo($num_contrat[$i]); ?></option>  
                            <?php
                            }
                            ?>
                      </select>
                   </td>
                </tr>
                <tr>
                   <td width = "20%"> <!--label Item-->
                      <label for="contratClient">Item :</label>
                   </td>
                   <td width = "35%"> <!--input Item-->
                      <?php
                         mysql_free_result($rech_contrat);
     
                         /* On commence par vérifier si on a envoyé un numéro de contrat 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 items de ce contrat */
                            $sql2 = "SELECT num_item, designation_item FROM test.item where contrat=\"". $idr ." \";";
     
                            if($connexion != false)
                            {   $rech_item = mysql_query($sql2, $connexion);
     
                               /* Un petit compteur pour les items */
                               $nd = 0;
     
                               /* On crée deux tableaux pour les numéros et les noms des items */
                               $num_item = array();
                               $desig_item = array();
     
                               /* On va mettre les numéros et noms des départements dans les deux tableaux */
                               while($ligne_item = mysql_fetch_assoc($rech_item))
                               {
                                  array_push($num_item, $ligne_item['num_item']);
                                  array_push($desig_item, $ligne_item['designation_item']);
     
                                  $nd++;
                               }
     
                               /* Maintenant on peut construire la liste déroulante */
                               ?>
                                  <select name="item" id="item" style="width:175px; background-color : rgb(229,229,229);">
                                  <?php  
                                     for($d = 0; $d<$nd; $d++)
                                     {
                                     ?>
                                     <option value="<?php echo($code_item[$d]); ?>"<?php echo((isset($item_selectionne) && $item_selectionne == $code_item[$d])?" selected=\"selected\"":null); ?>><?php echo($num_item[$d]." - ". $desig_item[$d] .""); ?></option>
                                     <?php
                                     }
                                     ?>
                               </select>
                               <?php
                            }
                            /* Un petit coup de balai */
                            mysql_free_result($rech_item);
                         }
                      ?>
                   </td>
                </tr>
             </tbody>
          </table><br><br>
     
       </body>
    </html>

    J'imagine qu'il y a un soucis de syntaxe mais je ne trouve pas lequel.

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    D'ou vient $idr ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    $idr est censé etre la valeur du contrat que l'utilisateur a choisi mais a bien y regarder, meme en supprimant cette variable, ça change rien...

    En fait, je ne comprend pas comment faire apparaitre et disparaitre le select 'item' ?? qu'est ce qui fait que ce select apparait ??

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un select qui s'appelle "imputation", un select qui n'a pas de nom et un select qui s'appelle "item".
    Donc d'ou est censé venir "idr" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    celui qui n'a pas de nom est censé etre le contrat... suivant le contrat choisi, on affiche un select avec la liste des items de ce contrat

    $idr est censé etre la valeur du contrat ( select sans nom ) choisi

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un <select> doit avoir un "name" sinon il ne renvoit pas.
    Si le select s’appelle "idr" il fournit $_POST['idr'] et pas $idr.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    J'ai renommé le select sans nom...

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    select name="contrat";

    J'ai remplacé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($idr) && $idr != -1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset (_POST['contrat']) && _POST['contrat'] != -1)
    J'ai une erreur :

    Parse error: syntax error, unexpected '[' in C:\xampp\htdocs\formulaire.php on line 184

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque le $ : $_POST.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    bon... ça roule...

    les trucs s'affichent mais ils s'affichent tout le temps alors que le second ne devrait s'afficher que si $_POST['contrat'] à une valeur !!!

    De plus, meme lorsque je recharge la page, la valeur du select est la 1ere valeur du tableau !!! ce qui explique le 1er soucis...

    je comprends rien.

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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