CodeIgniter插入两个表

时间:2017-02-10 02:32:33

标签: codeigniter

这是我的模特,当我去创作时我有问题" pjesma",我选择" izvodjac"在表单中,以及如何使用codeigniter3实现它,我必须将值插入" izvodi_pjesmu",从哪里得到" pjesma_id"我只是插入,我希望它清楚,如果你看到下面的EER图,你会明白我希望。谢谢。

diagram

控制器方法:

public function kreiraj()
{
    if (isset($_POST['kreiraj']))
    {
        $data1 = array(
            'naslov' => $this->input->post('naslov'),
            'tablatura' => $this->input->post('tablatura'),
            'korisnik_korisnik_id' => $_SESSION['korisnik_id']
        );

        $data2 = array(
            'izvodjac_izvodjac_id' => $this->input->post('izvodjaci')
        );

        $this->form_validation->set_rules('izvodjaci','Izvođači','required|callback_check_default');
        $this->form_validation->set_message('check_default', 'Morate odabrati izvođača');
        $this->form_validation->set_rules('naslov', 'Naslov', 'required', array('required' => 'Naslov je obavezan'));
        $this->form_validation->set_rules('tablatura', 'Tablatura', 'required', array('required' => 'Tablatura je obavezna'));


        if ($this->form_validation->run() != FALSE)
        {
            $this->pjesma_model->kreiraj($data1, $data2);

            redirect('pjesma', 'location');
        }

    }

    $data['izvodjaci'] = $this->izvodjac_model->svi_izvodjaci();

    $this->load->view('zaglavlje');
    $this->load->view('pjesma_kreiraj', $data);
    $this->load->view('podnozje');
}

模型方法:

public function kreiraj($data1, $data2)
{
    $this->db->insert('izvodi_pjesmu', $data2);
    $this->db->insert('pjesma', $data1);

}

视图:

<h1>Kreiranje pjesme</h1>
<hr>
<div class="row">
    <div class="col"></div>
    <div class="col-9">
    <?php if (validation_errors()): ?>
        <div class="alert alert-info">
            <?php echo validation_errors(); ?>
        </div>
    <?php endif; ?>
    <?php echo form_open('pjesma/kreiraj'); ?>
        <div class="form-group">
            <label for="izvodjaci">Izvođač:</label>
            <select class="form-control" name="izvodjaci" id="izvodjaci">
                <option value="0">odabir izvođača</option>
                <?php foreach($izvodjaci as $izvodjac): ?>
                    <option value="<?php echo $izvodjac->izvodjac_id; ?>"><?php echo $izvodjac->naziv; ?></option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="form-group">
            <label for="naslov">Naslov:</label>
            <input type="text" class="form-control" id="naslov" name="naslov" value="<?php echo set_value('naslov'); ?>" />
        </div>
        <div class="form-group">
            <label for="tablatura">Tablatura:</label>
            <textarea class="form-control" id="tablatura" name="tablatura"></textarea>
        </div>
        <button type="submit" class="btn btn-default" name="kreiraj">Kreiraj pjesmu</button>
    <?php echo form_close(); ?>
</div>
<div class="col"></div>

3 个答案:

答案 0 :(得分:0)

您可以使用$ this-&gt; db-&gt; insert_id();

将返回最后插入的ID。在pjesma表中插入数据后添加此行将返回'pjesma_id'。然后你可以使用它。

喜欢这个 -

public function kreiraj($ data1,$ data2) {

$this->db->insert('pjesma', $data1);

// ge tlast inserted id
$pjesma_id = $this->db->insert_id();
$izvodjac_izvodjac_id = $data2['izvodjac_izvodjac_id'];

$data = array( 'pjesma_id' => $pjesma_id, 
        'izvodjac_izvodjac_id' => $izvodjac_izvodjac_id );

$this->db->insert('izvodi_pjesmu', $data);

}

答案 1 :(得分:0)

你可以这样做,这可能会对你有帮助,

 $insert = array(    
        'naslov' => $this->input->post('naslov'),
        'tablatura' => $this->input->post('tablatura'),
        'korisnik_korisnik_id' => $_SESSION['korisnik_id']
        );
    $this->db->insert('tabl1', $insert);
    $output["insert_id"] = $this->db->insert_id();
    if (isset($output["insert_id"])) {
    $insert = array(
                'field1' => $value1,
                'field2' => $value2,
        );
    $this->db->insert('tabl2', $insert);
    }

答案 2 :(得分:0)

试试这个:

控制器:

public function kreiraj()
    {
        if (isset($_POST['kreiraj']))
        {
            $data1 = array(
                'naslov' => $this->input->post('naslov'),
                'tablatura' => $this->input->post('tablatura'),
                'korisnik_korisnik_id' => $_SESSION['korisnik_id']
            );

            $this->form_validation->set_rules('izvodjaci','Izvođači','required|callback_check_default');
            $this->form_validation->set_message('check_default', 'Morate odabrati izvođača');
            $this->form_validation->set_rules('naslov', 'Naslov', 'required', array('required' => 'Naslov je obavezan'));
            $this->form_validation->set_rules('tablatura', 'Tablatura', 'required', array('required' => 'Tablatura je obavezna'));


            if ($this->form_validation->run() != FALSE)
            {
               $id= $this->pjesma_model->kreiraj($data1);
                $data2 = array(
                'izvodjac_izvodjac_id' => $this->input->post('izvodjaci'),
                'pjesma_pjesma_id' => $id
            );
                $this->pjesma_model->pjesma_pjesmu($data2);
                redirect('pjesma', 'location');
            }

        }

            $data['izvodjaci'] = $this->izvodjac_model->svi_izvodjaci();

            $this->load->view('zaglavlje');
            $this->load->view('pjesma_kreiraj', $data);
            $this->load->view('podnozje');
        }

型号:

 public function kreiraj($data1)
    {

        $this->db->insert('pjesma', $data1);
        return $this->db->insert_id();

    }
public function pjesma_pjesmu($data)
{

    $this->db->insert('izvodi_pjesmu', $data);
    return $this->db->insert_id();

}