cara membuat insert_batch ajax di codeigniter 3

Tentu, membuat insert_batch dengan AJAX di CodeIgniter 3 melibatkan beberapa langkah, terutama pada sisi JavaScript (AJAX) untuk mengirim data array dan pada sisi Controller/Model CodeIgniter untuk memproses array tersebut menggunakan fungsi insert_batch.

Berikut adalah contoh langkah-langkahnya:

Konsep Dasar

insert_batch di CodeIgniter digunakan untuk menyisipkan multiple baris data ke dalam database dalam satu query. Ini jauh lebih efisien daripada melakukan banyak query INSERT individual dalam loop, terutama saat Anda memiliki banyak data untuk disimpan.

Saat menggunakan AJAX, Anda perlu mengirim data array dari JavaScript (biasanya sebagai objek JSON) ke Controller CodeIgniter.

Studi Kasus: Menambah Beberapa Item Sekaligus

Misalkan kita memiliki sebuah form untuk menambahkan beberapa produk sekaligus, di mana setiap produk memiliki nama dan harga.

1. Persiapan Database

Pastikan Anda memiliki tabel di database yang sesuai. Misalnya, tabel products:

2. Konfigurasi CodeIgniter

Pastikan database library sudah di-autoload di application/config/autoload.php:

3. Membuat Model (Product_model.php)

Buat file baru di application/models/Product_model.php:

4. Membuat Controller (Products.php)

Buat file baru di application/controllers/Products.php:

5. Membuat View (product_batch_add_view.php)

Buat file baru di application/views/product_batch_add_view.php. Kita akan menggunakan sedikit JavaScript untuk menambahkan baris form secara dinamis.

6. Buat Folder assets

Pastikan Anda memiliki struktur folder assets di root proyek Anda, dan letakkan file-file JavaScript dan CSS yang diperlukan di dalamnya, sama seperti contoh CRUD sebelumnya:

  • assets/bootstrap/css/bootstrap.min.css
  • assets/bootstrap/js/bootstrap.min.js
  • assets/jquery/jquery-2.2.3.min.js

7. Akses Aplikasi

Akses URL berikut di browser Anda: http://localhost/nama_proyek_ci/products

Anda akan melihat form dengan satu baris produk. Anda bisa:

  • Klik “Tambah Baris Produk” untuk menambahkan lebih banyak input.
  • Isi data nama dan harga untuk setiap produk.
  • Klik “Simpan Semua Produk”.

AJAX akan mengirim data ke controller, dan controller akan memprosesnya menggunakan insert_batch.

Penjelasan Kode:

JavaScript (di product_batch_add_view.php):

  • Dinamis Menambah/Menghapus Baris: Kode ini memungkinkan pengguna untuk menambahkan atau menghapus baris input produk secara dinamis. Setiap baris memiliki input untuk nama dan harga.
  • Mengumpulkan Data: Saat form disubmit, JavaScript akan mengiterasi setiap baris produk yang ada di DOM dan mengumpulkan nilai nama dan harga ke dalam sebuah array of objects.
  • JSON.stringify(productsData): Ini adalah bagian kunci. Array objek JavaScript tidak bisa langsung dikirim sebagai POST data yang standar. Kita perlu mengubahnya menjadi string JSON agar bisa dikirim melalui AJAX.
  • data: { products_data: JSON.stringify(productsData) }: Data ini dikirim ke server dengan nama parameter products_data.
  • dataType: "JSON": Mengharapkan respons dari server dalam format JSON.

PHP (di Products.php Controller):

  • $this->input->post('products_data'): Controller menerima string JSON yang dikirim dari AJAX.
  • json_decode($this->input->post('products_data'), true): Ini adalah bagian kunci lainnya. Fungsi ini mengonversi string JSON kembali menjadi array asosiatif PHP (true parameter membuat array asosiatif).
  • Validasi Data: Sebelum menyisipkan ke database, sangat penting untuk memvalidasi data yang diterima. Contoh di atas adalah validasi sederhana (cek kosong dan harga > 0). Untuk aplikasi nyata, Anda bisa menggunakan form_validation library CodeIgniter atau validasi kustom yang lebih kompleks.
  • $this->product_model->insert_products_batch($data_to_insert): Memanggil fungsi model untuk melakukan operasi insert_batch.
  • Respons JSON: Controller selalu mengembalikan respons dalam format JSON (echo json_encode(['status' => TRUE, 'message' => ...]);) agar JavaScript di frontend bisa menanganinya.

PHP (di Product_model.php Model):

  • $this->db->insert_batch('products', $data);: Ini adalah inti dari operasi batch insert. Anda cukup memberikan nama tabel dan array multidimensional berisi data yang akan disisipkan. CodeIgniter akan otomatis menghasilkan query INSERT BATCH yang efisien.

Dengan setup ini, Anda bisa melakukan operasi insert_batch ke database menggunakan AJAX di CodeIgniter 3, yang sangat berguna untuk mengelola banyak data secara efisien dari sisi frontend.