为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MYYA 2022-12-23 12:28:33
在我看来:<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值如果我检查了 $id_kendaraan 2 并按提交,在我的数据库中数据 $id_kendaraan value = 2, $total value = 20, 是不正确的......在我的数据库中这个数据应该是 $id_kendaraan value = 2, $total value = 35如果我尝试检查 $id_kendaraan 3 并按提交,在我的数据库中数据 $id_kendaraan value = 3, $total value = 20, 不正确...在我的数据库中这个数据应该是 $id_kendaraan value = 3, $total value = 44如果我尝试检查 $id_kendaraan 2,3 并按提交,在我的数据库中数据 $id_kendaraan value = 2, $total value = 20 and $id_kendaraan value = 3, total value = 35, is not correct... in my db此数据应为 $id_kendaraan 值 = 2,$total 值 = 35 和 $id_kendaraan 值 = 3,$total 值 = 44谢谢你的帮助
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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


重新排列您的前端代码,如下所示。


<?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');

  }

笔记 :


您正在循环两次相同的循环。我把它作为一个。


in line 您正在循环打印。我猜它会出现在循环之外。


插入上下文中不需要行$this->db->where('id_kendaraan', $id_kendaraan)。


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信