Compteur commentaire php mysql

Résolu
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours
j'ai un gros soucie voilà je cherche sur google et openclassroom
Je vous explique mon problème j'ai crée une liste de tâche avec un système de commentaire et mon problème c'est que j'arrive pas a trouver comment compter les commentaire car les commentaire et les tâches sont dans deux tables
l'image c'est la table des commentaires


Voila quand on rentre un commentaire ça enregistre id de la tâche maintenant j'aimerais compter le nombre de commentaire qui as l'id n°3
par exemple
et que ça apparais dans ma page d'accueil
et que ça marque La tâche 2 a X commentaire

pour vous aidez je voir mon problème voici ma page d'accueil


<?php
// Connexion à la base de données
try
{
	$bdd = new PDO('mysql:host=***;dbname=*****', '******', '********');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

// On récupère les 5 derniers billets
$req = $bdd->query('SELECT id, titre, contenu, action, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets WHERE visible =0 OR visible=2 ORDER BY visible DESC');

while ($donnees = $req->fetch())
{
?>
<div class="news">
    <h3>
        <?php echo htmlspecialchars($donnees['titre']); ?>
        <em>le <?php echo $donnees['date_creation_fr']; ?></em>
    compte rendu <?php echo $donnees['action']; ?></em> tâche N°<?php echo $donnees['id']; ?>
	</h3>
    
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['contenu']));
    ?>
    <br />
    <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    	<a href="gest_dedi2.php?action=nn&id=<?php echo $donnees['id']; ?>">NON FAIS</a> </FONT> /
		<a href="gest_dedi2.php?action=ok&id=<?php echo $donnees['id']; ?>">TERMINER</a> /
		<a href="gest_dedi2.php?action=repor&id=<?php echo $donnees['id']; ?>">REPORTER</a>
	
	</p>
</div>
<?php
} // Fin de la boucle des billets
$req->closeCursor();
?>


Merci à tous de votre aide
bonne soirée / journée
A voir également:

6 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Essaye plutôt cette requête, elle devrait te retourner le nombre exact de commentaires pour chaque billet :
$req = $bdd->query('SELECT b.id, b.titre, b.contenu, b.action, DATE_FORMAT(b.date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr, (SELECT count(*) FROM commentaires c WHERE c.id_billet = b.id) AS nbCommentaires 
FROM billets b 
WHERE visible =0 OR visible=2 ORDER BY visible DESC');
1
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Super ça marche je doit vraiment apprendre a faire les jointures
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Pour cette requête on utilise une sous-requête (SELECT dans le SELECT), mais oui les jointures te seront utiles dans d'autres cas ;)
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Une solution possible avec une jointure :
$req = $bdd->query('SELECT b.id, b.titre, b.contenu, b.action, DATE_FORMAT(b.date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr, count(c.id) AS nbCommentaires 
FROM billets b LEFT JOIN commentaires c ON b.id = c.id_billet 
WHERE visible =0 OR visible=2 ORDER BY visible DESC');


Bonne journée
0
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ok
je comprend pas toutes la requête :S

par contre comment faire apparaître le résultat du calcule
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Si tu veux comprendre la requête, tu dois connaitres :
- les jointures : http://www.epershand.net/developpement/mysql-bdd/comprendre-jointures-inner-left-right-join-mysql
- la fonction count() : http://www.w3schools.com/sql/sql_func_count.asp

L'affichage du nombre de commentaires se fait comme pour les autres champs :
<?php echo $donnees['nbCommentaires']; ?>

L'alias 'nbCommentaires' peut être modifié dans la requête : count(c.id) AS nbCommentaires
0
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
il me donne 4 qui est le nombre total des commentaire enregistré dans la base de donnée or normalement il devrais me donnée 2
le nombre de commentaire de cette article
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Ta requête ne contient pas de condition sur le billet, tu récupères donc tous les billets.
Si tu veux uniquement le billet 2, tu dois ajouter dans la clause where :
AND b.id = 2
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ça ne marche pas :/
0
l1738 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche toujours pas le système que j'ai utiliser de base c'est ça
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/915379-tp-un-blog-avec-des-commentaires

et comme tu verra en dessous de chaque article on voir un commentaire et j'aimerais mettre

Article N°1
il y a X commentaire
Article N°2
il y a X commentaire
0