1

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

我需要知道如何为网站制作评级脚本。我有一个表格,可以向 mysql 提交 10 分的评分。您将如何使用 php 从 mysql 列中显示平均评分?

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

4

3 回答 3

2

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

ratings (page_id, average_rating)

不容易确定:

  1. 有多少用户评价
  2. 评分的分布(例如,有多少人投了 10 票)

而且您不能允许用户更改他们的评分,因为所有内容都已被压平成一行。MYSQL中使用average函数可以不用第二张表

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

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

于 2010-04-24T17:46:40.817 回答
1

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

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

计算平均值通常是这样的:

$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 的比例。

于 2010-04-24T17:45:27.850 回答
1

一个简单的平均值本身并不是很好的评级。例如,如果 100 个人对某项平均投了 8.5 分,那么只有一个人对其他某项投 10 分,就会给它一个更好的排名。

前段时间我问过一个类似的问题,你可能会感兴趣。

于 2010-04-24T17:47:44.587 回答