Forum Clubic

Requête sql pour compter un nombre

bonjour

Je ne serai pas comment comment vous expliquez mais je cherche la requête sql pour faire sa s4.noelshack.com… […] mentfaire.jpg je ne code pas beaucoup car j’utilise Dreamweaver.
comment faire comme sur le shema?

merci d’avance

Tu t’es trompé dans le lien. Impossible de voir l’image :confused:

et la

Bonjour

Pour faire court :
SELECT auteur,COUNT(*) FROM TableMessage GROUP BY auteur

je n’y arrive pas
j’ai essayer cette requete SELECT * FROM news, commentaire WHERE news.news_id=‘1’
mais rien ne marche , je ne code pas beaucoup j’utilise dreamweaver

Elle ne marchera jamais cette requête :slight_smile:

Moi, je vois 2 solutions :slight_smile:

  • Apprendre à faire des requêtes (Partie 3)
  • Donner la description des deux tables “news” et “commentaire” pour faire la requête.

table commentaire :
id int(255) NOT NULL AUTO_INCREMENT,
commentaire varchar(255) NOT NULL,
auteur varchar(50) NOT NULL,
news int(255) NOT NULL,
etat tinyint(1) NOT NULL DEFAULT ‘1’,

table des news
news_id int(11) NOT NULL AUTO_INCREMENT,
news_titre varchar(255) NOT NULL,
news_news varchar(255) NOT NULL,
news_auteur varchar(255) NOT NULL,
news_categori int(255) NOT NULL,
etat tinyint(1) NOT NULL DEFAULT ‘1’,
date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
nombre_com int(255) NOT NULL,

c’est juste pour tester pour après quand je vais continuer mon site, je ferai d’autre table mais il me faut la requête pour faire comme sur le schéma.La c’est des table de test

Le nombre de news par auteur :


SELECT news_auteur, count(*) 
FROM news 
GROUP BY news_auteur

Le nombre de commentaire par auteur


SELECT auteur, count(*) 
FROM commentaire 
GROUP BY auteur

non ce n’est pas sa que je veut mais merci
je veut stocker le nombre de commentaire par news dans la colone ‘nombre_com’ de la table news
par exemple :
la news 1 a 5 commentaire
la news 2 a 0 commentaire
la news 3 a 2 commentaire…
si je sais comment faire je pourrait surement faire cela pour les autres tables(que je n’ai pas dis) tous seul

Ah, moi j’étais parti de l’image que tu avais montré :slight_smile:

Donc, c’est un peu plus dur :slight_smile:

UPDATE news
SET nombre_com=(select count(*) 
FROM commentaire 
WHERE news=XXX)
where news_id=XXX

Avec XXX pour l’ID que tu veux mettre à jour

Mais si je veut tous les mettre a jour car je vais pas faire sa pour toutes les news et pourquoi ya deux where + merci de ton aide

Bon, je vais essayer de détaillé ce qui est pas mon fort :slight_smile:

La requête SQL que j’ai fait, je la divise en 2 :
SELECT count(*)
FROM commentaire
WHERE news=XXX
Celle-là va te compter le nombre d’enregistrement dans la table ‘commentaire’ pour la news ‘XXX’

UPDATE news
SET nombre_com=YYY
WHERE news_id=XXX
Celle-là va te mettre à jour la rubrique ‘nombre_com’ du fichier ‘news’ en mettant ‘YYY’ dedans pour la news avec l’ID ‘XXX’

Dans la requête on remplace ‘YYY’ par la première requête (qui sera une sous requête)

Bah, tu fais une boucle qui va executer la requête pour tous les enregistrements de ta table ‘news’.

Donc, sa donnera un truc du style :


$requete = mysql_query("SELECT news_id FROM news") or die(mysql_error());
while ($donnees = mysql_fetch_array($requete ) ) // Pour parcourir toutes les news
{	
  $IdNews=$donnees['news_id']; //On récupère dans une variable pour l'utiliser
  mysql_query("UPDATE news
SET nombre_com=(SELECT count(*) 
FROM commentaire 
WHERE news='$IdNews')
WHERE news_id='$IdNews'");
}

En espérant que la syntaxe est pas trop mauvaise.
Edité le 16/02/2012 à 17:11

j’arrive a rien sa m’énerve :frowning:

j’ai reussi a mettre le nombre de commentaire sur la page mais j’ai pas encore réussi a l’entrer dans la base de donné

j’ai réussi a afficher le nombre de commentaire mais que sur la page ou il y a les commentaires pas sur les autres.
le nombre de commentaire,je n’arrive pas a le faire entrer dans la base de donné.
comment faire pour le faire entrer dedans?

Faut pousser :slight_smile:

Sinon, je voit pas comment t’aider, déjà tout dis dans les postes précédents ><

je n’arrive pas a faire le update pour faire rentrer le nombre dans la base de donné

$colname_Recordset1 = "-1";
if (isset($_GET['news_id'])) {
  $colname_Recordset1 = $_GET['news_id'];
}
mysql_select_db($database_toast_sql, $toast_sql);
mysql_query("UPDATE news SET nombre_com = COUNT(commentaire.commentaire)WHERE news_id = %s", GetSQLValueString($colname_Recordset1, "int"));
$query_Recordset1 = sprintf("SELECT *,COUNT(commentaire.commentaire) FROM news, categori, commentaire WHERE news_id = %s AND news.news_categori=categori.ca_id AND commentaire.news=news.news_id", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $toast_sql) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

le code que j’ai rentrer pour faire le update :

mysql_query("UPDATE news SET nombre_com = COUNT(commentaire.commentaire)WHERE news_id = %s", GetSQLValueString($colname_Recordset1, "int"));

j’ai essayer avec sa

if (isset($_GET['news_id'])) {
	mysql_query('UPDATE news SET nombre_com = COUNT(commentaire.commentaire) WHERE news_id = "'.$_GET['news_id'].'"');
}

mais nombre_com ne prend pas la valeur de COUNT(commentaire.commentaire).
pourquoi?
Edité le 18/02/2012 à 00:07

voici la page
pastebin.com…

Heu, ce n’est pas magique le SQL hein… si tu fais un UPDATE en base, les données que tu as récupérées avant cet UPDATE, resteront telles quelles sauf à ce que 1) tu relance ta requête 2) tu mettes à jour la donnée en PHP.

Par ailleurs, tu peux aussi utiliser des requêtes préparées : www.ultramegatech.com…

Bonjour

COUNT(commentaire.commentaire) n’est pas une variable…

Moi je pense qu tu veux aller trop vite.
Fait un truc plus simple pour mieux comprendre comment sa marche en PHP.
Genre, un formulaire où tu peux ajouter/modifier/supprimer un enregistrement.