2017-02-10 2 views
1

Это моя модель, и у меня проблема, когда я иду создавать «pjesma», я выбираю «изводяк» в форме и как реализовать это с помощью codeigniter3, мне нужно вставлять значения в «izvodi_pjesmu», , откуда я могу получить «pjesma_id», который я просто вставляю, я надеюсь, что это ясно, если вы увидите диаграмму EER ниже, вы поймете, я надеюсь. Спасибо.CodeIgniter вставить в две таблицы

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? Вам нужен последний pjesma_id для таблицы izvodi_pjesmu –

+0

no i dont have model 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

спасибо, он работает точно, и мне кажется, что он разделяет код на модель и контроллер i mvc style, если я это понимаю –

+0

Точно, это правильный способ использования mvc. –

0

Вы можете использовать $ this-> db-> insert_id();

Которая вернет последний вставленный идентификатор. Добавьте эту строку после вставки данных в таблицу pjesma, которая вернет «pjesma_id». Тогда вы можете использовать его.

Как это -

общественная функция 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 –

 Смежные вопросы

  • Нет связанных вопросов^_^