Привет, мастера.
Я озадачился написанием модуля лайков постов на форуме. Как тут +- к посту, только я хочу сделать возможность лайкнуть и убрать лайк.
Создал таблицу с полями (id, id поста который лайкнули, id пользователя который поставил лайк, rep (1), и дата)
И при лайке создается запись в бд с вышеперечисленными полями (rep = 1). А при дизлайке запись в бд удаляется.
Но тут я при анализе кода задумался, а но кой хрен мне нужно это поле с репутацией, лишнее поле, которое не используется.
Так у меня возник вопрос. А как лучше всего реализовать такого рода оценки поста?
Лучше не удалять записи при дизлайке? Или вообще создавать для одного поста 1 строку, и обновлять только количество голосов? Но тогда еще придется создать 1 таблицу и записывать туда кто в каком посте голосовал (чтобы голосовать могли только 1 раз). Короче я хз, помогите пожалуйста
И еще вопрос. Как потом сделать сортировку по репутации поста (посты где репутация > 1), если оно в другой таблице от постов находится? Что-то пытался сделать, но у меня это получалось только с созданием нескольких лишних переменных, условии, которое проверяло отдельный пост на количество репутации, и запросов в базу.
Буду благодарен за помощь)
Спасибо даже за то что дочитали до конца :*
лучше пусть будут отдельные записи, вдруг захочешь сделать просмотр кто лайкнул
а так мб создавай отдельную строку, так как ты делаешь и через select count считай сколько лайкнуло)
Добавлено 05.01.16 в 22:08:33:
с телефона не удобно писать
делаешь запрос, если голос уже есть, то апдейт и на дизлайк, что бы не создавать 100500 таблиц...
Alien, а то что при лайке создается запись, и если пользователь передумал, и убрал голос, то запись с бд удяляется, то это нормально сделано, или нужно переработать всю конструкцию модуля (без удаления)?
Danya, при лайке или дизлайке создаем, потом апдейт если есть база уже. если вообше снять голом удаляем