Compté le nombre de commentaire.
Résolu
flo39400
Messages postés
659
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
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.
J'ai tester si sa me récupéré bien mon id_article via getid et oui ça fonctionne très bien.
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.
1 réponse
-
Bonjour,
Comme indiqué dans le manuel PHP (https://www.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.
-
Re,
J'ai tester ça:
$totalcommentaireReq = $bdd->query("SELECT COUNT(*) FROM commentaires WHERE id_article = '.$getid.'"); $totalcommentaire = $totalcommentaireReq->fetchColumn();
Aucun changement, peu être attendre dans le serveur ce réveil car parfois il est long pour prendre en compte les modifications.
Puis j'ai essayer ça aussi:
$totalcommentaireReq = $bdd->query("SELECT COUNT(id) FROM commentaires WHERE id_article = '.$getid.'"); $totalcommentaire = $totalcommentaireReq->fetchColumn();
Et la aussi valeur 0 a la fin :/ -
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;
-
Je te conseille vivement d'activer également la gestion des erreurs PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs -
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. -
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.
-