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

  FORUM HardWare.fr
  Programmation
  PHP

  Deux boucles while

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Deux boucles while

n°1182993
Tilix
Posté le 24-08-2005 à 03:00:38  profilanswer
 

Salut !
 
Alors voilà je voudrais faire 2 boucles while avec les membres infos...
Mais sa ne marche pas ! La 1ere se fait, la 2e ne s'affiche pas !
 
Y'a moyen de faire que sa marche ?
 
Merci

mood
Publicité
Posté le 24-08-2005 à 03:00:38  profilanswer
 

n°1182994
naceroth
Posté le 24-08-2005 à 03:03:36  profilanswer
 

Un exemple de code par hasard ? Non, parce que c'est pas que ta question n'est pas claire, mais quand même :D

n°1182995
Tilix
Posté le 24-08-2005 à 03:16:54  profilanswer
 

while($recupere_membre = mysql_fetch_assoc($envoi_membre))
{
 $NombreDeTrouves = $NombreDeTrouves-1;
}
 
echo $NombreDeTrouves; //Affiche un nombre en fonction du nombre de boucles...
 
while($recupere_membre = mysql_fetch_assoc($envoi_membre))
{
 echo "blabla"; //Affiche differentes informations...
}

n°1182996
naceroth
Posté le 24-08-2005 à 03:36:08  profilanswer
 

Bon, déjà, j'en connais qui te diront que si tu dois utiliser deux boucles identiques (pour la condition), tu peux probablement obtenir le même résultat en une seule :)
 
Sinon, mysql_fetch_x lit une ligne du résultat d'une requête et la renvoit, jusqu'à ce qu'il n'y ait plus de lignes auquel cas il retourne false. C'est exactement ce qui se produit dans ta deuxième boucle : la première a parcouru tout les résultats de la requête, mysql_fetch_assoc n'a donc plus rien à renvoyer :)
 
Solution : retourner au début du dataset avec mysql_data_seek :)
 
Ceci dit, telle qu'elle est écrite là, ta première boucle est un peu inutile, mysql_num_rows ou un count sql t'aurait donné le même résultat de manière plus rapide :)

n°1182998
Tilix
Posté le 24-08-2005 à 03:39:14  profilanswer
 

T'as un exemple à donner ? :D

n°1182999
naceroth
Posté le 24-08-2005 à 03:46:40  profilanswer
 

le manuel en est rempli :D
 

Code :
  1. while ($kkwet = mysql_fetch_array($dataset)){
  2. // blabla
  3. }
  4. mysql_data_seek($dataset,mysql_num_rows($dataset)-2) // repositionne sur l'avant dernier résultat de la requête
  5. while ($kkwet = mysql_fetch_array($dataset)){
  6. // blabla
  7. }


 
Hop, les 2 en 1 :D
 
//edit pour correction de conneries dues au manque de sommeil :D


Message édité par naceroth le 24-08-2005 à 03:59:12
n°1183000
Tilix
Posté le 24-08-2005 à 03:56:10  profilanswer
 

C'est bon sa marche (ouff...)
 
Et sinon, pour repositionner au tout début j'fais comment ?...
 
Merci ^^


Message édité par Tilix le 24-08-2005 à 04:03:44
n°1183001
naceroth
Posté le 24-08-2005 à 04:03:21  profilanswer
 

Ola oui, il est temps que j'aille dormir moi...
 
Bon, le code est corrigé, pour ton autre question : RTFM, la réponse est marquée en toute lettre (enfin, en chiffre) dans le manuel, un peu de bonne volonté que diantre :D
 

n°1183002
Tilix
Posté le 24-08-2005 à 04:09:34  profilanswer
 

J'ai fais : mysql_data_seek($envoi_membre,0);
 
Sa va plus vite pour reprendre à zero... sans me servir de mysql_num_rows()

n°1183490
naceroth
Posté le 24-08-2005 à 15:41:56  profilanswer
 

Ouais. Enfin, c'était pas vraiment le but de mon exemple non plus, je voulais plutôt te montrer un exemple d'utilisation pour remplacer ta première boucle :)

mood
Publicité
Posté le 24-08-2005 à 15:41:56  profilanswer
 

n°1183495
kalex
Posté le 24-08-2005 à 15:52:43  profilanswer
 

Plus propre (et encore...) :

Code :
  1. $tab = mysql_fetch_assoc($query);
  2. foreach($tab AS $one){
  3. // ...
  4. }
  5. foreach($tab AS $one){
  6. // ...
  7. }


 
Edit : j'suis allé trop vite (merci naceroth), le bon truc c'est :

Code :
  1. while($tab[] = mysql_fetch_assoc($query));
  2. foreach($tab AS $one){
  3. // ...
  4. }
  5. foreach($tab AS $one){
  6. // ...
  7. }


Message édité par kalex le 24-08-2005 à 16:11:27
n°1183497
naceroth
Posté le 24-08-2005 à 15:54:40  profilanswer
 

Ouais, dommage que ça donne pas le même résulat :D

n°1183499
kalex
Posté le 24-08-2005 à 15:56:23  profilanswer
 

Où est la diff ?

n°1183501
naceroth
Posté le 24-08-2005 à 16:00:05  profilanswer
 

Sa boucle parcourt tous les résultats d'un dataset, la tienne tous les champs d'un seul résultat (ce qui est un peu idiot puisque l'utilisation de mysql_fetch_assoc implique que tu connaîs le nom des champs...) :)


Message édité par naceroth le 24-08-2005 à 16:00:36
n°1183506
kalex
Posté le 24-08-2005 à 16:05:13  profilanswer
 

:o
Ah ouais, remplacez la 1ere ligne par
 
while($tab[] = mysql_fetch_assoc($query));


Message édité par kalex le 24-08-2005 à 16:06:18

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

  Deux boucles while

 

Sujets relatifs
Construction d'un tableau dans une boucle whileboucles en SQL
pb boucle do whilevo mieux voir le dernier msg de ce topic pour comprendre le 1er ??
While(j != nbre_tot_colonnes)while
Boucles while - newbiepb while dans tableau - Débutant
Plus de sujets relatifs à : Deux boucles while


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