За последние 24 часа нас посетили 63334 программиста и 1739 роботов. Сейчас ищут 957 программистов ...

Рейтинг как на кинопоиске

Тема в разделе "PHP для новичков", создана пользователем viphost, 16 апр 2012.

  1. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Подскажите как устроен принцип работы подсчета голосов, точнее вывод результата рейтинга
    Есть две переменные с положительными и отрицательными голосами
    Скажем
    Код (Text):
    1. $up = 2034;
    2. $down = 506;
    Я к примеру подсчитываю так
    Код (Text):
    1. $rating = $up / $down;
    Но если скажем
    Код (Text):
    1. $down =1;
    то уже увидим что
    Код (Text):
    1. $rating = 2034;
    Вобще не пойму как он устроен, на процентах что ли?
     
  2. amohax

    amohax Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    46
    Симпатии:
    0
    Если как на кинопоиске, то нужно десять переменных. Или вы про какой рейтинг?
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Можно так: рейтинг будет в диапазоне от -1 (абсолютное зло) до +1 (абсолютное добро)
    Код (Text):
    1.  
    2. $total = $up + $down;
    3. $rating = ($total == 0) ? 0 : (($up - $down) / $total);
    как это перевести в проценты или в диапазон 1..10 надеюсь понятно

    если пользователь буквально тыкает в звездочки, то можно считать первую звезду как $down -= 5 , вторую как $down -= 4 и т.д, правая $up += 5

    Добавлено спустя 8 минут 15 секунд:
    Забегая вперед, в SQL для быстрого получения рейтинга советую иметь индекс по двум колонкам:
    KEY rating_inx (rating, total)
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    по идее надо ($up - $down) / ($up + $down) - это если просто + и - ставят.
    если с баллами, то (1 * $n1 + 2 * $n2 + 3 * $n3 + ... + 10 * $n10) / ($n1 + $n2 + $n3 + ... + $n10)
     
  5. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    спасибо, понял работу
    Вот еще вопросик, вроде как все понятно, но вот если у нас к примеру положительный рейтинг 1000, а отрицательный 3
    Код (Text):
    1. $up = 1000;
    2. $down = 3;
    то тогда получается что рейтинг будет
    Код (Text):
    1. $rating = 0.999
    но это не правильно, ведь должен быть от 1 до 10, т.е. в данном случае он должен быть не 0.999, а 9.999
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ну ёмоё! из вашей постановки следовало, что есть голоса "за" и "против". логично предположить отрицательный рейтинг. а вообще из одной системы в другую приводится так:
    Код (Text):
    1.  
    2. echo ($rating + 1) * 5; // это уже от 0 до 10 :)
    Добавлено спустя 5 минут 13 секунд:
    нет, ответ будет другим

    Добавлено спустя 7 минут 51 секунду:
    нако считай: https://docs.google.com/spreadsheet/ccc?key=0ArbGXyV7anzbdG ... 1ZtUUQ0T1E
     
  7. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    во, теперь все понятно, спасибки =)