2013-03-12 142 views
-1

我想在我的項目中建立一個簡單的刪除功能,從表中刪除數據。我無法弄清楚它爲什麼不起作用。我使用codeigniter用戶指南來幫助我解決這個問題。我收到一個錯誤,不知道爲什麼。這裏是我的控制器,模型和視圖進行刪除:Codeigniter刪除功能不工作

一個PHP錯誤遇到

嚴重性:注意

消息:未定義的屬性:stdClass的:: $ ID

型號

function delete() 
{ 
    $this->load->database(); 
    $tables = array('info', 'info2'); 
    $this->db->where('id', 1); 
    $this->db->delete($tables); 

} 

控制器

function del($tables){ 


if((int)$tables > 0){ 
      $this->info_model->delete($tables); 
} 

$data = $this->info_model->delete(); 
$data['query'] = $this->result_model->delete(); 

$this->load->view('info_view',$data);  
} 

視圖

//this line gives me the error 

<td><?php echo anchor('info_controller/del' . $row->id,'Delete')?> </td> 

EDIT

我用這個教程使這個

http://www.phpeveryday.com/articles/CodeIgniter-Form-Centralizing-$data-P291.html 
+0

您的模型函數沒有任何參數接受,那麼它可能調用'$ this-> info_model-> delete($ tables);'? – Red 2013-03-12 09:55:53

+0

把條件像ifset($ row-> id)並檢查。這個變量是不存在的 – 2013-03-12 09:56:38

+0

我daunt知道我很綠,這可以解釋更多關於這個 – user2143150 2013-03-12 09:56:39

回答

2

在控制器導入模型這樣

$this->load->model('deletion_model'); 

然後調用deletion_model的方法

$this->deletion_model->delete($id); 

確保裝入模型。

之後,我建議你傳遞id的值作爲字符串。

$this->db->where('id', '1'); 

OR

,如果你不使用靜態值

$this->db->where('id', $id); 

使用提供給該函數的變量,請閱讀指導正確

http://ellislab.com/codeigniter/user-guide/database/active_record.html#delete

你也可以檢索要刪除的記錄的ID使用

$id=$this->uri->segment(3); // depending on which segment the id is 
-1
  1. 我的控制器中沒有看到任何$row對象,儘管您在視圖中使用它:$row->id
  2. 您的模型沒有返回任何內容。
  3. 如果刪除指定的行,則$object->id將不復存在。
  4. 您的視圖中的鏈接表明您要顯示刪除鏈接,但是您在控制器中使用該視圖來處理實際的刪除操作。

編輯: 因爲你嘗試通過查詢結果在您的視圖進行迭代,$data['query']從您的控制器應指向一個select語句。

+0

我確實有<?php foreach($ query as $ row ):?><?php endforeach; ?>在我看來忘了包括 – user2143150 2013-03-12 10:45:41

+0

解釋投票表決將是很好的。 @ user2143150查看更新的答案。 – 2013-03-12 10:51:13

+0

tnx爲你的幫助,但我仍然不理解你可以使用更多的例子 – user2143150 2013-03-12 11:10:07