2017-07-25 39 views
1

我想實現這個like和不同於codeigniter。我可以在普通的php中使用下面的代碼來做到這一點,但我不明白爲什麼它不能在codeigniter中工作,這是我的數據庫表和我的模型視圖和控制器。任何幫助都將得到滿足。謝謝。喜歡不同於codeigniter中的函數

職位表

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; 

樣不像表

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; 

jQuery的文件

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 
     } 
    } 
    ); 

這是我的模型 「Post_model.php」

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'; 
    } 
} 

這是我的看法文件

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

這是我的控制器 「post.php中」

public function likeItem() 
{ 
    $this->usermodel->itemLike(); 
} 
+0

您是否檢查日誌? –

+0

什麼時候是UnLike? –

+0

你試圖在你的數據庫被調用時發佈到'like -like':'like_unlike' –

回答

0

1 : Post name錯配data : "postId=" + post_id + "&purpose=" + purpose,

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

變化

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

第二:傳遞數據像下面和變量名是post_idpostId

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

注:變量名是case sensitive照顧約那個。

+0

什麼也沒有發生。如果你有更好的扭動方式,你可以通過謝謝 – King

+0

我有。我正在嘗試使用會話獲取user_id,以便用戶只能使用一次。但是當我點擊像按鈕沒有發生在屏幕上或數據庫 – King

+0

控制檯中是否有任何錯誤? @King – JYoThI

1

在您的數據庫模式中,您提到了表like_unlike,並且您正在將數據保存到表like-unlike。 此外,您可以設置強制列purpose,你是不是在這裏傳遞任何值:

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

您不必如果使用默認值來傳遞數據。您還需要記住,根據您的數據庫架構,列purpose僅保存整數值。 除此之外,您還需要修改@JYoThI提供的代碼

+0

我很困惑,請打破這一點。 – King

+0

我有。我正在嘗試使用會話獲取user_id,以便用戶只能使用一次。但是當我點擊類似按鈕時,屏幕或數據庫上沒有任何反應 – King