如何限制用户只向mysql插入一次数据

sc4hvdpw  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(300)

我想建立一个博客女巫有喜欢和不喜欢的按钮。我的问题是,当用户点击“喜欢”按钮时,我实际上不能限制他不这样做,也不能一次又一次地不喜欢帖子。我使用ajax( $.post )使用jquery插入数据。
我该怎么做?我需要改变我的数据库结构吗?

var did_liked = 0;
$("#insert_like").click(function (e) {
    var post_id = $("#post_id").val();
    did_liked +=1 ;
    if (did_liked == 1) {
        $.post("./inc/like.php", {
            post_id_like: post_id
        }, function (data, status) {
            $("#insert_like").text(data);
        });
    }
});
$("#insert_dislike").click(function (e) {
    var post_id = $("#post_id").val();
    $.post("./inc/like.php", {
        post_id_dislike: post_id
    }, function (data, status) {
        $("#insert_dislike").text(data);
    });
});

did_liked 我可以防止用户不喜欢它再次,但如果他刷新页面,他可以这样做。
我的数据库:
在这里

lb3vh1jj

lb3vh1jj1#

以下是一些避免用户按文章添加多个“喜欢/不喜欢”的方法:
1/创建一个 like 具有唯一id的表:

TABLE LIKE
=====================================
id_like | id_user | id_article | like

具有唯一id id_user and id_article 所以同一个用户不能两次又两次地喜欢/不喜欢同一篇文章 like = 1 or 0 2/在插入之前,检查是否已经有一个类似的
在php中,在执行插入之前:

select /* your request to check if you have a like for this user in this article */;

然后检查你是否有什么发现:

if (count ( /* what you fetch */) === 0) {
    /* you insert because you have no data */
} else {
    /* you don't insert */
}

顺便说一句,你应该加上

$("#insert_like").attr('disabled', true);
$("#insert_dislike").attr('disabled', true);

当用户点击,所以他不能多次点击,并删除 disabled 当ajax调用完成时。

wfveoks0

wfveoks02#

用userid、likedpostid、dislikedpostid列创建一个表。检查此项后:

SELECT LikedPostID, DislikedPostID FROM tblUserLikes WHERE userID='$user'

在php中

if ($LikedPostID == $thisPostID || $DislikedPostID == $thisPostID) { // make a like or dislike button to disable state }

相关问题