Compteur commentaire php mysql

Résolu/Fermé
l1738 Messages postés 14 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014 - 13 nov. 2014 à 12:43
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 13 nov. 2014 à 16:52
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 nov. 2014 à 16:48
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 mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014
13 nov. 2014 à 16:50
Super ça marche je doit vraiment apprendre a faire les jointures
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 nov. 2014 à 16:52
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 nov. 2014 à 14:46
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 mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014
13 nov. 2014 à 14:50
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 13/11/2014 à 15:00
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 mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014
13 nov. 2014 à 15:39
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 nov. 2014 à 15:41
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 mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014
13 nov. 2014 à 15:04
ça ne marche pas :/
0
l1738 Messages postés 14 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 13 novembre 2014
13 nov. 2014 à 16:23
ç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