Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторное использование кода для лайков, Как такое реализовать?.. 
:(
    Опции темы
mus
Дата 24.6.2013, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 22.5.2005

Репутация: нет
Всего: 1



Ув. разработчики, вопрос, как мне кажется, из серии сотню раз решенных, но я это решение найти пока не смог.

На сайте, который сейчас пишу, в двух местах используются лайки - лайк объекта (дом, кафе, магазин) и лайк комментария (как на ютубе, к примеру).
Лайки ставить могут только зарегистрированные в системе пользователи.

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

Не подскажете, как по-умному можно подобное реализовать?..
PM MAIL   Вверх
baldina
Дата 24.6.2013, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



связность чего?
в общей таблице лайков должно быть поле типа лайка или ссылка на запись в таблице объектов, которыми являются все объекты, включая комментарии.
с точки зрения ООП дом, кафе, магазин, комментарий - объекты, которые могут иметь лайки.
PM MAIL   Вверх
Sanchezzz
Дата 24.6.2013, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Лайкатся или не лайкатся- вот в чем вопрос  smile 

user_id , post_id и какойто хрени l.module_id подтип ( 1 квартиры, 2 дома, 3 дачи, 4 комментарии ) , created_at время если надо...

Запрос посчитать количество лайков с выводом списков какого то конкретно объекта.
Код

SELECT count(l.id) as count_like , t.* FROM какаета таблица t
LEFT JOIN likes l on l.post_id = t.pk_id
WHERE l.module_id = 1;



При добавление проверяем 
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.
PM MAIL Skype GTalk   Вверх
ksnk
Дата 24.6.2013, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Лайки - собственная реализация? Не импорт с вконтакта, какого-нибудь? 

Для собственной реализации все просто. 
Для объекта, который потенциально может быть залайкан (like-сущьность), нужно уметь мастерить уникальную строку(LIKE_ID). Например для коментария, это может быть ID основной темы, ID_коментария в теме , или просто ID_коментария, если они имеет сквозную нумерацию + слово 'comment'. Для объекта- ID этого объекта + слово 'object'. слова добавляются для того, чтобы не пересекаться с другими like-сущьностями на странице, у которых может оказаться такой-же ID. Например самый первый дом и самый первый коммент на сайте.

дальше - табличка с количеством лайков-дизлайков, в которой эта уникальная строка будет ключиком.

При первом обращении к сущьности по LIKE_ID строка в табличке заводится, счетчик увеличивается-уменьшается по надобности.

Саму работу разумнее организовать на ajaх, чтобы не перегружать лишний раз страничку.
Код

<img src="myimage.jpg"...>
<div class="like_counter" data-likeid="{{LIKE_ID}}">
<a href="#" onclick="likeUp()"...</a>
<a href="#" onclick="likeDn()"...</a>
</div>


Итого - вся служба лайков на сайте умещается в одном слое скриптов.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0686 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.