Средний рейтинг скрипта - PullRequest
       10

Средний рейтинг скрипта

1 голос
/ 24 апреля 2010

Я уже спрашивал об этом раньше, но не получил чёткого ответа.

Мне нужно знать, как составить рейтинговый скрипт для сайта. У меня есть форма, которая представляет рейтинг из десяти в MySQL. Как бы вы могли получить средний рейтинг, который будет отображаться в столбце mysql с помощью php?

Один человек предложил иметь два стола; один для всех рейтингов и один для среднего рейтинга каждой страницы. Есть ли более простой метод, чем этот?

Ответы [ 3 ]

2 голосов
/ 24 апреля 2010

Вы хотите сохранить рейтинг за каждый раз, когда страница ratd. потому что если вы просто храните средний рейтинг в одном столбце, например

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 голос
/ 24 апреля 2010

Простое среднее не очень хорошо само по себе для рейтинга. Например, если бы сто человек проголосовали за что-то в среднем за 8,5 баллов, то только один человек, проголосовавший за 10 баллов за что-то другое, повысил бы его рейтинг.

Я задал похожий вопрос некоторое время назад, который может вас заинтересовать.

1 голос
/ 24 апреля 2010

Если вы собираете оценки для одной функции, скажем, 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.

...