Php Afficher une boucle dans une autre

Résolu/Fermé
kabybot Messages postés 4 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 25 avril 2012 - 2 août 2011 à 00:34
kabybot Messages postés 4 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 25 avril 2012 - 2 août 2011 à 16:46
Bonjour,

bonjour
j'essaye de puis une semaine d'afficher une boucle a l'intérieur d'une autre boucle mais hélas je ne parviens pas , j'expose donc mon problème ici

j'ai deux table sql :
une pour le statut de l'utilisateur
et l'autre pour les commentaires de ce statut

j'aimerai les afficher
pour celle qui contiens les statuts je l'affiche normal aucun problème , par-contre mon problème est dans la deuxième boucle quand j'essaye d'afficher les commentaires lié au statut ( table statut) , la j'obtiens qu'un seul commentaire hor yen a 2 dans la table,
je précise que le code html et php sont dans deux pages différentes ( templat )
voici mon code php
		if ($g['options']['videogallery'] == "Y" and $html->blockexists("statut"))
		{
			DB::query("SELECT * FROM blog_msg ORDER BY id DESC LIMIT 10");	
			while ($statut = DB::fetch_row())
			{ 
				$html->setvar("s_user_id", $statut['user_id']);
				$html->setvar("s_dt", $statut['dt']);
				$html->setvar("s_subject", $statut['subject']);
				$html->setvar("s_msg", $statut['msg']);
				
// debut de ma 2eme boucle			
                     DB::query("SELECT * FROM blog_comment WHERE msg_id=" . $statut['id'] . " ORDER BY id DESC LIMIT 10", 2);
                     $comment = DB::fetch_row(2);				
			        if($comment['msg_id'] == $statut['id'])
                    {
				             while ($comment = DB::fetch_row(2))
				             {										
				             $html->setvar("c_comment", $comment['comment']);
		                     $html->parse("statut_comment", true);		
				             }
			        }
			        else $html->setblockvar("statut_comment", "");
// fin de ma 2 eme boucle 
								
				$html->parse("statut_item", true);
            }
			$html->parse("statut", true);
		}

et voici mon code html
<!-- begin_statut -->
<ul id="index-personal-stat" style="clear:both;">		
<!-- begin_statut_item -->
<div style="padding:5px; border:1px solid #E0E0E0; margin:2px">
<b>Statut :</b> {s_subject}<br>
</div>
<!-- begin_statut_comment -->
<div style="padding:5px; border:1px solid #E0E0E0; margin:2px 2px 2px 50px;background:#efefef;">
 {c_comment}
</div>
<!-- end_statut_comment -->
<br>
<!-- end_statut_item -->
</ul>
<!-- end_statut -->


le code tel qu'il est affiche les statuts correctement mais pour les commentaire il affiche que le premier et c'est la le problème j'aimerai qu'il affiche tout les commentaire lié au statut
voici mon site en construction la page concerné est l'accueil du site index.php:
http://idurar.fr/index.php
merci pour votre aide

A voir également:

2 réponses

naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
2 août 2011 à 03:31
fetch_row ne récupère qu'une ligne .

essaye de remplacer DB::fetch_row par DB::fetch_array , mais il faudrait que cette méthode existe dans la classe DB pour que ça marche .
0
kabybot Messages postés 4 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 25 avril 2012
2 août 2011 à 16:46
bonjour,
j'ai essayer avec un tableau mais le résultat est toujours le même , la boucle ne fonction pas elle m'affiche que le dernier commentaire , par-contre quand je supprime la condition (le if) la il m'affiche bien tous les commentaires mais hélas il répète les commentaires sur tout les statuts même sur les statut qui n'ont pas de commentaire , donc la boucle fonction il reste a rajouter un if quelques part pour afficher que les commentaire lié
voici le code sans le if
		if ($g['options']['videogallery'] == "Y" and $html->blockexists("statut"))
		{
			DB::query("SELECT * FROM blog_msg ORDER BY id DESC LIMIT 10");

			while ($statut = DB::fetch_row())
			{ 
				$html->setvar("s_user_id", $statut['user_id']);
				$html->setvar("s_dt", $statut['dt']);
				$html->setvar("s_subject", $statut['subject']);
				$html->setvar("s_msg", $statut['msg']);
				
// debut de ma 2eme boucle			
                    $retour = mysql_query("SELECT * FROM blog_comment WHERE msg_id=" . $statut['id'] . " ORDER BY id DESC LIMIT 10");				
				     while ($comment = mysql_fetch_array($retour))
				    {
				             $html->setvar("c_comment", $comment['comment']);
		                     $html->parse("statut_comment", true);						 
					}		
 //fin de ma 2 eme boucle 
							
				$html->parse("statut_item", true);
           }
			$html->parse("statut", true);
		}
0