Système de commentaires

Fermé
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 - Modifié par MastercroW le 29/12/2010 à 01:56
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 - 31 déc. 2010 à 12:45
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 318 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 28 mars 2012 31
29 déc. 2010 à 08:43
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 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
29 déc. 2010 à 15:31
Toujours pareil mais c'est le whyle qui faut changé mais je sais pas en quoi !!
0
Eastchild Messages postés 318 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 28 mars 2012 31
30 déc. 2010 à 13:44
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 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
29 déc. 2010 à 15:44
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 jeudi 12 avril 2007 Statut Membre Dernière intervention 29 décembre 2010 2
29 déc. 2010 à 18:22
<?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 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
29 déc. 2010 à 20:37
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 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 déc. 2010 à 02:28
Personnes pouvant m'aidé ?
0

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

Posez votre question
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 déc. 2010 à 11:33
UP s'il vous plait
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 déc. 2010 à 15:27
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 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 déc. 2010 à 20:07
P'tit up please =D
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
31 déc. 2010 à 12:45
up
0