I am working on a small social network with PHP and MySQL I want the users to have the possibility to upvote a post, and I already did this but the problem is that I want the user to be able to upvote only one time.
Here is my PHP code:
if (isset($_POST['heart']))
{
$identificateur = $_POST['hide'];
$Q = "UPDATE posts SET avis = avis + 1 where id=$identificateur ";
$bdd->query($Q);
}
This is the form of the upvote button :
<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>
Every user should have the right to click on the up vote icon only once. Thank you very much in advance.
You need to have a second table, that has two fields, post_id
and voter_id
. (post_voter
).post_id
has a foreign key containing the id of the post table and voter_id
has foreign key to the user table. This table specifies voters of a post and posts that users have voted for. When a user tries to upvote a post, you must check post_voter
table and get count of rows which have the post_id
equal to the post's id and voter_id
equal to the user's id. If count = 0, this means the user has not upvoted the post, yet, and he can vote for it now. Otherwise, the user upvoted the post already and he can't upvote it again.