I want to insert multiple records into my database table with a FK, but my code only inserts one line of records.
It could be that I do not count the $count
. Here is my code:
Model
public function create($table,$data)
{
$query = $this->db->insert($table, $data);
return $this->db->insert_id();
}
Controller
public function save($id)
{
$id_form = $id;
$id_interversion = $this->model->create('mytable1', $data);
$Inicio = $_POST['Inicio'];
$Termino = $_POST['Termino'];
$id_tecnico = $_POST['id_tecnico'];
$count = count($_POST['id_tecnico']);
$data2 = array();
for ($i = 0; $i < $count; $i++) {
$data2 = array(
'id_tecnico' => $id_tecnico[$i],
'horaInicio' => $Inicio[$i],
'Termino' => $Termino[$i]
);
$this->model->create('mytable2', $data2);
}
}
view
<?php echo form_open("controller/save/{$data->id}"); ?>
<?php for ($i = 0; $i < 2; $i++) { ?>
<input type="text" name="id_tecnico[]" value="" class="form-control">
<input type="text" name="Inicio[]" value="" class="form-control">
<input type="text" name="Termino[]" value="" class="form-control">
<?php } ?>
<?php echo form_close(); ?>
Try with insert_batch
like this :
public function save($id = NULL)
{
$id_form = $id;
//$id_interversion = $this->model->create('mytable1',$data);
$id_interversion = 12; // a custom id
$Inicio = $this->input->post('Inicio');
$Termino = $this->input->post('Termino');
$id_tecnico = $this->input->post('id_tecnico');
foreach ($id_tecnico as $key => $item)
{
$insert_data[] = array(
'id_interversion' => $id_interversion,
'id_tecnico'=> $item,
'horaInicio'=> $Inicio[$key],
'Termino'=> $Termino[$key]
);
}
//print_r($insert_data);die;
$this->db->insert_batch('mytable2',$insert_data);
}