2015-09-07 60 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; 
}