Foreach imbriqué

Petit nouveau ! | 2 Messages

26 oct. 2012, 12:47

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!

ViPHP
xTG
ViPHP | 7331 Messages

26 oct. 2012, 12:52

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 ?

Petit nouveau ! | 2 Messages

26 oct. 2012, 13:04

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

ViPHP
xTG
ViPHP | 7331 Messages

26 oct. 2012, 18:47

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 ?

Mammouth du PHP | 2278 Messages

26 oct. 2012, 20:10

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++;
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD