Codeigniter从选择下拉列表中删除数据库数据
我是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
我知道问题出在表单动作的某个地方。但我不知道如何改变它。
我现在无法测试此功能。但是,应该沿用这个方法。
在您看来,有以下形式:
<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)可能会意外删除所有考试。
不要忘记将'name =“exam_id”'添加到'select'-element,否则它不会被发布。目前,表单实际上并未发布任何数据。 –
@MagnusEriksson感谢您的检查。可能有点匆忙的答案。 –
Ingen orsak。 :-) –
你有问题<?php echo base_url() . "index.php/exam/removeExam/" . $exams->exam_id; ?>
可能是你的$exams
是数组不是对象。
'$ exam_id'在控制器中未定义。它''ID' – Saty
我猜它是抱怨'$考试 - > exam_id;'在你的表单动作。 $考试是一系列考试对象? –
你应该通过帖子传递id并将其捕获到那里。并且在做任何事之前还要检查是否发布了某些内容。如果您希望像您一样进行操作,只需转到正确的网址即可删除任何人。例如, –