插入带有两个值代码点火器的复选框



在我的视图中:

<form  method="post" action="<?php echo base_url(); ?>Data/Penilaian/Selected">
<table class="table datatable-responsive" id="example">
<thead>
<tr>
<th><button class="btn btn-info">Submit</button></th>
<th>No</th>
<th>Kendaraan</th>
<th>Plat Nomor</th>
<th>Total</th>  
</tr>
</thead>
<tbody>
<?php 
$no=1; 
if(!empty($getsifat)) {
foreach ($getsifat as $kr_key => $kendaraan) { ?>
<tr>
<td>
<?php foreach ($kendaraan['sub']['count'] as $data)     { ?>
<input type="checkbox" name="id_kendaraan[]" value="<?php echo $kendaraan['id_kendaraan'] ?>">
<input type="hidden" name="total[]" value="<?php echo $data['total'] ?>" > //this my problem
<?php } ?>
</td>
<td><?php echo $no ?> </td>
<td><?php echo $kendaraan['nama'] ?> </td>
<td><?php echo $kendaraan['platno'] ?></td>
<?php
foreach ($kendaraan['sub']['count'] as $data)     { ?>
<!-- <input type="hidden" name="total[]" value="<?php echo $data['total'] ?>"> -->
<td><?php echo $data['total'] ?></td>
<?php } ?>
</tr> 
<?php 
$no++; 
}
} 
?>
</tbody>
</table>
</form>

在视图中,我想插入$id_kendaraan$total

这是我的控制器:

function Selected(){
$id_kendaraan = $this->input->post('id_kendaraan');
$total = $this->input->post('total');
$data = array();
for ( $i = 0; $i < count( $id_kendaraan ); $i++ ) {
$data = array(
'id_kendaraan' =>  $id_kendaraan[$i],
'total' =>  $total[$i]
);
$this->PenilaianModel->TambahSelected($id_kendaraan, $data);
}
redirect('Data/Penilaian', 'refresh');
}

我的型号:

function TambahSelected($id_kendaraan, $data)
{
$this->db->where('id_kendaraan', $id_kendaraan);
$this->db->insert('tb_ranking', $data);
}

我想在数据库中插入$id_kendaraan和$total但是如果我尝试这个代码:视图中的examle:

id kendaraan value = 1, total value = 20
id kendaraan value = 2, total value = 35
id kendaraan value = 3, total value = 44

如果我选中$id_kendaraan 2并按submit,那么在我的数据库中,数据$id_kendaraan value=2,$total value=20是不正确的。。。在我的数据库中,这个数据应该是$id_kendaraan值=2,$total值=35

如果我尝试检查$id_kendaraan 3并按submit,在我的数据库中,数据$id_kendaraan value=3,$total value=20是不正确的。。。在我的数据库中,这个数据应该是$id_kendaraan值=3,$total值=44

如果我尝试检查$id_kendaraan 2,3并按submit,在我的数据库中,数据$id_kendaraan value=2,$total value=20和$id_kendaraan value=3,total value=35是不正确的。。。在我的数据库中,这个数据应该是$id_kendaraan值=2,$total值=35和$id_kendaraan价值=3,$totel值=44

谢谢你的帮助

之所以会发生这种情况,是因为隐藏数组将发送所有数据,但您的复选框将只发布选定的数组值。因此,密钥不匹配将发生在您的服务器端代码中。要解决这个问题,您需要唯一地提供数组键。

按如下方式重新排列前端代码。

<?php 
$no=1; 
if(!empty($getsifat)) {
$inputid = 0;
foreach ($getsifat as $kr_key => $kendaraan) { 
$attch1 = $attch2 = "";
foreach ($kendaraan['sub']['count'] as $data){
$attch1 .= '<input type="checkbox" name="id_kendaraan['.$inputid.']" value="'.$kendaraan['id_kendaraan'].'">';
$attch1 .= '<input type="hidden" name="total['.$inputid.']" value="'.$data['total'].'" >';
$attch2 .= '<td>'.$data['total'].'</td>';
$inputid++;
}
?>
<tr>
<td><?php echo $attch1 ?> </td>
<td><?php echo $no ?> </td>
<td><?php echo $kendaraan['nama'] ?> </td>
<td><?php echo $kendaraan['platno'] ?></td>
<?php echo $attch2 ?>
</tr> 
<?php 
$no++; 
}
} 
?>

像一样重写控制器

public function Selected(){
$id_kendaraan = $this->input->post('id_kendaraan');
$total = $this->input->post('total');
$data = array();
foreach ($id_kendaraan as $key => $value) {
$data = array(
'id_kendaraan' =>  $value,
'total' =>  $total[$key]
);
$this->PenilaianModel->TambahSelected($id_kendaraan, $data);
}          
redirect('Data/Penilaian', 'refresh');
}

注意:

  1. 您循环了两次相同的循环。我把它做成了一体。

  2. 在线您正在循环内打印。我想它会超出循环。

  3. 在插入上下文中不需要行CCD_ 3。

删除此行

$this->db->where('id_kendaraan', $id_kendaraan);

要更新值,应使用where

相关内容

  • 没有找到相关文章

最新更新