这是我的控制器,用于将行发送到模型:
function excluir(){
$codcliente = $this->input->post('codcliente');
$this->load->model("Cliente_class");
$this->Cliente_class->excluirCliente($codcliente);
redirect('cliente/busca');
}
我的模特:
function excluirCliente($codcliente){
$this->db->delete('cliente', array('codcliente' => $codcliente));
}
我的表(视图):
<form action="#" method="POST" id="form">
<div style="float: left;">
<input type="button" onclick="cadastro();" value="Novo cliente" name="botao" class="btn btn-primary">
</div>
<div class="dataTable_wrapper">
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>Código</th>
<th>Nome</th>
<th>Cidade</th>
<th>Telefone</th>
<th> </th>
</tr>
<tbody>
<?php
foreach ($records as $row){ ?>
<tr>
<td><input name="codcliente" id="codcliente" value="<?php echo $row->codcliente ?>"></td>
<td><?php echo $row->nome ?></td>
<td><?php echo $row->cidade ?></td>
<td><?php echo ($row->telefone == null) ? "-" : $row->telefone ?></td>
<td><center><input type="button" onclick="excluir();" value="Delete"></td>
</tr>
<?php } ?>
</tbody>
</form>
</thead>
</table>
和我的JS:
function excluir(){
document.forms['form'].action = "<?php base_url();?>excluir";
document.forms['form'].submit();
}
它的工作正常,但代码正在删除与html上的表相关的最后一行。我也使用了这个订单,看看是什么东西被删除了,它的工作原理相同......
我不知道什么是错的
答案 0 :(得分:1)
您的问题是您为所有行使用相同的表单名称name="codcliente"
,然后在删除时提交整个表单。服务器看到codcliente
的最后一个值,它将是你的最后一行,因此删除它。
要修复,我建议您为所有行字段的每一行使用唯一的表单名称。例如。而不是name="codcliente"
使用name="codcliente_<?php echo $row->id ?>
&#34;。然后当你发布到服务器删除时,在删除按钮上使用data-name=<?php echo $row->codcliente ?>
,在onClick处理程序中使用$(this).data(&#39; name&#39;)来获取唯一的名称字段并将其发布到服务器。我建议你使用id而不是名字。