Tutorial CRUD Codeigniter: Insert (tambah data), edit / update & hapus dengan Xampp database mysql.
Materi belajar Codeigniter dasar pemula untuk sistem CRUD sederhana dengan menggunakan konsep MVC + design template Bootstrap 4.
Materi latihan Pasang template Bootstrap + CI: Baca disini
Kita akan belajar / latihan Codeigniter dengan basis data (database) mysql dengan PHPmyadmin xampp / Localhost, materi ini cocok untuk kamu yang baru belajar CI.
Update: Versi Codeigniter yang digunakan adalah: 3.xx
Belajar CRUD Codeigniter
Crud adalah dasar codeigniter dari semua projects aplikasi dimana setiap fitur nantinya akan ada input, edit, update & hapus data yang disimpan pada database.
Latihan CRUD Codeigniter: buat folder baru > xampp > hddocs > latihanCI
- URL: http://localhost/latihanCI
Note: file codeigniter 3 & template kita menggunakan materi latihan: sebelumnya »
Selanjutnya Langsng mulai, temen2,
Buat database baru: latihan_ci > tabel: user
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; CREATE TABLE `user` ( `id` int(5) NOT NULL, `name` varchar(100) NOT NULL, `email` varchar(150) NOT NULL, `phone` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `user` ADD PRIMARY KEY (`id`); ALTER TABLE `user` MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22; COMMIT;
Koneksi Database + Codeigniter: application/config/database.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); $active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'latihan_ci', '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 );
Seting Routes: application/config/routes.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); $route['default_controller'] = 'crud'; $route['404_override'] = ''; $route['translate_uri_dashes'] = TRUE;
ket: fungsi routes untuk seting default halaman home, saat url dibuka, Infomasi lengkap setingan / konfigurasi dasar codeigniter bisa agan pelajari disini:
Seting autoload: application/config/autoload.php
$autoload['libraries'] = array('session', 'database', 'form_validation','template'); $autoload['helper'] = array('url', 'form');
Buat file controller CRUD: Crud.php
lokasi folder: application/controllers/Crud.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Crud extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('m_crud'); } // List all data public function index() { $data['tmp']= $this->m_crud->tampil()->result(); $this->template->load('role','crud/view',$data); } // Add a form item public function form_add() { $this->template->load('role','crud/create'); } // ada data proses input public function add() { $this->form_validation->set_rules('name', 'name', 'trim|required|min_length[3]|max_length[45]'); $this->form_validation->set_rules('email', 'email', 'trim|required|min_length[5]|max_length[45]'); $this->form_validation->set_rules('phone', 'Phone', 'trim|required|min_length[5]|max_length[14]'); if ($this->form_validation->run() == TRUE) { if($this->m_crud->input()) { $this->session->set_flashdata('pesan','Add data succesfuly!'); redirect('crud','refresh'); } } else { $this->template->load('role','crud/create'); } } public function edit(){ $data['tmp']=$this->m_crud->m_edit()->row(); $this->template->load('role','crud/edit',$data); } //Update one item public function update() { $this->form_validation->set_rules('name', 'name', 'trim|required|min_length[3]|max_length[45]'); $this->form_validation->set_rules('email', 'email', 'trim|required|min_length[5]|max_length[45]'); $this->form_validation->set_rules('phone', 'Phone', 'trim|required|min_length[5]|max_length[14]'); if ($this->form_validation->run() == TRUE) { if($this->m_crud->m_update()){ $this->session->set_flashdata('pesan','Update data succesfuly!'); redirect('/','refresh'); }else{ $this->session->set_flashdata('pesan','Update data failed'); redirect('/','refresh'); } }else{ $data['tmp']=$this->m_crud->m_edit()->row(); $this->template->load('role','crud/edit',$data); } } //Delete one item public function del() { if($this->m_crud->delete()) { $this->session->set_flashdata('pesan','Delete data succesfuly!'); redirect('crud','refresh'); }else{ $this->session->set_flashdata('pesan','Delete data failed'); redirect('crud','refresh'); } } } /* End of file Crud.php */ /* Location: ./application/controllers/Crud.php */
Ketengan kode:
semua kode function tampil data, edit data & hapus data kita buat 1 file controllers Crud.php didalam kode telah kita tambahkan form_validasi & flash_data untuk notifikasi proses.
Buat file Model Crud: M_crud.php
lokasi folder: application/models/M_crud.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class M_crud extends CI_Model { public function input(){ $data = array('name' => $this->input->post('name') , 'email'=> $this->input->post('email'), 'phone'=> $this->input->post('phone')); return $this->db->insert('user',$data); } public function tampil(){ $this->db->select('*'); return $this->db->get('user'); } public function delete(){ $this->db->where('id',$this->uri->segment(3)); return $this->db->delete('user'); } public function m_edit(){ $this->db->select('*'); $this->db->where('id',$this->uri->segment(3)); return $this->db->get('user'); } public function m_update(){ $data = array('name' => $this->input->post('name') , 'email'=> $this->input->post('email'), 'phone'=> $this->input->post('phone')); $this->db->where('id',$this->uri->segment(3)); return $this->db->update('user',$data); } } /* End of file M_crud.php */ /* Location: ./application/models/M_crud.php */
keterangan kode:
Dalam proses edit & hapus data kita menggunakan identifikasi variable ID field, sehingga kita pakai uri-sement(3),
Sample include URL varibale ID: http://localhost/latihanCI/crud/edit/12
Buat folder “crud” didalam folder view, yang berisi file:
- view.php
- create.php
- edit.php
kode view.php:
<div class="col-md-8"> <h1 class="my-4">Views <small>Data sample</small> </h1> <?php echo anchor('crud/form_add', '+ Add data', 'class="btn btn-primary btn-sm"'); ?> <br><br> <font color="green"><?php echo $this->session->flashdata('pesan'); ?></font> <table class="table"> <thead> <tr> <th scope="col">#ID</th> <th scope="col">Name</th> <th scope="col">Email</th> <th scope="col">Phone</th> <th scope="col">Option</th> </tr> </thead> <tbody> <?php foreach ($tmp as $key) { ?> <tr> <th scope="row"><?php echo $key->id; ?></th> <td><?php echo $key->name; ?></td> <td><?php echo $key->email; ?></td> <td><?php echo $key->phone; ?></td> <td> <?php echo anchor('crud/edit/'.$key->id, 'Edit', 'class="badge badge-info"'); ?> / <?php echo anchor('crud/del/'.$key->id, 'Delete',array('class'=>'badge badge-danger', 'onclick'=>"return confirmDialog();")); ?> </td> </tr> <?php }?> </tbody> </table> </div> <script type="text/javascript"> function confirmDialog() { var x=confirm("Yakin akan di hapus?") if (x) { return true; } else { return false; } } </script>
Note: menambahkan fungsi javascript untuk validasi (yes/no) tombol / link hapus data!
Kode create.php:
<div class="col-md-4"> <h1 class="my-4">Add <small>Data sample</small> </h1> <font color="green"><?php echo $this->session->flashdata('pesan'); ?></font> <?php echo form_open('crud/add',''); ?> <div class="form-group"> <label for="exampleInputEmail1">Name</label> <input type="text" name="name"class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"> <?php echo form_error('name', '<div class="text-danger"><small>', '</small></div>');?> </div> <div class="form-group"> <label for="exampleInputPassword1">Email</label> <input type="email" name="email" class="form-control" id="exampleInputPassword1"> <?php echo form_error('email', '<div class="text-danger"><small>', '</small></div>');?> </div> <div class="form-group"> <label for="exampleInputPassword1">Phone</label> <input type="text" name="phone" class="form-control" id="exampleInputPassword1"> <?php echo form_error('phone', '<div class="text-danger"><small>', '</small></div>');?> </div> <button type="submit" class="btn btn-primary">Submit</button> <?php echo form_close(); ?> </div>
kode edit.php:
<div class="col-md-4"> <h1 class="my-4">Edit <small>Data sample</small> </h1> <font color="green"><?php echo $this->session->flashdata('pesan'); ?></font> <?php echo form_open('crud/update/'.$tmp->id,''); ?> <div class="form-group"> <label for="exampleInputEmail1">Name</label> <input type="text" name="name" class="form-control" value="<?php echo $tmp->name; ?>"> <?php echo form_error('name', '<div class="text-danger"><small>', '</small></div>');?> </div> <div class="form-group"> <label for="exampleInputPassword1">Email</label> <input type="email" name="email" class="form-control" value="<?php echo $tmp->email; ?>"> <?php echo form_error('email', '<div class="text-danger"><small>', '</small></div>');?> </div> <div class="form-group"> <label for="exampleInputPassword1">Phone</label> <input type="text" name="phone" class="form-control" value="<?php echo $tmp->phone; ?>"> <?php echo form_error('phone', '<div class="text-danger"><small>', '</small></div>');?> </div> <button type="submit" class="btn btn-primary">Update Now!</button> <?php echo form_close(); ?> </div>
Discliamer
- Penjelaskan secara rinci makna setiap baris kode pada masing controller, model & views
- Keterangan & fungsi setiap baris kode akan kita bahas pada video diatas.
- CRUD Codeigniter menggunakan konsep full MVC
- hasil masih sederhana jadi bisa dikembangkan lebih lengkap
Next Belajar CI ?
Materi latihan codeigniter selanjutnya kita akan belajar cara membuat sistem login CI sederhana + Secure dengan enkirpsi password hash.
__Semoga bermanfaat & selamat beajar!