[RESOLU] Problème avec rowCount(). il m'affiche toujours '1'

Avatar du membre
Eléphant du PHP | 88 Messages

11 mai 2015, 21:03

Bonjour,
je viens vous demander un peu d'aide SVP, car j'essaye d'apprendre à me servir de rowCount();, et je n'arrive pas à le faire fonctionner.
Par exemple, quand je déplace mes articles (de brouillon) jusqu'à publié, je souhaiterai que dans le message de confirmation que ça m'affiche: "nombre" Article(s) ont été déplacé(s) dans les articles publié(s) !

Mais le problème, avec mon code actuelle, ça m'affiche toujours:
"1" Article(s) ont été déplacé(s) dans les articles publié(s) !
$count m'affiche toujours 1, alors que je déplace plusieurs article...

Voici mon code;

Code : Tout sélectionner

if($statut == 0) { // si déplacer dans publier foreach($id_articles as $id) { // parcourir table id_articles -> 1 élément à la fois $requete_UP = $db->prepare("UPDATE articles SET statut = :statut WHERE id = :id"); $requete_UP->bindValue(':statut', $statut, PDO::PARAM_INT); $requete_UP->bindValue(':id', $id, PDO::PARAM_INT); if($requete_UP->execute()) { $count = $requete_UP->rowCount(); $_SESSION['info'] = '<p class="article-info-depl-publ">'.$count.' Article(s) publié(s) !</p>'; header('Location: '.$_SESSION['url_article']); } else { $_SESSION['info'] = '<p class="rouge bold">Une erreur s\'est produite.</p>'; header('Location: '.$_SESSION['url_article']); } $requete_UP->closeCursor(); } }
Y a t-il une solution SPV?

Merci

Mammouth du PHP | 688 Messages

11 mai 2015, 21:26

tu mets un header() dans une boucle, donc cela sort de ta boucle et cela ne mets à jour que le 1er enregistrement.

Avatar du membre
Eléphant du PHP | 88 Messages

11 mai 2015, 21:46

ok merci.
j'ai essayé d'enlever le header(), ça ne change rien.
j'ai toujours le même problème.
Merci

Mammouth du PHP | 688 Messages

11 mai 2015, 22:10

normal, à chaque passage dans la boucle, tu mets à jour $_SESSION['info'] avec une valeur à 1.
il faut dans la boucle incrémenter une variable, et après la boucle mettre à jour $_SESSION['info'] et header();

Avatar du membre
Eléphant du PHP | 88 Messages

11 mai 2015, 23:27

OK merci.
du coup j'ai écouté ton conseil en incrémentant en variable.
et effectivement ça fonctionne, même pas besoin d'utiliser rowCount().

Code : Tout sélectionner

if($statut == 0) { // si déplacer dans publier $i = 0; // pour echo nb art déplacé foreach($id_articles as $id) { // parcourir table id_articles -> 1 élément à la fois $requete_UP = $db->prepare("UPDATE articles SET statut = :statut WHERE id = :id"); $requete_UP->bindValue(':statut', $statut, PDO::PARAM_INT); $requete_UP->bindValue(':id', $id, PDO::PARAM_INT); $requete_UP->execute(); $i++; $requete_UP->closeCursor(); } // END foreach $_SESSION['info'] = '<p class="article-info-depl-publ">'.$i.' Article(s) publié(s) !</p>'; header('Location: '.$_SESSION['url-article']); }
merci