Count en sql dans du php [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
18 février 2009
-
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
-
Bonjour,

j'ai un petit soucis, j'aimerai faire un count dans ma requete sql mais ca ne fonctionne pas???!!!

$resultatcount=mysql_query("SELECT COUNT (DISTINCT NUMTEI)
FROM ENTITE, SERVICE, POSSEDER, MODELE, TYPE
WHERE ENTITE.NUMENTITE=SERVICE.NUMENTITE
AND SERVICE.NUMSERVICE=POSSEDER.NUMSERVICE
AND POSSEDER.NUMMODELE=MODELE.NUMMODELE
AND MODELE.NUMTYPE = TYPE.NUMTYPE
AND ENTITE.NUMENTITE".$numentite."")

je vois pas pourquoi ???

aidez moi

3 réponses

Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
209
Bonjour,

Pourrais-tu être plus explicite quand tu dis "ça ne fonctionne pas" ?

Je remarque déjà une erreur sur la dernière ligne où il manque l'opérateur d'égalité :

... AND ENTITE.NUMENTITE = ".$numentite);

Un conseil : utilise des simples apostrophes au lieu de guillemets pour améliorer les performances.
Messages postés
13
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
18 février 2009

j'essaye de faire une requête simple pour voir ou est l'erreur.

Avec cette requête ca ne fonctionne pas, ca me renvoi requête non exécutée2
je ne vois pas comment mettre le code pour que le count fonctionne.

Sachant qu'en définitive, cette requête a un critère qui est choisi dans uneliste déroulante. Mais bon pour l'instant, j'essaye de faire simple et après je verai pour rajouter mon critère.

$resultatcount1=mysql_query("SELECT COUNT (NUMTEI) AS NB
FROM MODELE
GROUP BY NUMTEI")
or die ("Requête non executée2.");
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
209
La clause group by n'est utile que pour les champs sélectionnés en dehors d'une fonction d'agrégation lorsqu'une fonction d'agrégation est utilisée (count est une fonction d'agrégation). Dans ton cas, tu ne dois pas l'utiliser puisque tu ne récupères que ça.

A part ça il n'y a aucune raison pour que la requête ne fonctionne pas, elle est correcte. Dans le doute, tente un "count(*)" au lieu de préciser le nom du champ NUMTEI.
Messages postés
13
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
18 février 2009

j'ai essayé mais ca ne fonctionne toujours pas!!! snif!!
alors j'ai mis un peu plus de code pour essayer de voir si ce n'est pas ce que j'ai au dessus qui n'est pas compatible!

avant de rajouter cette requete de count, ca fonctionnait très bien donc jesais que le reste du code est bon,mais avec cette fonction peut etre qu'il faut que je change quelque chose!


if (ISSET($_POST['numentite']))
{
/* rajouter le nombre de pc, le nombre vérifié, la différence */
echo 'Liste du matériel pris en compte par '.$_POST['entite'];
echo '<br><br><table border="0">';
$numservice=$_POST['numentite'];
$resultatcount1=mysql_query("SELECT COUNT (*)
FROM MODELE")
or die ("Requête non executée2.");
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
209
Salut :-) Ne pleure paaaaas.

Tu as bien essayé avec un exemple simple qui ne peut pas échouer, mais as-tu essayé avec une autre requête encore plus simple que ça ? Parce que si ça ne fonctionne avec aucune requête, ça veut peut-être dire que la connexion à la base de données n'a pas été établie juste avant puisque tu ne précises aucune connexion dans la fonction mysql_query. Tu as probablement modifié quelque chose de plus important plus haut dans ton code.

Si c'est vraiment une erreur de syntaxe (ou autre) retournée depuis le serveur MySQL, tu peux la connaître via la fonction suivante : mysql_error().

Donc fais plutôt "or die(mysql_error())" au lieu de or die("requête non exécutée 2")... le message d'erreurs sera plus explicite.