2015-12-08 3 views
-2

Может кто-нибудь мне помочь, я пытаюсь вставить данные в 2 таблицы в одной форме с помощью codeigniter. но, моя проблема, данные не вставлены правильно. возможно, из-за моего массива, потому что я хочу, чтобы моя вставка данных добавила динамический ввод. пожалуйста, помогите мнеВставить несколько строк codeigniter

Table questions_bank: 
    q_id int(11) AutoIncrement 
    id int(11)   
    type varchar(100) 
    q_text varchar(200) 

Table answer: 
    a_id int(11) AutoIncrement 
    id int(11) 
    q_id int(11)  
    a_text  varchar 

мой контроллер: question.php

function questions_data() 
    { 
    $data = array(
    'q_id' => $this->input->post('q_id'), 
    'id' => $this->input->post('id'), 
    'type' => $this->input->post('type'), 
    'q_text' => $this->input->post('q_text') 
    ); 

    $data_answer = array(
    //'q_id' => $this->input->post('q_id'), 
    'id' => $this->input->post('id'), 
     'a_text' => $this->input->post('a_text[]'), 
    ); 

    $this->questions_data->questions($data,$data_answer); 
    redirect('question/insert'); 
    } 

модель: questions_data.php

public function questions() 
{ 

    $data=array(
    'q_id'=>$this->input->post('q_id'), 
    'id'=>$this->input->post('id'), 
    'type'=>$this->input->post('type'), 
    'q_text'=>$this->input->post('q_text'), 
); 

    $data_answer = array(
    'id' => $this->input->post('id'), 
); 

    $this->db->insert('questions_bank',$data); 
    $data_answer['q_id'] = $this->db->insert_id(); 
$this->db->insert('answer',$data_answer); 

    foreach($_POST['a_text1'] as $a_text1) 
    { 

    $this->db->insert('answer',$a_text1); 
    } 
    } 

мой взгляд: insert.php

<label class="col-sm-2 control-label">Course</label> 
         <div class="col-md-4"> 
         <?php 
         $query = "SELECT * FROM course"; $result = mysql_query($query); ?> 
         <select name="id" class="form-control m-b"><?php while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { ?> 
         <option value=" <?php echo $line['id'];?> "> <?php echo $line['Topics'];?></option> <?php } ?> 
         </select> 
         </div> 
         </div> 

         <div class="line line-dashed b-b line-lg pull-in"></div> 
         <div class="form-group"> 
         <label class="col-sm-2 control-label">Type</label> 
         <div class="col-md-4"> 
         <select name="type" class="form-control m-b"> 
         <option value="Easy">Easy</option> 
         <option value="Intermidiate">Intermidiate</option> 
         <option value="Hard">Hard</option> 
         </select> 
         </div> 
         </div> 

         <div class="line line-dashed b-b line-lg pull-in"></div> 
         <div class="form-group"> 
         <label class="col-sm-2 control-label">Question</label> 
         <div class="col-md-5"> 
         <input type="text" name="q_text" id="q_text" class="form-control" /> 
         </div> 
         </div> 

         <div id="box"> 
         <div class="line line-dashed b-b line-lg pull-in"></div> 
         <div class="form-group"> 
         <label class="col-sm-2 control-label">Answer</label> 
         <div class="col-md-5"> 
         <input name="a_text1[' + i +'][a_text]" type="text" id="name" class="form-control"></div> 


         <img src="<?php echo base_url(); ?>assets/add/add.png" width="32" height="32" border="0" align="top" class="add" id="add" /> 
         </div></div></div> 

         <button type="submit" class="btn btn-sm btn-default">Submit</button 

я есть прикрепить изображение результата здесь

enter image description here

сценарий для нескольких строк

<script> 

$(document).ready(function(){ 

    $('#add').click(function(){ 

    var inp = $('#box'); 


    var i = $('input').size() ; 

    $('<div id="box' + i +'"><div class="form-group"><label class="col-sm-2 control-label">Answer</label><div class="col-md-5"><input type="text" id="name' + i+ '" class="form-control" name="a_text1[' + i +'][a_text]" /></div><img src="<?php echo base_url(); ?>assets/add/remove.png" align="top" class="add" id="remove" /></div></div></div>').appendTo(inp); 

    i++; 


    }); 
+1

Вы не должны передавать любые аргументы при вызове $ this-> questions_data-> questions() –

+0

А также вам не нужно объявлять $ data и $ data_array в контроллере –

+0

Ваша форма курса заполнена с именем 'id', вы вручную передаете' $ this-> input-> post ('id') 'в массив обновления, где идентификатор курса хранится как id для ваш стол. Вы, похоже, смущены тем, что делаете. – Mohan

ответ

0
//Note: Please change your model function with the below function and when the form is submitted the form values will be posted to controller not to the model you to just pass it to the model function that all. 
public function questions($data,$data_answer) 
{ 

    $this->db->insert('questions_bank',$data); 
    $data_answer['q_id'] = $this->db->insert_id(); 
    $this->db->insert('answer',$data_answer); 
    //Note: For loop case just pass the array from the controller and use it in model 
    //foreach($_POST['a_text1'] as $a_text1) 
    //{ 

    //$this->db->insert('answer',$a_text1); 
    //} 
} 
+0

благодарю вас за помощь, на самом деле мне нужно использовать a_text1, потому что я хочу вставить мои определенные данные, используя динамический ввод, у меня есть мой вопрос, пожалуйста, посмотрите. извините за неудобные :) @rahul sharma – yana