2017-02-10 19 views
1

これは私のモデルで、 "pjesma"を作成してフォームに "izvodjac"を選択し、これをcodeigniter3でどのように実装すれば "izvodi_pjesmu"そこから、私はちょうど挿入している "pjesma_id"を取得しますか、私は希望を理解する下のEERダイアグラムを参照してください、その明確な希望です。ありがとうございました。CodeIgniterの2つのテーブルへの挿入

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> 

+0

あなたはizvode_pejesmuのためのモデルを持っていますか?あなたはテーブルizvodi_pjesmuの最後のpjesma_idが必要です –

+0

私はモデルizvode_pjesmuを持っていません。ありがとうございます –

答えて

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(); 

} 
+1

ありがとう、それは確かに動作し、それはモデルとコントローラ私はmvcスタイルにコードを分けているようです私はそれを理解している –

+0

まさに、これはmvcを使う正しい方法です。 –

0

$ this-> db-> insert_id();を使用できます。

最後に挿入されたIDを返します。 'pjesma_id'を返すpjesmaテーブルにデータを挿入した後にこの行を追加します。その後、それを使用することができます。このよう

-

パブリック関数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); 

}

+0

私は少し変更と作品で、データ配列私はpjesma_idがpjesma_pjesma_idを入れてこれを使用していただきありがとうございます。それは私がそれを好むので簡単な解決です –

+0

私はそれがあなたを助けてうれしいです。 –

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); 
    } 
+0

ありがとうございます、これはおそらく動作しますが、私はコードがMVCスタイルで区切られていないと思います –

関連する問題