Bonjour,

Voici mon soucis :
J'ai deux boucles whiles imbriquées :

while ($id_news_different_asso = mysql_fetch_array($id_diffren_id_asso)) 
 {
            while ($Liste_id_depart = mysql_fetch_array($id_depar_asso) )
           {
            echo 'test';
            }
}


Le problème c est qu'une fois que le deuxième boucle while a fait un tour de boucle pour une valeur de $id_news_different_asso
les autre tour ne se font pas car mysql_fetch_array vide ma variable : $Liste_id_depart.
J'ai bien pensé à la remplacer par une boucle for mais elle ne fonctionne pas :
$Liste_id_depart=mysql_fetch_array($id_depar_asso);
for ($i=0; $i<count($Liste_id_depart['ID_NEWS']); $i++)


Les variables $id_diffren_id_asso et $id_depar_asso sont des résultats de
requêtes :
$id_diffren_id_asso= mysql_query('SELECT DISTINCT(newsletters.ID_NEWS), NOM_NEWS, NOM_STRUCTURE, INSCRIT

$id_depar_asso= mysql_query('SELECT DISTINCT(association.ID_ASSO) , commune.ID_DEPARTEMENT, ID_TYPE_ASSO


Merci

Bonne fin de journée !

Maxi
Modifié par Maxi (10 Aug 2011 - 11:27)
J'avoue ne pas avoir très bien compris ton souci. Mais quelques éléments qui sauraient t'être utiles:

- l'API mysql est à mettre de coté depuis quelque temps, pour se tourner vers PDO. Cf. doc PHP.
- mysql_fetch_array est une mauvaise idée contre mysql_fetch_assoc (ou autre selon le besoin)
- mysql_fetch_* ne fait qu'extraire une ligne de résultat dans le jeu obtenu (ressource $id_depar_asso) pour la fournir sous forme d'array associatif ET numéroté (ce qui est dérangeant, cf. ligne au-dessus) tout en déplaçant le curseur interne d'un cran (afin de fournir la ligne suivante au prochain passage, etc.). S'il n'y a plus de résultat, elle retourne false, ce qui permet la sortie du while.
Ta variable $Liste_id_depart n'a donc de sens que dans la structure while ... concernée Smiley smile
Bonjour,

Merci pour ces informations, mais je n'ai toujours pas trouvé de solution à mon problème qui est :


 while ($Liste_id_depart_distinct = mysql_fetch_array($id_depar_asso_distinct) )
{	
	echo ' Y ';
      
       while ($id_depar_newletters = mysql_fetch_array($id_depar_newlet)) 
       {	
         echo ' X ';
       }
}


Y apparaît sur ma page de teste deux fois donc la deuxième boucle while est faite deux fois. Mais X n’apparaît que 4 fois alors qu'il y a 4 valeurs dans $id_depar_newletters, le X devrait apparaître 8 fois ( 2 X 4 ... ) .
Je sais que c est à cause du mysql_fetch_array qui vide $id_depar_newlet du coup la deuxième boucle ne peut s’exécuter qu'une seul fois en totalité.
J'ai essayé avec un for mais sa ne fonctionne pas ...
Une idée ?
Merci
Modifié par Maxi (10 Aug 2011 - 11:24)
Parce que comme je l'ai dit, le mysql_fetch modifie ta ressource, car déplace le curseur interne d'un cran.

Si tu veux réellement adopter ce style (while ... imbriqués ) tu dois réinitialiser ce curseur.

Tu peux utiliser mysql_data_seek pour déplacer manuellement ce curseur interne, et ainsi "réinitialiser" $id_depar_newlet, avant ou après le passage dans la structure du while interne Smiley smile

bool mysql_data_seek ( resource $result , int $row_number )
Modifié par Lpu8er (10 Aug 2011 - 11:32)
Merci beaucoup !!! j'ai rajouter sa juste après le deuxième while :

mysql_data_seek($id_depar_newlet ,0); 


Et sa marche !!!! désolé j'avais pas compris qu'on pouvait remettre le curseur à la ligne o, on m'avait expliqué que mysql_fetch_array vidait le résultat de mysql_query alors que c'est FAUX ... la variable du résultat de mysql_query reste intacte ! même après un passage dans mysql_fetch_array ...

bonne journée !

Maxi