我想像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>
答案 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
,请注意这一点。