Tutorial Codeigniter Part 21 – Membuat CRUD (Create,Read, Update, Delete) di Codeigniter
Selamat datang di warungbelajar, dalam tutorial ini kita akan melanjutkan pembahasan mengenai seri tutorial codeigniter, dalam tutorial ini kita akan membahas bagaimana cara membuat crud (Create, Read, Update, Delete) di codeigniter, harapannya anda dapat melakukan komunikasi antara project codeigniter anda dengan database, setidaknya di operasional standart seperti Create, Read, Update, dan Delete.
Crud yang kita buat disini dengan study kasusnya adalah data siswa, untuk datanya antara lain menyimpan data :
- nama
- jenis_kelamin
- tempat_lahir
- tanggal_lahir
- no_telp
- alamat
Beberapa hal yang akan kita gunakan dalam tutorial ini antara lain adalah :
- PHP 7.3.9
- MySQL
- Visual Studio Code ( Text Editor )
- Bootstrap 4
Mempersiapkan Database
Baik untuk langkah awal kita akan buat terlebih dahulu databasenya, anda bisa menggunakan phpmyadmin untuk memudahkan anda dalam membuat database dan tabelnya, silahkan buka localhost/phpmyadmin untuk membuka phpmyadmin
lalu dibagian database kita buat database baru, semisal dengan nama crud, lalu klik tombol create
Berikutnya buat tabel dengan nama tb_siswa dengan jumlah kolom adalah 7, lalu klik Go
Berikutnya buat beberapa kolom dengan struktur seperti berikut ini :
- kd_siswa : (int) Primary Key, Auto Increment
- nama : Varchar(255)
- jenis_kelamin : Enum(‘pria’,’wanita’)
- tempat_lahir : Varchar(255)
- tanggal_lahir : date
- no_telp : Varchar(100)
- alamat : Varchar(100)
setelah itu silahkan klik save.
Nah dalam step ini kita sudah membuat database, beserta tabelnya, nah karena untuk bagian awal nanti kita akan belajar menampilkan data terlebih dahulu sehingga kita perlu menambahkan datanya terlebih dahulu, dalam contoh ini kita akan menambahkan 2 data.
Untuk menambahkan data silahkan klik menu Insert
lalu silahkan klik tombol Go, sehingga kita memilih 2 data siswa.
Untuk melihat data anda bisa klik menu browse
Selain cara diatas anda bisa membuat database, tabel serta mengisi data siswa menggunakan query SQL dibawah 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
-- phpMyAdmin SQL Dump -- version 4.9.0.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Apr 22, 2020 at 02:49 PM -- Server version: 10.4.6-MariaDB -- PHP Version: 7.3.9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `crud` -- CREATE DATABASE IF NOT EXISTS `crud` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `crud`; -- -------------------------------------------------------- -- -- Table structure for table `tb_siswa` -- CREATE TABLE `tb_siswa` ( `kd_siswa` int(11) NOT NULL, `nama` varchar(255) NOT NULL, `jenis_kelamin` enum('pria','wanita') NOT NULL, `tempat_lahir` varchar(255) NOT NULL, `tanggal_lahir` date NOT NULL, `no_telp` varchar(100) NOT NULL, `alamat` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_siswa` -- INSERT INTO `tb_siswa` (`kd_siswa`, `nama`, `jenis_kelamin`, `tempat_lahir`, `tanggal_lahir`, `no_telp`, `alamat`) VALUES (1, 'Anton Nugraha', 'pria', 'Sidoarjo', '1996-04-04', '0813324354', 'Jl. Gelatik No. 76, Surabaya'), (2, 'Budi Santoso', 'pria', 'Surabaya', '1996-01-01', '08568976545', 'Jl. Bima Sakti 90 Sidoarjo'), (3, 'cika', 'wanita', 'sidoarjo', '2020-05-01', '1231231', 'sedati'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_siswa` -- ALTER TABLE `tb_siswa` ADD PRIMARY KEY (`kd_siswa`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_siswa` -- ALTER TABLE `tb_siswa` MODIFY `kd_siswa` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
Baik asumsi saya anda sudah selesai mempersiapkan databasenya, berikutnya kita mempersiapkan project codeigniter, serta melakukan settingan beberapa bagian.
Mempersiapkan Project Codeigniter
Berikutnya silahkan teman – teman download dan install codeigniter 3, dalam contoh ini nama folder projectnya adalah crud, untuk tutorial langkah – langkah instalasi codeigniter anda bisa melihat tutorial kita sebelumnya Tutorial Cara Menginstall Codeigniter
Setting Konfigurasi Database
Berikutnya kita perlu setting database terlebih dahulu, silahkan buka file application/config/database.php, lalu berikutnya silahkan setting bagian database dengan settingan kurang lebih seperti berikut ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'crud', '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 ); |
yang perlu disetting antara lain :
- hostname : localhost
- username : root (menyesuaikan username dari databasenya)
- password : ” biarkan kosong menyesuaikan password databasenya
- database : ‘crud’ (merupakan nama dari databasenya)
- dbdriver : ‘mysqli’
Setting File Config
Berikutnya silahkan buka file application/config/config.php
Ubah bagian
1 |
$config['base_url] = ''; |
menjadi
1 |
$config['base_url'] = 'http://localhost/crud/'; |
Ubah bagian
1 |
$config['index_page'] = 'index.php'; |
menjadi
1 |
$config['index_page'] = ''; |
hal ini kita seting karena kita akan menghilangkan index.php
Buat file .htaccess dibagian root folder dan isi codenya adalah seperti berikut ini :
1 2 3 4 |
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] |
untuk tutorial lebih lengkapnya bisa dilihat di tutorial kita sebelumnya : cara menghilangkan index.php di codeigniter
Load library dan Helper
Berikutnya kita akan load beberapa library , dan helper, silahkan buka file dengan nama application/config/autoload.php
ubah bagian
1 |
$autoload['libraries'] = array(''); |
menjadi
1 |
$autoload['libraries'] = array('database','session'); |
ubah bagian
1 |
$autoload['helper'] = array(''); |
menjadi
1 |
$autoload['helper'] = array('url'); |
kita load helper url, karena kita akan menggunakan perintah base_url nantinya
Mempersiapkan library CSS & JS untuk tampilan aplikasi
agar tampilan aplikasinya lebih menarik kita akan buat tampilannya dengan bootstrap, serta kita juga akan menggunakan datepicker untuk memilih tanggal lahir siswa.
Beberapa library CSS yang perlu anda download linknya ada dibawah ini :
- https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css
- https://unpkg.com/bootstrap-datepicker@1.9.0/dist/css/bootstrap-datepicker3.min.css
Beberapa library JS yang perlu anda download linknya ada dibawah ini :
- https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js
- https://code.jquery.com/jquery-3.5.0.min.js
- https://unpkg.com/bootstrap-datepicker@1.9.0/dist/js/bootstrap-datepicker.min.js
Berikutnya buat folder dengan nama assets, didalam folder assets kita buat 2 folder yaitu
- css
- js
hasil download library css kita letakkan di folder assets/css
hasil download library js kita letakkan di folder assets/js
jadi kurang lebih seperti berikut ini :
Membuat Bagian Template Header & Footer
Berikutnya kita akan buat file untuk keperluan template, bagian template ini kita akan bagi menjadi 3 bagian :
- header
- content
- footer
Buat file header.php
kita buat file header.php didalam folder application/views/template/header.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<!doctype html> <html lang="en"> <head> <title>Starter Template for Bootstrap</title> <link href="<?php echo base_url(); ?>assets/css/bootstrap.min.css" rel="stylesheet"> <link href="<?php echo base_url(); ?>assets/css/bootstrap-datepicker3.min.css" rel="stylesheet"> <script src="<?php echo base_url(); ?>assets/js/jquery-3.5.0.min.js"></script> <script src="<?php echo base_url(); ?>assets/js/bootstrap.min.js"></script> <script src="<?php echo base_url(); ?>assets/js/bootstrap-datepicker.min.js"></script> </head> <body> |
kita tuliskan kode untuk mengakses library css dan js yang sebelumnya telah kita download :
- line 5 – 6 load library css
- line 7 – 9 load library js
Buat File Footer.php
berikutnya kita buat file dengan nama footer.php didalam folder application/views/template/footer.php, untuk isi codenya adalah sebagai berikut :
1 2 3 4 5 6 7 8 |
<footer class="footer"> <div class="container" style="text-align:center;"> <hr/> <span>Warung Belajar @<?php echo date('Y'); ?></span> </div> </footer> </body> </html> |
baik kebutuhan untuk template sudah selesai kita akan mulai membuat CRUD, kita akan mulai dengan dengan membuat halaman untuk read data.
Membuat Fitur Read Data
Untuk langkah awal kita akan membuat fitur untuk menampilkan data siswa, kita perlu membuat controller terlebih dahulu, dalam contoh ini kita buat dengan nama Siswa.php
posisi file controller berada pada application/controller/Siswa.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } } |
Berikutnya kita buat file model dengan nama Siswa_model.php, didalam folder application/models/Siswa_model.php
1 2 3 4 5 6 7 8 9 10 11 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } } |
Berikutnya kita buat file view dengan nama index.php, posisi file view berada pada application/siswa/index.php, isinya adalah seperti berikut 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 42 43 |
<main role="main" class="container"> <div class="card"> <div class="card-header">Data Siswa</div> <div class="card-body"> <a href="<?php echo base_url(); ?>siswa/create" class="btn btn-success">Create</a> <br/> <br/> <table class="table table-bordered"> <tr> <th width="5%">No</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Tanggal Lahir</th> <th>Tempat Lahir</th> <th>Telp</th> <th>Alamat</th> <th>Action</th> </tr> <?php $no = 1; foreach($siswa as $row) { ?> <tr> <td widtd="5%"><?php echo $no++; ?></td> <td><?php echo $row->nama; ?></td> <td><?php echo $row->jenis_kelamin; ?></td> <td><?php echo $row->tanggal_lahir; ?></td> <td><?php echo $row->tempat_lahir; ?></td> <td><?php echo $row->no_telp; ?></td> <td><?php echo $row->alamat; ?></td> <td> <a href="<?php echo base_url(); ?>siswa/edit/<?php echo $row->kd_siswa; ?>" class="btn btn-warning">Edit</a> <a href="<?php echo base_url(); ?>siswa/delete/<?php echo $row->kd_siswa; ?>" class="btn btn-danger">Hapus</a> </td> </tr> <?php } ?> </table> </div> </div> </main> |
Nah berikutnya kita akan coba mengakses, dengan alamat : localhost/crud/siswa
Penjelasan :
Kita Mulai dari file Controller Siswa.php, dibagian function __construct kita load model dengan nama siswa_model.php agar data berkomunikasi dengan tabel siswa di database, selain itu kita load library form_validation untuk keperluan validasi form.
1 2 3 4 5 6 |
public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } |
berikutnya pada method index kita menuliskan beberapa perintah antara lain :
1 |
$data['siswa'] = $this->siswa_model->getAll(); |
digunakan untuk mengambil data siswa, kita mengakses method getAll di model siswa_model, data tersebut kita simpan di array $data dengan elemen siswa
1 2 3 4 |
public function getAll() { return $this->db->get($this->table)->result(); } |
ini merupakan method getAll di model siswa_model.php, dimana kita menuliskan perintah untuk mengambil data di table siswa, disitu kita menuliskan $this->table yang berisi nilai ‘tb_siswa‘ (perhatikan line 5 di siswa_model.php)
1 2 3 |
$this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); |
ini adalah perintah di controller siswa.php, untuk menampilkan view, kita mengakses 3 view sekaligus, kita menatanya sesuai template yaitu :
- header (mengakses file view template/header.php)
- content (mengakses file view siswa/index.php) kita juga passing data berupa array $data yang berisi data siswa hasil query dari method getAll di model siswa_model.php
- footer (mengakses file view template/footer.php)
Berikutnya kita beralih ke file view siswa/index.php
perhatikan beberapa kode dibawah ini :
Kita buat tombol untuk menambah data, dimana jika tombol ini di klik akan mengakses alamat http://localhost/crud/siswa/create, perhatikan kode line 5
1 |
<a href="<?php echo base_url(); ?>siswa/create" class="btn btn-success">Create</a> |
kita lakukan extract variabel $siswa yang merupakan array yang dipassing dari controller, kita gunakan perintah foreach (Line 21)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
foreach($siswa as $row) { ?> <tr> <td widtd="5%"><?php echo $no++; ?></td> <td><?php echo $row->nama; ?></td> <td><?php echo $row->jenis_kelamin; ?></td> <td><?php echo $row->tanggal_lahir; ?></td> <td><?php echo $row->tempat_lahir; ?></td> <td><?php echo $row->no_telp; ?></td> <td><?php echo $row->alamat; ?></td> <td> <a href="<?php echo base_url(); ?>siswa/edit/<?php echo $row->kd_siswa; ?>" class="btn btn-warning">Edit</a> <a href="<?php echo base_url(); ?>siswa/delete/<?php echo $row->kd_siswa; ?>" class="btn btn-danger">Hapus</a> </td> </tr> <?php } |
kita menampilkan setiap data siswanya dengan perpaduan perintah html <tr></td> dan <td></td>
untuk menampilkan data kita bisa menuliskan perintah $row->nama_kolom, semisal menampilkan nilai dari kolom alamat maka menggunakan perintah $row->alamat
bagian tombol edit akan mengakses alamat : http://localhost/crud/siswa/edit/kd_siswa, karena kd_siswa ada dalam kolom kd_siswa sehingga kita menggunakan perintah $row->kd_siswa
bagian tombol hapus akan mengakses alamat : http://localhost/crud/siswa/delete/kd_siswa, karena kd_siswa ada dalam kolom kd_siswa sehingga kita menggunakan perintah $row->kd_siswa
Membuat Form untuk Menambahkan Data
Kembali ke controller Siswa.php, lalu tambahkan function create, sehingga kode di controller Siswa.php menjadi seperti berikut 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 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } |
Keterangan :
Perintah dibagian method create akan menampilkan file view dengan nama create.php di dalam folder application/views/siswa/create.php (Line 24)
tidak hanya itu kita juga mengakses file view header.php (Line 23), dan view footer.php (Line 24) untuk keperluan template.
Berikutnya kita buat file view dengan nama create.php, posisi file view berada pada folder application/create.php, isi kodenya adalah sebagai 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<div class="container"> <div class="card"> <div class="card-header">Create Siswa</div> <div class="card-body"> <?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> <form method="post" action="<?php echo base_url(); ?>siswa/save"> <div class="form-group"> <label for="nama">Nama</label> <input type="text" class="form-control" id="nama" name="nama"> </div> <div class="form-group"> <label for="jenis_kelamin">Jenis Kelamin</label> <select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria">Pria</option> <option value="wanita">Wanita</option> </select> </div> <div class="form-group"> <label for="tempat_lahir">Tempat Lahir</label> <input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir"> </div> <div class="form-group"> <label for="tgl_lahir">Tanggal Lahir</label> <input type="text" class="form-control datepicker" id="tanggal_lahir" name="tanggal_lahir"> </div> <div class="form-group"> <label for="no_telp">No Telp</label> <input type="number" class="form-control" id="no_telp" name="no_telp"> </div> <div class="form-group"> <label for="alamat">Alamat</label> <textarea class="form-control" name="alamat" id="alamat"></textarea> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> |
Untuk menampilkan form tambah data, anda bisa menggunakan alamat : http://localhost/crud/siswa/create
Keterangan :
Pada Line 6 kita menuliskan perintah untuk melakukan pengecekan apakan nantinya entrian form sudah valid sesuai form validation, jika tidak valid maka akan menampilkan pesan error berisi informasi entrian form yang tidak valid
1 2 3 4 5 6 7 8 9 10 |
<?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> |
Line 15 untuk bagian form kita menggunakan method post, dan entrian form akan di proses di method save pada controller Siswa
1 |
<form method="post" action="<?php echo base_url(); ?>siswa/save"> |
Line 18 kita buat inputan form dengan name=”nama”
1 |
<input type="text" class="form-control" id="nama" name="nama"> |
Line 23 – 26 kita buat pilihan dengan menggunakan selectbox dengan name=”jenis_kelamin”
1 2 3 4 |
<select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria">Pria</option> <option value="wanita">Wanita</option> </select> |
Line 31 kita buat inputan dengan name = “tempat_lahir”
1 |
<input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir"> |
Line 36 kita buat inputan dengan name=”tanggal_lahir”, disini kita juga tambahkan class datepicker, karena kita akan menggunakan datepicker untuk memilih tanggalnya.
1 |
<input type="text" class="form-control datepicker" id="tanggal_lahir" name="tanggal_lahir"> |
Line 41 kita buat inputan dengan name =”no_telp”
1 |
<input type="number" class="form-control" id="no_telp" name="no_telp"> |
Line 46 kita buat textarea dengan name=”alamat”
1 |
<textarea class="form-control" name="alamat" id="alamat"></textarea> |
Line 49 kita buat tombol submit untuk submit form
1 |
<button type="submit" class="btn btn-primary">Submit</button> |
Membuat Method untuk memproses menambahkan data
Untuk melakukan proses terhadap inputan form tambah data, kita perlu membuat method dengan nama save di controller Siswa.php, sehingga controller Siswa isinya menjadi seperti 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } public function save() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->save($data); redirect('siswa'); } else { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } } |
Keterangan :
Pada line 28 kita buat function save untuk memproses hasil inputan dari form tambah data.
Kita buat validasi untuk inputan form, dimana inputan dengan name (nama,jenis_kelamin,tempat_lahir,tanggal_lahir, no_telp, alamat) bersifat required yang artinya harus diisi inputan formnya.
1 2 3 4 5 6 7 |
$this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) |
untuk tutorial lebih lanjut mengenai form validasi bisa lihat tutorial kita sebelumnya : Penanganan Form dan Form validasi di Codeigniter
Jika validasi form bernilai true atau bisa dikatakan inputan formnya valid seluruhnya sesuai form validasi, maka akan menjalankan code dibaris 38 – 45.
line 38 – 43 kita menangkap inputan form dan disimpan dalam array $data, kita menangkap inputan form dengan menggunakan method post sehingga perintahnya adalah $this->input->post(‘nama_inputan’)
1 2 3 4 5 6 |
$data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); |
Line 44 kita mengakses method save di model Siswa_model, dengan mengirimkan parameter variabel $data yang telah berisi inputan form.
1 |
$this->siswa_model->save($data); |
Line 45 kita lakukan redirect ke dalam alamat : http://localhost/crud/siswa
1 |
redirect('siswa'); |
line 49 – 51 akan dijalankan jika inputan form ada yang tidak valid sesuai form validasi, maka akan menampilkan view dengan nama create didalam folder application/views/siswa/create.php atau secara sederhana kembali menampilkan form inputan.
1 2 3 |
$this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); |
Menambahkan method save di model Siswa_model.php
silahkan buka file Siswa_model.php dan tambahkan method save, sehingga kode file Siswa_model.php menjadi berikut ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } public function save($data) { return $this->db->insert($this->table, $data); } } |
Keterangan :
pada line 12 kita membuat method save, dengan memiliki satu parameter yaitu variabel $data, parameter ini adalah variabel array yang berisi inputan form yang dikirimkan dari controller Siswa.php pada method save
disini kita akan insert data ke dalam tabel tb_siswa, perintahnya adalah :
1 |
return $this->db->insert($this->table, $data); |
jadi perintah insert disini memiliki 2 parameter yaitu :
- nama tabel yang akan kita insert data, maka dalam contoh ini kita tuliskan $this->table karena bagian class variabel $table sudah kita berikan nilai “tb_siswa”
- parameter yang kedua adalah data yang akan diinsert di tabel yang ditulis di parameter pertama, dalamm contoh ini adalah variabel $data yang berisi array hasil inputan form
Membuat Form Edit Data
Berikutnya kita akan melanjutkan ke proses edit data, bagian ini kita akan bagian menjadi 2 yaitu, pembuatan form editnya, dan proses updatenya.
kita akan mulai dibagian form editnya terlebih dahulu, perhatikan dibagian file view application/views/siswa/index.php
perhatikan pada line 33 kita membuat tombol edit :
1 |
<a href="<?php echo base_url(); ?>siswa/edit/<?php echo $row->kd_siswa; ?>" class="btn btn-warning">Edit</a> |
Keterangan :
tombol edit ini jika di klik akan mengakses alamat : localhost/crud/siswa/edit/kd_siswa
sehingga bisa disimpulkan untuk menampilkan form edit kita perlu mengakses method edit didalam controller siswa, dan juga menyertakan nilai kolom kd_siswa dari siswa yang akan diedit.
Nah untuk langkah awal kita akan tambahkan method edit didalam controller siswa, silahkan buka file controller application/controller/Siswa.php, lalu tambahkan bagian method edit, sehingga hasilnya akan seperti berikut 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } public function save() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->save($data); redirect('siswa'); } else { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } function edit($kd_siswa) { $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } } |
Berikutnya buka file model Siswa_model.php dalam folder application/models/Siswa_model.php, lalu tambahkan method getById, sehingga hasil dari Siswa_model.php adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } public function save($data) { return $this->db->insert($this->table, $data); } public function getById($id) { return $this->db->get_where($this->table, ["kd_siswa" => $id])->row(); } } |
Keterangan :
Kita menambahkan method edit di controller Siswa di line 55 – 61, pada method edit ini kita menambahkan 1 parameter yaitu $kd_siswa
Pada line 57 di controller siswa kita mengakses method getById didalam siswa_model, dengan menyertakan parameter yang dibutuhkan yaitu $kd_siswa, dimana nanti hasilnya akan kita simpan pada array $data dengan nama key/elemen yaitu siswa
1 |
$data['siswa'] = $this->siswa_model->getById($kd_siswa); |
Pada line 17 di model Siswa_model kita buat method dengan nama getById dan memiliki parameter $id, dalam method ini kita buat perintah query untuk mencari data siswa berdasarkan kd_siswa yang sama dengan nilai dari variabel $id.
1 2 3 4 |
public function getById($id) { return $this->db->get_where($this->table, ["kd_siswa" => $id])->row(); } |
kita kembali ke bagian controller siswa.php, pada method edit setelah kita mengambil data siswa berdasarkan kd_siswa, berikutnya kita akan load view header, edit, dan footer.
kita fokus load view edit.php pada line 59, kita juga passing data yang berupa variabel array $data yang berisi data siswa sesuai kd_siswa yang diinginkan.
1 2 3 |
$this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); |
berikutnya kita buat file view dengan nama edit.php, kita buat di folder application/views/siswa/edit.php, untuk isi kodenya seperti 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<div class="container"> <div class="card"> <div class="card-header">Edit Siswa</div> <div class="card-body"> <?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> <form method="post" action="<?php echo base_url(); ?>siswa/update"> <input type="hidden" name="kd_siswa" id="kd_siswa" value="<?php echo $siswa->kd_siswa; ?>"/> <div class="form-group"> <label for="nama">Nama</label> <input type="text" value="<?php echo $siswa->nama; ?>" class="form-control" id="nama" name="nama"> </div> <div class="form-group"> <label for="jenis_kelamin">Jenis Kelamin</label> <select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria" <?php echo ($siswa->jenis_kelamin ? 'pria' : 'selected' ); ?> >Pria</option> <option value="wanita" <?php echo ($siswa->jenis_kelamin ? 'wanita' : 'selected' ); ?>>Wanita</option> </select> </div> <div class="form-group"> <label for="tempat_lahir">Tempat Lahir</label> <input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir" value="<?php echo $siswa->tempat_lahir; ?>"> </div> <div class="form-group"> <label for="tgl_lahir">Tanggal Lahir</label> <input type="text" class="form-control datepicker" readonly id="tanggal_lahir" name="tanggal_lahir" value="<?php echo $siswa->tanggal_lahir; ?>"> </div> <div class="form-group"> <label for="no_telp">No Telp</label> <input type="number" class="form-control" value="<?php echo $siswa->no_telp; ?>" id="no_telp" name="no_telp"> </div> <div class="form-group"> <label for="alamat">Alamat</label> <textarea class="form-control" name="alamat" id="alamat"><?php echo $siswa->alamat; ?></textarea> </div> <button type="submit" class="btn btn-primary">Update</button> </form> </div> </div> </div> |
Keterangan :
Line 5 – 14 kita tuliskan perintah untuk melakukan pengecekan terhadap error validasinya, nantinya jika ada error terhadap form validasi maka akan menampilkan error.
1 2 3 4 5 6 7 8 9 10 |
<?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> |
Line 15 kita buat form dengan perintah HTML, dengan method = “post” dan bagian action akan mengakses alamat localhost/crud/siswa/update untuk memproses form update.
1 |
<form method="post" action="<?php echo base_url(); ?>siswa/update"> |
jadi bisa kita simpulkan form update akan di proses dibagian method update di controller siswa.
Line 16 kita buat inputan dengan type hidden dengan name kd_siswa, dan value kita set $siswa->kd_siswa; yang artinya mengambil nilai pada kolom kd_siswa dari variabel $siswa, variabel $siswa adalah nilai yang dipassing dari controller kebagian view.
1 |
<input type="hidden" name="kd_siswa" id="kd_siswa" value="<?php echo $siswa->kd_siswa; ?>"/> |
Line 24 – 27 kita buat selectbox dengan nama jenis_kelamin, dan untuk option yang terpilih kita sesuai dengan nilai jenis_kelamin dari data siswa
1 2 3 4 |
<select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria" <?php echo ($siswa->jenis_kelamin ? 'pria' : 'selected' ); ?> >Pria</option> <option value="wanita" <?php echo ($siswa->jenis_kelamin ? 'wanita' : 'selected' ); ?>>Wanita</option> </select> |
Line 32 kita buat input type text dengan name tempat_lahir, yang bagian value kita isi dengan nilai kolom tempat_lahir di data siswa
1 |
<input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir" value="<?php echo $siswa->tempat_lahir; ?>"> |
Line 37 kita buat input type text dengan name tanggal_lahir, yang bagian value kita isi dengan nilai kolom tanggal_lahir di data siswa
1 |
<input type="text" class="form-control datepicker" readonly id="tanggal_lahir" name="tanggal_lahir" value="<?php echo $siswa->tanggal_lahir; ?>"> |
Line 42 kita buat input type text dengan name no_telp, yang bagian value kita isi dengan nilai kolom no_telp di data siswa
1 |
<input type="number" class="form-control" value="<?php echo $siswa->no_telp; ?>" id="no_telp" name="no_telp"> |
Line 47 kita buat textarea dengan name alamat, yang bagian value kita isi dengan nilai kolom alamat di data siswa
1 |
<textarea class="form-control" name="alamat" id="alamat"><?php echo $siswa->alamat; ?></textarea> |
Line 50 kita buat tombol update, yang nantinya akan ada tulisan Update.
1 |
<button type="submit" class="btn btn-primary">Update</button> |
Kita contohkan kita coba edit salah satu data siswa, semisal kita edit data yang pertama, alamatnya seperti berikut ini : localhost/crud/siswa/edit/1
Membuat Method Update untuk proses update data siswa
Berikutnya kita buat method update didalam controller siswa.php, sehingga kodenya menjadi seperti berikut 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } public function save() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->save($data); redirect('siswa'); } else { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } function edit($kd_siswa) { $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } public function update() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $kd_siswa = $this->input->post('kd_siswa'); $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->update($data,$kd_siswa); redirect('siswa'); } else { $kd_siswa = $this->input->post('kd_siswa'); $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } } } |
Berikutnya kita akan menambahkan method update didalam file model Siswa_model.php, method update ini memiliki 2 parameter, yaitu variabel $data dan variabel $id, sehingga file model Siswa_model.php berisi kode 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 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } public function save($data) { return $this->db->insert($this->table, $data); } public function getById($id) { return $this->db->get_where($this->table, ["kd_siswa" => $id])->row(); } public function update($data,$id) { return $this->db->update($this->table, $data, array('kd_siswa' => $id)); } } |
Keterangan :
kita mulai dari file controller siswa.php, line 65 – 70 kita tuliskan perintah untuk melakukan validasi inputan form, jika inputan form valid sesuai validasi form maka akan menjalankan line 73 – 81, tetapi jika tidak valid akan menjalankan line 85 – 89
1 2 3 4 5 6 |
$this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); |
Line 73 kita simpan inputan form kd_siswa kedalam variabel $kd_siswa
1 |
$kd_siswa = $this->input->post('kd_siswa'); |
Line 74 – 79 kita simpan inputan form (nama,jenis_kelamin,tempat_lahir,tanggal_lahir,no_telp,alamat ) inputan form ini akan disimpan kedalam variabel $data yang merupakan array.
1 2 3 4 5 6 |
$data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); |
Pada line 80 kita mengakses method update, didalam model siswa_model, kita juga menyertakan 2 parameter yaitu variabel $data, dan variabel $kd_siswa, dimana variabel $data berisi inputan dari form update, dan $kd_siswa adalah nilai kd_siswa yang akan diupdate.
1 |
$this->siswa_model->update($data,$kd_siswa); |
Berikutnya kita buat beralih ke file siswa_model.php, pada line 22 kita method update, dengan 2 parameter juga yaitu variabel $data, dan variabel $id.
Pada method update dibagian siswa_model ini kita tuliskan query untuk update data, untuk query update data kita perlu menuliskan 3 bagian penting, yaitu :
- nama tabelnya dalam hal ini kita tuliskan $this->table, yang memiliki nilai ‘tb_siswa’
- nilai yang diupdate, dalam hal ini kita tuliskan variabel $data yang telah berisi hasil inputan form update dari bagian controller
- kd_siswa dari data siswa yang akan diupdate, dalam ini ini tuliskan variabel $id yang berisi kode siswa dari nilai siswa yang akan diupdate.
1 2 3 4 |
public function update($data,$id) { return $this->db->update($this->table, $data, array('kd_siswa' => $id)); } |
Jika proses update berhasil akan diarahkan kedalam controller siswa pada method index (Line 81)
1 |
redirect('siswa'); |
Kita lanjut ke pembahasan dibagian controller siswa, jika inputan form tidak valid, maka akan menjalankan line 85 – 89, dimana bagian ini line 85 akan mendapatkan data kd_siswa, line 86 akan mendapatkan data siswa berdasarkan kd_siswa, lalu akan diarahkan untuk mengakses view bagian form edit, dengan passing variabel $data (Line 88)
1 2 3 4 5 |
$kd_siswa = $this->input->post('kd_siswa'); $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); |
Membuat Fitur Delete data siswa
Berikutnya kita akan melanjutkan untuk membuat fitur delete data siswa, jika kita perhatikan kita telah membuat tombol delete dibagian file view index.
coba buka file view dengan nama index.php didalam folder application/views/siswa/index.php, perhatikan pada line 34.
1 |
<a href="<?php echo base_url(); ?>siswa/delete/<?php echo $row->kd_siswa; ?>" class="btn btn-danger">Hapus</a> |
Keterangan :
tombol delete itu jika di klik maka akan mengakses localhost/crud/siswa/delete/kd_siswa.
jadi bisa disimpulkan proses delete data akan dilakukan di method delete pada controller siswa, dengan mengirimkan 1 parameter kd_siswa
berikutnya kita buka file controller siswa, lalu kita buat method delete, yang memiliki parameter $kd_siswa, hasilnya controller siswa menjadi 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } public function save() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->save($data); redirect('siswa'); } else { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } function edit($kd_siswa) { $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } public function update() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $kd_siswa = $this->input->post('kd_siswa'); $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->update($data,$kd_siswa); redirect('siswa'); } else { $kd_siswa = $this->input->post('kd_siswa'); $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } } function delete($kd_siswa) { $this->siswa_model->delete($kd_siswa); redirect('siswa'); } } |
Berikutnya kita buka file model Siswa_model.php, kita tambahkan method delete yang memiliki 1 parameter yaitu variabel $id
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 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } public function save($data) { return $this->db->insert($this->table, $data); } public function getById($id) { return $this->db->get_where($this->table, ["kd_siswa" => $id])->row(); } public function update($data,$id) { return $this->db->update($this->table, $data, array('kd_siswa' => $id)); } public function delete($id) { return $this->db->delete($this->table, array("kd_siswa" => $id)); } } |
Keterangan :
Controller Siswa, Line 93 kita membuat method delete, dimana memiliki 1 parameter $kd_siswa, line 95 kita akan mengakses method delete yang ada dalam model siswa_model dan juta mengirimkan parameter variabel $kd_siswa
1 2 3 4 5 |
function delete($kd_siswa) { $this->siswa_model->delete($kd_siswa); redirect('siswa'); } |
Model Siswa_model Line 27, kita membuat method delete dengan memiliki 1 parameter yaitu variabel $id, pada method delete ini kita tuliskan perintah query untuk delete data, dimana kita perlu menuliskan 2 bagian ketika menuliskan query delete yaitu :
- nama tabel yang datanya akan dihapus, dalam contoh ini kita tuliskan $this->table yang bernilai ‘tb_siswa‘
- kondisi data mana yang akan dihapus, kita menuliskan array kd_siswa dengan value variabel $id, yang artinya menghapus data siswa berdasarkan kd_siswa yang nilainya sama dengan variabel $id
1 2 3 4 |
public function delete($id) { return $this->db->delete($this->table, array("kd_siswa" => $id)); } |
Hasil Kode Akhir
File Controller Siswa.php
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("siswa_model"); $this->load->library('form_validation'); } public function index() { $data['siswa'] = $this->siswa_model->getAll(); $this->load->view('template/header'); $this->load->view('siswa/index',$data); $this->load->view('template/footer'); } public function create() { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } public function save() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->save($data); redirect('siswa'); } else { $this->load->view('template/header'); $this->load->view('siswa/create'); $this->load->view('template/footer'); } } function edit($kd_siswa) { $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } public function update() { $this->form_validation->set_rules('nama','Nama','required'); $this->form_validation->set_rules('jenis_kelamin','Jenis Kelamin','required'); $this->form_validation->set_rules('tempat_lahir','Tempat Lahir','required'); $this->form_validation->set_rules('tanggal_lahir','Tanggal Lahir','required'); $this->form_validation->set_rules('no_telp','Nomor Telepon','required'); $this->form_validation->set_rules('alamat','Alamat','required'); if ($this->form_validation->run()==true) { $kd_siswa = $this->input->post('kd_siswa'); $data['nama'] = $this->input->post('nama'); $data['jenis_kelamin'] = $this->input->post('jenis_kelamin'); $data['tempat_lahir'] = $this->input->post('tempat_lahir'); $data['tanggal_lahir'] = $this->input->post('tanggal_lahir'); $data['no_telp'] = $this->input->post('no_telp'); $data['alamat'] = $this->input->post('alamat'); $this->siswa_model->update($data,$kd_siswa); redirect('siswa'); } else { $kd_siswa = $this->input->post('kd_siswa'); $data['siswa'] = $this->siswa_model->getById($kd_siswa); $this->load->view('template/header'); $this->load->view('siswa/edit',$data); $this->load->view('template/footer'); } } function delete($kd_siswa) { $this->siswa_model->delete($kd_siswa); redirect('siswa'); } } |
File Model Siswa_model.php
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 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Siswa_model extends CI_Model { private $table = "tb_siswa"; public function getAll() { return $this->db->get($this->table)->result(); } public function save($data) { return $this->db->insert($this->table, $data); } public function getById($id) { return $this->db->get_where($this->table, ["kd_siswa" => $id])->row(); } public function update($data,$id) { return $this->db->update($this->table, $data, array('kd_siswa' => $id)); } public function delete($id) { return $this->db->delete($this->table, array("kd_siswa" => $id)); } } |
File Header.php di folder application/views/template/header.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<!doctype html> <html lang="en"> <head> <title>Belajar Crud di Codeigniter</title> <link href="<?php echo base_url(); ?>assets/css/bootstrap.min.css" rel="stylesheet"> <link href="<?php echo base_url(); ?>assets/css/bootstrap-datepicker3.min.css" rel="stylesheet"> <script src="<?php echo base_url(); ?>assets/js/jquery-3.5.0.min.js"></script> <script src="<?php echo base_url(); ?>assets/js/bootstrap.min.js"></script> <script src="<?php echo base_url(); ?>assets/js/bootstrap-datepicker.min.js"></script> </head> <body> |
File index.php di folder application/views/siswa/index.php
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 42 43 |
<main role="main" class="container"> <div class="card"> <div class="card-header">Data Siswa</div> <div class="card-body"> <a href="<?php echo base_url(); ?>siswa/create" class="btn btn-success">Create</a> <br/> <br/> <table class="table table-bordered"> <tr> <th width="5%">No</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Tanggal Lahir</th> <th>Tempat Lahir</th> <th>Telp</th> <th>Alamat</th> <th>Action</th> </tr> <?php $no = 1; foreach($siswa as $row) { ?> <tr> <td widtd="5%"><?php echo $no++; ?></td> <td><?php echo $row->nama; ?></td> <td><?php echo $row->jenis_kelamin; ?></td> <td><?php echo $row->tanggal_lahir; ?></td> <td><?php echo $row->tempat_lahir; ?></td> <td><?php echo $row->no_telp; ?></td> <td><?php echo $row->alamat; ?></td> <td> <a href="<?php echo base_url(); ?>siswa/edit/<?php echo $row->kd_siswa; ?>" class="btn btn-warning">Edit</a> <a href="<?php echo base_url(); ?>siswa/delete/<?php echo $row->kd_siswa; ?>" class="btn btn-danger">Hapus</a> </td> </tr> <?php } ?> </table> </div> </div> </main> |
File Footer.php di folder application/views/template/footer.php
1 2 3 4 5 6 7 8 |
<footer class="footer"> <div class="container" style="text-align:center;"> <hr/> <span>Warung Belajar @<?php echo date('Y'); ?></span> </div> </footer> </body> </html> |
File index.php di folder application/views/siswa/index.php
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 42 43 |
<main role="main" class="container"> <div class="card"> <div class="card-header">Data Siswa</div> <div class="card-body"> <a href="<?php echo base_url(); ?>siswa/create" class="btn btn-success">Create</a> <br/> <br/> <table class="table table-bordered"> <tr> <th width="5%">No</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Tanggal Lahir</th> <th>Tempat Lahir</th> <th>Telp</th> <th>Alamat</th> <th>Action</th> </tr> <?php $no = 1; foreach($siswa as $row) { ?> <tr> <td widtd="5%"><?php echo $no++; ?></td> <td><?php echo $row->nama; ?></td> <td><?php echo $row->jenis_kelamin; ?></td> <td><?php echo $row->tanggal_lahir; ?></td> <td><?php echo $row->tempat_lahir; ?></td> <td><?php echo $row->no_telp; ?></td> <td><?php echo $row->alamat; ?></td> <td> <a href="<?php echo base_url(); ?>siswa/edit/<?php echo $row->kd_siswa; ?>" class="btn btn-warning">Edit</a> <a href="<?php echo base_url(); ?>siswa/delete/<?php echo $row->kd_siswa; ?>" class="btn btn-danger">Hapus</a> </td> </tr> <?php } ?> </table> </div> </div> </main> |
File create.php di folder application/views/siswa/create.php
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 42 43 44 45 46 47 48 49 50 51 52 53 |
<div class="container"> <div class="card"> <div class="card-header">Create Siswa</div> <div class="card-body"> <?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> <form method="post" action="<?php echo base_url(); ?>siswa/save"> <div class="form-group"> <label for="nama">Nama</label> <input type="text" class="form-control" id="nama" name="nama"> </div> <div class="form-group"> <label for="jenis_kelamin">Jenis Kelamin</label> <select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria">Pria</option> <option value="wanita">Wanita</option> </select> </div> <div class="form-group"> <label for="tempat_lahir">Tempat Lahir</label> <input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir"> </div> <div class="form-group"> <label for="tgl_lahir">Tanggal Lahir</label> <input type="text" class="form-control datepicker" id="tanggal_lahir" name="tanggal_lahir"> </div> <div class="form-group"> <label for="no_telp">No Telp</label> <input type="number" class="form-control" id="no_telp" name="no_telp"> </div> <div class="form-group"> <label for="alamat">Alamat</label> <textarea class="form-control" name="alamat" id="alamat"></textarea> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> |
File edit.php di folder application/views/siswa/edit.php
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 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<div class="container"> <div class="card"> <div class="card-header">Edit Siswa</div> <div class="card-body"> <?php if(validation_errors() != false) { ?> <div class="alert alert-danger" role="alert"> <?php echo validation_errors(); ?> </div> <?php } ?> <form method="post" action="<?php echo base_url(); ?>siswa/update"> <input type="hidden" name="kd_siswa" id="kd_siswa" value="<?php echo $siswa->kd_siswa; ?>"/> <div class="form-group"> <label for="nama">Nama</label> <input type="text" value="<?php echo $siswa->nama; ?>" class="form-control" id="nama" name="nama"> </div> <div class="form-group"> <label for="jenis_kelamin">Jenis Kelamin</label> <select name="jenis_kelamin" id="jenis_kelamin" class="form-control"> <option value="pria" <?php echo ($siswa->jenis_kelamin ? 'pria' : 'selected' ); ?> >Pria</option> <option value="wanita" <?php echo ($siswa->jenis_kelamin ? 'wanita' : 'selected' ); ?>>Wanita</option> </select> </div> <div class="form-group"> <label for="tempat_lahir">Tempat Lahir</label> <input type="text" class="form-control" id="tempat_lahir" name="tempat_lahir" value="<?php echo $siswa->tempat_lahir; ?>"> </div> <div class="form-group"> <label for="tgl_lahir">Tanggal Lahir</label> <input type="text" class="form-control datepicker" readonly id="tanggal_lahir" name="tanggal_lahir" value="<?php echo $siswa->tanggal_lahir; ?>"> </div> <div class="form-group"> <label for="no_telp">No Telp</label> <input type="number" class="form-control" value="<?php echo $siswa->no_telp; ?>" id="no_telp" name="no_telp"> </div> <div class="form-group"> <label for="alamat">Alamat</label> <textarea class="form-control" name="alamat" id="alamat"><?php echo $siswa->alamat; ?></textarea> </div> <button type="submit" class="btn btn-primary">Update</button> </form> </div> </div> </div> |
Download Source Code
Jika teman – teman ingin download source code, bisa klik disini : https://github.com/warungbelajar/crud-ci3
Nah jadi itu teman – teman kurang lebih tutorial kita kali ini, kita sudah belajar untuk membuat CRUD di codeigniter, jika ada yang ingin didiskusikan silahkan di kolom komentar, sekian dulu sampai jumpa di tutorial berikutnya.
ANDA INGIN SERIUS BELAJAR FRAMEWORK CODEIGNITER ?
Seperti yang anda ketahui bahwa saat ini skill di bidang pemrograman sangatlah dibutuhkan, salah satunya adalah pemograman PHP.
Untuk anda yang ingin serius belajar pemrograman PHP, Khususnya menggunakan Framework PHP Codeigniter, Warung Belajar Memiliki Beberapa Paket Tutorial yang bisa membantu anda dalam belajar menggunakan Framework PHP Codeigniter, dari mulai step – step dasar hingga mampu membuat aplikasi berbasis web dengan menggunakan Framework PHP Codeigniter.
Paket Tutorial ini berisi video tutorial belajar pemrograman berbahasa indonesia, cocok sekali untuk anda yang sedang belajar Framework PHP Codeigniter, bahkan untuk orang awam sekalipun.
Paket Tutorial ini juga dilengkapi dengan study kasus yang akan mempermudah pemahaman anda dalam belajar pemrograman, Mari berinvestasi untuk menambah skill dalam menguasai Framework PHP Codeigniter
-
Tutorial Singkat Langsung Jago Framework Codeigniter
Rp98,000 Add to cart -
Tutorial Seminggu Jago Framework Codeigniter Dan Bootstrap
Rp90,000 Add to cart -
Tutorial Membangun Sistem Informasi Akademik Sekolah Dengan Codeigniter Dan Ajax
Rp145,000 Add to cart -
Tutorial Membangun Toko Online Responsive Dengan Codeigniter Dan Bootstrap
Rp135,000 Add to cart -
Tutorial Membangun Sistem Informasi Rumah Sakit Dengan Codeigniter MySQL Dan Ajax
Rp145,000 Add to cart -
Kursus Online – Pemrograman Web dan Android – Membuat Aplikasi Kasir
Rp300,000 Add to cart
Artikel ini sangat menarik dan membantu saya.
Terima kasih.
Artikel ini sangat menarik dan membantu.
Terima kasih.
Mohon bantuanya pak,
Kalo mau memunculkan data dari beberapa tabel db ke dalam satu tabel di ci4 gimana ya pak?
bisa menggunakan perintah join mas, untuk saat ini di codeigniter 3 sudah kita pernah bahas beberapa caranya di pembahasan query builder : https://www.warungbelajar.com/cara-menggunakan-query-builder-di-codeigniter.html
untuk codeigniter 4 belum kita tulis tutorialnya, tetap sepertinya secara konsep sama