2014-10-02 102 views
0

我想製作發票表單。爲此,我需要一次插入多個數據。例如我想一次輸入db 5類別的銷售或購買產品。但我對insert_batch不感興趣。我嘗試,但我在數據庫中有一些空值。codeigniter數組和循環插入多個數據

我的型號是:

<?php 
class Purchase_model extends CI_Model{ 

    public function purchase(){ 


    $price = $this->input->post('price'); 
    $quantity = $this->input->post('quantity'); 
    $date = $this->input->post('date'); 
    $vendor_name = $this->input->post('vendor_name'); 
    $model = $this->input->post('model'); 

    $invoice_no = $this->input->post('invoice'); 
    //$temp = count($this->input->post('vendor_name')); 
    for($i=0; $i<10; $i++){ 
    $data = array(
    'date'=>$date[$i], 
    'vendor_name'=>$vendor_name[$i], 
    'model'=>$model[$i], 
    'price' =>$price[$i], 
    'purchase_quantity'=>$quantity[$i], 
    'amount' =>$price[$i]*$quantity[$i], 
    'invoice_no'=>$invoice_no[$i] 
    ); 

     $insert = $this->db->insert('purchase',$data); 
    return $insert; } 
     }} 

我的控制器:

public function purchase(){ 

    if($this->Purchase_model->purchase()){ 

     $this->session->set_flashdata('Success', 
      'You are entered data successfully'); 
     redirect('home/purchase_form'); 
    } 
} 

我的例如觀點:

<?php echo form_label ('Price:'); ?> 
     <select name="price[]" id="price" class="input-xlarge"> 

     </select> 



     <?php echo form_label ('Quantity'); ?> 

     <?php 
      $data = array ('name'  =>'quantity[]', 
      'class'  =>'input-xlarge', 
      'value'  => set_value('quantity')); ?> 

     <?php echo form_input ($data); ?> 

     <?php echo form_label ('Price:'); ?> 
      <select name="price[]" id="price2" class="input-xlarge"> 

      </select> 

     <?php echo form_label ('Quantity'); ?> 

     <?php 
      $data = array ('name'  =>'quantity[]', 
      'class'  =>'input-xlarge', 
      'value'  => set_value('quantity')); ?> 

     <?php echo form_input ($data); ?> 

請幫助。

+0

你會得到哪些值爲空?請明確說明 ! – Hatem 2014-10-02 03:35:17

+0

供應商數量 – user3752230 2014-10-02 06:41:09

+0

您的視圖中沒有「供應商」元素!請顯示您的視圖層的完整腳本! – Hatem 2014-10-02 14:05:33

回答

1

問題已解決。我在我的模型中犯了錯誤。正確的型號是

public function purchase(){ 

$data = array(); 
$temp = count($this->input->post('quantity')); 

for($i=0; $i<$temp; $i++){ 

$invoice_no = $this->input->post('invoice'); 
$date  = $this->input->post('date'); 
$price  = $this->input->post('price'); 
$quantity = $this->input->post('quantity'); 
$vendor_name = $this->input->post('vendor_name'); 
$model  = $this->input->post('model'); 
    if( $quantity[$i]!= '') {  
$data[] = array(
    'date'=>$date, 
    'vendor_name'=>$vendor_name[$i], 
    'model'=>$model[$i], 
    'price' =>$price[$i], 
    'purchase_quantity'=>$quantity[$i], 
    'amount' =>$price[$i]*$quantity[$i], 
    'invoice_no'=>$invoice_no 
    );} } 

     $insert = count($data); 

      if($insert) 
      { 
      $this->db->insert_batch('purchase', $data); 
      } 

      return $insert; 
     } 

感謝每一位試圖幫助我的人。