![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
Решил сделать систему рейтинга для новостей на сайте, готовых решений не нашел, придется как то самому придумывать.
Выглядеть должно так, под каждой новостью две картинки, стрелка вверх и вниз. Первое что пришло в голову это создать еще одну таблицу: id-новости, rating загружать для каждой новости значения из поля rating, при нажатии на стрелку вверх посылать запрос в базу update... rating=rating+1 для понижения рейтинга соответственно -1. Записей в таблице будет ровно столько сколько и в таблице новостей, т.е. по идее можно и не создавать новую таблицу, а добавить поле rating в таблицу с новостями и обновлять уже там. Какие будут комментарии по этой идее? Дальше встает вопрос, как запретить пользователю голосовать больше одного раза, использование БД в этом случае сильно увеличит кол-во записей. Также, интересует возможность в реальном времени видеть как изменился рейтинг, т.е. нажал на повышение рейтинга и сразу без перегрузки страницы видно что рейтинг повысился. Может кто сталкивался с данной задачей, прошу ваших комментариев, уважаемые формучане! |
|||
|
||||
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
или может сделать две таблицы:
1: [tb_rating] id id_news - id новости rating - сам рейтинг 2: [tb_ip] id rid - id записи рейтинга ip - с которого голосовали how - как проголосовали |
|||
|
||||
| ayax2005 |
|
|||
|
echo $smile ![]() ![]() Профиль Группа: Участник Сообщений: 516 Регистрация: 17.4.2008 Где: Питер Репутация: 2 Всего: 11 |
А какова цель создания новой таблицы со связью 1:1? Просто добавьте поле в таблицу новостей.
курите Ajax. Если вы подразумеваете отслеживать ещё и голосования других пользователей без перезагрузки - придётся добавить и setTimeOut. Что бы реально запретить многократное голосование придётся хранить ip пользователя в БД. -------------------- все вопросы - из-за неверной формулировки задачи |
|||
|
||||
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
Спасибо за ответ, все таки если пока опустить все эти ajax,javascript, то хотелось бы найти оптимальное решение для системы рейтинга новостей, чтобы и по скорости быстро было и грамотно с точки зрения нагрузки бд и т.п.
|
|||
|
||||
| bagos |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
на данном этапе сделал следующее:
таблица rating: id nid - номер новости rank - рейтинг новости вытаскиваю рейтинг нужной мне новости $result_rank = mysql_query("select rank from rating where nid='$id'"); $row_rank = mysql_fetch_array($result_rank); на странице показываю
Код скрипта:
Код пхп файла:
Код работает. Опыт с пхп у меня нулевый, поэтому жду вашей критики, какие проверки можно сделать, где что и как упростить или переделать на корню. Заранее спасибо, ушел читать книжки по пхп Это сообщение отредактировал(а) bagos - 5.1.2011, 07:53 |
||||||
|
|||||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 12 Всего: 211 |
Для начала хотя бы защититься от SQL injection-а.
если вместо GET параметра nid пользователь передаст скажем что-то вот такое
то твой запрос станет вот таким
угадай что будет |
||||||
|
|||||||
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
Воо, благодарю, щас поправим
Добавлено @ 09:30 хм, может мало пробовал, но пока sql inj не срабатывают... этого будет достаточно? $nid = intval($nid); Это сообщение отредактировал(а) bagos - 5.1.2011, 10:56 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |