adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
PHP - рейтинги
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Вс 17-06-07 : 18-37    Заголовок сообщения: PHP - рейтинги Ответить с цитатой

Нужно вот мне рейтинг фотографий создать, только вот не знаю до конца как это сделать.
Что ясно - как голосуют - в таблице поля - id|photo|user|vote|date

Тут ясно - как голоса собирать.
Не ясно как потом их считать и выбирать. Знаю что какой-то хитрый запрос нужно создать.
В итоге нужно получить 5ть фоток с самым высоким значением рейтинга, и вывести их в порядке убывания.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Nick123
Эксперт
СообщениеДобавлено: Вс 17-06-07 : 22-29    Заголовок сообщения: Ответить с цитатой

На MySQL примерно так:

SELECT * from 'your_table_name' ORDER BY 'rate' DESC LIMIT 0,5

Помещаешь это в переменную PHP, а дальше обрабатываешь ее стандартными средствами.

P.S. Только апострофы там другие будут.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Вс 17-06-07 : 23-10    Заголовок сообщения: Ответить с цитатой

Nick123
Нет, не так, так он выберет 5ть случайных записей с наиболее высокими оценками
А для каждого изображения много же голосов.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
def
Гость
СообщениеДобавлено: Пн 18-06-07 : 11-34    Заголовок сообщения: Ответить с цитатой

Richard Ferlow, яснее задачу описывай.

То есть в первом посте ты описал таблицу, в которой хранятся данные по голосованию?
 Наверх
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пн 18-06-07 : 13-56    Заголовок сообщения: Ответить с цитатой

def
Да - тоесть человечек нажал одну из 5ти звездочек - в базу заносится
id|photo|user|vote|date
() 45 32 2 11111111

Тоесть для фото с id 45 проголосовал юзер с id 32 поставив оценку 2 ну и метка времени.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Panter
Продвинутый форумчанин
СообщениеДобавлено: Пн 18-06-07 : 14-10    Заголовок сообщения: Ответить с цитатой

Richard Ferlow
Если тебе надо усреднённый рейтинг для каждой фотки и выбрать 5 наивысших значений, то, ИМХО, должно быть что-то типа такого запроса:

Код:
select *
from(select photo,sum(rate)/count(rate) as rate
     from 'your_table_name'
     gropup by photo) t
order by rate desc limit 0,5
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пн 18-06-07 : 22-25    Заголовок сообщения: Ответить с цитатой

Panter
Интересное предложение, надо попробовать.

Пока ходил, второй вариант реализации придумал, где данные о рейтинге для отдельной фото хранились бы в отдельной строке в базе данных, а не использовались бы строки для каждого голоса, однако этот способ сложнее в плане учета проголосовавших.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы