2017-04-27 124 views
1

我是Codeigniter和PHP的新手,我試圖製作一個選擇表單,我可以使用提交按鈕刪除數據庫中的考試。Codeigniter從選擇下拉列表中刪除數據庫數據

這些代碼行我有:

視圖(examselect_view.php)

<form name='selectexam' action="<?php echo base_url() . "index.php/exam/removeExam/" . $exams->exam_id; ?>" method='post'> 
    <select class="form-control"> 
     <?php 
     foreach($exams as $row) 
     { 
      echo '<option value="'.$row->exam_id.'">'.$row->examname.'</option>'; 
     } 
     ?> 
    </select> 
    <input type="submit" name="delete" value="Verwijderen" class="btn btn-info" /> 
</form> 

控制器(Exam.php)

function removeExam($id) { 
// uri segment 3 = index.php/exam/examName/NUMBER OF ID 
$id = $this->uri->segment(3); 
$this->exam_model->removeExam($exam_id); 
} 

模型(Exam_model.php)

function removeExam($id){ 
$this->db->where('exam_id', $id); 
$this->db->delete('exam'); 
} 

這是th錯誤我從我的觀點來看。

Message: Trying to get property of non-object 

我知道問題出在表單動作的某個地方。但我不知道如何改變它。

+0

'$ exam_id'在控制器中未定義。它''ID' – Saty

+1

我猜它是抱怨'$考試 - > exam_id;'在你的表單動作。 $考試是一系列考試對象? –

+0

你應該通過帖子傳遞id並將其捕獲到那裏。並且在做任何事之前還要檢查是否發佈了某些內容。如果您希望像您一樣進行操作,只需轉到正確的網址即可刪除任何人。例如, –

回答

0

我現在無法測試此功能。但是,應該沿用這個方法。

在您看來,有以下形式:

<form name='selectexam' action="<?php echo base_url() . "index.php/exam/remove/";?>" method='post'> 
    <select class="form-control" name="exam_id"> 
     <?php 
     foreach($exams as $row) 
     { 
      echo '<option value="' . $row->exam_id . '">' . $row->examname . '</option>'; 
     } 
     ?> 
    </select> 
    <input type="submit" name="delete" value="Verwijderen" class="btn btn-info" /> 
</form> 

在你的控制器:

function remove() { 

    if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
     $exam_id = $_POST['exam_id']; 
     $this->exam_model->removeExam($exam_id); 

     redirect('/exam/'); 
    } 
} 

作爲一般規則,從來沒有隻根據URL的破壞性變化。如果您不小心,網站索引機器人(例如google)可能會意外刪除所有考試。

+0

不要忘記將'name =「exam_id」'添加到'select'-element,否則它不會被髮布。目前,表單實際上並未發佈任何數據。 –

+0

@MagnusEriksson感謝您的檢查。可能有點匆忙的答案。 –

+1

Ingen orsak。 :-) –

0

你有問題<?php echo base_url() . "index.php/exam/removeExam/" . $exams->exam_id; ?>可能是你的$exams是數組不是對象。

相關問題