2015-08-29 124 views
0

我正在使用codeigniter。我有一個可以一次保存多個數據的表單。數據庫中有數據下拉菜單。現在我想取這個值並將它的id作爲外鍵保存爲我的表。但它不起作用。提交多行插入外鍵值

視圖

<form class="form-inline" role="form" id="frmadd" action="<?php echo base_url() ?>index.php/boq_controller/create" method="POST"> 

    <?php 
     $attributes = 'class = "form-control" id = "user" name="boq[<?php echo $i ?>][user]"'; 
     echo form_dropdown('user',$user, set_value('user'), $attributes);?> 


     <?php 


     $i =0; 
     for($i=0;$i<10;$i++){?> 
    <tr class="txtMult"> 


     <td><input type="text" name="boq[<?php echo $i ?>][work_product_id]" class="form-control" id="work_product_id" placeholder=""></td> 
     <td><input type="text" name="boq[<?php echo $i ?>][work_item_description]" class="form-control" id="work_item_description" placeholder=""></td> 
     <td><input type="text" name="boq[<?php echo $i ?>][quantity]" id="" class="form-control val1" /></td> 
     <td><select style=" height: 33px; width: 102px; border-radius: 2px;" name="boq[<?php echo $i ?>][unit]"> 
      <option value="" selected> </option> 
      <option value="cube">cube</option> 
      <option value="sq.ft">sq.ft</option> 
      <option value="Cwts">Cwts</option> 
      <option value="Gal" >Gal</option> 
     </select></td> 
     <td><input type="text" name="boq[<?php echo $i ?>][rate]" class="form-control val2"/></td> 
     <td><input type="text" name="boq[<?php echo $i ?>][laboure_hrs]" id="" class="form-control val3" /></td> 
     <td><input type="text"name="boq[<?php echo $i ?>][laboure_cost]" id="" class="form-control val4"/></td> 
     <td><input type="text" name="boq[<?php echo $i ?>][others]" class="form-control" id="others" placeholder=""></td> 

     <td> 
       <span class="multTotal">0.00</span><input type="text" id="txtmultTotal" name="boq[<?php echo $i ?>][txtmultTotal]"> 
<!--   <input type="text" class="multTotal" placeholder="0.00">--> 
     </td> 
    </tr> 
     <?php }?> 

模型

public function create() 
{ 
    foreach($_POST['boq'] as $boq) 
    { 
     $_POST['user']; 
     $this->db->insert('boq', $boq); 
    } 
} 

控制器

public function index() 
{ 
    $data['user'] = $this-> boq_model ->get_user(); 
    $this->load->view('admin_include/header'); 
    $this->load->view('boq/boq',$data); 
} 

回答

0

所以第一件事情第一個:您不包括在for循環中的$attributes的下拉菜單。

第二個:驗證。你是否驗證你的用戶輸入?如果您使用的是Codeigniter 3.0,或者這裏使用https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html(如果您使用的是舊版本,儘管它們應該差不多相同),請在此處查看(http://www.codeigniter.com/userguide3/libraries/form_validation.html#form-validation-tutorial)。

三:跌落使用$_POST['user']和使用$this->input->post('user');,笨將篩選數據,如果啓用了XSS過濾,並且將返回false如果該值未設置。

Forth: 如果您使用的是MVC框架,請分開您的邏輯。將插入物移動到模型中,並從控制器傳遞數據。

獎金

看看$這個 - > DB-> insert_batch()

$data = array(
array(
    'title' => 'My title' , 
    'name' => 'My Name' , 
    'date' => 'My date' 
), 
array(
    'title' => 'Another title' , 
    'name' => 'Another Name' , 
    'date' => 'Another date' 
) 
); 

$this->db->insert_batch('mytable', $data);