Php 多类型后积垢

Php 多类型后积垢,php,Php,我想用php创建具有多个部分和数据类型的表单。例如: 输入文本(名称、标题、说明等) 输入图像(标题\图像) 输入多个图像(滑块) 重点是我想用php在一个页面中创建大量数据,包括上传文件。 在post方法中,我尝试使用标准逻辑,使用if-else逻辑逐个上传图像,使用大量if-else逻辑和不同的名称,并将其插入数据库的每个字段(一字段数据库中的一个字段)huft 对于编辑,我手动尝试,与post方法相同,对每个字段使用if-else。例如: if($_FILES['imghead']['si

我想用php创建具有多个部分和数据类型的表单。例如: 输入文本(名称、标题、说明等) 输入图像(标题\图像) 输入多个图像(滑块)

重点是我想用php在一个页面中创建大量数据,包括上传文件。 在post方法中,我尝试使用标准逻辑,使用if-else逻辑逐个上传图像,使用大量if-else逻辑和不同的名称,并将其插入数据库的每个字段(一字段数据库中的一个字段)huft

对于编辑,我手动尝试,与post方法相同,对每个字段使用if-else。例如:

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
但问题是,我认为我的方法不是很好,它不是很有效,我必须写很多代码,并用if-else逻辑逐一检查它们

我的问题: 你知道如何将我的逻辑优化为真正简单的代码吗?特别是积垢


我尝试过grocerycrud,但我需要更多功能,如多图像上传

有一种方法可以使用grocerycrud实现多图像上传,在控制器中,您需要为所需的每个上载字段指定一个不同的名称方法,然后只需将main方法复制粘贴到credge_CRUD.php文件中,并将名称更改为您指定的名称

控制器代码:

$crud->set_field_upload('file1','assets/uploads');
$crud->set_another_field_upload('file2','assets/uploads');
这是您需要复制的代码,(路径:htdocs\app\u name\application\libraries\groundry\u CRUD.php)

只需将其粘贴到下面,并使用控制器中指定的相同名称更改函数名:

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

实际上,您可以在表单中使用slider[]而不是slider1,2,3,然后可以使用foreach($_FILES['slider']作为$fileInfo){…}
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;
}