平均评级脚本

时间:2010-04-24 17:37:04

标签: php mysql rating

我之前曾问过这个,但我没有得到一个非常明确的答案。

我需要知道如何为网站制作评级脚本。我有一个表单,提交十分之一到mysql。你如何使用php从mysql专栏中获得平均评分?

一个人建议有两张桌子;一个用于所有评级,一个用于每个页面的平均评级。有比这更简单的方法吗?

3 个答案:

答案 0 :(得分:2)

每次页面崩溃时,您都希望存储评级。因为如果您只是将平均评分存储在一列中,例如

ratings (page_id, average_rating)

确定起来并不容易:

  1. 有多少用户评分
  2. 评级的分布(例如,投票数为10)
  3. 并且您不能允许用户更改其评级,因为所有内容都已变为一行。如果使用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];
    

    请注意,我假设每个评级都存储为单独的行

答案 1 :(得分:1)

如果您收集单个功能的评级,我们可以说FeatureX并放在一列中让我们说FCOLX,那么您可以:

  1. 使用内置的Mysql AVG()函数
  2. 获取所有值并计算php脚本中的平均值。
  3. 计算平均值通常如下:

    $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;
    }
    

    得出的平均值将是您使用的1-10的等级。

答案 2 :(得分:1)

简单的平均值本身并不是很好的评级。例如,如果一百人以平均8.5的价格投票,那么只有一个人投票10投票给其他人会给它一个更好的排名。

我前段时间曾问similar question你可能会感兴趣的。