Система лайков В Php - PullRequest
0 голосов
/ 10 июля 2020

Эй, я хочу создать подобную систему в php Но у меня возникла проблема ...

Как я могу создать подобную систему, которая разрешает только один лайк для одного пользователя ??

Это мой код

<?php
if(isset($_POST['like'])){
    $q = "SELECT * FROM likes WHERE `username` = '".$_SESSION['recieveruser']."'";
    $r = mysqli_query($con, $q);
    $count  = mysqli_num_rows($r);
    if ($count == "0") {
        $q1    = "INSERT INTO likes (`username`, `likecount`)VALUES('".$_SESSION['recieveruser']."', '1')";
        $result1 = mysqli_query($con, $q1);
    } else {
        while($row = mysqli_fetch_array($r)) {
            $liked = $row['likecount'];
        }
        $likeus = ++$liked;
        $q2    = "UPDATE likes SET likecount='".$likeus."' WHERE username = '".$_SESSION['recieveruser']."'";
        $result2 = mysqli_query($con, $q2);
    }
}

дайте мне несколько советов

  • Я хочу только один лайк на пользователя

В этом коде каждый пользователь может поставить много лайков другому пользователю, но мне нужен только один лайк для одного пользователя, и я хочу отображать имя пользователя, поставившего лайк, если это возможно

Это только код пользователя ...

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Вы не должны использовать код, который вы разместили выше. Прежде всего, ваш код уязвим для SQL -инъекций, поэтому вам следует использовать подготовленные операторы (https://www.php.net/manual/de/mysqli.quickstart.prepared-statements.php). Во-вторых, переменные $ _SESSION являются устаревшими (https://www.php.net/manual/en/reserved.variables.session.php).

Предположим, вы хотите, чтобы пользователи могли лайкнуть сообщение только один раз. Тогда вместо столбца likecount вам понадобится post-id, который однозначно идентифицирует сообщение. Определите комбинацию post-id и username в качестве первичного ключа в вашей базе данных.

Теперь ваш код просто должен проверить, нашли ли вы username с соответствующим post-id в таблице likes .

Если вы не нашли username с соответствующим post-id в таблице, вам нужно INSERT, username и post-id

0 голосов
/ 10 июля 2020

Я создал подобную систему на своем сайте. В моей таблице лайков у меня были следующие столбцы:

  • Идентификатор понравившегося комментария
  • Идентификатор понравившегося пользователя
  • Идентификатор лайка (для удаления )

Когда пользователь нажимал лайк, я вставлял новую строку в таблицу лайков с двумя известными значениями. ID лайков был автоматически увеличен.

Чтобы показать количество лайков, я отфильтровал по идентификатору комментария и сгруппировал по идентификатору пользователей (на всякий случай). Число было получено с помощью count.

select count(*) from likes where comment_id = 666 group by user_id;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...