Page 1 sur 1

Foreach imbriqué

Posté : 26 oct. 2012, 12:47
par ekodario
Bonjour,

J'ai une petit soucis avec mon code, j'ai beau cherché je ne trouve pas... Alors voilà le premier passage ce fait bien (h2 + li présent) mais lors du deuxième passage le second foreach est "oublié" j'ai l'impression (j'ai bien mes titre en h2 mais pas les li alors que le contenu est bien présent dans ma base)... :/
<?php 
	$id=0;
	echo"<ul id=\"imageEvent\">";
	foreach ($reqTitleEvent as $row){
		echo "<h2 style=\"text-align:left;\">".$row['titre']."</h2>";
		foreach ($reqEventAll2 as $row2){		
			if($row['titre']==$row2['titre']){
				$id++;
				$row2['titre']=nl2br(htmlspecialchars(stripslashes($row2['titre'])));
				$row2['commentaire']=nl2br(htmlspecialchars(stripslashes($row2['commentaire'])));
				echo"<li><span class=\"titreImage\">".$row2['titre']."</span>";
				echo"<span class=\"commentaireImage\">".$row2['commentaire']."</span>";
				echo"<img src=".$row2['image']." alt=\"\"></li>";
			}
			else continue;
		}
						
	}
	echo"</ul>";
?>
Avez vous des idées? Merci d'avance!

Re: Foreach imbriqué

Posté : 26 oct. 2012, 12:52
par xTG
Un h2 dans un ul déjà pas très joli. ;)

As-tu regardé le code source généré ?
As-tu vérifié le contenu de tes variables que tu appliques au foreach ?

Re: Foreach imbriqué

Posté : 26 oct. 2012, 13:04
par ekodario
Oui je sais que ce n'est pas très beau mais pour le moment je veux un truc qui marche et ensuite je retouche ^_^... Sinon justement le code source est générer une première fois mais après il ne génère plus (sauf les h2) :/... Sinon le contenu est bon car ça marche pour un premier tour, non ?

voilà le code générer :
Image

Re: Foreach imbriqué

Posté : 26 oct. 2012, 18:47
par xTG
Et le contenu de $reqEventAll2 il dit quoi ?
Aussi je ne comprends pas trop ce double foreach, ces données viennent d'une table non ? Pourquoi ne pas faire un order by et utiliser un flag de changement de titre ?

Re: Foreach imbriqué

Posté : 26 oct. 2012, 20:10
par sirakawa
Comme dit
Et le contenu de $reqEventAll2 il dit quoi ?
Aussi je ne comprends pas trop ce double foreach, ces données viennent d'une table non ? Pourquoi ne pas faire un order by et utiliser un flag de changement de titre ?
EN AJOUTANT
<?php
        $id=0;
        echo"<ul id=\"imageEvent\">";
print_r($reqTitleEvent);
//et
print_r($reqEventAll2);
        foreach ($reqTitleEvent as $row){
                echo "<h2 style=\"text-align:left;\">".$row['titre']."</h2>";
                foreach ($reqEventAll2 as $row2){              
                        if($row['titre']==$row2['titre']){
                                $id++;
                                $row2['titre']=nl2br(htmlspecialchars(stripslashes($row2['titre'])));
                                $row2['commentaire']=nl2br(htmlspecialchars(stripslashes($row2['commentaire'])));
                                echo"<li><span class=\"titreImage\">".$row2['titre']."</span>";
                                echo"<span class=\"commentaireImage\">".$row2['commentaire']."</span>";
                                echo"<img src=".$row2['image']." alt=\"\"></li>";
                        }
                        else continue;
                }
                                               
        }
        echo"</ul>";
?>
en postant le résultat et en m'expliquant à quoi servent $id=0; et $id++;