0

可能重复:
通过php数组将多行插入mysql

我正在尝试仅将填充的数据插入到数据库中。我的控制器

$code=$_POST['code'];
$rate=$_POST['rate'];
$quantity=$_POST['quantity'];
//$total=$_POST['rate']*$_POST['quantity'];
$count = count($_POST['code']);
for($i=0; $i<$count; $i++) {
    $data = array(
               'shop'=>$shop->$this->input->post('shop'),
               'code' => $code[$i], 
               'rate' => $rate[$i],
               'quantity' => $quantity[$i],
               'total' =>($rate[$i]*$quantity[$i])

           );
$this->load->model('buy_product_model');
$this->buy_product_model->add_product($data);

我有一个下拉列表来选择商店,我为该商店创建了 15 个输入字段。这些字段在上面。问题是如果我只填写一个或两个值,它会在数据库中创建 15 行并重复 15 次店名。谁能解决这个问题。

4

3 回答 3

0

而不是在控制器中操作 $_POST 像这样在模型中操作它

你的控制器

$this->load->model('buy_product_model');
$this->buy_product_model->add_product($this->input->post());

编辑

确保 html 表单中的表单字段是这样的数组形式

<input type="text" name="code[]" />

你的模型

public function buy_product_model($postdata){
   extract($postdata);
   $count = count($code);
   for($i=0; $i<$count; $i++) {
       $data = array(
               'shop'=>$shop,
               'code' => $code[$i], 
               'rate' => $rate[$i],
               'quantity' => $quantity[$i],
               'total' =>($rate[$i]*$quantity[$i])

           );
       $this->db->insert('[YOUR TABLE]', $data); 
   }
}

确保将 [您的桌子] 更改为您的

添加您在模型方法中的其余代码,add_product并像在控制器中所做的那样遍历循环。

编辑:

请检查 'shop'=>$shop->$this->input->post('shop')循环中的部分

于 2012-08-31T08:39:34.547 回答
0

根据您问题的这一部分:

我有一个下拉列表来选择商店,我为该商店创建了 15 个输入字段。这些字段在上面。问题是如果我只填写一个或两个值,它会在数据库中创建 15 行并重复 15 次店名。谁能解决这个问题。

这似乎是数据库设计的问题,而不是代码中的错误。如果您的表有一个名为Shop Name的列,并且您正在向其中插入数据,您重复该列十五次。

我建议将表格分解为并通过它们之间的连接进行链接,如下所示:

Table Shops:
ID
Name

Table Products:
ID
shopID // This links to the first table on shopID=ID
...  and so on for your *product* information
于 2012-08-31T08:42:42.613 回答
0

最后我修好了。这是我的看法

    <?php for($i = 1; $i <=10; $i++):?>
        <tr>
            <td>
                <?php echo $i;?>
            </td>

            <td>
            <input type="text" name="code[]" value="<?php echo '';?>" id="code" />
            </td>

            <td>
                <input type="text" name="rate[]" value="<?php echo '';?>" id="rate" />
            </td>
            <td>
                <input type="text" name="quantity[]" value="<?php echo '';?>" id="quantity" />
            </td>

        </tr>
        <?php endfor;?>

这是我的控制器

    if (empty($_POST)) 

    {

        $this->index();
    } 

else 
    {
        //insert to database
        $this->load->model('buy_product_model');
        $data= $this->buy_product_model->add_product();
        //echo "success";
        $this->index();
    }

模型//

   $data  = array();
        $todayDate = date('Y-m-d');
        for($i = 0; $i < count($_POST['code']); $i++)
            {
                if($_POST['code'][$i] != '')
                    {
                        $data[] = array(
                            'code' => $_POST['code'][$i],
                            'shop' => $_POST['shop'],
                            'rate' => $_POST['rate'][$i],
                            'quantity' => $_POST['quantity'][$i],
                            'total' =>( $_POST['rate'][$i]*$_POST['quantity'][$i]),
                            'date' => $todayDate
                            );
                    }
            }
                $dataCount = count($data);

                if($dataCount)
                {
                $this->db->insert_batch('purchase', $data);
                }

                return $dataCount;
于 2012-08-31T20:04:43.720 回答