![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
mus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 22.5.2005 Репутация: нет Всего: 1 |
Ув. разработчики, вопрос, как мне кажется, из серии сотню раз решенных, но я это решение найти пока не смог.
На сайте, который сейчас пишу, в двух местах используются лайки - лайк объекта (дом, кафе, магазин) и лайк комментария (как на ютубе, к примеру). Лайки ставить могут только зарегистрированные в системе пользователи. Пока по архитектуре получается, что надо использовать отдельные таблицы для этих лайков в MySQL. Да и код дублировать, получается. Но ведь, как мне кажется, это самый что ни на есть случай для иной архитектуры, подразумевающей отсутствие дублирования. Например, сделать одну таблицу лайков и один класс, обрабатывающий эту таблицу. Но как там организовать связность - ума не приложу. Не подскажете, как по-умному можно подобное реализовать?.. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
связность чего?
в общей таблице лайков должно быть поле типа лайка или ссылка на запись в таблице объектов, которыми являются все объекты, включая комментарии. с точки зрения ООП дом, кафе, магазин, комментарий - объекты, которые могут иметь лайки. |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Лайкатся или не лайкатся- вот в чем вопрос
![]() user_id , post_id и какойто хрени l.module_id подтип ( 1 квартиры, 2 дома, 3 дачи, 4 комментарии ) , created_at время если надо... Запрос посчитать количество лайков с выводом списков какого то конкретно объекта.
При добавление проверяем SELECT id FROM likes WHERE user_id=:user_id and post_id=:post_id and module_id=:module_id Если результат 0 То Insert into likes SET user_id=:user_id , post_id=:post_id , module_id=:module_id Если есть (дислайк) Delete FROM likes WHERE user_id=:user_id and post_id=:post_id and module_id=:module_id Естественно надо сделать отдельно контроллер, который будет это дело управлять и отдавать результат в виде JSON С статусом проголосовал ДА, Количество лайков Сделал дислайк , вернул количество Для чекиниться такой же по схеме функционал, только мы указываем 4 координаты для рамки + обьект . -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Лайки - собственная реализация? Не импорт с вконтакта, какого-нибудь?
Для собственной реализации все просто. Для объекта, который потенциально может быть залайкан (like-сущьность), нужно уметь мастерить уникальную строку(LIKE_ID). Например для коментария, это может быть ID основной темы, ID_коментария в теме , или просто ID_коментария, если они имеет сквозную нумерацию + слово 'comment'. Для объекта- ID этого объекта + слово 'object'. слова добавляются для того, чтобы не пересекаться с другими like-сущьностями на странице, у которых может оказаться такой-же ID. Например самый первый дом и самый первый коммент на сайте. дальше - табличка с количеством лайков-дизлайков, в которой эта уникальная строка будет ключиком. При первом обращении к сущьности по LIKE_ID строка в табличке заводится, счетчик увеличивается-уменьшается по надобности. Саму работу разумнее организовать на ajaх, чтобы не перегружать лишний раз страничку.
Итого - вся служба лайков на сайте умещается в одном слое скриптов. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |