Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1188 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  1 boucle pour 5 listes ou 5 boucles ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

1 boucle pour 5 listes ou 5 boucles ?

n°1496341
koskoz
They see me trollin they hatin
Posté le 27-12-2006 à 14:54:04  profilanswer
 

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
mood
Publicité
Posté le 27-12-2006 à 14:54:04  profilanswer
 

n°1496386
sielfried
Posté le 27-12-2006 à 17:24:31  profilanswer
 

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
n°1496389
sielfried
Posté le 27-12-2006 à 17:34:18  profilanswer
 

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

n°1496390
koskoz
They see me trollin they hatin
Posté le 27-12-2006 à 17:38:07  profilanswer
 

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
n°1496392
sielfried
Posté le 27-12-2006 à 17:44:18  profilanswer
 

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.

n°1496393
koskoz
They see me trollin they hatin
Posté le 27-12-2006 à 17:45:08  profilanswer
 

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


---------------
Twitter
n°1496398
sielfried
Posté le 27-12-2006 à 17:51:05  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  1 boucle pour 5 listes ou 5 boucles ?

 

Sujets relatifs
regroupement de données avec une boucleEmpecher la lecture en boucle
Comment gérer une boucle infinie? ou repeter une action?[Java] Comment ralentir une boucle Java ?
[Résolu] boucle for récursiveproblème de boucle sur vba
probleme de boucle whileBoucle pour traiter série de fichiers dans un ordre
[VB-E] Erreur 1004 dans une boucle For ?Mots dans une Boucle FOR
Plus de sujets relatifs à : 1 boucle pour 5 listes ou 5 boucles ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR