Système de commentaires

MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -  
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
Alors voilà, j'ai créer un système de commentaires, mais il ne reste plus qu'a compté combien de commentaires il y a et je suis bloqué.
<?php    
include ('includes/connexion.php');     
      
  $requete = mysql_query ("SELECT * FROM commentaires");    
while($donnees = mysql_fetch_array($requete))    
{    
 echo'<a href="commentaires.php?id_news='.$donnees['id'].'">';    
  // On récupère l'id de la news    
  $id = $donnees['id'];    
  // Connexion à la BDD    
  $connect = mysql_connect('localhost', 'root', '');    
  mysql_select_db('others');    
       
  // On fait une requête pour compter le nbre de commentaires de la news correspondant à l'id    
  $comm = mysql_query("SELECT COUNT(*) AS nbre_comm FROM commentaires WHERE id_news='" . $id ."'");    
  $retour = mysql_fetch_array($comm);    
  $nbre_comm = $retour['nbre_comm'];    
      
  // Déconnexion    
  mysql_close($connect);    
  // On affiche le nombre de commentaires retourné par la requête    
  echo $nbre_comm;    
}    
?>            
</a>


Cela m'affiche 4 0 0 0 ==> 4 commentaires en base de donnée, si j'en rajouté un sa fait 5 0 0 0 etc ... Alors je voudrais à la place de 4 0 0 0 sa donne 4 commentaires,
PS : les 0 ne sont pas les même liens ( commentaires.php?id_news=2, commentaires.php?id_news=3, commentaires.php?id_news=4)
Je penses c'est parce que while($donnees = mysql_fetch_array($requete)) est en array
Que mettre à la place ?

Merci d'avance

6 réponses

Eastchild Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   31
 
Bonjour,

Essaye en mettant :

 $comm = mysql_query("SELECT COUNT(id_news) AS nbre_comm FROM commentaires WHERE id_news='" . $id ."'");


0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Toujours pareil mais c'est le whyle qui faut changé mais je sais pas en quoi !!
0
Eastchild Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   31
 
Non, pas besoin de changer le while, je pense savoir pourquoi ça ne va pas, c'est pas un count(id_news) qu'il faut faire mais :

 $comm = mysql_query("SELECT COUNT(id) AS nbre_comm FROM commentaires WHERE id_news='" . $id ."'");


Puisque tu veux le nombre de commentaire si j'ai bien compris ta demande. Si j'ai faux, hésite pas à me le dire ;-)
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Si vous ne voulez pas reprendre mon codage, je vous donne ce qu'il faut :

Compté le nombre de commentaires(id) par news (id_news).
0
sonia37 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   2
 
<?php    
include ('includes/connexion.php');     
      
  $requete = mysql_query ("SELECT [[id_news]] FROM commentaires"); 
while($donnees = mysql_fetch_array($requete))    
{    
 echo'<a href="commentaires.php?id_news='.$donnees['id'].'">';    
  // On récupère l'id de la news    
  $id = $donnees['id'];    
  // Connexion à la BDD    
  $connect = mysql_connect('localhost', 'root', '');    
  mysql_select_db('others');    
       
  // On fait une requête pour compter le nbre de commentaires de la news correspondant à l'id    
  $comm = mysql_query("SELECT COUNT([[ID des commentaires]]) AS nbre_comm FROM commentaires WHERE id_news='" . $id ."'");    
  $retour = mysql_fetch_array($comm);    
  $nbre_comm = $retour['nbre_comm'];    
      
  // Déconnexion    
  mysql_close($connect);    
  // On affiche le nombre de commentaires retourné par la requête    
  echo $nbre_comm;    
}    
?>            

Petite remarque en passant, il n'est pas recommandé d'utiliser l'étoile dans les requête MySQL, c'est une question d'optimisation, il faut plutôt sélectionner tous les champs dont on a besoin.

Pour ce qui est de ton problème, je crois que l'erreur est dans la première requête où tu sélectionnes tout depuis la table commentaires. Donc, tu sélectionne tous tes commentaires et non les id_news que tu veux mettre dans le lien.

Peut être que je me trompe, mais il est difficile de répondre sans une idée claire de la structure de la base de données.
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Bonsoir Sonia, voilà mon erreur : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given on line 5 : while($donnees = mysql_fetch_array($requete))
De plus j'ajoute les 2 tables :
CREATE TABLE 'news' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'titre' varchar(255) DEFAULT NULL,
  'auteur' varchar(255) DEFAULT NULL,
  'premier' varchar(125) DEFAULT NULL,
  'texte' varchar(1500) DEFAULT NULL,
  'jours' text,
  'numero' text,
  'mois' text,
  'annee' text,
  UNIQUE KEY 'id' ('id')
) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1


CREATE TABLE 'commentaires' (
  'id' int(5) NOT NULL AUTO_INCREMENT,
  'id_news' int(5) NOT NULL,
  'auteur' varchar(50) NOT NULL,
  'commentaire' varchar(100) NOT NULL,
  'email' varchar(100) NOT NULL,
  'jours' text,
  'numero' text,
  'mois' text,
  'annee' text,
  PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Personnes pouvant m'aidé ?
0

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

Posez votre question
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
UP s'il vous plait
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Eastchild, tout d'abord mais de ta réponse, mais sa ne marche pas =$ Ensuite peux tu écrire en bas du message s'il te plait ^^
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
P'tit up please =D
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
up
0