我正在尝试学习codeigniter,我做的第一件事是制作简单的添加编辑删除功能......
我无法调用控制器的输入按钮名称来删除整行表格。
模型
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Delete_model extends CI_Model{
public function delete($data){
$this->db->delete('record_tbl', $data);
}
}
控制器
class Delete_controller extends CI_Controller {
public function index()
{
$this->delete();
}
public function delete()
{
$data = array();
$this->load->model('fetch');
$query = $this->fetch->getData();
if ($query)
{
$data['results'] = $query;
}
$this->load->view('delete', $data);
}
public function delete_data(){
$this->load->model('delete_model');
$where = $this->input->get('id');
$data['id'] = $where;
$this->delete_model->delete($data);
redirect('');
}
}
视图
<table border="1" width="100%">
<tr>
<th>Name</th>
<th>Address</th>
<th>Phone Number</th>
<th>Status</th>
<th></th>
</tr>
<?php foreach($results as $row) { ?>
<tr>
<td><?=$row->name?></td>
<td><?=$row->addr?></td>
<td><?=$row->pnum?></td>
<td><?=$row->status?></td>
<?php echo form_open('delete_controller/delete_data') ?>
<td style="text-align: center"><input name="<?=$row->id?>" type="submit" value="delete"></input>
</form>
</td>
</tr>
<?php } ?>
</table>
答案 0 :(得分:1)
您的表单将执行POST而不是GET请求。所以而不是做
$where = $this->input->get('id');
你想做
$where = $this->input->post('id');
另外,为什么不将$row->id
的值传递给控制器,以便了解要定位的输入字段。所以在你看来做
<?php echo form_open('delete_controller/delete_data/' . $row->id) ?>
然后在您的控制器中
public function delete_data($id){
$this->load->model('delete_model');
$where = $this->input->post($id);
//...
答案 1 :(得分:0)
这将是$this->input->post ('id')
,就像@Pattle所说的那样,你正在使用表单的“name”属性作为ID。我通常做的是使用名为“id”的隐藏字段(请参阅CI文档中的form_hidden()帮助程序)和您想要的值($ row-&gt; id)。
<?php echo form_hidden ('id', $row->id); ?>
答案 2 :(得分:0)
而不是$this->input->get('id');
使用$this->input->post('id');
。
为简化起见:我可能建议使用<button></button>
作为删除功能等控制按钮(它也适用于编辑/更新FYI)。
因为您可以将属性添加到按钮value = $id
和name=delete
。只需添加<input type='submit'>
type='submit'
所以
查看强>
<table border="1" width="100%">
<tr>
<th>Name</th>
<th>Address</th>
<th>Phone Number</th>
<th>Status</th>
<th></th>
</tr>
<?php foreach($results as $row) { ?>
<tr>
<td><?=$row->name?></td>
<td><?=$row->addr?></td>
<td><?=$row->pnum?></td>
<td><?=$row->status?></td>
<?php echo form_open('delete_controller/delete_data') ?>
<td style="text-align: center">
<?php
echo "<button type='submit' name='delete' value='" . $row->id . "'>" ;
echo "DELETE" ;
echo "</button>" ;
?>
</form>
</td>
</tr>
<?php } ?>
</table>
然后获取要删除的行的id非常简单。只需在您的控制器$id = $_POST['delete'];
或$id = $this->input->post('delete');