Javascript 我如何更改代码,以便用户只能喜欢该帖子一次?

Javascript 我如何更改代码,以便用户只能喜欢该帖子一次?,javascript,php,html,jquery,ajax,Javascript,Php,Html,Jquery,Ajax,我想建立一个类似的系统,这就是我目前所拥有的。我想不出怎样才能让它只增加一次有人能帮我吗?我觉得我可能不得不使用会话变量,但我不确定。 index.php <?php $con = mysqli_connect('localhost', 'root', '','phplikes'); $query = "SELECT * FROM meme_vote ORDER BY vote DESC"; $res = mysqli_query($con,

我想建立一个类似的系统,这就是我目前所拥有的。我想不出怎样才能让它只增加一次有人能帮我吗?我觉得我可能不得不使用会话变量,但我不确定。 index.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>

模因投票制

因为您已经有一个用户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);
}

因为您已经有一个用户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);
}

然而,它仍然让我喜欢上了这篇文章:meme_选民人数增加了多少?代码是否进入了我的if块?查询正在向meme_投票者发送数据,如果这是您的意思,请尝试以下操作:
if(mysqli_受影响的行($con)>0){
Works!!非常感谢!!但是它仍然让我喜欢这篇文章多次是meme_投票者被填充了吗?代码是否进入了我的if块?查询正在向meme_投票者发送数据,如果这是你的意思,请尝试以下操作:
if(mysqli_impact_rows($con)>0){
Works非常感谢!!