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

  FORUM HardWare.fr
  Programmation
  PHP

  un while dans un while

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

un while dans un while

n°1238881
attentio
Posté le 04-11-2005 à 16:33:06  profilanswer
 

bonjour,
voila j'ai differents spectacles dans differentes villes. je voudrais faire un tableau par ville, et dans chaque tableau on a toutes les dates de la ville

Code :
  1. <?
  2. $req_ville=mysql_query("SELECT * from ville ORDER BY classement" );
  3. $req_date=mysql_query("SELECT * from date,ville WHERE date.ville_id=ville.ID ORDER BY date" );
  4. mysql_close($connexion);
  5. while( $resultats = mysql_fetch_assoc($req_ville)){
  6. //affichage de la ville
  7. echo'<table width="600" align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#C4C3D0">';
  8. echo'<tr height="30" bgcolor="red"><td width="400" >&nbsp;&nbsp;';
  9. echo $resultats ['nom'];
  10. echo $resultats ['ID'];
  11. echo'</td></tr>';
  12. //affichage des dates
  13. while( $resultats_date = mysql_fetch_assoc($req_date)){
  14. echo '<tr><td>'.$resultats_date ['date'];
  15. echo '<br>'.$resultats_date ['ville_id'];
  16. echo'</td></tr>';
  17. }
  18. //
  19. echo'</td></tr></table><br><br>';
  20. }
  21. ?>


mais le soucis, C'est que toutes mes dates s'affiche dans la premiere ville
comment faire?(ma requete date ne doit pas etre bonne)
merci de votre aide

mood
Publicité
Posté le 04-11-2005 à 16:33:06  profilanswer
 

n°1238886
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 16:35:51  profilanswer
 

Hummm...

Code :
  1. while { //Premier while
  2.    // Second while
  3.    while {
  4.       //requête pour obtenir les données concernant la ville en cours
  5.    }
  6. }


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1238896
attentio
Posté le 04-11-2005 à 16:39:29  profilanswer
 

je dois donc mettre :

Code :
  1. $req_date=mysql_query("SELECT * from date,ville WHERE date.ville_id=ville.ID ORDER BY date" );


dans le second while?
et ou dois je fermer la connexion ?
merci de votre aide


Message édité par attentio le 04-11-2005 à 16:39:50
n°1238906
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 16:43:32  profilanswer
 

J'me suis trompé.
Reprennons :
 
Tu fais ta première requête, ensuite tu enchaine sur ton premier while avec mysql_fetch_assoc().
 
Dans ce premier while tu fais une seconde requête qui est la suivante :
 

Code :
  1. $req_date=mysql_query("SELECT * from date WHERE ville_id=".$resultats["id"]."ORDER BY date" );


 
A partir de laquelle tu encahine sur ton second while avec cette nouvelle requête et dans ce second while tu fais l'affichage des dates.
 
Bon je suis pas sur de moi là, faut tester/adapter si besoin.


Message édité par dwogsi le 04-11-2005 à 16:44:32

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1238912
sielfried
Posté le 04-11-2005 à 16:47:26  profilanswer
 

Cela dit ce genre de truc est faisable en une seule requête en rusant un peu.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1238927
DEns91
Posté le 04-11-2005 à 16:53:50  profilanswer
 

Slt, si je devais corriger ton code je ferais comme suit, il me semble que ca devrais mieux fonctionné.  
 
<?
$req_ville=mysql_query("SELECT * from ville ORDER BY classement" );
//$req_date=mysql_query("SELECT * from date,ville WHERE date.ville_id=ville.ID ORDER BY date" );
mysql_close($connexion);
 
while( $resultats = mysql_fetch_assoc($req_ville)){  
//affichage de la ville
echo'<table width="600" align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#C4C3D0">';
echo'<tr height="30" bgcolor="red"><td width="400" >&nbsp;&nbsp;';
echo $resultats ['nom'];
echo $resultats ['ID'];
echo'</td></tr>';
 
$req_date=mysql_query("SELECT * from date,ville WHERE date.ville_id=$resultats['ID'] ORDER BY date" );
 
//affichage des dates
while( $resultats_date = mysql_fetch_assoc($req_date)){  
    echo '<tr><td>'.$resultats_date ['date'];
    echo '<br>'.$resultats_date ['ville_id'];
    echo'</td></tr>';
}
//
echo'</td></tr></table><br><br>';
}
?>
     

n°1238931
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 16:55:44  profilanswer
 

sielfried a écrit :

Cela dit ce genre de truc est faisable en une seule requête en rusant un peu.


