CRUD (Create, Read, Update, dan Delete) merupakan proses utama dalam website. Proses CRUD memungkinkan pengguna dapat berinteraksi dengan layanan yang disajikan dengan benar.
Dalam postingan ini, saya akan menjelaskan cara membuat CRUD (Create, Read, Update, dan Delete) menggunakan framework CodeIgniter 4. Langsung saja, berikut langkah-langkahnya :
- Sebelum membuat CRUD, buat terlebih dahulu database baru dengan nama "crud-codeigniter" dan buat sebuah tabel dengan nama "mahasiswa" dengan struktur tabel seperti berikut ini:
- Kemudian edit file app/Config/database.php dan sesuaikan nama dan pengaturan database agar sesuai dengan database
- Tambahkan beberapa data dummy agar dapat dilihat hasilnya
Selanjutnya, kita akan menampilkan data dari database terlebih dahulu atau proses Read. Ikuti langkah berikut :
- Buat sebuah file baru di app/Models/MahasiswaModel.php, lalu isikan dengan kode berikut
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<?php namespace App\Models; use CodeIgniter\Model; class MahasiswaModel extends Model { protected $table = 'mahasiswa'; protected $primaryKey = 'id'; protected $useAutoIncrement = true; }
- Kemudian buat route baru pada app/Config/routes.php dengan menambahkan baris berikut
1 2
$routes->get('/mahasiswa', 'News::index'); $routes->get('/mahasiswa/(:any)', 'News::viewMahasiswa/$1');
- Lalu atur tampilan view dari welcome sehingga berbentuk seperti ini
- Kemudian buat controller baru di app/Controllers/Mahasiswa.php dengan isi seperti ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
<?php namespace App\Controllers; use App\Models\MahasiswaModel; use CodeIgniter\Exceptions\PageNotFoundException; class Mahasiswa extends BaseController { public function index() { // buat object model $mahasiswa $mahasiswa = new MahasiswaModel(); /* siapkan data untuk dikirim ke view dengan nama $mahasiswas */ $data['mahasiswas'] = $mahasiswa->findAll(); // kirim data ke view return view('mahasiswa', $data); } //------------------------------------------------------------ public function viewMahasiswa($id) { $mahasiswa = new MahasiswaModel(); $data['mahasiswa'] = $mahasiswa->where([ 'id' => $id ])->first(); // tampilkan 404 error jika data tidak ditemukan if (!$data['mahasiswa']) { throw PageNotFoundException::forPageNotFound(); } echo view('mahasiswa_detail', $data); } }
- Lalu buat view app/Views/mahasiswa.php dengan isi seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
<?= $this->extend('layout/main') ?> <?= $this->section('header') ?> <header> <div class="p-5 mb-4 bg-light rounded-3"> <div class="container-fluid py-5"> <h1 class="display-5 fw-bold">Mahasiswa</h1> </div> </div> </header> <?= $this->endSection() ?> <?= $this->section('content') ?> <div class="container"> <a href="<?= base_url('mahasiswa/create') ?>" class="btn btn-success float-right mb-3">Tambah Mahasiswa Baru</a> <div class="table-responsive"> <table class="table table-bordered"> <thead> <th>No</th> <th>Nama</th> <th>Action</th> </thead> <tbody> <?php foreach($mahasiswas as $key => $mahasiswa) { ?> <tr> <td><?= $key+1; ?></td> <td><?= $mahasiswa['nama'] ?></td> <td> <div class="btn-group"> <a href="<?= base_url('mahasiswa/edit/'.$mahasiswa['id']) ?>" class="btn btn-primary btn-sm">Edit</a> <a href="<?= base_url('mahasiswa/delete/'.$mahasiswa['id']) ?>" class="btn btn-danger btn-sm" onclick="return confirm('Apakah Anda yakin ingin menghapus produk <?= $mahasiswa['nama'] ?> ini?')">Hapus</a> </div> </td> </tr> <?php } ?> </tbody> </table> </div> </div> <?= $this->endSection() ?>
- Kemudian buat view app/Views/mahasiswa_detail.php dengan isi seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
<?= $this->extend('layout/main') ?> <?= $this->section('header') ?> <header> <div class="p-5 mb-4 bg-light rounded-3"> <div class="container-fluid py-5"> <h1 class="display-5 fw-bold"><?= $mahasiswa['nama'] ?></h1> </div> </div> </header> <?= $this->endSection() ?> <?= $this->section('content') ?> <div class="row"> <div class="col-md-12 mb-2 card"> <div class="card-body"> <p>NRP: <?= $mahasiswa['nrp'] ?></p> <p>Jurusan: <?= $mahasiswa['jurusan'] ?></p> <p>Jenis Kelamin: <?= $mahasiswa['jenis kelamin'] ?></p> </div> </div> </div> <?= $this->endSection() ?>
Kemudian buka halaman /mahasiswa maka tampilannya akan seperti ini
Lalu klik di salah satu item maka tampilannya akan seperti ini
Selanjutnya kita akan menambahkan data baru, atau proses Create. Ikuti langkahnya sebagai berikut :
- Tambahkan route baru di app/Config/routes.php untuk menampilkan view mahasiswa_create. Pastikan route tersebut berada sebelum route detail
1
$routes->match(['get', 'post'], '/mahasiswa/create', 'Mahasiswa::create');
- Buat view baru di app/Views/mahasiswa_create.php dan isi dengan kode berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<?= $this->extend('layout/main') ?> <?= $this->section('header') ?> <header> <div class="p-5 mb-4 bg-light rounded-3"> <div class="container-fluid py-5"> <h1 class="display-5 fw-bold">Mahasiswa Baru</h1> </div> </div> </header> <?= $this->endSection() ?> <?= $this->section('content') ?> <div class="container"> <form method="POST" action="<?= base_url('mahasiswa/create') ?>"> <div class="mb-3"> <label for="nama" class="form-label">Nama</label> <input type="text" name="nama" class="form-control" id="nama"> </div> <div class="mb-3"> <label for="nrp" class="form-label">NRP</label> <input type="text" name="nrp" class="form-control" id="nrp"> </div> <div class="mb-3"> <label for="jurusan" class="form-label">Jurusan</label> <input type="text" name="jurusan" class="form-control" id="jurusan"> </div> <div class="mb-3"> <label for="jenis_kelamin" class="form-label">Jenis Kelamin</label> <select id="jenis_kelamin" name="jenis_kelamin" class="form-select"> <option value="Laki-laki">Laki-laki</option> <option value="Perempuan">Perempuan</option> </select> </div> <button type="submit" class="btn btn-primary">Tambahkan Data Baru</button> </form> </div> <?= $this->endSection() ?>
- Tambahkan kode berikut pada controller app/Controllers/Mahasiswa.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public function create() { // lakukan validasi $validation = \Config\Services::validation(); $validation->setRules(['nama' => 'required']); $isDataValid = $validation->withRequest($this->request)->run(); // return redirect('mahasiswa'); // jika data valid, simpan ke database if($isDataValid){ $mahasiswa = new MahasiswaModel(); $mahasiswa->insert([ "nama" => $this->request->getPost('nama'), "nrp" => $this->request->getPost('nrp'), "jurusan" => $this->request->getPost('jurusan'), "jenis_kelamin" => $this->request->getPost('jenis_kelamin'), ]); session()->setFlashdata('success', 'Product created successfully'); return redirect('mahasiswa'); } // tampilkan form create return view('mahasiswa_create'); }
Kemudian buka kembali halaman /mahasiswa lalu pilih Tambah Mahasiswa Baru maka akan muncul tampilan berikut :
Lalu isikan data baru, dan pilih tambah, hasilnya data yang baru ditambahkan akan ditampilkan dalam list.
Sampai disini dulu, postingan kali ini, semoga bermanfaat, terima kasih
Comments
Post a Comment