簡體   English   中英

在Codeigniter中使用jQuery Ajax更新數據庫中的列

[英]updating a column in database using jQuery Ajax in codeigniter

我的數據庫中有一個Views列。 當單擊超鏈接訪問特定頁面時,我想用+1更新該列。 我正在使用jQuery,Ajax和codeigniter。 我無法做正確的事來觸發數據庫中的更新。 請協助我解決丟失的內容。

以下是我的代碼:

的HTML

<a href="<?php echo base_url(); ?>site/details/<?php echo $value->hid; ?>" name="hid" id="clicker">

JS

$(document).ready(function(){

      $("a#clicker").click(function(){

        $.ajax({
          type: "POST",
          url: "<?php base_url(); ?>site/traffic",
          success: function(data){
            alert("I got a view");
            console.log(data);
          }
        });
      });
});

控制者

public function traffic(){
    $id = $this->input->post("hid");
    $this->My_model->updateView($id);
}

模型

public function updateView($id = NULL, $data){
    $this->db->set('view', 'view+1');
    $this->db->where('id', $id);
    $this->db->update($this->table, $data);
}

您即將解決您的問題。

首先,在您的JQuery Ajax代碼中,我看不到data參數,該參數設置要發送的Post數據。 在您的情況下,您需要將“ hid”參數發送到PHP腳本,因此您必須通過以下方式進行指定:

<a href="<?php echo base_url(); ?>site/details/<?php echo $value->hid; ?>" name="hid" id="clicker" data-hid="<?php echo $value->hid; ?>">

請注意,我已將“ hid”添加到鏈接的屬性“ data-hid”。 現在,我們可以在JQuery中檢索用戶單擊的鏈接的“隱藏”,以便將其發送到PHP腳本。

$("a#clicker").click(function(e){
    var hidClicked = e.currentTarget.data("hid"); // retrieve the hid by data attr.
    $.ajax({
        type: "POST",
          url: "<?php base_url(); ?>site/traffic",
          data: { hid : hidClicked }, // pass it as POST parameter
          success: function(data){
            alert("I got a view");
            console.log(data);
         }
     });
 });

現在,在您的PHP代碼中,您可以通過以下方式檢索被單擊元素的“隱藏”

public function traffic(){
    $id = $this->input->post("hid"); // this will return the hid POST parameter
    $this->My_model->updateView($id);
}

然后,我不知道為什么要在updateView方法中聲明“ $ data”參數。 如果要更新數據庫,則只需要單擊元素的“隱藏”即可。 所以方法是

public function updateView($id = NULL){
    $this->db->set('view', 'view+1');
    $this->db->where('id', $id);
    $this->db->update("NAME_OF_YOUR_TABLE");
}

那將是我的解決方案,也許有更好的解決方案。

您沒有將第二個必需參數$ data傳遞給updateView,這將導致異常。 此外,在此實例中不需要$ data,因為您已經在$ this-> db-> set()內部設置了要更新的參數。

您沒有將第二個必需參數$ data傳遞給updateView,這將導致異常。

此外,在此實例中不需要$data ,因為您已經在$this->db->set()內部設置了要更新的參數。

來自CodeIgniter 3文檔的示例:

$this->db->set('field', 'field+1');
$this->db->where('id', 2);
$this->db->update('mytable'); // gives UPDATE `mytable` SET `field` = 'field+1' WHERE `id` = 2

更新數據-CodeIgniter 3文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM