Update Form yang Berisi File Upload di Codeigniter 3 - Rumah IT

Baru

recent

Update Form yang Berisi File Upload di Codeigniter 3

Update Form yang Berisi File Upload di Codeigniter 3

Saya mempunyai case pada saat update form yang berisi upload file sebagai berikut. Jadi saya mempunyai form dimana salah satu tipe inputannya adalah berupa file gambar. Jika melakukan update pada form saya menginginkan ada dua kondisi. Kondisi pertama yaitu jika inputan file gambar dikosongin atau dilewati, maka controller tidak akan melakukan upload gambar di database atau tetap berisi gambar sebelum diedit.


Kondisi kedua, jika input file gambar disini dengan gambar baru maka controller akan melakukan upload gambar dan menyimpan datanya di database. Bagaimana cara membuat controller dengan dua kondisi seperti itu ? Yuk simak selengkapnya dibawah ini.

Misalkan saya mempunyai inputan dengan tipe file di views dengan nama input foto_barang sebagai berikut :

<div class="form-group">
            <label for="int">Foto Barang </label>
            <input type="file" class="form-control" name="foto_barang" />
        </div>
Maka untuk controllernya sebagai berikut :
public function update_action() 
    {
        $data['user'] = $this->db->get_where('user', ['email' => 
        $this->session->userdata('email')])->row_array();
        $this->_rules();

        if ($this->form_validation->run() == FALSE) {
            $this->update($this->input->post('id_barang', TRUE));
        } else {

	//Kondisi 1 : Jika inputan file tidak diisi, gambar tidak diupload dan nama file tidak tersimpan di database.
        if(isset($_FILES['foto_barang']) && empty($_FILES['foto_barang']['name'])){
            
            $data = array(
        'kode_barang' => $this->input->post('kode_barang',TRUE),
        'nama_barang' => $this->input->post('nama_barang',TRUE),
        'harga' => $this->input->post('harga',TRUE),
        'stok' => $this->input->post('stok',TRUE),
        'id_jenis' => $this->input->post('id_jenis',TRUE),
        'id_merk' => $this->input->post('id_merk',TRUE),
        'kode_supplier' => $this->input->post('kode_supplier',TRUE),
        );

            $this->Barang_model->update($this->input->post('id_barang', TRUE), $data);
            $this->session->set_flashdata('message', 'Update Record Success');
            redirect(site_url('barang'));

        } else {
	
	    //Kondisi 2 : Jika inputan file diisi, gambar diupload dan nama file tersimpan di database.

            $nmfile = "barang_".time();
            $config['upload_path'] = 'image/barang';
            $config['allowed_types'] = 'jpg|png|jpeg';
            $config['max_size'] = '20000';
            $config['file_name'] = $nmfile;
            // load library upload
            $this->load->library('upload', $config);
            // upload gambar 1
            $this->upload->do_upload('foto_barang');
            $result1 = $this->upload->data();
            $result = array('gambar'=>$result1);
            $dfile = $result['gambar']['file_name'];

             $data = array(
        'kode_barang' => $this->input->post('kode_barang',TRUE),
        'nama_barang' => $this->input->post('nama_barang',TRUE),
        'harga' => $this->input->post('harga',TRUE),
        'stok' => $this->input->post('stok',TRUE),
        'id_jenis' => $this->input->post('id_jenis',TRUE),
        'id_merk' => $this->input->post('id_merk',TRUE),
        'kode_supplier' => $this->input->post('kode_supplier',TRUE),
        'foto_barang' => $dfile,
        );

            $this->Barang_model->update($this->input->post('id_barang', TRUE), $data);
            $this->session->set_flashdata('message', 'Update Record Success');
            redirect(site_url('barang'));
        }

           
        }
    }
Untuk variable inputan sesuaikan dengan nama inputan di HTML. Pada controller diatas terdapat pengkondisian berupa :

if(isset($_FILES['foto_barang']) && empty($_FILES['foto_barang']['name'])) {
  //gambar tidak diupload, nama file tidak disimpan di databse
}else {
  // gambar  diupload, nama file  disimpan di databse
}

Artinya jika input file atau tombol telusuri gambar tidak kita isi maka controller tidak mengirimkan data ke upload path dan nama gambar di database. Ini berfungsi untuk menghindari gambar sebelumnya kosong atau hilang jika kita tidak mengisi input file saat proses update data.
All Rights Reserved by Rumah IT - Rumah Teknologi Informasi © 2013 - 2022
Powered By Blogger

Contact Form

Name

Email *

Message *

Powered by Blogger.