| |
|
|
| | Уважаемые, помогите сделать систему рейтинга статей!
Картинки я сделал, но вот со скриптом, проблемы!
Не могу понять, допустим, система пятибалльная, юзер проголосовал за статью, отлично, то есть, вношу в базу, значение 5! Что дальше? Как обрабатывать значения? Их к чему-то надо прировнять или разделить на что-то? | |
| |
|
|
| |
|
|
| |
для: 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 | |
| |
|
|
| |
|
|
| |
для: antf
(02.07.2006 в 22:04)
| | | Это понятно! А дальше то что? Как общий рейтинг вычеслить? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(02.07.2006 в 22:41)
| | | 1) Делаем 5 запросов к базе, выясняем кол-во проголосоваваших за каждую оценку. Вопрос участникам: наверно, можно обойтись одним запросом или нет?
2) Считаем сто процентов = сумма значений пяти колонок (one - five)
3) Считаем процент проголосовавших за каждую оценку
Формула: проц. соотн. = число проголосовавших / сто процентов (получили выше). | |
| |
|
|
| |
|
|
| |
для: antf
(02.07.2006 в 23:10)
| | | Может я чего не понимаю, но почему нельзя сделать один вопрос а результат раскидать в массив например(mysq_fetch_array() )
? =)) | |
| |
|
|
| |
|
|
| |
для: antf
(02.07.2006 в 22:04)
| | | Я так же пытался, но вопрос остался, как посчитать процентное отшени запросов
Не уж-то всё сводится к элементарным мат. вычислениям?????? | |
| |
|
|
| |
|
|
| |
для: hell_riser
(02.07.2006 в 22:45)
| | | К стати я не успел ещё проверить, свою мыслю, хотя скорее всего так и есть.!!! | |
| |
|
|
| |
|
|
| |
для: hell_riser
(02.07.2006 в 22:57)
| | | Если мы число проголосовавших, поделим на сто процентов, мы же никогда не пять звёзд у статьи?! Смысл тогда? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(02.07.2006 в 23:21)
| | | Я думаю может сделать так:
если голосов от 0-100 - это одна звезда,
от 100-200, две звезды,
и тд.. | |
| |
|
|
| |
|
|
| |
для: Diablo_
(02.07.2006 в 23:21)
| | | Ошибочка
Формула: проц. соотн. = (число проголосовавших / сто процентов (получили выше)) * 100. | |
| |
|
|
| |
|
|
| |
для: antf
(02.07.2006 в 23:24)
| | | >Ошибочка
>
>Формула: проц. соотн. = (число проголосовавших / сто
>процентов (получили выше)) * 100.
Да, но если не ошибаюсь, таким образом мы получаем процентное отношение один к двум.
Может лучше просчитать проц. соотн. для каждаждой звезды, а после уже выводить соотношение меж ними???
Или я чего-то не того ляпнул. | |
| |
|
|
| |
|
|
| |
для: hell_riser
(02.07.2006 в 23:54)
| | | А можно ли сделать так:
В таблицу, написать 0|0|0|0|0, потом извлечь, разъединить, добавить голос, куда надо, склеить и записать в таблицу!
Нули, равны голосам, выводить то, которое больше! | |
| |
|
|
| |
|
|
| |
для: Diablo_
(03.07.2006 в 00:43)
| | | Вроде логично в количественом соотношени, а как на счёт процентного ??? | |
| |
|
|
| |
|
|
| |
для: hell_riser
(03.07.2006 в 00:46)
| | | А зачем в процентном?
Какое значение из пяти, больше, то и выводим! А если равны, тоже вывдим!:)
Так как в процентном, 100%(5 звёзд) никогда не будет! | |
| |
|
|
| |
|
|
| |
для: Diablo_
(03.07.2006 в 01:00)
| | | Вот только не факт, что результат будет соответствовать истине; а если допустим к-во 5-х звёзд и 1-ой равны, что в этом случае выводить предлогаете, 5??? Ведь это заведомо FALSE | |
| |
|
|
| |
|
|
| |
для: 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;
Вроде всё, если что поправьте. Сонный))) | |
| |
|
|