Reputation: 75
i am trying to insert multiple rows at once using Codeigniter
my html code for codeigniter view
<?= form_open(base_url() . 'home/create') ?>
<tbody>
<tr>
<td class="col-md-1 center-block">
<input type="text" name="id[]" value="1" class="form-control" />
</td>
<td>
<input type="text" placeholder="enter descreption" class="form-control" name="desc[]" />
</td>
<td class="col-md-2 center-block">
<input id="space" onkeyup="sumPrice()" type="number" class="form-control" name="space[]" />
</td>
<td>
<select onchange="sumPrice()" class="selectpicker price" data-live-search="true" data-width="100%" name="price[]" data-header="Select cost">
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
</td>
<td class="total_price col-md-1">
<input type="number" class="form-control" name="total[]" value="1000" />
</td>
<td>
<button class="btn btn-danger center-block remove-row"><span class="glyphicon glyphicon-remove"></span> Remove</button>
</td>
</tr>
</tbody>
</table>
<input type="submit" value="insert" class="btn btn-success" />
</form>
<button class="btn btn-success append-row"><span class="glyphicon glyphicon-plus-sign"></span> Add new row</button>
and i am using jQuery to insert new row in the table
here is js
the code
$('.append-row').click(function() {
$("table tbody").append
('<tr><td class="col-md-1 center-block"><input type="text" name="id[]" value="' + row_id_val++ + '" class="form-control" /></td> <td><input type="text" placeholder="enter descreption" class="form-control" name="desc[]" /></td> <td class="col-md-2 center-block"><input id="space" onkeyup="sumPrice()" type="number" class="form-control" name="space[]" /></td> <td> <select onchange="sumPrice()" class="selectpicker price" data-live-search="true" data-width="100%" name="price[]" data-header="Select Sub account" onselect="sumPrice()" > <option onselect="sumPrice()" value="5">5</option> <option onselect="sumPrice()" value="10">10</option> <option onselect="sumPrice()" value="20">20</option> </select> </td> <td class="total_price col-md-1"><input type="number" class="form-control" value="" name="total[]" /></td> <td><button class="btn btn-danger center-block remove-row"><span class="glyphicon glyphicon-remove"></span> Remove</button></td></tr>');
$('.selectpicker').selectpicker('refresh');
});
my controller
if ($_POST) {
$data = array();
for ($i = 0; $i < count($this->input->post('id')); $i++) {
$data[$i] = array(
'row_id' => $this->input->post('id')[$i],
'desc' => $this->input->post('desc')[$i],
'space' => $this->input->post('space')[$i],
'price' => $this->input->post('price')[$i],
'total' => $this->input->post('total')[$i],
'code' => time()
);
}
$this->Home_model->create($data);
}
model
function create($data) {
$this->db->insert_batch('quotation', $data);
}
i tried too many solutions from stackoverflow but none of them worked
Upvotes: 1
Views: 10793
Reputation: 7134
if your php version>=5.4 it should work.
You may try this
if ($_POST)
{
$row_ids=$this->input->post('id');
$desc=$this->input->post('desc');
$spaces=$this->input->post('space');
$prices=$this->input->post('price');
$totals=$this->input->post('total');
$data = array();
for ($i = 0; $i < count($this->input->post('id')); $i++)
{
$data[$i] = array(
'row_id' => $row_ids[$i],
'desc' => $desc[$i],
'space' => $spaces[$i],
'price' => $prices[$i],
'total' => $totals[$i],
'code' => time()
);
}
$this->Home_model->create($data);
}
Upvotes: 1
Reputation:
Can you please try below given code? I think there may be issue with $data.
if ($_POST) {
$data = array();
for ($i = 0; $i < count($this->input->post('id')); $i++) {
$data[] = array(
'row_id' => $this->input->post('id')[$i],
'desc' => $this->input->post('desc')[$i],
'space' => $this->input->post('space')[$i],
'price' => $this->input->post('price')[$i],
'total' => $this->input->post('total')[$i],
'code' => time()
);
}
$this->Home_model->create($data);
}
Upvotes: 3