[RESOLU] COUNT sql php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] COUNT sql php

Re: COUNT sql php

par cris84 » 29 mars 2014, 14:20

Oui super l'astuce, ça fonctionne, un grand merci.

Je mets le code définitif si cela peut servir à quelqu'un : (avec un while bien sur)

<?php

 $nb_message =  mysql_query ('SELECT COUNT(correspondance_sujet) as nb_message, forum_sujets.id, forum_reponses.correspondance_sujet from forum_reponses INNER JOIN forum_sujets ON forum_sujets.id=forum_reponses.correspondance_sujet group by correspondance_sujet'); 

$nb = mysql_fetch_array($nb_message);

 Nombres de réponse : <?php echo $nb['nb_message']; ?>

Re: COUNT sql php

par xTG » 29 mars 2014, 12:59

Le DISTINCT est mal utilisé. Il compte en fait le nombre distinct de correspondance_sujet.
Tu as deux valeurs différentes dans ta table pour ce champs, cela retourne donc 2.

Il faut dans ton cas utiliser un count(correspondance_sujet) et faire un group by sur correspondance_sujet.
Par contre le résultat de la requête sera uniquement le nombre de réponse (un n-uplet retourné par correspondance_sujet).
Donc si tu souhaitais faire une requête qui fasse tout(comptage et récupération des enregistrements) cela n'est pas possible avec ce que je te propose.

COUNT sql php

par cris84 » 29 mars 2014, 12:21

Bonjour,
je tente de compter le champ correspondance_sujet en fonction de l'ID de forum_sujets (l'id du sujet s'incrémente à chaque sujet dans correspondance_sujet).
J'obtiens avec mon code toujours la même valeur "2" alors que j'ai 5 réponses avec l'id sujet 1 et 2 avec l'id sujet 2

pouvez vous m'aider à comprendre ? un grand merci d'avance :)
<?php $nb_message =  mysql_query ('SELECT COUNT(DISTINCT correspondance_sujet) as nb_message, forum_sujets.id, forum_reponses.correspondance_sujet from forum_reponses INNER JOIN forum_sujets ON forum_sujets.id=forum_reponses.correspondance_sujet'); 
 $nb = mysql_fetch_array($nb_message);
?> Nombres de réponse : <?php echo $nb['nb_message']; ?>
les sql :
CREATE TABLE `forum_reponses` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `auteur` int(11) NOT NULL,
  `message` text COLLATE latin1_general_ci NOT NULL,
  `date_reponse` bigint(25) NOT NULL,
  `correspondance_sujet` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=8 ;

-- 
-- Contenu de la table `forum_reponses`
-- 

INSERT INTO `forum_reponses` VALUES (1, 35, 'test', 1388515022, 1);
INSERT INTO `forum_reponses` VALUES (2, 35, 're-test', 1388515022, 1);
INSERT INTO `forum_reponses` VALUES (3, 1, 'pas mal', 1395939365, 1);
INSERT INTO `forum_reponses` VALUES (4, 1, 'bonne heures?', 1395940890, 1);
INSERT INTO `forum_reponses` VALUES (5, 53, 'ha bon ??', 1395940940, 1);
INSERT INTO `forum_reponses` VALUES (6, 1, 'A vos plumes', 1395994925, 2);
INSERT INTO `forum_reponses` VALUES (7, 1, 'ultimate', 1396008169, 2);
CREATE TABLE `forum_sujets` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `auteur` varchar(30) COLLATE latin1_general_ci NOT NULL,
  `titre` text COLLATE latin1_general_ci NOT NULL,
  `date_derniere_reponse` bigint(25) NOT NULL,
  `date_creation` bigint(25) NOT NULL,
  `compteur` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;

-- 
-- Contenu de la table `forum_sujets`
-- 

INSERT INTO `forum_sujets` VALUES (1, '35', 'Mon espace membre', 1395940940, 1388515022, 60);
INSERT INTO `forum_sujets` VALUES (2, '1', 'deuxième essai', 1396008169, 1395994925, 57);