cara membuat insert ajax upload di codeigniter 3

oleh -341 Dilihat

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.