Разрешить пользователям оценивать комментарии один раз PHP MySQL - PullRequest
1 голос
/ 23 декабря 2011

У меня есть веб-сайт, где пользователи могут оценивать комментарии, оставленные на страницах.Каждый комментарий имеет уникальный идентификатор (например, 402934). Если я хочу, чтобы пользователи могли пролистывать или прокручивать указанные комментарии, я вижу, как можно создать простой код счетчика, чтобы отслеживать количество увеличений против большого пальца- но как я могу убедиться, что каждый пользователь оценивает указанный комментарий только один раз.Я собирался создать базу данных, в которой каждый номер комментария представлял собой строку, и в этой строке содержался массив всех пользователей, которые оценивали его, и всех пользователей, которые оценивали его, но у меня было ощущение, чтолучший способ.Моей следующей мыслью было создание таблицы для каждого пользователя, а затем создание массива, отображающего все комментарии, которые оценил пользователь.Вероятно, он будет работать быстрее (например, проверка из 150 рейтингов пользователя в стихе рейтинга 6050 комментария, но я все еще чувствую, что есть лучший способ ... есть идеи?

1 Ответ

7 голосов
/ 23 декабря 2011

Создайте новую таблицу с user_id, comment_id и vote TINYINT(1).

Значение 1 в vote - палец вверх, Значение 0 в vote - палец вверх.

Имейте ограничение UNIQUE KEY на (comment_id, user_id).


Если вы будете следовать вышеизложенному, будет легко проверить, проголосовал ли пользователь за определенный комментарий, если вы хотите иметь возможность быстро (как в быстром исполнении) увидеть все комментарии, сделанные пользователем Вы также должны добавить INDEX к user_id.


Когда пользователь голосует, вы можете использовать от REPLACE INTO до user_comment_thumbs, например:

REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote)
VALUES (@user_id, @comment_id, @vote);

Если пользователь уже проголосовал, запись в таблице будет обновлена, в противном случае будет добавлена ​​новая строка.

...