MySQL : compter le nombre d'entrées



  • Bonjour,

    J'ai besoin de votre aide pour savoir quelle fonction permet de compter le nombre d'entrée dans une BDD et qui l'affiche.

    Merci d'avance de vos réponses.



  • $retour = mysql_fetch array('SELECT COUNT(*) AS nbr FROM table');
    $donnees = mysql_fetch_array($retour);
    
    $nombre = $donnees['nbr'];
    


  • Merci beaucoup ô puissant Onepiecefan xD



  • il existe également une fonction php qui te permet de connaître le nombre d'enregistrements que te retounrne ta requête

    mysql_num_rows

    Pratique si ta requête est compliquée et que tu ne sais pas y intégrer un count. Cela permet d'éviter les doubles requêtes :)



  • Oui, mais ça oblige MySQL à retourner l'ensemble des données de la table, et sur une grosse table ça te pompe une bonne grosse quantité de mémoire.
    Quelqu'un avait fait un benchamrk qui montrait que MySQL était plus rapide que PHP, et qu'il fallait donc au maximum utiliser des fonctions MySQL plutôt que de réaliser des traitements tels que celui-ci avec PHP. mysql_num_rows est plus utilisé quand il faut faire des tentatives de connexion, ou vérifier qu'une donnée est présente.


  • Administrateur

    Attention car Mysql, ça n'aime pas les disque durs qui ont du mal. Ca consomme surtout de la patate sur le disque dur.

    Ici sur Freeheberg, c'est pas tant la RAM qui bloque, c'est le Disque dur.



  • bah si tu fais une requete pour avoir les données, il rapatrie qd meme les données, non? et donc tu peux faire une fonction php dessus?



  • Hum et bien j'utilise la fonction mysql_num_rows qui fonctionne tres bien mais maintenant j'ai un problème legerement plus compliqué :P

    J'ai envi de creer un top des uploadeurs sur mon site et j'aimerais pouvoir compter le nombre d'entrée avec comme pour chaque pseudo inscrit dans la colonne uploadeur.

    Exemple, lors de l'upload d'une vidéo, l'uploadeur inscrit son pseudo dans la champ uploadeur de la table animes.

    J'aimerais compter le nombre de fois que ce pseudo est inscrit ( c'est peut-etre un peu plus clair comme ca ), mais le faire avec tout les pseudos présents et ensuite m'afficher le resultat.

    J'espère avoir été clair ( car ca l'est dans ma tête mais pas forcement sur le forum xD ).



  • 'SELECT COUNT(*) AS nbr FROM table'

    tu remplaces le * par le nom du champ ex.: anime.user
    si tu laisses comme cela tu auras le nombre total d'upload.

    Pour l'avoir par utilisateur tu dois rajouter la clause where dans ta requete ce qui donnerait :

    'SELECT COUNT(*) AS nbr FROM anime where anime.user=user'

    tu dois donc faire deux requêtes. Il n'y a pas à ma connaissance moyen de faire autrement.

    J'espere que mes explications sont claires, sinon n'hésite pas à demander des éclaircissements :)



  • Mmmmm oui merci je verrais ca plus tard dans la soirée pour l'instant vais manger j'ai la dalle lol



  • Ma requête ne marche pas ( ça ne m'étonne même pas :/ )

    $retour = mysql_query('SELECT * FROM animes ORDER BY uploader');
    $donnees =mysql_fetch_array($retour);
    
    $topup  = mysql_query('SELECT COUNT(*) FROM animes WHERE uploader="'.$donnees['uploader'].'"');
    while($topup2 = mysql_fetch_array($topup)) {
    ?>
    
    <p class="elementMenu"><?php echo $topup2['uploader']; ?></p>
    
    <?php
    }
    ?>
    

    Mais la je penses que j'ai fait du n'importe quoi :/

    En plus je suis fatigué xD



  • il ne faut compter qu'un seul champs.
    Par exemple:
    count(id)
    et non pas
    count(*) (sinon tu multiplie par X, X étant le nombre de champs)



  • Bon, je me rapproches déjà un peu plus du résultat xD ( http://www.streaming-powaa.fr/ )

    Le code utilisé est le suivant :

    $retour = mysql_query('SELECT * FROM animes ORDER BY uploader');
    while($donnees =mysql_fetch_array($retour)) {										
    $topup  = mysql_query('SELECT COUNT(uploader) AS nbrup FROM animes WHERE uploader="'.$donnees['uploader'].'"');
    $topup2 = mysql_fetch_array($topup);									
    ?>
    <p class="elementMenu"><?php echo $donnees['uploader']; echo '&nbsp; - &nbsp;'; echo $topup2['nbrup']; ?></p>
    <?php										
    }
    ?>
    

    Mais la il me fait un truc bizarre :P



  • rajoute un echo mysql_error(); à coté de chaque mysql_query(); pour voir d'où vient exactement l'erreur.



  • Mmmmm pas la peine j'ai reçu une aide exterieur à FH ^^

    Je posterais le code demain je vais me coucher :p

    Merci quand même de ton aide Arcanis =]


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.