Page 1 sur 2
Nombre d'élement
Posté : 19 févr. 2007, 17:13
par Dexion
Bonjour,
J'aurais besoin d'aide pour une méthode ou si il existe une fonction qui me permettrai d'afficher le nombre d'élément dans une table.
J'ai une table
membres avec différents champ dont un qui s'appel
FU, dans ce champ on peux trouver comme renseignement soit FU1, FU2 ou FU3, et j'aimerais donc récupérer le nombre de FU1 de FU2 et de FU3 dans une variable.
J'ai essayer de faire :
Si quelqu'un aurais une idée merci !

Posté : 19 févr. 2007, 17:24
par Ryle
Ta requête m'a pourtant l'air bonne... on pourrait éventuellement y ajouter un distinct, mais normalement le group by devrait être suffisant... qu'est ce qui ne fonctionne pas ?
Posté : 19 févr. 2007, 17:38
par Dexion
//Compter le nombre de fU
$nb_fu = mysql_query("SELECT FU,COUNT(*) FROM membres GROUP BY FU") or die($erreur=mysql_error());
echo $nb_fu;
Resultat :
J'ai exactement mis ça, mais sa ne me retourne aucun chiffre ^^
A mon avis il faudrais que je récupère le resultat à l'aide d'une fonction mysql mais je vois pas du tous laquelle !!
Voilou si tu veux plus de renseignement d'explication demande moi !
Posté : 19 févr. 2007, 17:44
par Ryle
mysql_query
(...)
Valeurs de retour
Pour les requêtes du type SELECT, SHOW, DESCRIBE ou EXPLAIN, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
(...)
La ressource de résultat retournée doit être passée à la fonction mysql_fetch_array(), et les autres fonctions permettant d'explorer le résultat des tables, pour accéder aux données retournées.
Il te faut donc parcourir chaque enregistrement retourné par ta requête avec un mysql_fetch_* pour afficher les valeurs de FU et du COUNT(*). Je te recommande d'ailleurs de lui donner un alias, ca sera plus simple
Posté : 19 févr. 2007, 17:54
par Dexion
Hmmmm quelque chose comme ça alors :
//Compter le nombre de fU
$nb_fu = mysql_query("SELECT FU, COUNT(*) AS nb FROM membres GROUP BY FU") or die($erreur=mysql_error());
while ($nbfu = mysql_fetch_array($nb_fu))
{
echo $nbfu[fu];
}

Posté : 19 févr. 2007, 18:00
par NiCreteNiSoumise
Oi,
//Compter le nombre de fU
$nb_fu = mysql_query("SELECT FU, COUNT(*) AS nb FROM membres GROUP BY FU") or die($erreur=mysql_error());
echo mysql_fetch_array($nb_fu);
Il est ici inutile de faire un while qui ira parcourir la table étant donné que le nombre d'enregistrements retourné sera de 1.
Posté : 19 févr. 2007, 18:06
par Dexion
Il est ici inutile de faire un while qui ira parcourir la table étant donné que le nombre d'enregistrements retourné sera de 1.
Salut,
Heu....je ne comprend plus trop là
Pourquoi le nombre de d'enregistrements retourné serais de 1 ? je veux qu'il m'affiche le nombre de fois qu'il trouvera un FU 1 ou FU 2 ou FU 3 dans ma table et se resultat n'est pas forcément égal à 1.
Posté : 19 févr. 2007, 18:13
par NiCreteNiSoumise
Au temps pour moi j'ai mal lu le premier post, tu veux le résultat pour chaque FU1,FU2,FU3, et non le nombre total d'enregistrement.
Ton code paraît bon.
Posté : 19 févr. 2007, 22:47
par Dexion
Bah sa me retourne "Array" comme réponse :////
Posté : 20 févr. 2007, 00:37
par albat
Et si on essayait de faire simple ?...

$req = "SELECT count(*) FROM membres GROUP BY fu";
$res = mysql_query($req) or die();
$nb_fu = mysql_result($res, 0);
Posté : 20 févr. 2007, 09:57
par Dexion
$req = "SELECT count(*) FROM membres GROUP BY fu";
$res = mysql_query($req) or die();
$nb_fu = mysql_result($res, 0);
Génial !! Merci albat c'est exactement ce que je voulais !!
Posté : 20 févr. 2007, 10:11
par albat
Et, une fois de plus, une écrasante victoire de la coccinelle facétieuse sur le piaf anémique !

Posté : 20 févr. 2007, 11:16
par Dexion
En faite j'ai sortis le champagne un peu trop tôt sa marche sans vraiment marcher
Quand je fais :
J'ai comme résultat ( dans la base de donnée ) :
Donc en faite il ne me donne pas le nobmre maximum qu'il compte mais il les trie par FU donc sa sera toujours la FU 1 si elle existe en premier
donc j'ai essayer de faire :
Code : Tout sélectionner
SELECT FU, COUNT(*) AS nb FROM membres GROUP BY FU order by nb desc
Quand je regarde le resultat sa me donne bien :
Donc la il faudrait que je récupère le fameux "nb" mais je vois pas trop comment

Posté : 20 févr. 2007, 11:29
par Ryle
Essaye comme ceci :
$rs = mysql_query("SELECT fu, COUNT(*) AS nb FROM membres GROUP BY fu") or die($erreur=mysql_error());
while ($row = mysql_fetch_array($rs)) {
echo $row['fu'] . '=>' .$row['nb'] .'<br>';
}
Sinon tu peux utiliser la solution inneficace de la coccinnelle prétentieuse en lui ajoutant un "ORDER BY fu" pour avoir tes résultats par ordre croissant de fu

Posté : 20 févr. 2007, 11:41
par Dexion
Sinon tu peux utiliser la solution inneficace de la coccinnelle prétentieuse en lui ajoutant un "ORDER BY fu" pour avoir tes résultats par ordre croissant de fu

Non sa j'ai déjà essayer sa ne peux pas marcher étant donnée que si j'ai "1" dans fu 1 il va m'afficher le 1 en premier quelle que soit le resultat du fu 2 ou fu 3 ^^