Liste déroulante mysql (affichage + insertion)

Liste déroulante mysql (affichage + insertion) - PHP - Programmation

Marsh Posté le 15-03-2012 à 14:39:19    

Bonjour,
 
Je suis entrain de développer un petit site web et j'ai un souci pour des formulaires en lien avec une bdd.
 
Ci-joint mon code :
 

Code :
  1. <?php
  2.     mysql_connect("127.0.0.1", "root", "" );
  3.     mysql_select_db("pronos" );
  4.     ?>
  5.     <table width="75%" border="2" bordercolor="#000000" bgcolor="#d5213e" align="center">
  6.     <tr width="100%">
  7.     <td align="center" colspan="6"><p><font color="#FFFFFF" size="5" face="Calibri"><strong>Panneau de modification Bonus</strong></font></p></td>
  8.     </tr>
  9.     <tr>
  10.     <td border="2" style="width:40px;" align="center"><font color="#FFFFFF" size="4" face="Calibri"><strong>N°</strong></font></td>
  11.     <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4" face="Calibri"><strong>Bonus</strong></font></td>
  12.     <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4" face="Calibri"><strong>Choix</strong></font></td>
  13.     </tr>   
  14.     </table>               
  15.     <?php
  16.     $req1 = mysql_query("SELECT resbonus.numb,desbonus,bonusj FROM joueurs, resbonus, bonus WHERE resbonus.numb=bonus.numb AND resbonus.numj=joueurs.numj AND prenom='$login'" );                             
  17.     $reqliste = mysql_query("SELECT equipes FROM liste" );     
  18.     ?>
  19.     <form method="post" action="updatepronosb.php">
  20.     <?php       
  21.     for ($i = 1 ; $i <=6 ; $i++)
  22.     {
  23.     $donnees = mysql_fetch_assoc($req1);
  24.    
  25.     ?>       
  26.     <table width="75%" border="3" bordercolor="#000000" bgcolor="#3a75c5" align="center" valign="center">
  27.     <tr>
  28.     <td border="2" style="width:40px;" align="center"><font color="#FFFFFF" size="4"><strong><input readonly type="text" style="text-align:center;color:#FFFFFF;background:#3a75c5" size="1" name="<?php echo "demnumb".$i; ?>" value="<?php echo $donnees['numb']; ?>"></strong></font></td>
  29.     <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4"><strong><?php echo $donnees['desbonus']; ?></strong></font></td>
  30.     <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4"><strong><select name="<?php echo "dembonusj".$i; ?>"><?php while($liste = mysql_fetch_array($reqliste)) { echo "<option>".$liste['equipes']."</option>\n";} ?></select></strong></font></td>
  31.     </tr>   
  32.     </table>             
  33.     <?php
  34.     }
  35.     ?>
  36.     <br>
  37.     <p align="center"><input type="submit" style="align:center;" value="Valider"/></p></form>
  38.     <?php     
  39.     mysql_close();
  40.     ?>


 
Mon problème concerne la ligne suivante :
 

Code :
  1. <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4"><strong><select name="<?php echo "dembonusj".$i; ?>"><?php while($liste = mysql_fetch_array($reqliste)) { echo "<option>".$liste['equipes']."</option>\n";} ?></select></strong></font></td>


 
J'essaie de faire une liste déroulante en fonction d'une bdd, et le résultat de la liste doit être récupéré avec un POST sur une autre page. En l'état, pour $i=1 j'ai bien la liste déroulante ! Toutes les autres sont vides... Et bien sûr, le post n'est pas récupéré....
 
Merci de votre aide car je sèche....

Reply

Marsh Posté le 15-03-2012 à 14:39:19   

Reply

Marsh Posté le 16-03-2012 à 08:43:21    

Pour info, ce code sans liste déroulante fonctionne sans aucun souci.
 

Code :
  1. <?php
  2.    
  3.             $req1 = mysql_query("SELECT resbonus.numb,desbonus,bonusj FROM joueurs, resbonus, bonus WHERE resbonus.numb=bonus.numb AND resbonus.numj=joueurs.numj AND prenom='$login'" );                             
  4.    
  5.             ?>
  6.    
  7.             <form method="post" action="updatepronosb.php">
  8.    
  9.             <?php       
  10.    
  11.             for ($i = 1 ; $i <=6 ; $i++)
  12.    
  13.             {
  14.    
  15.             $donnees = mysql_fetch_assoc($req1);
  16.    
  17.               ?>       
  18.    
  19.               <table width="75%" border="3" bordercolor="#000000" bgcolor="#3a75c5" align="center" valign="center">
  20.    
  21.               <tr>
  22.    
  23.               <td border="2" style="width:40px;" align="center"><font color="#FFFFFF" size="4"><strong><input readonly type="text" style="text-align:center;color:#FFFFFF;background:#3a75c5" size="1" name="<?php echo "demnumb".$i; ?>" value="<?php echo $donnees['numb']; ?>"></strong></font></td>
  24.    
  25.               <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4"><strong><?php echo $donnees['desbonus']; ?></strong></font></td>
  26.    
  27.               <td border="2" style="width:160px;" align="center"><font color="#FFFFFF" size="4"><strong><input type="text" style="text-align:center;color:#FFFFFF;background:#3a75c5" size="20" name="<?php echo "dembonusj".$i; ?>" value="<?php echo $donnees['bonusj']; ?>"></strong></font></td>
  28.    
  29.               </tr>   
  30.    
  31.               </table>             
  32.    
  33.               <?php
  34.    
  35.            
  36.    
  37.             }
  38.    
  39.             ?>
  40.    
  41.             <br>
  42.    
  43.             <p align="center"><input type="submit" style="align:center;" value="Valider"/></p></form>
  44.    
  45.             <?php     
  46.    
  47.             mysql_close();
  48.    
  49.             ?>


 
Etant donné que je vais comparer les chaines de caractères, je préférais mettre en place une liste de sélection au niveau de dembonusj.$i pour éviter les fautes de frappes, etc....

Reply

Marsh Posté le 16-03-2012 à 08:56:26    

Salut,
 
Il faut que tu sortes la boucle while() de la boucle for(). Il faut faire l'inverse :
 

while($liste = mysql_fetch_array($reqliste))
{
    for ($i = 1 ; $i <=6 ; $i++)
    {
        [...]
    }
}


---------------
Traveling through hyperspace ain't like dusting crops, boy!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed