我正在尝试仅将填充的数据插入数据库。我的控制器
$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次重复商店名称。任何人都可以解决这个问题。
答案 0 :(得分: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')
部分
答案 1 :(得分:0)
根据你问题的这一部分:
我有一个下拉列表来选择商店和那个商店我创建了15个输入字段。字段在上面。问题是如果我只填充一个或两个值它创建15行数据库和15次重新商店名称。任何人都可以解决这个问题。
这似乎是数据库设计的问题,而不是代码中的错误。如果您的表格中有一个名为商店名称的列,并且您要将数据插入其中,那么您将重复十五次。
我建议将表分解为并通过它们之间的连接进行链接,如下所示:
Table Shops:
ID
Name
Table Products:
ID
shopID // This links to the first table on shopID=ID
... and so on for your *product* information
答案 2 :(得分: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;