Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Система рейтинга
 
 автор: Diablo_   (02.07.2006 в 21:27)   письмо автору
 
 

Уважаемые, помогите сделать систему рейтинга статей!
Картинки я сделал, но вот со скриптом, проблемы!
Не могу понять, допустим, система пятибалльная, юзер проголосовал за статью, отлично, то есть, вношу в базу, значение 5! Что дальше? Как обрабатывать значения? Их к чему-то надо прировнять или разделить на что-то?

   
 
 автор: antf   (02.07.2006 в 22:04)   письмо автору
 
   для: Diablo_   (02.07.2006 в 21:27)
 

Я бы поступил следующим образом: создал mysql-таблицу такого дизайна:

CREATE TABLE 'statistic' (
  'id_item' int(32) NOT NULL auto_increment,
  #количество поставивших оценку 1
  'one' INT,
  #количество поставивших оценку 2   
  'two' INT,
  #количество поставивших оценку 3
  'three' INT,
  #количество поставивших оценку 4
  'for' INT,
  #количество поставивших оценку 5
  'five' INT,
  #ID опроса, внешний ключ
  'id_poll' INT,
  PRIMARY KEY  ('id_item')
)


А потом каждый раз при подаче голоса увеличивал бы значение соответствующего столбца на 1

   
 
 автор: Diablo_   (02.07.2006 в 22:41)   письмо автору
 
   для: antf   (02.07.2006 в 22:04)
 

Это понятно! А дальше то что? Как общий рейтинг вычеслить?

   
 
 автор: antf   (02.07.2006 в 23:10)   письмо автору
 
   для: Diablo_   (02.07.2006 в 22:41)
 

1) Делаем 5 запросов к базе, выясняем кол-во проголосоваваших за каждую оценку. Вопрос участникам: наверно, можно обойтись одним запросом или нет?
2) Считаем сто процентов = сумма значений пяти колонок (one - five)
3) Считаем процент проголосовавших за каждую оценку

Формула: проц. соотн. = число проголосовавших / сто процентов (получили выше).

   
 
 автор: CrazyAngel   (03.07.2006 в 07:45)   письмо автору
 
   для: antf   (02.07.2006 в 23:10)
 

Может я чего не понимаю, но почему нельзя сделать один вопрос а результат раскидать в массив например(mysq_fetch_array() )
? =))

   
 
 автор: hell_riser   (02.07.2006 в 22:45)   письмо автору
 
   для: antf   (02.07.2006 в 22:04)
 

Я так же пытался, но вопрос остался, как посчитать процентное отшени запросов
Не уж-то всё сводится к элементарным мат. вычислениям??????

   
 
 автор: hell_riser   (02.07.2006 в 22:57)   письмо автору
 
   для: hell_riser   (02.07.2006 в 22:45)
 

К стати я не успел ещё проверить, свою мыслю, хотя скорее всего так и есть.!!!

   
 
 автор: Diablo_   (02.07.2006 в 23:21)   письмо автору
 
   для: hell_riser   (02.07.2006 в 22:57)
 

Если мы число проголосовавших, поделим на сто процентов, мы же никогда не пять звёзд у статьи?! Смысл тогда?

   
 
 автор: Diablo_   (02.07.2006 в 23:24)   письмо автору
 
   для: Diablo_   (02.07.2006 в 23:21)
 

Я думаю может сделать так:
если голосов от 0-100 - это одна звезда,
от 100-200, две звезды,
и тд..

   
 
 автор: antf   (02.07.2006 в 23:24)   письмо автору
 
   для: Diablo_   (02.07.2006 в 23:21)
 

Ошибочка

Формула: проц. соотн. = (число проголосовавших / сто процентов (получили выше)) * 100.

   
 
 автор: hell_riser   (02.07.2006 в 23:54)   письмо автору
 
   для: antf   (02.07.2006 в 23:24)
 

>Ошибочка
>
>Формула: проц. соотн. = (число проголосовавших / сто
>процентов (получили выше)) * 100.

Да, но если не ошибаюсь, таким образом мы получаем процентное отношение один к двум.
Может лучше просчитать проц. соотн. для каждаждой звезды, а после уже выводить соотношение меж ними???
Или я чего-то не того ляпнул.

   
 
 автор: Diablo_   (03.07.2006 в 00:43)   письмо автору
 
   для: hell_riser   (02.07.2006 в 23:54)
 

А можно ли сделать так:
В таблицу, написать 0|0|0|0|0, потом извлечь, разъединить, добавить голос, куда надо, склеить и записать в таблицу!
Нули, равны голосам, выводить то, которое больше!

   
 
 автор: hell_riser   (03.07.2006 в 00:46)   письмо автору
 
   для: Diablo_   (03.07.2006 в 00:43)
 

Вроде логично в количественом соотношени, а как на счёт процентного ???

   
 
 автор: Diablo_   (03.07.2006 в 01:00)   письмо автору
 
   для: hell_riser   (03.07.2006 в 00:46)
 

А зачем в процентном?
Какое значение из пяти, больше, то и выводим! А если равны, тоже вывдим!:)
Так как в процентном, 100%(5 звёзд) никогда не будет!

   
 
 автор: hell_riser   (03.07.2006 в 01:09)   письмо автору
 
   для: Diablo_   (03.07.2006 в 01:00)
 

Вот только не факт, что результат будет соответствовать истине; а если допустим к-во 5-х звёзд и 1-ой равны, что в этом случае выводить предлогаете, 5??? Ведь это заведомо FALSE

   
 
 автор: Dead   (03.07.2006 в 02:10)   письмо автору
 
   для: hell_riser   (03.07.2006 в 01:09)
 

1 Выводим кол-во проголосовавших на 5 ----> умножаем на 5
2 Выводим кол-во проголосовавших на 4 ----> умножаем на 4
3 Выводим кол-во проголосовавших на 3 ----> умножаем на 3
4 Выводим кол-во проголосовавших на 2 ----> умножаем на 2
5 Выводим кол-во проголосовавших на 1 ----> умножаем на 1

6 Выводим всего проголосовавших и умножаем на 5

Далее мат формула к примеру для $koef:
(1+2+3+4+5)/6

Потом можно округлить, можно вывести только целое значение.
Пример:

................

if($koef>=3 and $koef<4)
$final = "<img src=\"root/images/kartinka_so zvezdoy\" />";

if($koef>=4 and $koef<5)
$final = "<img src=\"root/images/kartinka_so zvezdoy2\" />";


потом:
echo $final;


Вроде всё, если что поправьте. Сонный)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования