Update dan Delete Data di Code Igniter 4 dan Memulai Membuat Web Sederhana (P.3)

Halo sobat Sidat.ID, bagaimana kabar sobat semua ? semoga selalu dalam keadaan sehat dan sukses. Kali ini kita akan lanjutkan kembali pembahasan kita mengenai Code Igniter 4. Dan pada sesi sebelumnya, kita sudah menyelesaikan bagian view dan insert data, kali ini kita akan lanjutkan ke bagian Update dan Delete Data di Code Igniter 4 dan Memulai Membuat Web Sederhana (P.3).



Edit / Update Data Buku

Tanpa berlama-lama yuk kita mulai pembahasannya. Kita mulai dari v_bookdetail.php , ketika user mengklik button Edit maka akan diarahkan ke halaman edit buku dan di form tersebut akan muncul data buku yang dipilih.

Jadi kita siapkan formnya dan kita buat sebuah file.php dengan nama v_updatebook.php dan berikut ini adalah code yang bisa sobat ketikkan di dalamnya.

<?php echo $this->extend('template/v_template'); ?>
<?php echo $this->section('content'); ?>
<div class="container">
<div class="row">
<div class="col-8">
<h2 class="my-3">Update Book Form</h2>
<form action="/books/updatebook/<?php echo $book['id']; ?>" method="POST">
<!--menghalangi pembajakan dari form lain -->
<?php echo csrf_field(); ?>
<!-- ini untuk slug disembunyikan, karena bukan inputan user -->
<input type="hidden" name="slug" value="<?php echo $book['slug']; ?>">

<div class="form-group row">
<label for="book_title" class="col-sm-3 col-form-label">Book Title</label>
<div class="col-sm-9">
<input type="text" class="form-control <?php echo ($validation->hasError('book_title')) ? 'is-invalid' : ''; ?>" id="book_title" name="book_title" autofocus value="<?php echo (old('book_title')) ? old('book_title') : $book['title'] ?>">
<div class="invalid-feedback">
<?php echo $validation->getError('book_title'); ?>
</div>
</div>
</div>
<div class="form-group row">
<label for="author" class="col-sm-3 col-form-label">Author</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="pubisher" name="author" value="<?php echo (old('author')) ? old('author') : $book['author'] ?>">
</div>
</div>
<div class=" form-group row">
<label for="publisher" class="col-sm-3 col-form-label">Pubisher</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="pubisher" name="publisher" value="<?php echo (old('publisher')) ? old('publisher') : $book['publisher'] ?>">
</div>
</div>
<div class=" form-group row">
<label for="category" class="col-sm-3 col-form-label">Category</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="category" name="category" value="<?php echo (old('category')) ? old('category') : $book['category'] ?>">
</div>
</div>
<div class=" form-group row">
<label for="cover" class="col-sm-3 col-form-label">Book Cover</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="cover" name="cover" value="<?php echo (old('cover')) ? old('cover') : $book['cover'] ?>">
</div>
</div>
<div class=" form-group row">
<div class="col-sm-9">
<button type="submit" class="btn btn-primary">Update Book</button>
</div>
</div>
</form>
</div>
</div>
</div>
<?php echo $this->endSection('content'); ?>

Selanjutnya, kita simpan filenya dan kita buat method pada controller Books.php dengan nama form_updatebook($slug). Dan berikut ini adalah codenya.

public function form_updatebook($slug)
{
$data = [
'title' => "EDIT / UPDATE BOOK",
'validation' => ConfigServices::validation(),
'book' => $this->Tb_bookModel->getBook($slug)
];

return view('books/v_updatebook', $data);
}


Jadi pada tombol Edit , kita akan memanggil controller Books dan memanggil method form_updatebook dan mengirimkan nilai $slug untuk nantinya data buku ditampilkan sesuai dengan $slug yang kita kiriman. Otomatis pada form v_updatebook.php akan terisi oleh data buku.

Sobat perhatikan pada code berikut (di v_updatebook.php)

<form action="/books/updatebook/<?php echo $book['id']; ?>" method="POST">

