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

  FORUM HardWare.fr
  Programmation
  PHP

  Deux while à la suite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Deux while à la suite

n°2019073
willy54
Posté le 26-08-2010 à 10:41:58  profilanswer
 

Bonjour voici mon code php:
 
$base = mysql_connect (''.$cserveur.'', ''.$clogin.'', ''.$cpassword.'');
mysql_select_db (''.$cbasedd.'', $base) ;
$req = "SELECT * FROM joueurs WHERE s20102011='1' ORDER BY id ASC";  
$sql = mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());  
echo "<FORM method=post action=''>";
echo "<SELECT name='joueurun'>";
while ($data = mysql_fetch_array($sql)) {
echo "<OPTION VALUE='$data[id]'>$data[nom]</OPTION>";
}
echo "</SELECT><br>";
echo "<SELECT name='joueurdeux'>";
while ($data = mysql_fetch_array($sql)) {
echo "<OPTION VALUE='$data[id]'>$data[nom]</OPTION>";
}
echo "</SELECT><br>";
echo "<INPUT type='submit' value='Confirmer'></FORM>";

 
Le problème c'est qu'à l'affichage le premier champ SELECT affiche bien quelque chose (liste des joueurs), mais celui d'en dessous est vide. Que faire?

mood
Publicité
Posté le 26-08-2010 à 10:41:58  profilanswer
 

n°2019078
Scarf3ss3
Posté le 26-08-2010 à 10:47:02  profilanswer
 

Il faut juste remettre le pointeur de $sql à 0 juste avant de refaire ton 2ème while.
mysql_data_seek ($sql,0);

n°2019092
esox_ch
Posté le 26-08-2010 à 11:26:50  profilanswer
 

Non, Non,non et encore NON!

 

Willy54, sépare tes données de ton contenu HTML.
Dans ton cas t'as 2 options.

 

Soit tu te construits un petit tableau associatif id=>nom dans ta boucle while "mysql", et après tu le ré-utilises plus loin.

 

Soit tu fait ta boucle mysql, et au lieu de faire directement un "echo", tu remplis des variables contenant le html (style $out = "<select><br"; ...)

 

Sinon bon y a toujours la 3ème option, la meilleur, de passer par un modèle vraiment MVC, mais bon c'est un peu plus compliqué à faire

 

Voilà :o


Message édité par esox_ch le 26-08-2010 à 11:28:08

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2019101
Scarf3ss3
Posté le 26-08-2010 à 11:54:17  profilanswer
 

Oui certes... Mais c'est surement un débutant donc je répondais à sa question.
Sinon on peut débattre également de sa façon d'écrire le XHTML.  :ange:

n°2019119
esox_ch
Posté le 26-08-2010 à 13:02:38  profilanswer
 

Oui c'est un débutant, mais c'est pas une raison de lui donner de mauvais conseils...
Les 2 premiers commentaires sont simples à appliquer et le mettront déjà sur la bonne voie, vu qu'ils partent déjà dans le sens "séparation des couches", bien que ce soit encore loin du compte..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2019297
willy54
Posté le 27-08-2010 à 10:15:40  profilanswer
 

Merci bien ;)

n°2019327
willy54
Posté le 27-08-2010 à 11:38:08  profilanswer
 

esox_ch, je ne sais pas faire ton premier conseil. Concernant le second, j'ai essayé, sans succès.
Seule la méthode de scarf fonctionne. Or apparemment il ne faut pas que je fasse ça. Que faire?

n°2019334
Scarf3ss3
Posté le 27-08-2010 à 11:59:22  profilanswer
 

Tu peux faire ça, par exemple:
 

Code :
  1. $liste_joueurs = array ();
  2. $base = mysql_connect (''.$cserveur.'', ''.$clogin.'', ''.$cpassword.'');
  3. mysql_select_db (''.$cbasedd.'', $base) ;
  4. $req = "SELECT * FROM joueurs WHERE s20102011='1' ORDER BY id ASC"; 
  5. $sql = mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error()); 
  6. // MA LISTE DE JOUEURS
  7. while ($data = mysql_fetch_assoc($sql))
  8.          $liste_joueurs[] = array ('id'=>$data['id'],'nom'=>$data['nom']);
  9. // ON RECUPERE LE NOMBRE DE JOUEURS
  10. $nombre_joueurs = count($liste_joueurs);
  11. // MISE EN FORME DU SELECT
  12. $mon_select = '';
  13. for ($i=0;$i<$nombre_joueurs;$i++)
  14.      $mon_select .= '<option value="'.$liste_joueurs[$i]['id'].'">'.$liste_joueurs[$i]['nom'].'</option>';
  15. // AFFICHAGE DU FORMULAIRE
  16. echo "<FORM method=post action=''>
  17. <SELECT name='joueurun'>
  18. ".$mon_select."
  19. </SELECT><br>
  20. <SELECT name='joueurdeux'>
  21. ".$mon_select."
  22. </SELECT><br>
  23. <INPUT type='submit' value='Confirmer'></FORM>";


Message édité par Scarf3ss3 le 27-08-2010 à 12:02:50
n°2019339
willy54
Posté le 27-08-2010 à 12:18:28  profilanswer
 

scarf3ss3, ça fonctionne parfaitement.
 
Merci :)

n°2019355
Scarf3ss3
Posté le 27-08-2010 à 13:24:28  profilanswer
 

willy54 a écrit :

scarf3ss3, ça fonctionne parfaitement.
 
Merci :)


 
 :)  
C'est juste un début, mais tu peux améliorer tout ça en utilisant des fonctions, voir une class.  

mood
Publicité
Posté le 27-08-2010 à 13:24:28  profilanswer
 

n°2019547
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 28-08-2010 à 00:47:13  profilanswer
 

juste une remarque : quel est l'intérêt des quotes dans cette ligne ?
 
$base = mysql_connect (''.$cserveur.'', ''.$clogin.'', ''.$cpassword.'');
 
Bien plus simple et largement suffisant :
$base = mysql_connect ($cserveur, $clogin, $cpassword);


---------------
NewsletTux - outil de mailing list en PHP MySQL

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

  Deux while à la suite

 

Sujets relatifs
Jquery : lancer des animation à la suiteune condition dans un do while qui plante ...
definir parametre XL suite export accessSuite de questions dependante les unes des autres
lancement d'un script php suite a un triggerouverture nouvelle fenêtre suite à header
Bug excel suite a lancement de macros successivesSuite de pipes en boucle
Comptage des voyelles d'une suite de caracteres, plusieurs questions..(Résolu) Elements invisibles dans le html suite à un include
Plus de sujets relatifs à : Deux while à la suite


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