-2

我发现了类似的问题,但是我找不到任何适合我情况的答案。

使用 Codeigniter:我有一个产品数据库表和一个库存数据库表。我想在我的网站上显示一个 html 表格,每一行都是一个产品。我附上了一张图片来帮助解释。

产品表

提交后,我想将每个产品数据行作为单独的行插入数据库中。

这是我最简单形式的控制器...

控制器 - - - - - - - - - - - - - - - - -

function add_show_inventory() 
    {
        $data['products']=$this->product->get_products();

        $this->form_validation->set_rules('skuID', 'skuID', 'required');
        $this->form_validation->set_rules('brought-in', '"Brought In"', 'required');
        $this->form_validation->set_rules('finished-with', '"Finished With"', 'required');
        $this->form_validation->set_rules('deliveries', 'Deliveries');
        $this->form_validation->set_rules('add-1', 'Add 1');
        $this->form_validation->set_rules('add-2', 'Add 2');
        $this->form_validation->set_rules('band-comp', 'Band Comp');
        $this->form_validation->set_rules('other-comp', 'Other Comp');
        $this->form_validation->set_rules('half-sales', 'Half Sales');
        $this->form_validation->set_rules('half-amount', 'Half Amount');
        $this->form_validation->set_error_delimiters('<div class="error-module">', '</div>');

        if($this->form_validation->run()== FALSE){
            $this->load->view('header');
            $this->load->view('menu');
            $this->load->view('inventory/show-add-inventory', $data);
            $this->load->view('footer');
        } else {
            if($_POST){

                $data=array(
                    'brought-in'=>$_POST['brought-in'],
                );

                $this->inventory->insert_inventory($data);
                redirect(base_url().'shows/');
            }
        }
    }

获取产品模型-----------------------------

function get_products($num=10,$start=0) {
        $where= array('userID'=>$this->session->userdata('userID'), 'active'=>1);

        $this->db->select()
                         ->from('products')
                         ->where($where)
                         ->order_by('product','asc')
                         ->limit($num,$start);
        $query=$this->db->get();
        return $query->result_array();
    }

插入INV模型------------------------------------------

function insert_inventory($data) {
    $product_count= $this->db->count_all('products');

    for ($i=0; $i < $product_count; $i++) { 
        $this->db->insert('inventory', array('brought-in'=>$_POST['brought-in']));
    }
    return $this->db->insert_id();
}

看法 - - - - - - - - - - - - - - - - - - - - -

<form action="<?= base_url(); ?>inventories/add_show_inventory" method="post">

<?php if(!isset($products)){ ?>
    <p>There are currently no products posted yet.</p>
<?php } else {
    foreach($products as $row){
?>

    <td class="highlight">
        <input type="text" name="brought-in" value="0"> <!-- Brought In -->
    </td>

<?php } ?>

<input type="submit" name="submit" class="submit">

我从这里的代码中得到的结果是数据库的三个主菜,这是我想要的,但所有行都与表格中的最后一行相同......这意味着模型中的迭代只是在最后一行上迭代表格...

再次,该代码被精简为最简单的形式,因此我没有 3 页完整的代码...但是如果您想查看我没有显示的任何内容,请告诉我...

非常感谢任何和所有的帮助......我已经为此工作了几个星期......

4

1 回答 1

0

在您看来

<?php $i=0; foreach($products as $row){ ?>

    <td class="highlight">
        <input type="text" name="<?php echo 'brought-in'.$i; ?>" value="0"> <!-- Brought In -->
    </td>

<?php $i++;} ?>


现在在您的控制器中

if(!empty($_POST)){
    $count = $this->inventory->fetch_prods_count(); //Write this function in ur model.
    for($i=0;$i<$count;$i++) {
     $data[$i]=array('brought-in'=>$_POST['brought-in'.$i]);
    }

    $this->inventory->insert_inventory($data,$count);
    redirect(base_url().'shows/');
}


在模型中

function insert_inventory($data,$count) {
    for($i=0;$i<$count;$i++) {
       $this->db->insert('inventory', $data[$i]);
    }
    return $this->db->insert_id(); //Or just return 1; As U are not processing this value in your controller.
}


更新:
在您的控制器中:inventories/add_show_inventory功能,更改

$data = array($i=>array('brought-in'=>$_POST['brought-in'.$i]));

$data[$i]=array('brought-in'=>$_POST['brought-in'.$i]);
于 2013-04-24T15:02:17.950 回答