在数据库codeigniter中插入多行


Inserting multiple rows in database codeigniter

我对插入数据有一些问题。它将只插入运单号数据,但数量始终相同。请检查我的代码-我认为模型是错误的。

控制器

public function create_cargo_manifest(){
   $core_model = new Core_m;
   $core_model->save_cargo_details($this->input->post());
   redirect('core/cargo_lookup/');
}

型号

function save_cargo_details(){
$quantity =  $this->input->post('quantity');
$waybilldate =  $this->input->post('waybilldate');
$data = array();
foreach($this->input->post('sys_wbdetails') as $sys_wbdetails) {
$data[] = array(
        'waybillno' => $sys_wbdetails,
        'quantity' => $quantity,
        'waybilldate' => $waybilldate,
       );
 }
   return $this->db->insert_batch('sys_cargodetails', $data); 
}

查看

<?php foreach($waybill_header as $waybill_header) { ?>
  <?php echo form_open('core/create_cargo_manifest'); ?>
    <td><input type="checkbox" name="sys_wbdetails[]" value="<?php echo $waybill_header->waybillno; ?>"></td>
    <td><?php echo $waybill_header->waybillno; ?></td>
    <td><?php echo $waybill_header->waybilldate; ?><input type="hidden" value="<?php echo $waybill_header->waybilldate; ?>" name="waybilldate"></td>
    <td><input type="text" size="5" value="<?php echo $waybill_header->quantity; ?>" name="quantity"></td>
    <td><input type="submit" value="save"></td>
  <?php } ?>
<?php form_close(); ?>

所有数量输入都有相同的名称:quantity。所以你只提交了表单中的最后一个值。你需要为这些输入使用一个数组(quantity[]),就像为你的复选框一样。您可能希望对waybilldate输入执行同样的操作。

<td><input type="text" size="5" value="<?php echo $waybill_header->quantity; ?>" name="quantity[]"></td>

然后在PHP中,类似的东西:

$data = array();
// Count distinct entries in the form
$count = count($this->input->post['sys_wbdetails']);
for($i=0; $i < $count; $i++) {
    $data[] = array(
        'waybillno' => $this->input->post['sys_wbdetails'][$i],
        'quantity' => $this->input->post['quantity'][$i],
        'waybilldate' => $this->input->post['waybilldate'][$i],
       );
}

编辑:如果你想用一种干净的方法来跟踪表格输入的去向,也可以看看这个答案。