使用复选框codeigniter更新datagrid上的一个数据

时间:2013-08-23 02:38:11

标签: codeigniter

当我使用复选框更新每个单个或一个数据时,我遇到了一些问题。我想要做的只是更新所选的复选框更新。如果未选中复选框,如何阻止foreach运行。

这是我的模特

function save_cargo_details() {
    $data = array();

    $waybillno = $this->input->post('waybillno');
    $quantity = $this->input->post('quantity');
    $waybilldate = $this->input->post('waybilldate');
    $declared_value = $this->input->post('declared_value');
    $consignee = $this->input->post('consignee');


    $count = count($waybillno);



    if(empty($waybillno)){

    }else{



        for ($i = 0; $i < $count; $i++) {
            $data = array(
                'waybillno' => $waybillno[$i],
                'quantity' => $quantity[$i],
                'waybilldate' => $waybilldate[$i],
                'declared_value' => $declared_value[$i],
                'consignee' => $consignee[$i],

            );

            // SUBRACT REMAINING_QUANTITY //


            $this->db->select('wd.remaining_qty');
            $this->db->where('wd.waybillno',$waybillno[$i]);
            $this->db->from(self::WAYBILL_DETAILS_TABLE. " as wd");
            $query = $this->db->get()->row();
            $qty = $query->remaining_qty; 

            $remaining = abs($data['quantity'] - $qty);

           $this->db->where('waybillno',$waybillno[$i]);
           $this->db->set('remaining_qty',$remaining);
           $this->db->update(self::WAYBILL_DETAILS_TABLE);
           // INSERT DATA //
           $this->db->insert('sys_cargodetails', $data);
           $this->session->set_flashdata('success', '<p id="success_message">Record has been successfully saved.</p>');

        }
    }
 }

这是我的控制器

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

这是我的观点

<?php foreach($waybill_header as $waybill_header) { ?>
   <?php echo form_open('core/create_cargo_manifest'); ?>
<tr style="text-align: center;">
    <td><input type="checkbox" name="waybillno[]" 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->remaining_qty; ?>" name="quantity[]">
        <input type="hidden" value="<?php echo $waybill_header->declared_value; ?>" name="declared_value[]">
        <input type="hidden" value="<?php echo $waybill_header->consignee; ?>" name="consignee[]">
    </td>
</tr>



 <?php } ?>

1 个答案:

答案 0 :(得分:0)

您可以在数据库中为复选框指定一个额外字段。如果选中该复选框,则取值为1,如果未选中0作为值。根据您的要求给出默认值。如果您想要每个复选框否则,将检查1作为默认值。否则。您只需要在foreach循环之前设置一个条件,即如果复选框的值为1则运行foreach循环,否则不运行。

相关问题