France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 342 membres enregistrés - 1 872 900 posts - 95 150 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages Web
                Prb de boucle en PHP...
20 connectés dont 1 modérateur (altec)(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
Prb de boucle en PHP...

cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 24 juin 2004 - 23 h 48 m 19 s
Salut a tous!

Voila je cherche à faire 2 boucles avec le mysql_fetch_assoc
Malheureusement, la boucle contenant ListSecondaire ne tourne qu'une fois? pourquoi?

    Code php    
1. do { 
2. 	Code Code Code...;
3. 	while ($row_ListSecondaire = mysql_fetch_assoc($ListSecondaire)) {
4.       		Code Code Code2;
5.    	}
6. 	Code Code Code3;
7. } while ($row_ListePrimaire = mysql_fetch_assoc($ListePrimaire)); 


Message de cilo le 25 juin 2004 - 10 h 27 :
Test
Message édité 1 fois, la dernière par cilo le 24 juin 2004 - 23 h 49.

"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 09 h 00 m 39 s
Salut cilo.

Avec un Do... While, tu passes forcément au moins une fois dans ta boucle, mais avec un while, tu n'es pas obligé d'y passer. Si ton mysql_fetch_assoc($ListeSecondaire) ne revoie rien, c'est seulement ta boucle de $ListePrimaire qui ne tourne qu'une seule fois.. Mais je ne vois pas trop là... Ce que tu mets en "Code Code Code" ce sont tes requetes SQL n'est-ce pas ?
Peux-tu m'expliquer le but de tes boucles ?



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 09 h 57 m 16 s
J'ai une liste Primaire d'enregistrement, je veux passer qu'une seule fois la liste, d'ou le Do ... While, qui s'execute à merveille.

Seulement J'ai une liste secondaire ($ListSecondaire) qui est le resultat d'une requete sql que je veux parcourir pour chaque enregistrement de la liste primaire.
Seulement le parcours des enregistrements de la seconde liste ne se fait qu'une seul fois aussi, au premier enregistrement de ma liste primaire et pas pour tous!



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 10 h 13 m 53 s
Donne le code à l'intérieur de ta boucle en entier stp.



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 10 h 24 m 03 s
    Code php    
1. do { 
2.    echo "avant boucle secondaire : ".$row_ListePrimaire['NumID'];
3.     while ($row_ListSecondaire = mysql_fetch_assoc($ListSecondaire)) {
4.               echo "dans boucle secondaire : ".$row_ListSecondaire['NumIDs'];
5.        }
6.     echo "apres boucle secondaire : ".$row_ListePrimaire['NumID'];
7. } while ($row_ListePrimaire = mysql_fetch_assoc($ListePrimaire)); 


Voici le resulatat a l'ecran:
ListePrimaire contient 5 enregistrements
ListeSecondaire contient 2 enregistrements
A l'ecran :
avant boucle secondaire : 1
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 1

avant boucle secondaire : 2
apres boucle secondaire : 2

avant boucle secondaire : 3
apres boucle secondaire : 3

avant boucle secondaire : 4
apres boucle secondaire : 4

avant boucle secondaire : 5
apres boucle secondaire : 5


Message édité 1 fois, la dernière par cilo le 25 juin 2004 - 10 h 35.

"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 10 h 28 m 10 s
à aucun moment tu n'utilises $row_ListePrimaire...



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 10 h 35 m 19 s
Exact, mais j'ai mis l'exemple sans le code sous les yeux, scuse pour l'erreur
Donc une idée pour mon probleme



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 10 h 49 m 54 s
hum.. je réfléchi toujours.. vu le résultat, tu passes :
5 fois dans la boucle de $ListePrimaire
et
2 fois dans la boucle de $ListeSecondaire

Tu n'y passes pas une fois mais deux, donc le problème ne se pose plus non ?



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 11 h 17 m 42 s
Si! le probleme est que je lit que 1 fois les enregistrements de la deuxieme liste, et pas 5 fois

Voici le resultat voulu:
avant boucle secondaire : 1
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 1

avant boucle secondaire : 2
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 2

avant boucle secondaire : 3
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 3

avant boucle secondaire : 4
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 4

avant boucle secondaire : 5
dans boucle secondaire : 1
dans boucle secondaire : 2
apres boucle secondaire : 5

Moi je seche la dessus...



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 11 h 23 m 38 s
ah mais c'est le résultat voulu, pas le résultat que tu as sous les yeux.. ? ok J'avé pas vu ça comme ça, dsl.

Bon, si ton code n'a pas d'info particulieres et/ou importantes, envoie le moi sur mon @email, je vais y jeter un coup d'oeil de plus pret.



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 11 h 38 m 57 s
Merci pour la proposition ! ! :pouce:
J'ai pas les fichiers sous la main, mais si d'ici à ce soir personne n'a une idée, je te l'enverais...



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

KibitO
Betty Boop ma chérie je t\\\'aime plus que tout !!

Messages : 1 715
Inscrit le 22/02/02
Ville : Chassagny
Non connecté
  Posté le 25 juin 2004 - 11 h 44 m 35 s
Ok no problemo.



KibitO Piccoloo Porto

Ooooohhhhoooohohohoh I Love U So, Oooooohohohohooohohoooooo I Need You So
(© Wampas)

!! DefraK !!


Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 25 juin 2004 - 11 h 48 m 12 s


Le 25 juin 2004 à 10 h 24, cilo a écrit :
    Code php    
1. do { 
2.    echo "avant boucle secondaire : ".$row_ListePrimaire['NumID'];
3.     while ($row_ListSecondaire = mysql_fetch_assoc($ListSecondaire)) {
4.               echo "dans boucle secondaire : ".$row_ListSecondaire['NumIDs'];
5.        }
6.     echo "apres boucle secondaire : ".$row_ListePrimaire['NumID'];
7. } while ($row_ListePrimaire = mysql_fetch_assoc($ListePrimaire)); 



$ListSecondaire est une ressource mysql

Mais à quel moment fais-tu ton $ListSecondaire = mysql_query($requete); ?

Car une fois que tu as parcouru tous les résultats de la requête, le pointeur ne se repositionne pas au début, donc si tu utilises la même ressource au second passage il ne trouvera plus rien.



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 12 h 09 m 04 s
La requete s'effectue avant les boucles.
Donc si j'ai bien compris
il faut faire un reset($ListSecondaire) ???
    Code php    
1. do { 
2. reset ($ListSecondaire)   ;
3. echo "avant boucle secondaire : ".$row_ListePrimaire['NumID'];
4.     while ($row_ListSecondaire = mysql_fetch_assoc($ListSecondaire)) {
5.               echo "dans boucle secondaire : ".$row_ListSecondaire['NumIDs'];
6.        }
7.      
8.     echo "apres boucle secondaire : ".$row_ListePrimaire['NumID'];
9. } while ($row_ListePrimaire = mysql_fetch_assoc($ListePrimaire)); 



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 25 juin 2004 - 12 h 29 m 23 s
Le mieux est de faire quelque chose du genre :

    Code php    
 1. // mise en mémoire des résultats
 2. $ListSecondaireArray = array();
 3. while ($row_ListSecondaire = mysql_fetch_assoc($ListSecondaire))
 4. {
 5.     $ListSecondaireArray[] = $row_ListSecondaire;
 6. }
 7. 
 8. // traitement
 9. do
10. { 
11.     echo "avant boucle secondaire : ".$row_ListePrimaire['NumID'];
12.     reset ($ListSecondaireArray);
13.     foreach( $ListSecondaireArray as $row_ListSecondaire )
14.     {
15.         echo "dans boucle secondaire : ".$row_ListSecondaire['NumIDs'];
16.     }
17.  
18.     echo "apres boucle secondaire : ".$row_ListePrimaire['NumID'];
19. } while ($row_ListePrimaire = mysql_fetch_assoc($ListePrimaire)); 



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

cilo
Modérateur
Que puis-je faire pour vous?

Messages : 7 196
Inscrit le 07/11/01
Ville : Brignoud
Non connecté
  Posté le 25 juin 2004 - 13 h 18 m 30 s
Merci, je regarde ca ce soir!



"Maintenant, on ne fait plus de camembert, on fabrique un truc rond et blanc qu'on appelle camenbert" M. Lepetit

Page genérée en 0.5613 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory