我正在开发一个在Codeigniter中设计的项目。我是Codeigniter框架/ php的新手,并试图学习相同的东西。目前我有一个页面显示所有结果的表格。我希望能够删除我想要的任何行。我在模型和控制器中添加了这个功能,视图中有一个删除图标,但我不知道如何协调它。
模型中的功能:
function delete_row($job){
$querystr = 'delete from jobs where job = \''.$job.'\'';
$query = $this->db->query($querystr);
$arr = $query->result_array();
$query->free_result();
return ;
}
控制器中的功能:
public function delete(){
$this->load->model('Job');
$this->Job->delete_row($job);
$this->load->view('my_view');
return;
}
查看:(my_view.php(摘录))
if($key==='job'){
echo "<input type = 'image' src = '/home/Downloads/DeleteButtonSmall.png' width='20' height ='15' name ='delete_box' >"; }
该视图中包含许多功能,但上面这行是将删除图像设置为显示屏上可见的所有行。
请不要苛刻。关于如何使这项工作的任何建议。如果问题不清楚,请随时在评论中发布。我会尽量详细说明。
答案 0 :(得分:2)
你的问题不明确,但是如果你想在控制器中调用一个函数(在这种情况下是删除)而不刷新你需要使用ajax。并且为了给你更多的自由也使用jQuery。 这是一个简单的事情,可以给你一个想法。 http://jsfiddle.net/KV3WF/4/
如果你成功删除了控制器中的,你需要回显1,如果没有,你需要回显0。
我希望如果你发现任何不清楚的地方,我会帮助我答案。
如果你也想要你也不必在html中点击你可以在javascript中实现它
$( document ).ready(function() {
$('#category').click(function(){ //you just give an id to whatever you want to select plus you can do it by selecting a class instead id..... so you can give multiple buttons the same class("category")
//DO the same ajax function in the jsfiddle.
});
//end of doc.ready
});
P.S。尝试练习不从数据库中删除,添加一个名为(hide)的列,并在想要删除时将其更新为1(默认为0)。
答案 1 :(得分:1)
不确定我是否理解您的问题,但根据我的理解,您尝试根据所点击的数据删除一行
在您的模型上,您可以尝试使用Active Record Pattern进行删除
<强>模型强>
function delete_row($job){
$this->db->where('job', $job);
$this->db->delete('jobs');
// DELETE from jobs WHERE job = $job
}
在您的控制器上,您可以在此处从视图中传递您的标识符,以便它可以与模型进行交互。
<强>控制器强>
function delete($id = '')
{
$this->load->model->('Job');
$this->Job->delete_row($id);
redirect('to jobs view')
}
然后在您的视图中,您可以定义一个在控制器中调用delete方法的链接,并根据您在URI中传递的参数删除一行
说,如果你传递这样的东西
www.example.com/controller/delete/worker
它会删除job = worker
的行查看强>
你可以这样做吗<a href="controller/delete/worker">
<img src = '/home/Downloads/DeleteButtonSmall.png' width='20' height ='15' />
</a>