2015-04-02 1 views
0

Я попытался представить множество форм с данными. Пользователь должен выбрать число входных строк, в котором он может предоставить некоторую информацию - это что-то вроде Phpmyadmin, когда вы вставляете строки в db. Имена входных строк одинаковы. Я использую цикл, чтобы показать много строк. Но таким образом с вложенным foreach, когда я отправляю информацию в две строки, в базе данных есть 8 строк. Как это сделать? Вот мое мнение:Как вставить многие формы в db с использованием Datatables

echo form_open('admin/add_questions/'); 
 
?> 
 
<table id='example'> 
 
\t \t <thead> 
 
    \t <tr><th>Question</th><th>Code</th><th>Group</th><th>Is_reverse</th></tr> 
 
    </thead> 
 
    <tfoot> 
 
      <tr> 
 
       <th></th> 
 
       <th></th> 
 
       <th></th> 
 
       <th></th>        
 
      </tr> 
 
     </tfoot> 
 
    <tbody> 
 
    <?php \t for($i=0; $i<=20; $i++) { 
 
    \t ?> 
 
    \t \t <tr> 
 
    \t \t <td> 
 
    \t \t \t <input type="text" name="question[]" id="add_question_table" /> 
 
    \t \t </td><td> 
 
    \t \t \t <input type="text" name="code[]" id="add_question_table" /> 
 
    \t \t </td><td> 
 
    \t \t \t <input type="text" name="group[]" id="add_question_table" /> 
 
    \t \t </td><td> 
 
    \t \t \t <input type="text" name="is_reverse[]" id="add_question_table" /> 
 
    \t \t </td></tr> 
 
    \t \t <?php 
 
    \t } 
 

 
    \t \t ?> 
 

 
    </tbody> 
 
    </table>

Моя Модель:

<?php 
 
class Admin_model extends CI_model { 
 
\t public function __construct() { 
 
     parent:: __construct(); 
 
     $this->load->database(); 
 
     $this->load->library('session'); 
 
    } 
 

 
    public function add_questions() { 
 
     
 
     $date = new DateTime("now"); 
 
     foreach($this->input->post('question') as $v) { 
 

 
      foreach($this->input->post('code') as $f) { 
 
       foreach($this->input->post('group') as $val) { 
 

 
    \t $data = array(
 
      'question'=>$v , 
 
      'code'=>$f, 
 
      'survey_id'=>$this->uri->segment(3), 
 
      'group_id'=>$val, 
 
'created_at'=>$date->format('Y-m-d H:i:s')  
 
     ); 
 
     $this->db->insert('survey_questions',$data); 
 
} 
 
      
 
    } 
 
}

Что способ сделать это? :)

+0

Было бы полезно, если бы вы опубликовать код контроллера. – Tpojka

ответ

2

Привет, с моей точки зрения, лучше всего передать $ _POST в качестве параметра вашему методу add_questions(). Вы можете попробовать следующий подход :)

//controller code 
 
$this->admin_model->add_questions($_POST); 
 

 
//model code 
 
function add_questions($data=array()) 
 
{ 
 
    if(count($data) > 0) 
 
    { 
 
    $date = new DateTime("now"); 
 
    for($i=0;$i<count($data['question']);$i++){ 
 
     $insert = array(); 
 
     $insert['question'] = $data['question'][$i]; 
 
     $insert['code'] = $data['code'][$i]; 
 
     $insert['survey_id'] = $data['survey_id'][$i]; 
 
     $insert['group_id'] = $data['group_id'][$i]; 
 
     $insert['created_at'] = $date->format('Y-m-d H:i:s'); 
 
     $this->db->insert('survey_questions',$insert); 
 
    } 
 
    } 
 
}

+0

Большое вам спасибо! Теперь это прекрасно! :) :) –

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