Liste deroulante en php

Bonsoir,
jai un problme avec l'affichage de ma page ,lorsque j'alimente une select (liste de choix)de la base de donnes tout le contenu qui suit la balise select ne s'affichent pas sauf si je fait un break dans le while et alors j'aurais un seul choix dans la liste(le premier dans la table)
aidez moi moi c'est urgent

13 réponses

  1. mon code est :
    <?php
    require('connexion.php');
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>test1</title>
    </head>
    <div id="page" style="width:900px;height:600px;margin:auto">
    <div id="entete" style="width:900px;height:150px;background-color:#00FF99;margin:auto"></div>
    <div id="espace1" style="width:900px;height:10px;margin:auto"></div>
    <div id="corps" style="width:900px;height:400px;background:#330099;margin:auto">
    <select name="ook" selected>

    <option value=""></option>
    <?php
    $req=mysql_query('select * from materiel') or die(mysql_error());
    while($don=mysql_fetch_array($req)or die(mysql_error()))
    {
    ?>

    <option value="<?php echo $don['PN']; ?>"><?php echo $don['PN']; ?></option>
    <?php
    }
    ?>
    </select>
    <input type="button" name="oko" value="valider" />
    <input type="button" name="ok" value="enregistrer" />
    nom:<input type="text" name="nom" />

    </div>
    <div id="espace2" style="width:900px;height:10px;margin:auto"></div>
    <div id="pied" style="width:900px;height:30px;background-color:#00FF99;margin:auto"></div>
    </div>
    <body>
    </body>
    </html>
    1. tout les controles qui suit le select ne s'affichent pas sauf si je break la boucle
    2. Bonsoir,
      Testes comme ceci, on ne sait jamais, si ça veut fonctionner :
      <select name="ook">
      	<option value="">Choix...</option>
      	<?php 
      	$req = mysql_query('SELECT * FROM materiel')or die(mysql_error());
      	while($data = mysql_fetch_assoc($req)) {
      	?>
      	echo "<option value=\"". $data['PN'] ."\">". $data['PN'] ."</option>\n";
      	<?php
      	}
      	mysql_free_result($req);
      	?>
      </select>

      P.S. : Le selected dans la balise SELECT ne sert à rien et de plus n'est pas valide en HTML.
  2. Contributeur
    Change ton code comme ceci :

    <select name="menu1" style="width:200px">
    <?php
      $compteur = 0;
      while($don=mysql_fetch_array($req) or die(mysql_error())){
    ?>
      <option value="<?php echo $don['PN'] ?>"><?php echo $compteur ?></option>
    <?php
        $compteur++;
      }
    ?> 
    </select>


    Au fait qu'est-ce qui est réellement affiché ? Ton select s'affiche bien sinon ? Si tu enlèves le code de ton select, tu as bien ton div de fin de page ? (pour être sûr que le problème vient de là)
    1. <select name="menu1" style="width:200px">
      <?php
      while($don=mysql_fetch_array($req) or die(mysql_error()))
      {

      ?>
      <option value="<?php echo $don['PN'] ?>"><?php echo $don['PN'] ?></option>

      <?php

      }
      ?>
      </select>

      le problème est que tu reste toujours sur le même enregistrement.

      Il faut que tu mette un mysql_fetch_array dans la boucle

      <select name="menu1" style="width:200px">  
      <?php  
      
      $don=mysql_fetch_array($req);  
      
      while($don != false)  
      {  
      
      ?>  
      <option value="<?php echo $don['PN']; ?>"><?php echo $don['PN']; ?></option>  
      
        <?php  
        $don=mysql_fetch_array($req);  
      }  
      ?>  
      </select>  
      
      1. Ah non j'ai lu trop vite ton code en faite ce n'est pas ça ... mais essaye quand même.
    2. bonjour,
      comment peux je remplacer ce while avec for?je en suis sure du resultat
      1. bonsoir,
        si c'était le point virgule ça sera une erreur dans la page ce que j'ai pas;
        moi jai un probleme avec tout les controles qui suivent cette balise select ne s'affiche pas(des boutons et le pied de page )
        1. Toujours est-il qu'il faut un point-virgule après une instruction comme un echo.

          Si vraiment ce n'est pas le point-virgule qui fait foirer le script, il y a de fortes chances que ça soit la balise "select" qui ne soit pas fermée.

          Vu que tu as dit qu'elle l'était, c'est qu'il doit y avoir un autre problème. Seulement, on n'est pas des devins. Un peu plus de code serait plus que le bienvenu.
      2. Bonsoir,

        Faché avec les point-virgules ? À chaque "echo" de la balise "option", ils sont absents.
        1. bojour,
          oui pas mal de valeurs
          1. Contributeur
            Il faut échapper tes valeurs qui peuvent contenir un caractère spécial. Par exemple si jamais t'as le texte << un guillemet s'écrit ainsi : " >>
            Alors ton option sera comme ça :
            <option value="un guillemet s'écrit ainsi : " ">un guillemet s'écrit ainsi : "</option>

            Tu vois le problème ?
          2. salut
            j'ai fait un test sur des valeurs qui n'ont pas de caractères spéciaux mais sans résultat
            moi je pense fort a la boucle qui ne cesse pas alors l'interpréteur reste toujours dans le contrôle select parce-que lorsque je fait un break a la fin de la boucle j'obtiendrais la page complète mais avec une liste contient le premier enregistrement de la table
            merci d'avance
          3. svp essayer de m'aider c'est urgent
        2. Contributeur
          Bonjour,

          Est-ce que l'une de tes valeurs dans $don['PN'] contient un caractère spécial, genre une balise fermante ou un guillement ou une apostrophe ?
          1. oui jai fermé la la balise select mais sans resultat j'obtient pas l'affichage de la div pied de page avec son design
            1. Question bête :
              As-tu refermé ton select ?

              <select name="menu1" style="width:200px">
              <?php
              while($don=mysql_fetch_array($req) or die(mysql_error()))
              {
              
              ?>
              <option value="<?php echo $don['PN'] ?>"><?php echo $don['PN'] ?></option>
              
              <?php
              
              }
              ?>
              </select>
              1. bonsoir,

                <select name="menu1" style="width:200px">
                <?php
                while($don=mysql_fetch_array($req) or die(mysql_error()))
                {

                ?>
                <option value="<?php echo $don['PN'] ?>"><?php echo $don['PN'] ?></option>

                <?php

                }
                ?>
                APRES CETTE PORTION DU CODE JAI UNE AUTRE DIV DU PIED DE PAGE
                LE probleme est que le pied de la page ne s'affiche que si je fait un break au sein de la boucle et alors j'aurais un seul enregistrement dans la liste
                merci d'avance
                1. je voit je voit... madame soleil du php, sans code pas possible de deviner.