Reputation: 5784
I am struggling whole day with this.
How do I use the insert_id()
from my first insert into another function in my model?
I tried sessions, but I couldn't get it to work.
I tried everything.
My first insert looks like this:
$aanbdata = array(
'Aanbieding' => $this->input->post('aanbiedingnaam'),
'Tekst' => $this->input->post('aanbiedingomschrijving'),
'Prijs' => $this->input->post('aanbiedingprijs'),
'Conditie' => $this->input->post('aanbiedingconditie'),
'prijssoort' => $this->input->post('prijsopties'),
);
$this->db->insert('Aanbiedingen', $aanbdata);
I tried this:
session_start();
$this->session->set_userdata('aanbiedingid', $this->db->insert_id());
but my id runs 1 behind on the auto increment, so when I inserted a row with the id=4 then the session is id=3.
Why?
EDIT:
My model functions:
public function addaanbieding()
{
$aanbdata = array(
'Aanbieding' => $this->input->post('aanbiedingnaam'),
'Tekst' => $this->input->post('aanbiedingomschrijving'),
'Prijs' => $this->input->post('aanbiedingprijs'),
'Conditie' => $this->input->post('aanbiedingconditie'),
'prijssoort' => $this->input->post('prijsopties'),
);
$this->db->insert('Aanbiedingen', $aanbdata);
$this->addimages($image_data, $this->db->insert_id());
$catid = $this->input->post('categorie');
$bedrijfid = $this->session->userdata('idbedrijven');
$bedrijfaanb = array(
'idbedrijven' => $bedrijfid,
'idaanbiedingen' => $this->session->userdata('aanbiedingid'),
'idaanbiedingcat' => $catid
);
$this->db->insert('bedrijfaanbiedingen', $bedrijfaanb);
}
public function addimages($image_data)
{
$insert_data = array(
'fotonaam' => $image_data['file_name']
);
$this->db->insert('fotoaanbiedingen', $insert_data);
$fotoid = $this->db->insert_id();
$aanbiedingid = $this->session->userdata('aanbiedingid'); //this does nto work
$to_aanbiedingfotos = array(
'idaanbiedingen' => $aanbiedingid,
'idfotoaanbiedingen' => $fotoid
);
$this->db->insert('aanbiedingfotos', $to_aanbiedingfotos);
}
Upvotes: 0
Views: 1662
Reputation: 4079
You can do like this:
Controller:
$aanbdata['Aanbieding'] = $this->input->post('aanbiedingnaam');
$aanbdata['Tekst'] = $this->input->post('aanbiedingomschrijving');
$aanbdata['Prijs'] = $this->input->post('aanbiedingprijs');
$aanbdata['Conditie'] = $this->input->post('aanbiedingconditie');
$aanbdata['prijssoort'] = $this->input->post('prijsopties');
$last_id = $this->model_name->add($aanbdata); //change model_name with your model name
$this->session->set_userdata('name', $last_id);
Model:
function add($data) {
$this->db->insert('Aanbiedingen', $data);
return $this->db->insert_id();
}
Upvotes: 1
Reputation: 1420
Give the insert_id as a parameter to your model function.
Seriously, this is a very stupid answer. But I really don't know how to help you otherwise. What's keeping you from calling the "other model function" directly after you made the insert?
Like
$aanbdata = array(
'Aanbieding' => $this->input->post('aanbiedingnaam'),
'Tekst' => $this->input->post('aanbiedingomschrijving'),
'Prijs' => $this->input->post('aanbiedingprijs'),
'Conditie' => $this->input->post('aanbiedingconditie'),
'prijssoort' => $this->input->post('prijsopties'),
);
$this->db->insert('Aanbiedingen', $aanbdata);
$this->the_other_model->the_other_function($this->db->insert_id());
Upvotes: 0