Kita akan gunakan method updatebook untuk mengambil perubahan yang dilakukan oleh user dan menyimpannya kedalam database. Jadi di controller Books.php kita buat ethod baru dengan nama updatebook. Dan berikut ini adalah code yang bisa sobat ketikkan di dalamnya.

public function updatebook($id)
{
// cek judulnya terlebih dahulu
$oldbook = $this->Tb_bookModel->getBook($this->request->getVar('slug'));
if ($oldbook['title'] == $this->request->getVar('book_title')) {
$rule_title = 'required';
} else {
$rule_title = 'required|is_unique[tb_book.title]';
}

// validasi data, jika ada judul yang sama dan tidak diubah
if (!$this->validate([
'book_title' => [
'rules' => $rule_title,
'errors' => [
'required' => 'Book Title field can not empty ',
'is_unique' => 'Book Title already used in database '
]
]
])) {
$validation = ConfigServices::validation();
return redirect()->to('/books/form_updatebook/' . $this->request->getVar('slug'))->withInput()->with('validation', $validation);
}

$slug = url_title($this->request->getVar('book_title'), '-', true);
$this->Tb_bookModel->save([
'id' => $id,
'title' => $this->request->getVar('book_title'),
'slug' => $slug,
'author' => $this->request->getVar('author'),
'publisher' => $this->request->getVar('publisher'),
'category' => $this->request->getVar('category'),
'cover' => $this->request->getVar('cover')
]);

session()->setFlashdata('message', 'Book Has Been Updated.');

return redirect()->to('/books');
}

Sobat simpan codenya, dan coba jalankan fungsi Editnya. Jadi pada Update / Edit data ini, kita juga berikan validasi (pada code diatas sudah diberikan comment). Karena menggunakan slug untuk proses view data, jadi kita berikan validasi ketika ada peruabahan user dengan menggunakan judul yang sama, maka perubahan tersebut akan ditolak.


Delete / Hapus Data Buku

Oke, selanjutnya kita akan memberikan fungsi Hapus data pada tombol Delete di Book Detail. Untuk menambahkan perintah delete, sebelumnya pada tombol Delete di file v_bookdetail.php kita sudah tambahkan code berikut :

<form action="/books/<?php echo $book['id']; ?>" method="POST" class="d-inline">
<?php echo csrf_field(); ?>
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="btn btn-danger" onclick="return confirm('Are you sure want to DELETE this book ?'); ">Delete</button>
</form>


Kemduian, kita buat method baru di controller Books.php dengan nama delete($id). Buku akan dihapus dengan berdasarkan id buku yang dikirimkan. Berikut ini adalah codenya :

public function delete($id)
{
$this->Tb_bookModel->delete($id);
session()->setFlashdata('message', 'Book DELETED successfully.');
return redirect()->to('/books');
}

Kalau sudah, sobat bisa menyimpan filenya, dan kemudian uji coba untuk proses Edit dan Delete.


Berikut ini adalah screen shoot untuk proses Update Data

Update dan Delete Data di Code Igniter 4 dan Memulai Membuat Web Sederhana (P.3)

Dan berikut ini adalah hasil ketika update berhasil dilakukan

Update dan Delete Data di Code Igniter 4 dan Memulai Membuat Web Sederhana (P.3)

Dan terkahir untuk bagian delete, jadi sebelum kita benar-benar menghapus data , kita akan ditanya apakah benar ingin menghapus data, klik OK untuk menghapus data.

Update dan Delete Data di Code Igniter 4 dan Memulai Membuat Web Sederhana (P.3)

OK sobat, sekian dulu tutorial berseri mengenai Code Igniter 4. Jika sobat ingin belajar dan menggunakan file yang telah dibuat bisa mendownloadnya dari link dibawah ini. Semoga tutorial kali ini membantu dan meningkatkan kemampuan sobat dalam penerapan pembuatan web menggunakan Code Igniter 4.

Terimakasih, salam Sidat.ID.

Comentarios

Entradas populares de este blog

Car Insurance Quotes

Cara Install dan Download Virtual Box di Windows

5 manfaat ikan sidat