喜欢 - 与codeigniter中的功能不同

时间:2017-07-25 10:52:55

标签: php jquery mysql ajax codeigniter

我想像codeigniter一样实现它。我可以使用以下代码在普通的php中完成它,但我不知道为什么它在codeigniter中不起作用是我的数据库表和我的模型视图和控制器。任何帮助都会受到批评。感谢。

发布表

{{budget | currency:'USD':true:"1.0-2"}}

喜欢 - 不像表格

CREATE TABLE `posts` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `content` text NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Jquery文件

CREATE TABLE `like-unlike` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `post_id` int(11) NOT NULL,
  `purpose` int(2) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是我的模特" Post_model.php"

function likeItem(post_id)
{
    if ($("#likeItem_" + post_id).text() == "Like")
    {
        $("#likeItem_" + postid).html('Unlike');
        var purpose = "Like";
    } else
    {
        $("#likeItem_" + post_id).html('Like');
        var purpose = "UnLike";
    }
    $.ajax({
        type: "POST",
        url: "<?php echo base_url('posts/likes');?>",
        data: "postId=" + postId + "&purpose=" + purpose,
        success: function (data)
        {
            // do seomthing here with data
            // console.log(data) --> to see data return or not
        }
    }
    );

这是我的观看文件

public function itemLike() {
    $id = $this->session->userdata('user_id');
    $postId = $this->input->post('post_id');
    $purpose = $this->input->post('purpose');
    if ($purpose == "Like") {
        // echo 'test';
        // exit();
        $data = array(
            "user_id" => $id,
            "post_id" => $postId,
        );
        $this->db->insert('like', $data);
    } else {
        echo 'failed';
    }
}

这是我的控制器&#34; Post.php&#34;

<li><a class="like-unlike" href="#" id="likeItem_{$item['post_id']}" onclick="likeItem({$item['post_id']})">Like</a></li>

2 个答案:

答案 0 :(得分:1)

在数据库架构中,您提到了表like_unlike,并且您将数据保存到表like-unlike中。 此外,您将列purpose设置为必需,并且您没有在此处传递任何值:

$data = array(
"user_id" => $id,
"post_id" => $postId,
);

如果使用默认值,则无需传递数据。您还需要记住,列purpose仅包含根据数据库架构的整数值。 除此之外,您还需要修改@JYoThI

提及的代码

答案 1 :(得分:0)

第1名帖子name不匹配data : "postId=" + post_id + "&purpose=" + purpose,

$postId = $this->input->post('post_id');

更改为

$postId = $this->input->post('postId');

第二名传递如下数据,变量名称为post_id而不是postId

data : {postId:postid,purpose:purpose},

注意:变量名称为case sensitive,请注意这一点。