2011-12-23 2 views
1

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

+0

@ManseUK Печенье легко удаляется пользователем. Лучше и более постоянное решение, в котором вы контролируете, - это решение для базы данных, описанное ниже. Refp –

ответ

7

Создать новую таблицу с 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); 

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

+0

SWEET :) Только то, что мне нужно! –

+0

@refp отличный ответ! –

Смежные вопросы