boucle et données SQL

Eléphant du PHP | 206 Messages

29 déc. 2007, 20:25

Bonsoir :)

J'ai besoin d'un petit conseil.
La réponse à mon problème doit être simple je pense.
Donc voici mon code
	<form action="feuille_match.php" method="post">

	<?php
	$liste_joueurs = mysql_query('SELECT id,  prenom, nom FROM joueurs WHERE id_equipe='.$_SESSION['id_equipe']);
	
	$i = 1;

	while ( $i < 5 )
	{
		echo '<p><select name="poste'.$i.'">';
		
		while($liste_joueurs2 = mysql_fetch_assoc($liste_joueurs))
		{
			echo '<option value="'.$liste_joueurs2['id'].'">'.$liste_joueurs2['prenom'].' '.$liste_joueurs2['nom'].'</option>';
		}
	
		 echo "</select> </p>";
	$i++;
	}
	?>
	
	</form>
Evidemment logiquement 5 listes déroulantes sont crées mais seul la première contient ma liste de joueur ce qui est je pense normal car $liste_joueurs2 = mysql_fetch_assoc($liste_joueurs) ne peux s'exequter qu'une seule fois.

Alors dois je plutot mettre mes joueurs dans un array avant la boucle? ou autre ?

Merci d'avance et bonne soirée :)

Mammouth du PHP | 881 Messages

29 déc. 2007, 22:24

Il semble que oui, il faudrait faire passer ta boucle fetch en premier et envoyer ses données dans un tableau, comme suit:
       x = 0;
       $liste_joueurs = mysql_query('SELECT id,  prenom, nom FROM joueurs WHERE id_equipe='.$_SESSION['id_equipe']);
        while($liste_joueurs2 = mysql_fetch_assoc($liste_joueurs))  {
            $NomJoueur[$x] = $liste_joueurs2['prenom'].' '.$liste_joueurs2['nom'];
            $IdJoueur[$x] =  $liste_joueurs2['id'];
        }

   echo '<form action="feuille_match.php" method="post">';

    
    $i = 1;

    while ( $i < 5 )      {
        echo '<p><select name="poste'.$i.'">';
        
        for ($x=0; $x<count($IdJoueur); $x++)    {
            echo '<option value="'.$IdJoueur[$x].'">'.$NomJoueur[$x].'</option>';
        }
    
       echo "</select> </p>";
       $i++;
    }
    ?>
    
    </form>

Soyez artisans de paix

Eléphant du PHP | 206 Messages

30 déc. 2007, 00:42

Merci j'ai pu prendre ton bout de code pour l'adapter.

Merci beaucoup :)

A savoir : au cas ou ce topic interesse d'autres personnes (on sait jamais :) )

Il faut rajouter $x++; dans la première boucle :)

Bonne soirée