php - insert the last inserted record id into an array in another table using Codeigniter

Solution:
To start with, you don't need this.
$patient_input_data = array();
Because when you make the call
$patient_input_data['patientname'] = $this->input->post('patientname');
The array,$patient_input_data
, will be created. There are times when you might want to make sure you have an array even if it's empty. But this isn't one of them.
For the array input values, ietestname[]
, get the data by leaving off the brackets at the end of the name. Like this.
//test data
$testname = $this->input->post('testname'); //instead of post('testname[]')
$price = $this->input->post('price');
The vars$testname
and$price
will be arrays with an item for each field on the form.
Seems to me that those two inputs are required so you should add code to check that is the case. The Form Validation class is excellent for that purpose.
The array$test_input_data
is a case where you will want the array to exist - even if it's empty. You don't have to explicitly set the index value when adding items to the array, i.e.$test_input_data[$i] = array(...
because$test_input_data[] = array(...
will work just fine, but there's no harm either way.
On to the model. The first part is good. For the second you need to create arrays that include the patient id you got from the first insert and add that value to each of the sub-arrays in the$tests
argument. The model then becomes this.
public function insert_bby($patient, $tests)
{
$this->db->insert('patients', $patient);
$patient_id = $this->db->insert_id();
// add the patient id key/value to each sub-array in $tests
foreach ($tests as $test)
{
$test['patient id'] = $patient_id;
}
// will return the number of rows inserted or FALSE on failure
return $this->db->insert_batch('tests', $tests);
}
Answer
Solution:
the value i mean , i dont know but your code seems to be so right and logical but i have tried this code and it worked so well , i didn't even use the model/
public function testbby
{
$this->load->model("khmodel", "Khmodel");
// patient main info
$patient_input_data = array();
$patient_input_data['patientname'] = $this->input->post('patientname');
$patient_input_data['address'] = $this->input->post('address');
//test data
$testname = $this->input->post('testname[]');
$price = $this->input->post('price[]');
$this->db->reset_query();
$this->db->insert('patients', $patient_input_data);
$patient_id=$this->db->insert_id();
$test_input_data = array();
for ($i = 0; $i < count($testname); $i ++ )
{
$test_input_data[] = array(
'testname' => $testname[$i],
'price' => $price[$i],
'patient_id'=>$patient_id
);
}
$this->db->reset_query();
$this->db->insert_batch('tbl_tests',$test_input_data);
redirect('main/dashboard');
}
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: uncaught mysqli_sql_exception
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.