Detail Artikel

Detail Artikel

Pada artikel ini, kita akan membahas cara membuat aplikasi CRUD (Create, Read, Update, Delete) sederhana menggunakan CodeIgniter 4. Aplikasi ini akan memiliki fitur untuk menambah, melihat, mengedit, dan menghapus data.

1. Menyiapkan Database

Pertama, kita perlu membuat sebuah tabel di database untuk menyimpan data. Misalnya, kita akan membuat tabel students yang berisi informasi siswa.

sql
CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, class VARCHAR(50) NOT NULL, address TEXT NOT NULL );

2. Membuat Model (StudentModel.php)

Model digunakan untuk berinteraksi dengan database. Di CodeIgniter, model akan menangani operasi CRUD.

php
<pre> namespace App\Models; use CodeIgniter\Model; class StudentModel extends Model { protected $table = 'students'; protected $primaryKey = 'id'; protected $allowedFields = ['name', 'class', 'address']; // Tidak menggunakan timestamps protected $useTimestamps = false; } </pre>

Button Copy:

html
<button onclick="copyCode()">Copy</button> <script> function copyCode() { var text = document.querySelector('pre').textContent; var textArea = document.createElement('textarea'); textArea.value = text; document.body.appendChild(textArea); textArea.select(); document.execCommand('copy'); document.body.removeChild(textArea); } </script>

3. Membuat Controller (StudentController.php)

Controller akan menangani logika aplikasi seperti menampilkan data, menyimpan data, mengedit data, dan menghapus data.

php
<pre> namespace App\Controllers; use App\Models\StudentModel; class StudentController extends BaseController { public function index() { return view('add_data'); } public function save() { $studentModel = new StudentModel(); $data = [ 'name' => $this->request->getPost('name'), 'class' => $this->request->getPost('class'), 'address' => $this->request->getPost('address') ]; $studentModel->save($data); return redirect()->to('/students')->with('message', 'Data berhasil disimpan'); } public function show() { $studentModel = new StudentModel(); $data['students'] = $studentModel->findAll(); return view('view_data', $data); } public function edit($id) { $studentModel = new StudentModel(); $data['student'] = $studentModel->find($id); return view('edit_data', $data); } public function update($id) { $studentModel = new StudentModel(); $data = [ 'name' => $this->request->getPost('name'), 'class' => $this->request->getPost('class'), 'address' => $this->request->getPost('address') ]; $studentModel->update($id, $data); return redirect()->to('/students')->with('message', 'Data berhasil diperbarui'); } public function delete($id) { $studentModel = new StudentModel(); $studentModel->delete($id); return redirect()->to('/students')->with('message', 'Data berhasil dihapus'); } public function truncate() { $studentModel = new StudentModel(); $studentModel->truncate(); return redirect()->to('/students')->with('message', 'Semua data berhasil dihapus'); } } </pre>

4. Membuat View (add_data.php) - Form untuk Menambahkan Data

Form ini digunakan untuk menambahkan data siswa baru.

html
<pre> <form action="/student/save" method="POST"> <?= csrf_field() ?> <label for="name">Nama Siswa</label> <input type="text" id="name" name="name" value=""> <label for="class">Kelas</label> <input type="text" id="class" name="class" value=""> <label for="address">Alamat</label> <textarea name="address"></textarea> <button type="submit">Simpan</button> </form> </pre>

5. Membuat View (view_data.php) - Tampilan untuk Melihat Daftar Siswa

Tampilan ini digunakan untuk menampilkan daftar siswa dengan tombol untuk mengedit dan menghapus.

html
<pre> <a href="/student">Tambah Data Siswa</a> <a href="/student/truncate">Hapus Semua Data</a> <table> <thead> <tr> <th>Nama</th> <th>Kelas</th> <th>Alamat</th> <th>Aksi</th> </tr> </thead> <tbody> <?php foreach ($students as $student): ?> <tr> <td><?= $student['name'] ?></td> <td><?= $student['class'] ?></td> <td><?= $student['address'] ?></td> <td> <a href="/student/edit/<?= $student['id'] ?>">Edit</a> | <a href="/student/delete/<?= $student['id'] ?>" onclick="return confirm('Apakah Anda yakin ingin menghapus data ini?')">Hapus</a> </td> </tr> <?php endforeach; ?> </tbody> </table> </pre>

6. Membuat View (edit_data.php) - Form untuk Mengedit Data

Form ini digunakan untuk mengedit data siswa yang sudah ada.

html
<pre> <form action="/student/update/<?= $student['id'] ?>" method="POST"> <?= csrf_field() ?> <label for="name">Nama Siswa</label> <input type="text" id="name" name="name" value="<?= $student['name'] ?>"> <label for="class">Kelas</label> <input type="text" id="class" name="class" value="<?= $student['class'] ?>"> <label for="address">Alamat</label> <textarea name="address"><?= $student['address'] ?></textarea> <button type="submit">Perbarui</button> </form> </pre>

7. Menambahkan Routes di Routes.php

Terakhir, tambahkan routes yang sesuai untuk menampilkan, menyimpan, mengedit, dan menghapus data.

php
<pre> $routes->get('/student', 'StudentController::index'); $routes->post('/student/save', 'StudentController::save'); $routes->get('/students', 'StudentController::show'); $routes->get('/student/edit/(:num)', 'StudentController::edit/$1'); $routes->post('/student/update/(:num)', 'StudentController::update/$1'); $routes->get('/student/delete/(:num)', 'StudentController::delete/$1'); $routes->get('/student/truncate', 'StudentController::truncate'); </pre>

Penjelasan:

  • Model: Model StudentModel menangani operasi database seperti menambah, mengedit, memperbarui, menghapus, dan menghapus semua data.
  • Controller: StudentController menangani logika untuk menambah, mengedit, memperbarui, menghapus data, serta menampilkan data.
  • Views:
    • add_data.php untuk menambahkan data siswa,
    • view_data.php untuk menampilkan daftar siswa dengan opsi edit dan hapus,
    • edit_data.php untuk mengedit data siswa.
  • Routes: Mengatur URL dan mengarahkan ke controller yang sesuai.

Dengan aplikasi ini, Anda dapat melakukan operasi CRUD pada data siswa, serta menampilkan semua data siswa dalam aplikasi Anda.

CodeIgniter 4