mysql — я хочу, чтобы у пользователя не было возможности поднять голос более одного раза

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

Вот мой PHP-код:

if (isset($_POST['heart']))
{
$identificateur = $_POST['hide'];
$Q = "UPDATE posts  SET avis = avis + 1 where id=$identificateur ";
$bdd->query($Q);
}

Это форма кнопки upvote:

<form action="p.php" method="POST">
<label><?php
if ($avis != 0)
{
echo $avis;
}
?></label>
<input type="hidden" value="<?php echo "$id" ?>" name="hide">
<input type="submit" value=" " id="heart" name="heart">
</form>

Каждый пользователь должен иметь право нажимать на иконку «Голосование вверх» только один раз.
Заранее большое спасибо.

3

Решение

Вам нужно иметь вторую таблицу, которая имеет два поля, post_id а также voter_id, (post_voter).post_id имеет внешний ключ, содержащий идентификатор таблицы сообщений и voter_id имеет внешний ключ к пользовательской таблице. В этой таблице указаны избиратели сообщения и сообщения, за которые проголосовали пользователи. Когда пользователь пытается поднять голос, вы должны проверить post_voter таблица и получить количество строк, которые имеют post_id равно идентификатору поста и voter_id равно идентификатору пользователя. Если count = 0, это означает, что пользователь еще не проголосовал за сообщение, и он может проголосовать за него сейчас. В противном случае, пользователь уже проголосовал за сообщение, и он не может его снова проголосовать.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]