2016-12-22 6 views
0

私はPHP CIフレームワークを使用して新しいです。私のプロジェクトでは、複数のアップロード入力があります。CIを使用して複数のファイルをアップロードする方法はありますが、データベースに一度保存するだけですか?

<form method="post" action="<?php echo site_url('upload_img/om_telolet_om'); ?>"> 
<input type="text" id="student_id" name="student_id" /> 
<input type="text" id="arr_img_student" name="arr_img_student" /> 

<input class="up_img" type="file" name="image1" /><br /> 
<input class="up_img" type="file" name="image2" /> 
<input type="submit" value="submit" /> 
</form> 

その後、私はup_imgの値を移入し、arr_img_studentにそれを置くためのjQueryを使用しています。その後、データはコントローラに送信されます。これはコントローラです:

//UPLOAD 
public function om_telolet_om() 
{ 
    $this->load->helper('url'); 

    //UPLOAD FILE RULES 
    $config['upload_path']  = './asset/images/uploads/'; 
    $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config['max_size']  = '0'; 
    $config['max_width']  = '1024'; 
    $config['max_height'] = '768'; 
    $config['overwrite']  = TRUE; 

    $this->load->library('upload', $config); 
    $this->upload->initialize($config); 

    for($x = 1; $x<=2; $x++){ 
     $value = "image".$x; 

     if (! $this->upload->do_upload($value)){ 
      $data['error'] = $this->upload->display_errors();   
      $this->load->view('f_upload', $data); 
     } 
     else 
     { 
      $data['id']  = $this->input->post('student_id'); 
      $data['img_path'] = $this->input->post('arr_img_student');  

      $this->model_student->insert_student($data);   
     }   
    }   
} 

コードはアップロードをループするだけでなく、挿入プロセスもループします。 アップロードをループする(アップロードルールをチェックする)コードを作成し、一度だけデータベースに保存することはできますか?アップロードルールが一致する場合は、データを保存する必要があります。私のデータベースでは、使用されるテーブルは1つだけです。 student_idおよびimg_path。データベース構造を変更する特権はありません。テーブルからのデータを使用している場合

+0

「STUDENT_IDとimg_path私は、データベース構造を変更すること何の権限を持っていません。」ユーザーが多くのファイルをアップロードできる場合は、ファイル用の別のテーブルとユーザー用の別のテーブルが必要です。 – e4c5

+0

別のテーブルを作成できません。だから私は、文字列を区切ってユニークな文字列に画像パスを保存する理由は –

+0

RDBMS – e4c5

答えて

0
$images = array(); // an array to store uploaded images in 

for($x = 1; $x<=2; $x++){ 
    $value = "image".$x; 

    if (! $this->upload->do_upload($value)){ 
     $data['error'] = $this->upload->display_errors();   
     $this->load->view('f_upload', $data); 
    } 
    else 
    { 
     $filedata = $this->upload->data(); 

     // Every time a file is uploaded, 
     // add it to the array for saving later 
     $images[] = $filedata['full_path']; 
    }   
}  

$data['id']  = $this->input->post('student_id'); 
$data['img_path'] = json_encode($images); // Encode $images array to string 

$this->model_student->insert_student($data);   

後で、配列に戻ってimg_pathをデコードする必要があります:

$student_images = json_decode($data['img_path'], true); 
関連する問題