Afficher un count SQL PHP
Résolu/Fermé
A voir également:
- Php sql count
- Easy php - Télécharger - Divers Web & Internet
- Logiciel sql - Télécharger - Bases de données
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Requête sql date supérieure à ✓ - Forum Programmation
- Sql replace plusieurs valeurs - Forum Programmation
13 réponses
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 25/06/2010 à 13:57
Modifié par Leviathan49 le 25/06/2010 à 13:57
En fait, le problème viens du group by :
- en faisant, MAX(status) cela m'a permit de l'exclure du group by tout en gardant une requete correcte (certain moteur de base de données n'aime pas que les champs d'un select (pas déjà dans un count(), max(), sum(),... ne soit pas dans le group by.
-il t'affiche donc les couples user/responsabilty si un user a plusieurs responsabilty il y aura plusieurs lignes comme l'a dit chuka.
- si tu n'as pas besoin de status, de toute facon il est unique, et responsabilty vire les de ta requete, si tu en as vraiment besoin fait un requête suplementaire
Ta requête deviens donc :
- en faisant, MAX(status) cela m'a permit de l'exclure du group by tout en gardant une requete correcte (certain moteur de base de données n'aime pas que les champs d'un select (pas déjà dans un count(), max(), sum(),... ne soit pas dans le group by.
-il t'affiche donc les couples user/responsabilty si un user a plusieurs responsabilty il y aura plusieurs lignes comme l'a dit chuka.
- si tu n'as pas besoin de status, de toute facon il est unique, et responsabilty vire les de ta requete, si tu en as vraiment besoin fait un requête suplementaire
Ta requête deviens donc :
$sql = "SELECT COUNT(id), request_user FROM service_req WHERE status=2 GROUP BY request_user;"; $req = $pdo -> prepare($sql); $req -> execute(); $res = $req -> fetchall(); foreach($res as $ligne) { list($nb_id, $request_user) = $ligne; echo $nb_id; }
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
25 juin 2010 à 11:03
25 juin 2010 à 11:03
Je te propose soit :
- list($nb_id, $request_user, , ) = $ligne; // pour les colonnes manquantes
- COUNT(id) AS nb_id // ca devrait rien changer mais c'est plus propre ^^
- list($nb_id, $request_user, , ) = $ligne; // pour les colonnes manquantes
- COUNT(id) AS nb_id // ca devrait rien changer mais c'est plus propre ^^
J'ai donc mis dans ma requete :
SELECT COUNT(id) as nb_id...
...
GROUP BY request_user;
et mon code :
foreach ($res as $ligne) {
list($nb_id, $request_user, , ) = $ligne;
$display = utf8_encode($request_user) ." >>> " . utf8_encode($nb_id) ;
echo $display;
}
Peut être que la requête fonctionne, mais AUCUN affichage se fait, il n'y a rien a l'écran... =(
SELECT COUNT(id) as nb_id...
...
GROUP BY request_user;
et mon code :
foreach ($res as $ligne) {
list($nb_id, $request_user, , ) = $ligne;
$display = utf8_encode($request_user) ." >>> " . utf8_encode($nb_id) ;
echo $display;
}
Peut être que la requête fonctionne, mais AUCUN affichage se fait, il n'y a rien a l'écran... =(
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
25 juin 2010 à 11:20
25 juin 2010 à 11:20
Affiche le contenu de $res déjà, on cernera mieux le problème :
$req -> execute(); $res = $req -> fetchall(); print_r($res); foreach($res as $ligne) }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
25 juin 2010 à 11:34
25 juin 2010 à 11:34
Donc ça viens de la requête qui ne renvoie rien... La syntaxe a l'air d'être correcte et elle marche sur une autre base. Je dirais donc que ça viens de là :
$req = $pdo -> prepare($sql);
$req -> execute();
$res = $req -> fetchall();
Ou peut-être de la connexion à la base ...
Mais j'avoue ne pas pouvoir t'aider plus là ^^"
$req = $pdo -> prepare($sql);
$req -> execute();
$res = $req -> fetchall();
Ou peut-être de la connexion à la base ...
Mais j'avoue ne pas pouvoir t'aider plus là ^^"
En fait, un truc assez spécial, finalement quand j'enleve le COUNT et le GROUP BY, ça fonctionne la requete...
Quand je laisse uniquement le GROUP BY Request_user, il me retourne Array(), et quand je laisse uniquement le COUNT pareil, Array()
Donc je suis bloqué, je sais pas comment faire ... =(
Quand je laisse uniquement le GROUP BY Request_user, il me retourne Array(), et quand je laisse uniquement le COUNT pareil, Array()
Donc je suis bloqué, je sais pas comment faire ... =(
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
25 juin 2010 à 11:51
25 juin 2010 à 11:51
Et un group by avec request_user, status, responsibility ?
J'ai juste rajouté le GROUP BY avec les champs du SELECT, et pof, Array() ...
EDIT, attends j'ai quelque chose, prends pas en compte cette réponse ^^ jte tiens au courant tout de suite
EDIT, attends j'ai quelque chose, prends pas en compte cette réponse ^^ jte tiens au courant tout de suite
Bah du coup quand je remets mon COUNT, et que dans mon GROUP BY je mets tous les champs de mon SELECT, j'ai finalement un affichage (je sais pas pourquoi tout a l'heure je n'avais rien, vraiment étrange) Mais le probleme c'est que pour le count, il me trouve 1 partout, normal ?
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
25 juin 2010 à 12:09
25 juin 2010 à 12:09
Essayes :
$sql = "SELECT COUNT(id), request_user, MAX(status), responsibility FROM service_req WHERE status=2 GROUP BY request_user, responsibility;";
Un affichage plus correct est effectué maintenant, sauf que ce que je comprends pas c'est pourquoi plusieurs utilisateurs reviennent en double, et pourquoi je n'ai pas la somme correct provenant de la base, pour un utilisateur j'ai vérifié dans la base, il a 15 request, et là ça m'affiche 1... Strange
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
25 juin 2010 à 13:23
25 juin 2010 à 13:23
Salut,
quelle est la requête exacte que tu fais maintenant?? Celle-ci dessous??
$sql = "SELECT COUNT(id), request_user, MAX(status), responsibility
FROM service_req
WHERE status=2
GROUP BY request_user, responsibility;";
car les double peuvent venir alors d'un user qui a une responsability différente....
quelle est la requête exacte que tu fais maintenant?? Celle-ci dessous??
$sql = "SELECT COUNT(id), request_user, MAX(status), responsibility
FROM service_req
WHERE status=2
GROUP BY request_user, responsibility;";
car les double peuvent venir alors d'un user qui a une responsability différente....