cara membuat insert ajax upload di codeigniter 3

mari kita buat contoh implementasi insert data dengan AJAX dan upload file di CodeIgniter 3. Kita akan membuat form sederhana untuk mengunggah gambar bersama dengan beberapa data teks.

Konsep Utama

  • CodeIgniter 3 (CI3): Framework PHP yang digunakan.
  • AJAX (Asynchronous JavaScript and XML): Untuk mengirimkan data form, termasuk file, ke server tanpa me-reload halaman. Kita akan menggunakan objek FormData untuk ini.
  • Library Upload CodeIgniter: Digunakan untuk menangani proses upload file dengan aman dan efisien di sisi server.

Struktur Proyek

Asumsikan Anda sudah memiliki instalasi CodeIgniter 3 yang berfungsi. Kita akan fokus pada bagian-bagian penting:

Persiapan Database

Kita akan membuat tabel sederhana untuk menyimpan nama data dan nama file gambar yang diunggah.

Tabel: data_upload

Langkah-langkah Implementasi

1. Konfigurasi CodeIgniter

  • application/config/autoload.php: Pastikan library yang dibutuhkan sudah di-load.

  • application/config/database.php: Sesuaikan konfigurasi database Anda.

2. Model (application/models/Upload_model.php)

Model ini akan bertanggung jawab untuk menyimpan nama data dan nama file gambar ke database.

3. Controller (application/controllers/Upload_data.php)

Controller ini akan menangani tampilan form dan logika proses upload serta penyimpanan data.

4. View (application/views/upload/form_upload.php)

Ini adalah tampilan form HTML tempat pengguna akan menginput data dan memilih file.

5. File JavaScript (assets/js/upload_script.js)

File ini akan berisi logika AJAX untuk mengirimkan form.

Cara Menjalankan

  1. Unduh dan Instal CodeIgniter 3: Jika belum punya.
  2. Buat Database dan Tabel: Gunakan skrip SQL data_upload di atas.
  3. Konfigurasi CI: Sesuaikan database.php dan autoload.php.
  4. Buat Folder assets: Buat folder assets/img dan assets/js di root proyek Anda. Pastikan folder assets/img memiliki izin tulis (write permission) agar CodeIgniter bisa menyimpan file di sana (misalnya, chmod 777 assets/img di Linux/macOS, atau berikan izin penuh di Windows).
  5. Tempatkan File:
    • Upload_data.php di application/controllers/
    • Upload_model.php di application/models/
    • form_upload.php di application/views/upload/ (buat folder upload di dalam views)
    • upload_script.js di assets/js/
    • Download jQuery dan Bootstrap (minimal versi CSS dan JS-nya saja), letakkan di assets/js dan assets/css. Sesuaikan path di form_upload.php jika berbeda. Anda bisa menggunakan versi mini/CDN jika ingin lebih praktis.
  6. Akses Aplikasi: Buka browser dan navigasi ke http://localhost/your_project/index.php/upload_data (sesuaikan dengan URL proyek Anda).

Penjelasan Kode

  • HTML (form_upload.php):
    • Form menggunakan enctype="multipart/form-data" yang wajib untuk upload file.
    • Terdapat input text untuk nama_data dan input file untuk file_gambar.
    • Ada placeholder untuk menampilkan pesan sukses atau error.
  • JavaScript (upload_script.js):
    • Mencegah submit form bawaan (e.preventDefault()).
    • Membuat objek FormData(this): Ini adalah kunci untuk mengirim data form yang berisi file via AJAX. FormData secara otomatis mengumpulkan semua input form, termasuk file.
    • Pengaturan AJAX penting:
      • contentType: false: Memberi tahu jQuery untuk tidak mengatur Content-Type header, biarkan browser yang menentukannya (penting untuk upload file).
      • processData: false: Memberi tahu jQuery untuk tidak memproses data sebelum mengirimnya, biarkan FormData yang menangani.
    • dataType: 'JSON': Mengharapkan respons dari server dalam format JSON.
    • Menangani success dan error dari respons AJAX, menampilkan pesan ke pengguna, dan me-reset form jika sukses.
  • Controller (Upload_data.php):
    • Method do_upload_ajax() adalah endpoint AJAX kita.
    • Validasi Input Teks: Menggunakan form_validation untuk nama_data. Penting untuk memvalidasi data teks sebelum atau sesudah upload file.
    • Konfigurasi Upload: Array $config mendefinisikan aturan untuk upload file (path, tipe diizinkan, ukuran, dll.).
    • Inisialisasi Library Upload: $this->load->library('upload', $config); dan $this->upload->initialize($config);
    • if (!empty($_FILES['file_gambar']['name'])): Cek apakah ada file yang dipilih oleh pengguna.
    • $this->upload->do_upload('file_gambar'): Proses upload file. Parameter 'file_gambar' adalah nama atribut name dari input file di HTML.
    • Jika upload berhasil, $this->upload->data() akan mengembalikan informasi tentang file yang diupload, termasuk file_name yang kemudian disimpan ke database.
    • Jika ada kesalahan upload, $this->upload->display_errors() akan memberikan pesan kesalahan.
    • Data teks dan nama file gambar (jika ada) kemudian dikirimkan ke model untuk disimpan ke database.
    • Mengembalikan respons JSON (status TRUE/FALSE dan message).

Dengan setup ini, Anda memiliki implementasi dasar untuk insert data dan upload file menggunakan AJAX di CodeIgniter 3.