8800 sujets

Développement web côté serveur, CMS

Salut à tous,
Je croyais y arriver seul mais j'aurais besoin de votre aide pour compter (et afficher) le nombre de commentaires déposés.

Je m'explique, sur une page s'affiche une liste d'articles avec la possibilité de lire les commentaires propres à chaque article et je souhaite faire apparaitre le nombre de commentaires déposés par article.
Sachant que j'ai 2 tables : 1 pour les commentaires (commentaires), l'autre pour les articles (billets).
Or, invariablement, ne s'affiche que le nombre total de commentaires et non pas le nombre de commentaire par articles.

Je croyais y arriver avec cette fonction mais cela ne fonctionne pas :

$reponse = $bdd->query('SELECT COUNT(*) AS auteur FROM billets, commentaires WHERE billets.id=commentaires.id_billet');


Merci d'avance.
Bye bye.
Zed
Modifié par Zed1 (31 Aug 2011 - 03:23)
Salut je crois que tu te compliques la tâche sur ta requête. Pour récupérer le nombre de commentaire lié à un article, tu dois simplement demander à ta table 'commentaire' combien de fois elle trouve l'id de l'article voulu.

exemple :

$reponse = $bdd->query('SELECT COUNT(*) FROM  commentaires WHERE commentaires_id_billet = billets_id');
Salut, le problème vient du fait qu'à aucun moment dans ta requête tu ne précises l'id de l'article. Il faut donc le récupérer sur la page avant de pouvoir lancer la requête.

SELECT COUNT(*) AS auteur FROM billets, commentaires WHERE billets.id=commentaires.id_billet [b]AND billets.id='id_de_larticle_choisi'[/b]
GROUP BY.

SELECT b.* COUNT(c.*) AS nbComs FROM `billets` b LEFT JOIN `commentaires` c ON b.`id`=c.`id_billet` GROUP BY c.`id_billet`


"Sélectionne les données du billet, ainsi que le nombre de commentaires, pour les billets et les commentaires dont id_billet sont identiques à id de billet, groupé par id_billet (donc par billet).
Modifié par Lpu8er (31 Aug 2011 - 16:10)
Effectivement Lpu8er, s'il veut afficher le nombre de comm pour chaque article, c'est bien group by. Je lirai mieux la prochaine fois Smiley lol