1 boucle pour 5 listes ou 5 boucles ?

1 boucle pour 5 listes ou 5 boucles ? - PHP - Programmation

Marsh Posté le 27-12-2006 à 14:54:04    

Salut tout le monde,
je dois afficher 5 listes, ces 5 listes contenant toute la liste des membres, ce qui est donc la même requette SQL.
 
Le truc, c'est que pour éviter d'avoir 5 fois la même requete, j'ai pour l'instant ceci :
 

Code :
  1. <?php
  2. // Connexion à la BDD pour récupérer le pseudo des joueurs
  3. $sql2 = "SELECT pseudo FROM membres";
  4. $sql2 = mysql_query($sql2) or die (mysql_error());
  5. $liste = '';
  6. while($membre = mysql_fetch_array($sql2)) {
  7. $liste .= '<option value='.$membre['pseudo'].'>'.$membre['pseudo'].'</option>';
  8. }
  9. ?>
  10. <p>Joueur 1 :<br />
  11. <select name="player_1">
  12. <option value=""></option>
  13. <?php echo $liste; ?>
  14. </select></p>
  15. <p>Joueur 2 :<br />
  16. <select name="player_2">
  17. <option value=""></option>
  18. <?php echo $liste; ?>
  19. </select></p>
  20. etc


 
Le problème, c'est que ces listes apparaissent sur une page d'édition, le pseudo de chaque joueur doit donc être séléctionné lorsque l'on accède à la page.
 
Chose que je fais d'habitude avec quelque chose dans le genre :
 

Code :
  1. <? if($clans['joueur_1'] == $membres['pseudo']) echo "selected";?>


 
Or ici avec cette méthode d'une seule boucle pour 5 listes je ne peux pas le faire.
 
Alors y a-t-il un moyen pour ne faire qu'une seule requete ou devrai-je en faire 5 ?
 
Merci.


---------------
Twitter
Reply

Marsh Posté le 27-12-2006 à 14:54:04   

Reply

Marsh Posté le 27-12-2006 à 17:24:31    

Tu peux faire un truc comme ça.
 

Code :
  1. $listes = array();
  2. for ($i = 0; $i < $nb_joueurs; $i++) {
  3.  $listes[$i] = '';
  4. }
  5.  
  6. while ($membre = mysql_fetch_assoc($sql2)) {
  7.  for ($i = 0; $i < $nb_joueurs; $i++) {
  8.    $listes[$i] .= '<option value="' . $membre['pseudo'] . '"';
  9.    if ($clans['joueur_' . ($i + 1)] == $membre['pseudo']) {
  10.      $liste[$i] .= ' selected="selected"';
  11.    }
  12.    $liste[$i] .= '>' . $membre['pseudo'] . '</option>';
  13.  }
  14. }

Message cité 1 fois
Message édité par sielfried le 27-12-2006 à 17:35:57
Reply

Marsh Posté le 27-12-2006 à 17:34:18    

(Ceci dit c'est pas génial ce mélange traitement/affichage, mais bon...)

Reply

Marsh Posté le 27-12-2006 à 17:38:07    

sielfried a écrit :

Tu peux faire un truc comme ça.

 
Code :
  1. $listes = array();
  2. for ($i = 0; $i < $nb_joueurs; $i++) {
  3.  $listes[$i] = '';
  4. }
  5.  
  6. while ($membre = mysql_fetch_assoc($sql2)) {
  7.  for ($i = 0; $i < $nb_joueurs; $i++) {
  8.    $listes[$i] .= '<option value="' . $membre['pseudo'] . '"';
  9.    if ($clans['joueur_' . ($i + 1)] == $membre['pseudo']) {
  10.      $liste[$i] .= ' selected="selected"';
  11.    }
  12.    $liste[$i] .= '>' . $membre['pseudo'] . '</option>';
  13.  }
  14. }


 

Solution compliquée quand même :D
(enfin, compliquée dans le sens dure à réalier)

 

Mais merci, je vais la disséquer pour la comprendre correctement maintenant :)


Message édité par koskoz le 27-12-2006 à 17:41:27

---------------
Twitter
Reply

Marsh Posté le 27-12-2006 à 17:44:18    

Sinon tu stockes tes membres dans un tableau et tu gères l'affichage après dans une boucle sur les joueurs, puis une boucle sur chaque membre. Et tu fous l'affichage (après le while) dans un autre fichier que tu inclus. Ce serait déjà un peu plus propre.

Reply

Marsh Posté le 27-12-2006 à 17:45:08    

Je vois pas trop ce que tu veux dire là :/


---------------
Twitter
Reply

Marsh Posté le 27-12-2006 à 17:51:05    

Code :
  1. // tapage.php
  2.  
  3. <?php
  4.  
  5. // ...
  6.  
  7. $membres = array();
  8. while ($membre = mysql_fetch_assoc($num2)) {
  9.   $membres[] = $membre;
  10. }
  11.  
  12. // ...
  13.  
  14. require 'display_tapage.php';


 

Code :
  1. // display_tapage.php
  2.  
  3. <!-- ... -->
  4.  
  5. <?php
  6. for ($joueur_id = 1; $joueur_id <= $nb_joueurs; $joueur_id++) {
  7.  // ...
  8.  foreach ($membres as $membre)    
  9.    // Affichage des <option> avec selected par défaut en fonction de joueur/membre
  10.  }
  11.  // ...
  12. }
  13. ?>
  14.  
  15. <!-- ... -->


Message édité par sielfried le 27-12-2006 à 17:59:15

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

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