javascript - 如何更改我的代码以使用户只能喜欢该帖子一次?
问题描述
我想做一个类似的系统,这就是我到目前为止所拥有的。我不知道如何让它只增加一次有人可以帮助我吗?我觉得我可能不得不使用会话变量,但我不确定。索引.php
<?php
$con = mysqli_connect('localhost', 'root', '','phplikes');
$query = "SELECT * FROM meme_vote ORDER BY vote DESC";
$res = mysqli_query($con, $query);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Meme Voting System</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<?php while($row = mysqli_fetch_assoc($res)){ $location = $row['video_location'];?>
<div class="col-md-4">
<div class="post">
<h4 class="post-title"><?php echo $row['title']?></h4>
<div id="postdesign">
<video src="<?php echo $row['video_location'] ?>" width="100%" height="240" controls></video>
</div>
<a href="javascript:void(0)" class="btn btn-info btn-lg">
<span class="glyphicon glyphicon-thumbs-up " onclick="like_update('<?php echo $row['id']?>')">Vote
(<span id="like_loop_<?php echo $row['id']?>"><?php echo $row['vote']?></span>)
</span>
</a>
</div>
</div>
<?php }?>
</div>
</div>
<script>
function like_update(id){
var cur_count = jQuery('#like_loop_'+id).html();
cur_count++
jQuery('#like_loop_'+id).html(cur_count);
jQuery.ajax({
url:'update_count.php',
type:'post',
data:'type=like&id='+id,
success:function(result){
}
})
}
</script>
</body>
</html>
update_count.php
<?php
$con = mysqli_connect('localhost', 'root', '', 'phplikes');
$type = $_POST['type'];
$id = $_POST['id'];
if($type=='like'){
$sql = "update meme_vote set vote=vote+1 where id=$id";
$sql2 = "update meme_vote set fake_vote=fake_vote+1 where id=$id";
}
$res = mysqli_query($con, $sql);
$res2 = mysqli_query($con, $sql2);
?>
也只是让你知道,我已经建立了会话变量,即。$_SESSION['user_id']
和`$_SESSION['用户名']
解决方案
由于您已经有一个 user_id,我假设您有一个 users 表。
您可以使用 meme_vote_id 和 user_id 列创建一个新表,并使用这两个字段创建一个唯一索引:
CREATE TABLE `meme_voters` (
`meme_vote_id` INT UNSIGNED NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
UNIQUE INDEX `unique_voter` (`meme_vote_id`, `user_id`)
);
然后当有人投票时:
$sql = mysqli_query($con,"SELECT COUNT(*) AS count FROM meme_voters WHERE meme_vote_id={$id} AND user_id={$_SESSION['user_id']}" );
$rs = mysqli_fetch_object($sql);
if ( $rs->count == 0 ) {
$sql = "INSERT INTO meme_voters (meme_vote_id, user_id) VALUES ({$id}, {$_SESSION['user_id']})";
mysqli_query($con, $sql);
$sql = "UPDATE meme_vote SET vote=vote+1 WHERE id=$id";
$res = mysqli_query($con, $sql);
}