2010-04-24 84 views
1

我曾問過這一次,但我沒有得到一個非常明確的答案。平均評級文字

我需要知道如何爲網站製作評級腳本。我有一個表格將十個評級提交給mysql。你將如何使用php從mysql列顯示平均評分?

有人建議有兩張桌子;一個用於所有評級,另一個用於每個頁面的平均評分。有沒有比這更簡單的方法?

+0

你知道你可以編輯你的問題,甚至可以給答案添加評論嗎? – goat 2010-04-24 17:46:20

回答

2

您將需要存儲每次頁面被拉伸時的評級。因爲如果你只是存儲的平均得分在一列,如

ratings (page_id, average_rating) 

這是不容易確定:

  1. 多少用戶評爲
  2. 分佈的收視率(有多少投10 ,例如)

而且您不能允許用戶更改他們的評級,因爲所有內容都已平鋪成一行。如果您使用的平均功能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

如果您收集評級爲單一功能,可以說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規模。

1

簡單平均不是很好本身是一個可以沒有第二臺做評分。例如,如果有一百人投票平均8.5分,那麼只有一個人在其他事情上投10票會給它一個更好的排名。

前段時間我問了一個similar question,可能會讓您感興趣。