Membuat CRUD Category dengan Framework codeigniter, Oke kita lanjutkan tutorial membuat web dengan codeigniter kita, kali ini kita akan membuat CRUD Category, dan dalam hal ini kita akan mengkoneksikan database yang sebelumnya sudah kita buat, silahkan cek artikel tentang Membangun Struktur database. kalau kalian mengikuti tutorial ini dari awal pasti sudah ada ya. Sekarang buka kodeingan kalian, disini saya menggunakan visual studio code. dan Nama projek saya adalah belajarweb yang ada di direktori C:xampphtdocsbelajarweb.
Sekarang kalian buka file autoload.php yang berada di application/config/autoload/autoload.php kemudian scroll ke bawah sampai kalian menemukan Auto-load Libraries lalu tambahkan beberapa code seperti di bawah ini :
$autoload['libraries'] = array('form_validation', 'database', 'session');
Kemudian scroll lagi ke bawah tambahkan juga form di helper.
$autoload['helper'] = array('url','form');
Kalau sudah silahkan di simpan.
kemudian kita akan mengkoneksikan database kita, silahkan buka file database.php masih di direktori config “application/config/autoload/database.php” kemudian seting bagian hostname biarkan default localhost, lalu username : root, password kalau menggunakan xampp di kosongkan saja, untuk database kemarin kita sudah buat namanya belajarweb, kalau nama database kalian berbeda silahkan di sesuaikan saja, untuk selengkapnya silahkan lihat code di bawah ini :
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'belajarweb',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Jika sudah silahkan di save
Sekarang kita akan membuat controller Category, silahkan buka file Category.php yang berada di application/controllers/admin/Category.php
kemudian ganti semua code dengan code di bawah ini
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Category extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('category_model');
}
public function index()
{
$category = $this->category_model->get_all();
//Validasi Form
$this->form_validation->set_rules(
'category_name',
'Nama Category',
'required|is_unique[category.category_name]',
array(
'required' => '%s Harus Di isi',
'is_unique' => '%s Sudah ada, buat Nama kategori lain'
)
);
if ($this->form_validation->run() === FALSE) {
$data = array(
'title' => 'Data Category',
'category' => $category,
'content' => 'backend/category/get_category'
);
$this->load->view('backend/layout/wrapp', $data, FALSE);
} else {
//Jika Berhasil data akan masuk ke database
$category_slug = url_title($this->input->post('category_name'), 'dash', TRUE);
$data = array(
'category_slug' => $category_slug,
'category_name' => $this->input->post('category_name')
);
$this->category_model->create($data);
$this->session->set_flashdata('sukses', 'Data telah ditambahkan');
redirect(base_url('admin/category'), 'refresh');
}
}
public function update($id)
{
//Ambil id category
$category = $this->category_model->detail($id);
//Validasi Form
$this->form_validation->set_rules(
'category_name',
'Nama Category',
'required|is_unique[category.category_name]',
array(
'required' => '%s Harus Di isi',
'is_unique' => '%s Sudah ada, buat Nama kategori lain'
)
);
if ($this->form_validation->run() === FALSE) {
$data = array(
'title' => 'Update Category',
'category' => $category,
'content' => 'backend/category/update'
);
$this->load->view('backend/layout/wrapp', $data, FALSE);
} else {
//Jika Berhasil data akan masuk ke database
$data = array(
'id' => $id,
'category_name' => $this->input->post('category_name')
);
$this->category_model->update($data);
$this->session->set_flashdata('sukses', 'Data telah di ubah');
redirect(base_url('admin/category'), 'refresh');
}
}
//Hapus data category
public function delete($id)
{
$category = $this->category_model->detail($id);
$data = array('id' => $category->id);
$this->category_model->delete($data);
$this->session->set_flashdata('sukses', 'Data telah di Hapus');
redirect(base_url('admin/category'), 'refresh');
}
}
Kalau sudah silahkan di simpan lalu sekarang kita akan buat sebuah model yang akan mengeksekusi ke database kita. Silahkan kalian buka folder models yang ada di application/models/ kemudian buat file dengan nama Category_model.php, Ingat ya huruf depan menggunakan huruf besar lalu copy code berikut ini
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Category_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
//list semua data category
public function get_all()
{
$this->db->select('*');
$this->db->from('category');
$this->db->order_by('id', 'ASC');
$query = $this->db->get();
return $query->result();
}
//Detail data category per id
public function detail($id)
{
$this->db->select('*');
$this->db->from('category');
$this->db->where('id', $id);
$this->db->order_by('id');
$query = $this->db->get();
return $query->row();
}
//tambah / Insert Data
public function create($data)
{
$this->db->insert('category', $data);
}
//Update data category
public function update($data)
{
$this->db->where('id', $data['id']);
$this->db->update('category', $data);
}
//Delete Data category
public function delete($data)
{
$this->db->where('id', $data['id']);
$this->db->delete('category', $data);
}
}
Kalau sudah silahkan di save, dan sekarang kita akan membuat tampilan view nya. Silahkan buka folder category yang ada di application/views/backend/category Nah di situ sebelumnya kita sudah membuat file get_category.php silahkan di buka, kemudian replace semua codenya dengan kode di bawah ini :
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800"><?php echo $title; ?></h1>
<?php include "create.php"; ?>
</div>
<?php
if ($this->session->flashdata('sukses')) {
echo '<div class="alert alert-success">';
echo $this->session->flashdata('sukses');
echo '</div>';
}
echo validation_errors('<div class="alert alert-warning">', '</div>'); ?>
<div class="card shadow mb-4">
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th width="5%">No</th>
<th>Nama Category</th>
<th width="20%">Aksi</th>
</tr>
</thead>
<tbody>
<?php $i = 1;
foreach ($category as $category) { ?>
<tr>
<td><?php echo $i; ?></td>
<td><?php echo $category->category_name; ?></td>
<td>
<a class="btn btn-success btn-sm" href="<?php echo base_url('admin/category/update/' . $category->id) ?>">
<i class="fa fa-edit"></i> Edit
</a>
<?php
include('delete.php');
?>
</td>
</tr>
<?php $i++;
}; ?>
</tbody>
</table>
</div>
</div>
</div>
Kalau sudah silahkan di save.kemudian masih di folder category buat file dengan nama create.php kemudian copy paste code berikut ini :
<a href="#" class="btn btn-primary btn-icon-split" data-toggle="modal" data-target="#Tambah">
<span class="icon text-white-50">
<i class="fas fa-tag"></i>
</span>
<span class="text">Buat Category Baru</span>
</a>
<div class="modal modal-default fade" id="Tambah">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Tambah Kategori</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<?php
//Form Open
echo form_open(base_url('admin/category'));
?>
<div class="form-group">
<label>Nama Kategori</label>
<input type="text" class="form-control" name="category_name" placeholder="Nama Kategori">
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" name="submit" value="Tambah Category">
</div>
<?php
echo form_close();
//Form Close
?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary pull-right" data-dismiss="modal"><i class="fa fa-close"></i> Tutup</button>
</div>
</div>
</div>
</div>
Kalau sudah silahkan di simpan. Kemudian buat lagi file update.php, kemudian copy code berikut :
<div class="col-md-6">
<div class="card">
<div class="card-header">
<?php echo $title; ?>
</div>
<div class="card-body">
<?php
echo validation_errors('<div class="alert alert-warning">', '</div>');
echo form_open(base_url('admin/category/update/' . $category->id));
?>
<div class="row">
<div class="col-md-3"><label>Nama Kategori</label></div>
<div class="col-md-9">
<div class="form-group">
<input type="text" class="form-control" name="category_name" value="<?php echo $category->category_name ?>">
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" name="submit" value="Update Category">
</div>
<?php
echo form_close();
?>
</div>
</div>
</div>
</div>
</div>
Lalu simpan file. dan terakhir buat file delete.php, kemudian copy code berikut ini :
<button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#Delete<?php echo $category->id; ?>">
<i class="fa fa-trash-o"></i> Hapus
</button>
<div class="modal modal-danger fade" id="Delete<?php echo $category->id; ?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Menghapus Data</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<p>Apakah Anda Yakin Ingin Menghapus Data category <b><?php echo $category->category_name ?></b>?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary pull-left" data-dismiss="modal"><i class="fa fa-close"></i> Tutup</button>
<a href="<?php echo base_url('admin/category/delete/' . $category->id); ?>" class="btn btn-danger pull-right"><i class="fa fa-trash-o"></i> Ya, Hapus data ini</a>
</div>
</div>
</div>
</div>
Jika sudah silahkan save, kemudian silahkan test membuat category baru, update/edit dan hapus, jika semua berjalan dengan normal maka anda sudah mengikuti tutorial ini dengan benar. Oke sampai disini tutorial kita nanti kita akan lanjutkan untuk membuat CRUD Article, sampai jumpa di tutorial selanjutnya.