@lev89

Проверка на существование записи в таблице?

На странице записи поста имеются комментарии, которые можно лайкать, но только зарегистрированные пользователи могу голосовать. Соответственно для лайков создана отдельная таблица, в котором есть поле user_id и post_comment_id. Если пользователь проголосовал, то в поле user_id записывается его ID, а в поле post_comment_id записывается ID комментария, куда поставил лайк. Сейчас пользователь может лайкать сколько угодно. Но мне надо, чтобы мог лайкать только один раз для текущего комментария. При попытке поставить лайк повторно - вывести сообщение. Как это сделать? Никак не соображу как написать условие.
$comment_id = !empty($_GET['id']) ? (int)$_GET['id'] : null; // получить ID комментария

        if ($comment_id) {
            // записать в таблицу ID пользователя и ID комментария
            \R::exec("INSERT INTO post_comment_votes (user_id, post_comment_id) VALUES ({$_SESSION['user']['id']}, {$comment_id})"); 
        }
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Stalinko
PHP'шник и фрилансер до мозга костей
По-хорошему, такое должно контролироваться на уровне БД - добавь уникальный ключ:
ALTER TABLE post_comment_votes ADD UNIQUE KEY `likes` (user_id, comment_id);


При записи лайков пользуйся конструкцией "INSERT IGNORE INTO ...". Она будет записывать лайки только если их ещё нет в БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы