Метод отслеживания голосов «за» и «против» - PullRequest
0 голосов
/ 25 августа 2010

У меня есть веб-сайт, который случайным образом выбирает запись из базы данных и затем отображает ее для пользователя. Я хотел бы добавить страницу с самым высоким рейтингом, на которой отображаются лучшие записи, выбранные совокупностью мнений пользователей. Я хочу, чтобы голоса поднимались и понижались, как показано здесь на stackoverflow и на многих других сайтах.

Я не очень разбираюсь в веб-разработке, поэтому затрудняюсь понять, с чего начать. У меня есть идея, что нажатие «вверх» добавит 1 к полю «голосов» в таблице, а нажатие «вниз» вычтет одно из того же поля, и я свяжу все это с полем «id» ссылки, по которым запись голосует. Есть ли более элегантное решение? Как начать?

edit: мой сценарий на стороне сервера написан на PHP, и я знаком с jquery.

править 2: Перечитав, я понимаю, насколько широк этот вопрос. Сожалею! В частности, я хочу знать, как кодировать PHP и mySQL, необходимые для добавления и вычитания голосов в таблицу «голосов» и из нее, без обновления страницы.

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

не читал, но это должно в значительной степени покрыть это:)

http://ad1987.blogspot.com/2009/02/reddit-style-voting-with-php-mysql-and.html

Кроме того, вы можете зайти на google.com, набрать «голосовать вверх по ajax php mysql» и нажать «Мне повезет».

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

не прочитал его снова, но это может помочь (SQL-запрос в середине страницы выглядит хорошо) http://www.andymoore.ca/2010/02/bayesian-ratings-your-salvation-for-user-generated-content/

0 голосов
/ 25 августа 2010

Вы заметите, что SO запоминает, за какие статьи вы проголосовали, и как вы проголосовали, поэтому есть таблица, которая связывает воедино тот элемент, за который проголосовали, лицо, проводившее голосование, и то, каков был их голос.Агрегирующая функция в SQL может быть использована для подсчета количества голосов в этой объединяющей таблице.

Обратите внимание, что если функция, которую вы используете для вычисления ваших "главных позиций", является дорогой (то есть, если у вас много элементови т. д.) тогда вам может потребоваться изменить запрос и, возможно, захочет кэшировать результаты в течение разумного периода времени, прежде чем снова выполнять вычисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...