2014-09-26 2 views
1

내 모델은 DB에 삽입 배열입니다. 또한보기 파일 예제를 제출했습니다. 루프와 함께 codeigniter에 배치 데이터를 삽입하는 것을 도와주세요.codeigniter에 배열 삽입 오류가 발생했습니다.

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<$temp; $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; } 
    } 

하지만 내가

 Sl date Vendor name model price quantity amount invoice 
     89 2      A  1 0   0  a 

이 도와주세요 DB에 다음과 같은 가치를 제출할 때. DB에 하나의 양식이있는 다중 값 삽입이 필요합니다.

같은 내보기 양식의보기는
<?php 
    $data = array ('name'  => 'quantity', 
      'class'  =>'input-xlarge', 
      'value'  => set_value('quantity') 
      ); 

      ?> 

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

내 컨트롤러는

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

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

컨트롤러 코드 가능한 경우를 보여주십시오 .. –

+0

공공 기능 구입() { \t \t \t if ($ this-> Purchase_model-> purchase()) { \t \t \t \t \t $ this-> session-> set_flashdata ('성공', '데이터를 성공적으로 입력했습니다'); \t \t \t \t \t redirect ('home/purchase_form'); \t \t \t \t } – user3752230

+0

질문을 편집하고 전체보기 코드를 표시하면 표시된 단일 요소 일뿐입니다. –

답변

1

당신은 대신 insert_batch 기능을 사용한다 그것은 당신의 문제를 해결해야하고 필요로보다 효율적/청소기 하나의 검색어 :

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'); 
    $count = count($this->input->post('vendor_name')); 

    $insert_data = array(); 

    for($i=0; $i < $count; $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_data[] = $data; 
    } 
    $insert = $this->db->insert_batch('purchase', $insert_data); 
    return $insert; 
    } 

} 
+0

문제가 해결되지 않았습니다. 나는 같은 수의 DB를 가지고있다. 첫 번째 단어 만 보여줍니다. – user3752230

+0

@ user3752230'$ vendor_name [$ i]'에 문제가있는 것처럼 보입니다. 루프에서'die ($ vendor_name [$ i]);'를 실행하여 벤더 이름 변수에 DB에 넣으려는 내용이 포함되어 있는지 확인하십시오. – Nathan

+0

실제로 (루프 외부에서는) 대신 'var_dump ($ vendor_name);'을 수행하십시오. 배열을 출력하면 값이 올바른지 확인할 수 있습니다. – Nathan

0
//use text box as multiple you can try this... eg. 'name'  => 'quantity[]' 

<?php 

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

      ?> 

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

동일한 오류가 표시됩니다. 향상되지 않습니다. – user3752230

0

시도 다음 코드

보기 코드

$data = array ('name'  => 'price[]', 
    'class'  =>'input-xlarge', 
    'value'  => set_value('price') 
); 
echo form_input ($data); 

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

$data = array ('name'  => 'date[]', 
    'class'  =>'input-xlarge', 
    'value'  => set_value('date') 
); 
echo form_input ($data); 

$data = array ('name'  => 'vendor_name[]', 
    'class'  =>'input-xlarge', 
    'value'  => set_value('vendor_name') 
); 
echo form_input ($data); 

$data = array ('name'  => 'model[]', 
    'class'  =>'input-xlarge', 
    'value'  => set_value('model') 
); 
echo form_input ($data); 

$data = array ('name'  => 'invoice[]', 
    'class'  =>'input-xlarge', 
    'value'  => set_value('invoice') 
); 
echo form_input ($data); 

모델 코드

class Purchase_model extends CI_Model { 
    public function purchase() { 

    $data_array = $this->input->post(); 

    $vendor_data = $data_array['vendor_name']; 

    foreach($vendor_data as $key => $value){ 
     $amount = $data_array['price'][$key] * $data_array['quantity'][$key]; 
     $data = array(
      'date'     => $data_array['date'][$key], 
      'vendor_name'   => $data_array['vendor_name'][$key], 
      'model'    => $data_array['model'][$key], 
      'price'    => $data_array['price'][$key], 
      'purchase_quantity' => $data_array['quantity'][$key], 
      'amount'    => $amount, 
      'invoice_no'   => $data_array['invoice'][$key] 
     ); 
     $insert_data[] = $data; 


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


    } 

} 
관련 문제