我发现了类似的问题但是,我找不到任何适合我情况的答案。
使用Codeigniter: 我有一个产品的数据库表和一个库存的数据库表。我想在我的网站上显示一个html表,每一行都是一个产品。我已经包含了一张图片来帮助解释。
提交后,我想将每个产品数据行插入数据库中的单个行。
这是我最简单的控制器...
CONTROLLER ----------------------------------
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();
}
INSERT INV MODEL ------------------------------------------
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页完整的代码......但是如果你想看到我没有展示的任何东西请告诉我......
任何和所有的帮助非常感谢...我已经在这个工作了几个星期......
答案 0 :(得分: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]);