I have a form with below layout in codeigniter:
<input type="text" name="product">`<input type="text" name="cost">`
The form has several rows with the same input names. Have tried several suggestions such as Batch creation and this thread here but not working out
Use array of same textboxes name for batch insert
insert_batch
function insert multiple data at a time to table in codeigniter
view page
<form action="<?=base_url('Test_c/insert_data')?>" method="post">
<div class="col-sm-12">
<input type="text" name="product[]"><input type="text" name="cost[]">
</div>
<div class="col-sm-12">
<input type="text" name="product[]"><input type="text" name="cost[]">
</div>
<div class="col-sm-12">
<input type="text" name="product[]"><input type="text" name="cost[]">
</div>
<div class="col-sm-12">
<input type="text" name="product[]"><input type="text" name="cost[]">
</div>
<div class="col-sm-12">
<input type="text" name="product[]"><input type="text" name="cost[]">
</div>
<input type="submit" name="submit" value="submit">
</form>
controller function
function insert_data() {
$product = $this->input->post('product');
$cost = $this->input->post('cost');
$insert_array = array();
for ($i=0; $i < count($product); $i++) {
$tmp = array();
$tmp['product'] = $product[$i];
$tmp['cost'] = $cost[$i];
$insert_array[] = $tmp;
}
$this->db->insert_batch('test', $insert_array);
//echo $this->db->last_query();
}
<input type="text" name="product[]">
<input type="text" name="cost[]">
Controller:
function insertData() {
$product = $this->input->post('product');
$cost = $this->input->post('cost');
foreach($product as $key=>$val){
$data = array(
'product' =>$val,
'cost' =>$cost[$key]
);
}
$this->db->insert_batch('table_name', $data);
}
You need to create a post array like so:
<input type="text" name="product[]">
<input type="text" name="cost[]">
Then you can foreach your post and insert_batch or several normal insert();
View
<input type="text" name="product[]"><input type="text" name="cost[]">
Controller
$arrayOne = $this->input->post('product'); //array(1,2,4);
$arrayTwo = $this->input->post('cost'); //array(22,44,55);
$c = array_combine($arrayOne,$arrayTwo ); // output:array(1=>22,2=>44,4=>55)
foreach($c as $key=>$val){
$data = array(
'product_id' => $key ,
'cost' => $val
);
$this->db->insert('TABLENAME', $data);
}