Vas-y ruse, ca m'intéresse!
 

DEns91 a écrit :

Slt, si je devais corriger ton code je ferais comme suit, il me semble que ca devrais mieux fonctionné.


J'avais prévennu que j'étais pas sur de moi.  ;)

Message cité 1 fois
Message édité par dwogsi le 04-11-2005 à 16:56:44

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1238932
attentio
Posté le 04-11-2005 à 16:55:46  profilanswer
 

j'ai fais ceci :

Code :
  1. <?
  2. // requête ville
  3. $req_ville=mysql_query("SELECT * from ville ORDER BY classement" );
  4. while( $resultats = mysql_fetch_assoc($req_ville)){
  5. //affichage des villes
  6. echo'<table width="600" align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#C4C3D0">';
  7. echo'<tr height="30" bgcolor="red"><td width="400" >&nbsp;&nbsp;';
  8. echo $resultats ['nom'];
  9. echo $resultats ['ID'];
  10. echo'</td></tr>';
  11. //affichage des dates
  12. $req_date=mysql_query("SELECT * from date WHERE ville_id=".$resultats["ID"]."ORDER BY date" );
  13. while( $resultats_date = mysql_fetch_assoc($req_date)){
  14. echo '<tr><td>'.$resultats_date ['date'];
  15. echo '<br>'.$resultats_date ['ville_id'];
  16. echo'</td></tr>';
  17. }
  18. echo'</td></tr></table><br><br>';
  19. }
  20. mysql_close($connexion);
  21. ?>


mais j'ai une erreur :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL sur le deuxieme while
d'ou cela peut venir ?
merci encore de votre aide

n°1238936
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 16:57:27  profilanswer
 

Un espace avant ORDER dans la seconde requete peut etre?
Et quand tu à une erreur de ce genre, pense à faire un echo mysql_error(); juste après ta requête.


Message édité par dwogsi le 04-11-2005 à 16:58:36

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1238937
sielfried
Posté le 04-11-2005 à 16:58:22  profilanswer
 

dwogsi a écrit :

Vas-y ruse, ca m'intéresse!


 
Ben tu fais une seule requete histoire d'avoir un truc comme ça :
ville1 date1
ville1 date2
ville1 date3
ville2 date4
ville3 date5
ville3 date6
 
Et tu fermes/crées un nouveau tableau dès que $row['ville'] change.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
mood
Publicité
Posté le 04-11-2005 à 16:58:22  profilanswer
 

n°1238938
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 16:59:12  profilanswer
 

Euh... Oui c'est logique en fait.
Que je suis c**.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1238943
attentio
Posté le 04-11-2005 à 17:02:46  profilanswer
 

yes !  
ca semble marcher !
merci a tous

n°1238947
weed
Posté le 04-11-2005 à 17:05:49  profilanswer
 

yep, tu fais un group by

n°1239215
dwogsi
Défaillance cérébrale...
Posté le 05-11-2005 à 02:45:11  profilanswer
 

Pourquoi un GROUP BY?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1239219
weed
Posté le 05-11-2005 à 03:39:55  profilanswer
 

et bien un group by ville pour regrouper par ville comme ca :  
 

sielfried a écrit :

Ben tu fais une seule requete histoire d'avoir un truc comme ça :
ville1 date1
ville1 date2
ville1 date3
ville2 date4
ville3 date5
ville3 date6
 
Et tu fermes/crées un nouveau tableau dès que $row['ville'] change.


 
non ? je me trompe peut etre ...

n°1239232
sielfried
Posté le 05-11-2005 à 08:23:20  profilanswer
 

Euh non, là ça va sortir que la première date de chaque ville ou un truc du genre. :/
 
Suffit de faire order by ville.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1239326
dwogsi
Défaillance cérébrale...
Posté le 05-11-2005 à 14:58:10  profilanswer
 

Ouai un ORDER BY je veut bien parce que un GROUP BY ca sortirait plutot qu'une date par ville.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1239352
weed
Posté le 05-11-2005 à 16:00:25  profilanswer
 

oulaaaa, je me suis trompé alors ...   :(


Message édité par weed le 05-11-2005 à 16:01:05

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

  un while dans un while

 

Sujets relatifs
Insecure $ENV{PATH} while running setgidprobleme while et <select>
Probleme tout bete avec while ! (je suis nb)Deux boucles while
Construction d'un tableau dans une boucle whilepb boucle do while
vo mieux voir le dernier msg de ce topic pour comprendre le 1er ??While(j != nbre_tot_colonnes)
whileBoucles while - newbie
Plus de sujets relatifs à : un while dans un while


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)