Php 在Codeigniter的同一控制器内将$data值从一个函数传递到另一个函数

Php 在Codeigniter的同一控制器内将$data值从一个函数传递到另一个函数,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我在控制器中有两个功能 连接到表单并执行验证的 用于图像上传的回调函数 这只会在db中插入一个图像的路径。如果我从回调函数回显打印,它将显示所有图像,但验证函数只显示一个图像 // Some Validation } else { $this->fileupload_check(); $data['uploadedimage'] = $this->upload->data(); $image_name = $da

我在控制器中有两个功能

  • 连接到表单并执行验证的
  • 用于图像上传的回调函数
  • 这只会在db中插入一个图像的路径。如果我从回调函数回显打印,它将显示所有图像,但验证函数只显示一个图像

        // Some Validation
        } else {
            $this->fileupload_check();
    
            $data['uploadedimage'] = $this->upload->data();
            $image_name = $data['uploadedimage']['file_name'];
            //echo '<pre>';
            //print_r($this->upload->data());
            $data['uploadedimage'] = $image_name;
    
            $this->load->model('admin/model_users');
            if($query = $this->model_users->insert_property_details($data)) {
            redirect('dashboard/property-successfully-posted');
        }
    
    //一些验证
    }否则{
    $this->fileupload_check();
    $data['uploadedimage']=$this->upload->data();
    $image\u name=$data['uploadedimage']['file\u name'];
    //回声';
    
    public function fileupload_check() {
    $number_of_files = sizeof($_FILES['uploadedimages']['tmp_name']);
    $files = $_FILES['uploadedimages'];
    for($i=0;$i<$number_of_files;$i++) {
      if($_FILES['uploadedimages']['error'][$i] != 0) {
        $this->form_validation->set_message('fileupload_check', 'At least 1 image needs to be uploaded in jpeg, png or gif format only.');
        return FALSE;
      }
    }
    $this->load->library('upload');
    $config['upload_path'] = FCPATH . 'uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    for ($i = 0; $i < $number_of_files; $i++) {
      $_FILES['uploadedimage']['name'] = $files['name'][$i];
      $_FILES['uploadedimage']['type'] = $files['type'][$i];
      $_FILES['uploadedimage']['tmp_name'] = $files['tmp_name'][$i];
      $_FILES['uploadedimage']['error'] = $files['error'][$i];
      $_FILES['uploadedimage']['size'] = $files['size'][$i];
      $this->upload->initialize($config);
      if ($this->upload->do_upload('uploadedimage')) {
        $data['uploadedimage'] = $this->upload->data();
        $image_name = $data['uploadedimage']['file_name'];
        $data['uploadedimage'] = $image_name;
      } else {
        $this->form_validation->set_message('fileupload_check', $this->upload->display_errors());
        return FALSE;
      }
    }
    return TRUE;
    }
    
    //打印($this->upload->data()); $data['uploadedimage']=$image\u name; $this->load->model('admin/model_users'); 如果($query=$this->model\u users->insert\u property\u details($data)){ 重定向(“已成功发布仪表板/属性”); }
    和回调图像上载:

    public function fileupload_check() {
    
    $Error_bool = TRUE;
    $Error = '';
    
    $number_of_files = sizeof($_FILES['uploadedimages']['tmp_name']);
    $files = $_FILES['uploadedimages'];
    for($i=0;$i<$number_of_files;$i++) {
      if($_FILES['uploadedimages']['error'][$i] != 0) {
        $Error_bool = FALSE;
        $Error = 'At least 1 image needs to be uploaded in jpeg, png or gif format only.';
      }
    }
    $this->load->library('upload');
    $config['upload_path'] = FCPATH . 'uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    for ($i = 0; $i < $number_of_files; $i++) {
      $_FILES['uploadedimage']['name'] = $files['name'][$i];
      $_FILES['uploadedimage']['type'] = $files['type'][$i];
      $_FILES['uploadedimage']['tmp_name'] = $files['tmp_name'][$i];
      $_FILES['uploadedimage']['error'] = $files['error'][$i];
      $_FILES['uploadedimage']['size'] = $files['size'][$i];
      $this->upload->initialize($config);
      if ($this->upload->do_upload('uploadedimage')) {
        $data['uploadedimage'] = $this->upload->data();
        $image_name = $data['uploadedimage']['file_name'];
        $data['uploadedimage'] = $image_name;
      } else {
        $Error_bool = FALSE;
        $Error =  $this->upload->display_errors();
      }
    }
    
    if($Error_bool == FALSE) {
        $this->form_validation->set_message('fileupload_check', $Error);
        return FALSE;
    } else {
        return TRUE;
    }
    
    
    }
    
    public函数fileupload\u check(){
    $number_of_files=sizeof($_files['uploadedimages']['tmp_name']);
    $files=$_文件['uploadedimages'];
    对于($i=0;$iform_validation->set_message('fileupload_check','至少需要上传一张jpeg、png或gif格式的图像');
    返回FALSE;
    }
    }
    $this->load->library('upload');
    $config['upload_path']=FCPATH.'uploads/';
    $config['allowed_types']='gif | jpg | png';
    对于($i=0;$i<$u文件数;$i++){
    $\u文件['uploadeImage']['name']=$FILES['name'][$i];
    $\u文件['uploadeImage']['type']=$FILES['type'][$i];
    $\u FILES['uploadeImage']['tmp\u name']=$FILES['tmp\u name'][$i];
    $\u文件['uploadeImage']['error']=$FILES['error'][$i];
    $\u文件['uploadeImage']['size']=$FILES['size'][$i];
    $this->upload->initialize($config);
    如果($this->upload->do_upload('uploadedimage')){
    $data['uploadedimage']=$this->upload->data();
    $image\u name=$data['uploadedimage']['file\u name'];
    $data['uploadedimage']=$image\u name;
    }否则{
    $this->form_validation->set_message('fileupload_check',$this->upload->display_errors());
    返回FALSE;
    }
    }
    返回TRUE;
    }
    
    我尝试将值从“回调图像上载”函数传递到验证函数,但它只传递一个图像,而不是所有选定的图像。

    尝试此编码

    public函数fileupload\u check(){
    $Error\u bool=TRUE;
    $Error='';
    $number_of_files=sizeof($_files['uploadedimages']['tmp_name']);
    $files=$_文件['uploadedimages'];
    对于($i=0;$iload->library('upload');
    $config['upload_path']=FCPATH.'uploads/';
    $config['allowed_types']='gif | jpg | png';
    对于($i=0;$i<$u文件数;$i++){
    $\u文件['uploadeImage']['name']=$FILES['name'][$i];
    $\u文件['uploadeImage']['type']=$FILES['type'][$i];
    $\u FILES['uploadeImage']['tmp\u name']=$FILES['tmp\u name'][$i];
    $\u文件['uploadeImage']['error']=$FILES['error'][$i];
    $\u文件['uploadeImage']['size']=$FILES['size'][$i];
    $this->upload->initialize($config);
    如果($this->upload->do_upload('uploadedimage')){
    $data['uploadedimage']=$this->upload->data();
    $image\u name=$data['uploadedimage']['file\u name'];
    $data['uploadedimage']=$image\u name;
    }否则{
    $Error\u bool=FALSE;
    $Error=$this->upload->display_errors();
    }
    }
    如果($Error\u bool==FALSE){
    $this->form\u validation->set\u message('fileupload\u check',$Error);
    返回FALSE;
    }否则{
    返回TRUE;
    }
    }
    
    最简单的方法是创建一个
    会话
    并在其中发送
    $data
    ,然后通过另一个函数访问该会话


    你可以在那之后销毁会话如果你想销毁会话

    我必须对它做一些更改才能使它正常工作

  • 我将整个回调函数代码直接包含在FORM function中,并完全删除了回调函数
  • 这在另一方面也有帮助。早些时候,在表单验证错误的情况下,图像被上传到上传文件夹,但现在它们没有

  • 我不得不在do_upload(通过添加$I&IMPODE)中做一些小的更改,这有助于我在db行中插入多个图像路径

  • 整个脚本可以在

    中找到。我不清楚这个问题。请尝试澄清。您的问题是什么?当insert查询运行时,无论选择了多少个图像,它都只插入一个图像。我还将更新此问题部分。。