Обновление двух изображений в Codeigniter - PullRequest
0 голосов
/ 29 октября 2018

Недавно я обнаружил ошибку при обновлении двух изображений одновременно. Я использую if (!empty($_FILES['ngo_logo']['name'])) перед первым изображением и elseif (!empty($_FILES['ngo_license_pic']['name'])) перед вторым изображением.

Вот мой полный код контроллера:

function editProfile(){

    $ngo_id = $this->profile_model->editNgoProfile();

        /************* File Upload ************/
  if (!empty($_FILES['ngo_logo']['name'])) {


        $config['upload_path'] = './assets/uploads/ngo_logo/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|doc|docx|zip|xls';
        $config['overwrite'] = true;
        $config['remove_spaces']=true;
        $config['max_size']='10600';// in KB

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


        $filetype = $_FILES['ngo_logo']['type'];
        $file_name = $_FILES['ngo_logo']['name'];

        if($filetype == "image/jpg")
                $file_type='jpg';
            else if ($filetype == "image/jpeg")
                $file_type='jpeg';
            else if ($filetype == "image/gif")
                $file_type='gif';
            else if($filetype == "image/jpeg")
                $file_type='jpg';

            else if($filetype == "image/pjpeg")
                $file_type='pjpeg';
            else if($filetype ==  "image/png")
                $file_type='png';

        $_FILES['ngo_logo']['name']=$ngo_id.'.'.$file_type;

        $this->upload->do_upload('ngo_logo');


        $up_dtat = array('ngo_logo' => $_FILES['ngo_logo']['name']);
        $this->db->where('ngo_id',$ngo_id);
        $this->db->update('tbl_ngo_users',$up_dtat);

   }


  elseif (!empty($_FILES['ngo_license_pic']['name'])) {


        $config['upload_path'] = './assets/uploads/ngo_license_pic/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|doc|docx|zip|xls';
        $config['overwrite'] = true;
        $config['remove_spaces']=true;
        $config['max_size']='10600';// in KB

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


        $filetype = $_FILES['ngo_license_pic']['type'];
        $file_name = $_FILES['ngo_license_pic']['name'];

        if($filetype == "image/jpg")
                $file_type='jpg';
            else if ($filetype == "image/jpeg")
                $file_type='jpeg';
            else if ($filetype == "image/gif")
                $file_type='gif';
            else if($filetype == "image/jpeg")
                $file_type='jpg';

            else if($filetype == "image/pjpeg")
                $file_type='pjpeg';
            else if($filetype ==  "image/png")
                $file_type='png';

        $_FILES['ngo_license_pic']['name']=$ngo_id.'.'.$file_type;

        $this->upload->do_upload('ngo_license_pic');


        $up_dtat = array('ngo_license_pic' => $_FILES['ngo_license_pic']['name']);
        $this->db->where('ngo_id',$ngo_id);
        $this->db->update('tbl_ngo_users',$up_dtat);

 }
    redirect('NGO_Profile');

}

Моя проблема только в том, что первое изображение будет обновлено, но другое не будет обновлено.
-> Если я загружу только одно изображение, оно будет обновлено и
-> если я загружаю только первое изображение, то первое обновление изображения
-> в дальнейшем, если я загружу только второе изображение, второе изображение будет обновляться только ...

Мне нужно правильное решение на самом деле, что является основной причиной не обновлять два изображения одновременно.

1 Ответ

0 голосов
/ 29 октября 2018

Изменить elseif (!empty($_FILES['ngo_license_pic']['name'])) { на if(...)

elseif срабатывают только в том случае, если A. первое условие if ложно B. условие elseif истинно.

...