Php Afficher une boucle dans une autre [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
25 avril 2012
-
Messages postés
4
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
25 avril 2012
-
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

2 réponses

Messages postés
865
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
20 décembre 2012
180
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 .
Messages postés
4
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
25 avril 2012

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);
		}