2015-09-07 90 views
1

我想用php創建具有多個部分和類型的數據的表單。如: 輸入文本(名稱,標題,描述等) 輸入圖像(header_img) 輸入多圖像(滑塊)多種類型Post CRUD

關鍵是我想創建大量的數據,包括使用在一個頁面上傳文件PHP。 在Post方法中,我嘗試了標準邏輯,如果其他邏輯與圖像一個接一個地上傳,用很多if else邏輯和不同的名稱並將其插入數據庫的每個字段(一個字段數據庫中的一個字段) ....

if($_FILES['imghead']['size']!=0){ 
// run upload method 
} 

而對於編輯,我手動試試吧,一樣的方法後,如果使用其他的每個字段。例如:

if($_FILES['imghead']['size']!=0){ 
// run upload method 
} 
if($_FILES['slider1']['size']!=0){ 
// run upload method 
} 
if($_FILES['slider2']['size']!=0){ 
// run upload method 
} 
if($_FILES['slider3']['size']!=0){ 
// run upload method 
} 
// etc 

但問題是,我覺得我的方法是不是真的好,它不是有效的,我必須寫很多代碼,並檢查他們一個BU一個與其他人如果邏輯。

我的問題: 你知道如何優化我的邏輯到真正簡單的代碼嗎?特別是CRUD。

我有嘗試雜貨店CRUD,但我需要更多像多個圖像特徵上傳

+0

其實你可以在表單中使用slider []來代替slider1,2,3,那麼你可以使用foreach($ _ FILES ['slider']作爲$ fileInfo){...} – bksi

回答

1

還有就是要實現多張影像grocerycrud上傳,在控制器中,你需要ASIGN不同的名稱的方法來每次上傳的方式你需要再現場只需複製粘貼Grocery_CRUD.php文件的主要方法和將名稱更改爲您分配

控制器代碼相同:

$crud->set_field_upload('file1','assets/uploads'); 
$crud->set_another_field_upload('file2','assets/uploads'); 

這是你需要複製的代碼,(路線:htdocs中\ APP_NAME \程序\ \庫Grocery_CRUD.php)

public function set_field_upload($field_name, $upload_dir = '') 
{ 
    $upload_dir = !empty($upload_dir) && substr($upload_dir,-1,1) == '/' 
        ? substr($upload_dir,0,-1) 
        : $upload_dir; 
    $upload_dir = !empty($upload_dir) ? $upload_dir : 'assets/uploads/files'; 

    /** Check if the upload Url folder exists. If not then throw an exception **/ 
    if (!is_dir(FCPATH.$upload_dir)) { 
     throw new Exception("It seems that the folder \"".FCPATH.$upload_dir."\" for the field name 
       \"".$field_name."\" doesn't exists. Please create the folder and try again."); 
    } 

    $this->upload_fields[$field_name] = (object) array(
      'field_name' => $field_name, 
      'upload_path' => $upload_dir, 
      'encrypted_field_name' => $this->_unique_field_name($field_name)); 
    return $this; 
} 

只需將其粘貼在下面,並在控制器分配了相同的名稱更改函數名:

public function set_another_field_upload($field_name, $upload_dir = '') 
{ 
    $upload_dir = !empty($upload_dir) && substr($upload_dir,-1,1) == '/' 
        ? substr($upload_dir,0,-1) 
        : $upload_dir; 
    $upload_dir = !empty($upload_dir) ? $upload_dir : 'assets/uploads/files'; 

    /** Check if the upload Url folder exists. If not then throw an exception **/ 
    if (!is_dir(FCPATH.$upload_dir)) { 
     throw new Exception("It seems that the folder \"".FCPATH.$upload_dir."\" for the field name 
       \"".$field_name."\" doesn't exists. Please create the folder and try again."); 
    } 

    $this->upload_fields[$field_name] = (object) array(
      'field_name' => $field_name, 
      'upload_path' => $upload_dir, 
      'encrypted_field_name' => $this->_unique_field_name($field_name)); 
    return $this; 
}