Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рейтинг новости 
V
    Опции темы
DioNiR
Дата 9.7.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Может вопрос и обсуждался но не нашёл подходящего.

Тута уже не первый раз вижу как в Системах делают Рейтинг новостей.

Пользователь может добавлять свой рейтинг к каждой новости.

Как проголосовать и как это занести в БД я умею.

Проблема в другом как это правильно вывести.

В таблице у меня есть 5 столбов:
rating
rating2
rating3
rating4
rating5
rating_votes - сколько всего проголосовало.

Собственно 5 вариантов для голосования.
Вот мне надо вывести не всё голосование всех вариантов. А только 1 которого больше.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
Leoo
Дата 9.7.2007, 17:06 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



Нууу, вообще этот вопрос скорее к БД чем к РНР, а так можно сделать 5 запросов (по запросу на каждый рейтинг) и потом сравнить которого больше.


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
DioNiR
Дата 9.7.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Ага и зачем же делать эти 5 запросов когда я их и так могу вывести при выводе новости в цикле.

Мне собственно нужно показать принцип сравнения этих данных.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
GZep
Дата 9.7.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



зечем же тогда так много столбцов!

можно одно поле, где будет храниться число с плавающей точкой (например 3.2)
потом просто округлять его при выводе. Используется всего одна колонка + можно сделать колонку для подсчета проголосовавших.

НО: перед занесением результата надо сделать выборку и посчитать новый средний голос.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
UADeveloper
Дата 9.7.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.7.2007
Где: Харьков

Репутация: нет
Всего: нет



Цитата(GZep @  9.7.2007,  17:20 Найти цитируемый пост)
 можно сделать колонку для подсчета проголосовавших.

Вот интересует математическая часть.

Вот скажем в таблице уже эсть рейтинг (например 4.0 и 10 проголосовавших) если придет еще один юзер и выберет 3, как  просчитать новый рейтинг? smile
PM MAIL   Вверх
DioNiR
Дата 9.7.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Разве это много столбов?

Я стараюсь привести запросы в БД к минимуму.

А такое кол-во столбов позволяет точно определить за что и кто проголосовал.
Позволяет точно определить за что голосовали больше.

Вот только мне надо узнать как можно определить за что больше проголосовало из этих 5.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
GZep
Дата 9.7.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Ок. Вот таблица:
Цитата

проголосовало        средний балл
10                             4.0

вот получили новый голос.

достаем записи... (SELECT "проголосовало" AND "средний балл" WHERE ...)

математика:
проголосовало (умножить) средний балл
к результату прибавить 3 (или другой голос)
разделить полученное на (проголосовало + 1 , то есть 11)
обновить таблицу:
проголосовало теперь 11, средний балл - часное от деления.

Добавлено через 23 секунды
все равно 2 запроса - как ни крути

Добавлено через 1 минуту и 42 секунды
Цитата(DioNiR @  9.7.2007,  17:48 Найти цитируемый пост)
Вот только мне надо узнать как можно определить за что больше проголосовало из этих 5

мой метод не дает такой возможности - он дает только средний балл... если это не подходит - наверное все-таки 5 столбцов...


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
DioNiR
Дата 9.7.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



хм... когда так разжувал я понял про что ты и как это работает.

Попробую задействовать твой вариант.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
UADeveloper
Дата 9.7.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.7.2007
Где: Харьков

Репутация: нет
Всего: нет



GZep, пасиб за идею ;)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.