Bonjour,
J'ai un petit problème avec mon site internet.
Je dois afficher à un endroit d'une page une première boucle, mais je dois effectuer cette même boucle à un autre endroit de la page.
<?php
while ($donnees = $result->fetch()) {
}
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut dapibus felis, ut mattis dolor. Phasellus dignissim, ex ut gravida sodales, quam risus feugiat risus, eget tristique leo elit sit amet purus. Aenean pulvinar fringilla ipsum sed iaculis. Aenean eget ultrices justo, ut vehicula augue. Integer nulla enim, accumsan in augue sed, tristique dictum magna. Nam suscipit lacus at molestie eleifend. In vel ipsum vitae neque pretium laoreet non vel est. Sed dictum sollicitudin nulla non tincidunt. Vestibulum orci est, tincidunt et risus non, sagittis elementum turpis.</p>
<?php
while ($donnees = $result->fetch()) {
}
?>
Voilà en gros ce que j'aimerais effectuer. Merci pour vos réponses :)
Ahaaaaa ! Je l'aiiii !
Pour le coup je l'ai essayer chez moi.
Bon il est vrai que je suis moins fan des boucles while, d'ailleurs sur tous mes projets je les utilises très peu.
voici la correction : (en tout cas chez moi ça fonctionne)
$donnees = $reponse->fetchAll();
foreach($donnees as $key => $donnee){
echo '<p><strong>' . htmlspecialchars($donnee['title']) . '</strong></p>';
}
?>
<p>Lorem...</p>
<?php
foreach($donnees as $key => $donnee){
echo '<p><strong>' . htmlspecialchars($donnee['title']) . '</strong></p>';
}
?>
Comme tu peux le voir de fetch je suis passé à fetchAll, puis la boucle j'utilise le foreach. puis les deux boucles sont identiques.
Voilà Mr :)
Bonjour,
Soit vous utilisez une fonction ou vous copiez les données avant de faire le fetch()
$donnees1 = $donnees;
$donnees->fetch();
$donnees1->fetch();
Ca reviendrait donc à faire ceci
Et ca marcherait ?
<?php
$donnees = $donnees1;
while ($donnees = $result->fetch()) {
}
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut dapibus felis, ut mattis dolor. Phasellus dignissim, ex ut gravida sodales, quam risus feugiat risus, eget tristique leo elit sit amet purus. Aenean pulvinar fringilla ipsum sed iaculis. Aenean eget ultrices justo, ut vehicula augue. Integer nulla enim, accumsan in augue sed, tristique dictum magna. Nam suscipit lacus at molestie eleifend. In vel ipsum vitae neque pretium laoreet non vel est. Sed dictum sollicitudin nulla non tincidunt. Vestibulum orci est, tincidunt et risus non, sagittis elementum turpis.</p>
<?php
while ($donnees1 = $result->fetch()) {
}
?>
A essayer.
et c'est $donnees1 = $donnees;
utiliser la balise < /> pour insérer du code, c'est plus lisible
Je viens d'essayer la première boucle s'affiche corréctement, la seconde n'affiche rien.
Désolé pour la balise.
Merci pour vos réponses.
Bonsoir,
C'est normal que la seconde n'affiche rien, puisqu'il faut faire $result1 = $result; et non $donnees1 = $donnees;
Carouge10 : Oui j'affiche la même chose dans les 2 boucles
AlexJM : D'accord je vais essayer merci
Toujours le même problème AlexJM malgrès ta solution :/
Merci pours vos réponses
Salut @ZarKx
Essai ceci =>
$donnees1 = clone $donnees;
while ($donnee = $donnees->fetch()) {
// machin
}
while ($donnee = $donnees1->fetch()) {
// Autre machin
}
Sinon tu peux essayer ceci aussi
$donnees = $donnees->fetchAll();
foreach ($donnees as $donnee)
{
// machin
}
foreach ($donnees as $donnee)
{
// Autre machin
}
Essai ceci =>
$donnees = $donnees->fetchAll();
foreach ($donnees as $donnee)
{
// machin
}
foreach ($donnees as $donnee)
{
// Autre machin
}
Lol essai ceci =>
$donnees1 = array();
while ($donnee = $donnees->fetch()) {
// machin
$donnees1[] = $donnee;
}
foreach ($donnees1 as $donnee)
{
// Autre machin
}
Ca fait maintenant quelques jours que je bloque sur ce problème :/
Merci en tout cas pour ton aide ;)
je vais essayer quelque chose mais pour t'aider au mieux, je peux avoir le code de la boucle (si ce n'est pas indiscret).
Je n'ai pas grand chose de plus à te donner de plus, que ce que j'ai déjà donné dans mon premier post si ce n'est la requête, que veux-tu de plus ?
Essai de mettre :
$req->closeCursor();
à la fin de ta première boucle, pour qu'ensuite tu puisses rappeler ta même requête pour ta seconde boucle.
(A voir)
Je viens d'essayer ta solution je n'ai pas d'erreurs qui s'affichent, la première boucle s'affiche correctement mais la seconde ne retourne aucuns résultats... :/
Voilà ce que j'ai modifié :
<?php
while ($donnees = $result->fetch()) {
} $result->closeCursor(); ?>
<p>Lorem ipsum</p>
<?php
while ($donnees = $result->fetch()) {
}
?>
Merci pour ta réponse ;)
Outch j'ai été con ! forcément si on met une fermeture de requête ta deuxième boucle reçoit aucune valeur.
as-tu essayé ça:
<?php
while ($donnees1 = $result->fetch()) {
echo $donnees1->titre;
}
<p>Lorem ipsum</p>
<?php
while ($donnees2 = $result->fetch()) {
echo $donnees2->titre;
}
?>
Même résultat qu'avant, la première boucle s'affiche correctement, la seconde ne s'affiche pas :/
Je dois probablement mal m'y prendre mais avec le code que tu as modifié, je l'ai donc adapté.
Mais seul la première lignes apparait
Je n'ai pas vraiment l'impression que la boucle s'opère :/
Salut encore moi,
Essai ceci =>
$donnees = $reponse->fetchAll();
$donnees1 = array();
foreach($donnees as $key => $donnee){
echo '<p><strong>' . htmlspecialchars($donnee['title']) . '</strong></p>';
$donnees1[] = $donnee;
}
?>
<p>Lorem...</p>
<?php
foreach($donnees1 as $key => $donnee){
echo '<p><strong>' . htmlspecialchars($donnee['title']) . '</strong></p>';
}
?>