Свои Лайки на Сайте РНР

206
12 июня 2018, 16:10

Как сделать свои лайки на сайте(как в ВК)? Допустим есть столбец like в таблице news, как сделать так, чтобы при нажатии на лайк, добовлялся 1 балл в столбец

Answer 1

Столбец like в таблице news - на мой взгляд не совсем удачная схема. Вам наверняка ведь важно кто поставил данный лайк, и вам наверняка важно, чтобы один и тот же пользователь не смог поставить лайк дважды. На мой взгляд, будет рациональным сделать таблицу likes, у которой будет связь с пользователем (у вас в системе ведь есть таблица users?) и связь с вашей новостью. То есть в таблице likes должны быть колонки news_item_id, user_id. Авторизованный пользователь сможет делать запросы на сервер (например при помощи AJAX), а сервер будет проверять - не поставлен ли уже лайк (нет ли у новости лайка от данного пользователя). Если нет - добавлять в таблицу лайков новую запись (id новости и id пользователя). Есть еще вариант - в одном поле likes держать ID'ы пользователей, которые поставили лайк, в одной строчке (через запятую), но имхо это не очень правильный подход. Короче говоря, суть примерно такая:

  • Есть таблицы users, news, news_likes
  • При авторизации в вашей системе (логин-пароль), пользователь получает ID из таблицы users, (этот ID обычно помещается в сессию, массив $_SESSION)
  • Когда пользователь кликает по кнопке/ссыкле/иконке лайка, происходит запрос на сервер (AJAX)
  • В запросе передается ID новости, лайк к которой нужно поставить
  • PHP скрипт, который обрабатывает ваш запрос, получает ID новости ($_GET или $_POST), затем достает из сессии ID текущего пользователя и делает запрос к базе (что-то типа SELECT COUNT (*) FROM news_likes WHERE news_id = id_новости AND user_id = id_пользователя). Если кол-во больше ноля - значит лайк уже стоит и его ставить не нужно. В противном случае делается запрос на вставку новой записи в таблицу news_likes
  • Скрипт возвращает какое-то значение сигнализирующее об успехе (чтобы вы могли как-то отреагировать на стороне клиента, например пометить кнопку не активной или что-то подобное)

При выводе списка новостей можно делать запросы на кол-во лайков, чтобы показывать сколько их, либо можно хранить актуальное кол-во в поле новости (что-то вроде likes_count) и показывать его (поле нужно будет обновлять всякий раз при изменении кол-ва, но при выводе это оптимальнее, меньше запросов).

Как-то так..

READ ALSO
Ограничить число публикаций до трёх в неделю

Ограничить число публикаций до трёх в неделю

Всем приветЕсть на сайте публикации

214
Почему у меня не получается передать переменную в Mail?

Почему у меня не получается передать переменную в Mail?

Как мне передать переменную $email в Mail ? И почему она так не передается ? а только нужно писать например

161
Как правильно составить регулярку?

Как правильно составить регулярку?

Есть html документ, там есть выражение вида:

212
Пагинация в php из БД (асинхронная)

Пагинация в php из БД (асинхронная)

Нужно вывести по 3 записи на страницу, без перезагрузки страницыВроде просто, пишу:

221