2010-04-24 9 views
1

J'ai demandé cela une fois avant, mais je n'ai pas eu une réponse très claire.Note moyenne script

Je dois savoir comment créer un script d'évaluation pour un site. J'ai un formulaire qui soumet une note sur dix à mysql. Comment obtiendriez-vous l'estimation moyenne à afficher de la colonne mysql en utilisant php?

Une personne a suggéré d'avoir deux tables; un pour toutes les notes, et un pour la note moyenne de chaque page. Existe-t-il une méthode plus simple que celle-ci?

+0

Saviez-vous que vous pouviez éditer vos questions et même ajouter des commentaires aux réponses? – goat

Répondre

2

Vous voudrez conserver la note pour chaque fois qu'une page est ratd. parce que si vous stockez juste la note moyenne dans une colonne, comme

ratings (page_id, average_rating) 

Il est difficile de déterminer:

  1. Combien d'utilisateurs ont noté
  2. Répartition des notes (combien ont voté 10 , par exemple)

Et vous ne pouvez pas permettre aux utilisateurs de changer leur note, car tout a été aplati en une seule ligne. Vous pouvez le faire sans la deuxième table si vous utilisez la fonction moyenne MYSQL

$result = mysql_query("SELECT AVG(rating) FROM ratings GROUP BY page_id WHERE page_id = '$pageid'"); 
$rating_for_page = mysql_fetch_row($result); 
$rating = $rating_for_page[0]; 

Notez que je suppose chaque note est stocké comme une ligne séparée

1

Si vous collectez évaluations pour une seule fonction permet de dire FeatureX et dans une colonne permet de dire FCOLX alors vous pouvez:

  1. Utilisez le gestionnaire Mysql AVG() fonction
  2. Fetch toutes les valeurs et calculer la moyenne dans le script PHP.

Le calcul d'une moyenne va généralement comme ceci:

$myRatings = $dbHandler->fetch(); //generic fetch 
$totalRatings = count($myRatings); 
$sum = 0; 
foreach($myRatings as $index=>$rating){ 
    $sum+=$rating['FCOLX']; //where FCOLX is the column where you have the user rating [1-10]; 
} 

$average = 0; 

if($totalRatings>0){ 
    $average = $sum/$totalRatings; 
} 

La moyenne résultante sera pour l'échelle de 1-10 que vous utilisez.

1

Une simple moyenne est pas très bon en soi une évaluation. Par exemple, si une centaine de personnes votaient pour une moyenne de 8,5, alors une seule personne votant 10 sur autre chose lui donnerait un meilleur classement.

J'ai demandé une similar question il y a quelque temps qui pourrait vous intéresser.