Я работаю в небольшой социальной сети с 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>
Каждый пользователь должен иметь право нажимать на иконку «Голосование вверх» только один раз.
Заранее большое спасибо.
Вам нужно иметь вторую таблицу, которая имеет два поля, post_id
а также voter_id
, (post_voter
).post_id
имеет внешний ключ, содержащий идентификатор таблицы сообщений и voter_id
имеет внешний ключ к пользовательской таблице. В этой таблице указаны избиратели сообщения и сообщения, за которые проголосовали пользователи. Когда пользователь пытается поднять голос, вы должны проверить post_voter
таблица и получить количество строк, которые имеют post_id
равно идентификатору поста и voter_id
равно идентификатору пользователя. Если count = 0, это означает, что пользователь еще не проголосовал за сообщение, и он может проголосовать за него сейчас. В противном случае, пользователь уже проголосовал за сообщение, и он не может его снова проголосовать.
Других решений пока нет …