Membuat CRUD AJAX Join Table dengan Datatables di CodeIgniter 3

Membuat aplikasi CRUD (Create, Read, Update, Delete) dengan fitur join table, AJAX, dan Datatables di CodeIgniter 3 memang membutuhkan beberapa langkah. Berikut adalah panduan lengkapnya, termasuk struktur proyek dan contoh kodenya:

Konsep Utama

  • CodeIgniter 3 (CI3): Framework PHP yang ringan dan cepat.
  • AJAX (Asynchronous JavaScript and XML): Untuk pengiriman dan penerimaan data dari server tanpa me-reload halaman. Ini membuat aplikasi lebih responsif.
  • Datatables: Plugin jQuery yang powerful untuk menampilkan data tabular dengan fitur pencarian, sorting, dan pagination secara otomatis.
  • Join Table: Menggabungkan data dari dua tabel atau lebih berdasarkan kolom yang berhubungan (misalnya, foreign key).
  • Upload: Untuk mengunggah file (gambar, dokumen, dll.) ke server.

 

 

Struktur Proyek

Pastikan Anda memiliki instalasi CodeIgniter 3 yang berfungsi. Struktur folder utama akan terlihat seperti ini:

 

Persiapan Database

Misalkan kita ingin menampilkan daftar produk dan kategori produk. Kita membutuhkan dua tabel: produk dan kategori.

Tabel: kategori

SQL

Tabel: produk

SQL

Isi beberapa data dummy ke kedua tabel untuk pengujian.

 

Langkah-langkah Implementasi

1. Konfigurasi CodeIgniter

  • application/config/database.php: Sesuaikan konfigurasi database Anda.
  • application/config/autoload.php: Load library yang dibutuhkan.

    PHP

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

Model ini akan menangani interaksi dengan database, termasuk join table dan operasi CRUD.

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

Controller ini akan menangani logika bisnis, view, dan respons AJAX.

4. View (application/views/produk/index.php)

Ini adalah tampilan utama yang akan menampilkan tabel Datatables dan modal untuk form tambah/edit.

Penting: Anda perlu menambahkan method ajax_get_all_kategori() di controller Produk.php agar dropdown kategori dapat terisi:

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

Jika Anda ingin memisahkan JavaScript ke file terpisah, Anda bisa memindahkan semua script di dalam tag <script> dari index.php ke assets/js/produk.js, lalu panggil di index.php:

6. File CSS (assets/css/style.css) (Opsional)

Untuk styling tambahan, jika diperlukan.

Penjelasan Kode

  • Model (Produk_model.php):
    • get_all_produk_datatables(): Mengambil data produk dengan join ke tabel kategori. Ini juga mencakup logika untuk server-side processing Datatables (pencarian, sorting, pagination).
    • count_filtered_produk() dan count_all_produk(): Digunakan oleh Datatables untuk menghitung jumlah total dan jumlah data yang difilter.
    • Metode get_produk_by_id, insert_produk, update_produk, delete_produk, dan get_all_kategori untuk operasi CRUD standar dan pengambilan data kategori.
  • Controller (Produk.php):
    • index(): Memuat tampilan utama (produk/index.php).
    • ajax_list(): Endpoint AJAX untuk Datatables. Mengambil data dari model, memformatnya, dan mengembalikan dalam format JSON yang diharapkan Datatables.
    • ajax_edit(): Mengambil detail satu produk berdasarkan ID untuk mengisi form edit.
    • ajax_add() dan ajax_update(): Menangani penambahan dan pembaruan data produk, termasuk proses upload gambar menggunakan library upload dari CI.
    • ajax_delete(): Menghapus data produk dan juga file gambar terkait dari server.
    • _do_upload(): Fungsi private untuk mengelola proses upload file.
    • _validate(): Fungsi private untuk validasi input form.
  • View (index.php):
    • Memuat Bootstrap, Datatables CSS & JS, dan jQuery.
    • Tabel HTML dengan ID table yang akan diinisialisasi oleh Datatables.
    • Modal Bootstrap untuk form tambah/edit produk.
    • JavaScript:
      • Menginisialisasi Datatables dengan opsi server-side processing, menunjuk ke produk/ajax_list sebagai sumber data.
      • Fungsi add_produk(), edit_produk(), save(), delete_produk(), dan reload_table() untuk berinteraksi dengan controller via AJAX.
      • Penggunaan FormData untuk mengirimkan data form, termasuk file upload.
      • Menangani tampilan preview gambar dan opsi hapus gambar.
      • Mengambil daftar kategori secara terpisah untuk dropdown.

Cara Menjalankan

  1. Unduh dan Instal CodeIgniter 3: Jika belum punya.
  2. Buat Database dan Tabel: Gunakan skrip SQL di atas.
  3. Konfigurasi CI: Sesuaikan database.php dan autoload.php.
  4. Buat Folder assets: Buat folder assets/img, assets/css, dan assets/js di root proyek Anda.
  5. Tempatkan File:
    • Produk.php di application/controllers/
    • Produk_model.php di application/models/
    • index.php di application/views/produk/ (buat folder produk di dalam views)
    • Download Bootstrap dan Datatables, letakkan di assets/css, assets/js, dan assets/datatables. Sesuaikan path di index.php jika berbeda.
    • Buat file jquery-3.7.1.min.js (atau versi jQuery terbaru) di assets/js.
  6. Akses Aplikasi: Buka browser dan navigasi ke http://localhost/your_project/index.php/produk (sesuaikan dengan URL proyek Anda).

Dengan langkah-langkah ini, Anda akan memiliki aplikasi CRUD produk yang menggunakan AJAX, join table untuk kategori, Datatables untuk tampilan tabel, dan fungsionalitas upload gambar di CodeIgniter 3.