0
votes

Codeigniter when i update the form others are updating but image path disappears

Form Submit

user name update

password update

image url delete

Form Submit

user name update

password update

Not -> image url delete

CONTROLLER

  public function profil_guncelle($id)
      {


        if(!empty($_FILES['avatar']['name'])){
            $config['upload_path'] = 'uploads';
            $config['allowed_types'] = 'jpg|jpeg|png|gif';
             $config['width']     = 150;
             $config['height']   = 50;
            $config['file_name'] = $_FILES['avatar']['name'];


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

            if($this->upload->do_upload('avatar')){
                $uploadData = $this->upload->data();
                $picture = $uploadData['file_name'];
            }else{
                $picture = '';
            }
        }else{
            $picture = '';
        }




        $this->form_validation->set_rules('user_pass', 'Parola', 'trim|required');
        $this->form_validation->set_rules('user_mail', 'E-Posta', 'trim|required');


        if ($this->form_validation->run() == FALSE) {
          $this->session->set_userdata('profil_guncelle', validation_errors());
          $upload_error = array('error' => $this->upload->display_errors());
          redirect(base_url().'admin/users/profil/'.$id);
        }else{

            $data=array(
            'user_pass' => $this->input->post('user_pass'),
            'user_mail' => $this->input->post('user_mail'),
            'avatar' => $picture
            );

            if ($this->Database_Model->profil_guncelle($data, $id) ==true) {
            $this->session->set_flashdata('profil_guncelle', 'Bilgileriniz başarıyla güncellendi.');
            redirect(base_url().'admin/users/profil/'.$id);    
        }
    }
 }

}

DATABASE MODEL

public function profil_guncelle($data, $id){
        $this->db->set($data);
        $this->db->where('id', $id);
        if ($this->db->update('users') ===true) {
            return true;
        }else{
            return false;
        }

    }
1
@MalikMudassar yes it not say the errors, because he sure there are no error while uploading the image dude. Please see the code before commentKelvin
Appreciate your answer @KelvinMalik Mudassar

1 Answers

2
votes

First you are set $picture become '' if $_FILES['avatar']['name'] is empty.

than when you are trying update data

$data=array(
'user_pass' => $this->input->post('user_pass'),
'user_mail' => $this->input->post('user_mail'),
'avatar' => $picture
);

of course $picture will be set to '' if the images files are empty. you change the array become :

$data=array(
        'user_pass' => $this->input->post('user_pass'),
        'user_mail' => $this->input->post('user_mail'),
      );
if($picture != ''){
    $data['avatar'] = $picture;
}