Menu

Compté le nombre de commentaire. [Résolu/Fermé]

flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 Dernière intervention - 19 oct. 2016 à 14:26 - Dernière réponse : jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention
- 19 oct. 2016 à 15:10
Bonjour,

Voila j'aimerai pouvoir compté le nombre de commentaire par rapport a id_article qui ce trouve dans la table commentaires.
Le problème sais que la valeur affiche 0 a la fin je sais pas vraiment pourquoi...

Merci a vous.


<?php
$getid = htmlspecialchars($_GET['id']);
$totalcommentaireReq = $bdd->query("SELECT id FROM commentaires WHERE id_article = '.$getid.'");
 $totalcommentaire = $totalcommentaireReq->rowCount();

echo $totalcommentaire ;
echo "<br>";
echo $getid ;
?>


J'ai tester si sa me récupéré bien mon id_article via getid et oui ça fonctionne très bien.

Afficher la suite 

7 réponses

jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 oct. 2016 à 14:28
+1
Utile
6
Bonjour,

Comme indiqué dans le manuel PHP (http://php.net/manual/fr/pdostatement.rowcount.php) ....

il ne faut pas utiliser rowCount


Pour la plupart des bases de données, PDOStatement::rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT. À la place, utilisez PDO::query() pour faire une requête SELECT COUNT(*), puis utilisez PDOStatement::fetchColumn() pour récupérer le nombre de lignes retournées. Votre application peut ainsi effectuer la bonne action.



Cette réponse vous a-t-elle aidé ?  
jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 oct. 2016 à 14:44
Regardes ta requête ... elle est fausse :

Remplaces par :
$sql = "SELECT COUNT(id) FROM commentaires WHERE id_article = '".$getid."'";
$bdd->query($sql);

ou par :
$sql = "SELECT COUNT(id) FROM commentaires WHERE id_article = '$getid'";
$bdd->query($sql);


Pour ce qui est de la récup de l'ID .. procède ainsi :
$getid = !empty($_GET['id']) ? $_GET['id'] : 0;
flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 Dernière intervention > jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 oct. 2016 à 15:05
Merci donc j'ai modifier ça fonctionne mais pouvez vous me dire quel est la différence entre ça:

$bdd->query("SELECT COUNT(*) FROM commentaires WHERE id_article = '$getid'");


Et ça:

$sql = "SELECT COUNT(id) FROM commentaires WHERE id_article = '$getid'";
$bdd->query($sql);


Dans celle-ci on met la requête dans une variable puis on exécute via query

Et l'autre on exécute directement la requête.

Si j'ai bien compris.
jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention > flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 Dernière intervention - 19 oct. 2016 à 15:10
C'est juste plus propre
jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 oct. 2016 à 14:44
Je te conseille vivement d'activer également la gestion des erreurs PDO :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 Dernière intervention - 19 oct. 2016 à 14:55
euh je viens d'essayer l'activation des erreurs PDO et ça fait peur, déjà pu de site une erreur directe je me dit sais pas étonnant vu que je fait beaucoup d'erreur d’inattention dans le code .

Donc je solutionne ce problème puis je vais activé les erreurs PDO mais la encore j'ai beaucoup de boulot vu que j'ai tous mis dans des fichiers différant.