2009-05-11 5 views
1

Je ne suis pas nouveau en programmation, mais je suis nouveau sur MySQL et PHP. Je me demande quelle est la façon la plus efficace de faire ce qui suit. Je n'ai pas besoin du code réel, mais seulement des étapes.comment compter et classer les données en php aussi efficacement que possible

J'ai une liste des avis des utilisateurs, permet de dire simplement:

USER REVIEW 
Bob  nice 
John good 
Fred bad 
Bob  poor 
Bob  the best 
Fred medicre 
Bob  shiny 

Je veux être en mesure de créer une liste des examinateurs qui ont fait le plus de commentaires, à savoir

USER REVIEWS 
Bob 4 
Fred 2 
John 1 

Quelle est la meilleure façon d'y parvenir, de la manière la plus efficace

acclamations !!

Répondre

9

Comme votre requête:

SELECT user, COUNT(*) AS reviews 
FROM <table name> 
GROUP BY user 
ORDER BY reviews DESC; 
3

Parfois, il est tout simplement plus facile pour les programmeurs de s'expliquer avec le code:

// Credit to Chad Birch for the query... 
$query = "SELECT user, COUNT(*) AS reviews 
      FROM <table name> 
      GROUP BY user 
      ORDER BY reviews DESC"; 

$res = mysql_query($query); 
if(mysql_num_rows($res) > 0) { 
    $res_array = mysql_fetch_assoc($res); 
    $list = "<h1>USER REVIEWS</h1>\n"; 
    foreach($res_array as $user) { 
     $list .= $user['user'].' '.$user['reviews']."<br />\n"; 
    } 
} 

echo $list; 

Donc, en gros, 9/10 fois, il est préférable de laisser SQL faire la trier et d'autres choses parce que c'est beaucoup plus efficace dans ce genre de choses.

  1. Do SQL requête et laissez trier vos résultats
  2. PHP permettent de vérifier pour voir s'il y a des résultats retournés.
  3. Let PHP convertir les résultats en tableau/objet
  4. Soit PHP tableau tranverse, extrait le contenu nécessaire
  5. Imprimer votre sortie désirée.
Questions connexes