Compté le nombre de commentaire.

Résolu
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38483 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.


<?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.

A voir également:

1 réponse

jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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.



1
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   21
 
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 :/
0
jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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;
0
jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Je te conseille vivement d'activer également la gestion des erreurs PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
0
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   21
 
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.
0
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   21 > jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention  
 
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.
0