Dasar Pemrograman CodeIgniter : Create Update Delete, Paginate Show Data + Validation Data

Assalammualaikum🙂

alhamdulillah, akhirnya bisa posting juga. setelah melalui berbagai rutinitas panjang di hari minggu yang sudah habis… -..- dari mencuci baju, mengerjakan setumpuk tugas merangkum, dan sejenak refreshing senam wajah yang abis maskeran dengan temen-temen kos yang mulai sedikit aktif mencari mangsa (eits, curhat).

Sebelumnya, kepada teman-teman tercinta. Saya memang sudah sejak lama mengenal PHP dan baru tahun kemaren kenalan dengan CodeIgniter itupun hasil dari nekat karena ingin sesuatu yang beda dari pengalaman-pengalaman sebelumnya. Tapi pada dasarnya, saya juga masih belajar. Jadi jangan kaget kalau ternyata saya ini hanya-ngikutin-user-guide. Karena ya tau sendiri, saya juga masih dalam tahap pengembangan seperti teman-teman sekalian. Anggap saja, kita belajar sama-sama mulai dari nol🙂 mulai dari user-guide sampai nanti bisa hapal-user-guide (loh??) :p

Let’s to the topic.

Prekondisi : hampir sama dengan artikel ini, namun ada satu buah file yang harus diupdate pada configurasi, yakni application/config/autoload.php menjadi seperti gambar dibawah ini:


/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|    $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('database','session','form_validation');

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|    $autoload['helper'] = array('url', 'file');
*/
$autoload['helper'] = array('url','file','form');

Show Pagination Data

Pagination merupakan salah satu class library yang disediakan oleh CodeIgniter untuk menangani hasil result data dalam beberapa sesi halaman

Berikut merupakan script controller yang digunakan:


public function show($offset=0){
$offset = $this->uri->segment(3);
$per_page = 5;
//memanfaatkan library "pagination"
$this->load->library('pagination');
//setting pagination : base_url pencarian
$config['base_url'] = base_url().'news/show/';
//setting pagination : jumlah keseluruhan data
$config['total_rows'] = $this->modelNews->getAllData();
//setting pagination : jumlah baris yg akan ditampilkan
$config['per_page'] = $per_page;
//setting pagination : letak segment halaman
$config['uri_segment'] = 3;
//setting pagination : links yang ditampilkan
$config['num_links'] = 5;
//setting pagination : menggunakan nomer halaman
$config['use_page_numbers'] = TRUE;
//setting pagination : setting link next & prev
$config['next_link'] = 'Selanjutnya';
$config['prev_link'] = 'Sebelumnya';
//setting pagination : inisialisasi konfigurasi
$this->pagination->initialize($config);
//meletakan links hasil pagination dalam variabel "paging"
$data['paging'] = $this->pagination->create_links();
//mengambil nilai keluaran dari function "getAllNews" pada model "modelNews"
$data['hasil_data'] = $this->modelNews->getAllNews($per_page, $offset);
$this->load->view('news/view_show_page',$data); //memberikan akses data pada view terkait
}

Berikut merupakan script model yang digunakan:


function getAllNews($per_page,$offset){ //fungsi getAllNews
//jika offset bernilai 0 maka, rubah nilai offset
if($offset!=0) $offset = ($offset-1)*$per_page;
$this->db->from('news');
//perintah mysql: limit --> digunakan untuk membatasi data yg akan ditampilkan
$this->db->limit($per_page, $offset);
return $this->db->get(); //mengembalikan hasil eksekusi syntax query
}
function getAllData(){ //fungsi getAllData
//mengembalikan jumlah seluruh data dalam tabel news
return $this->db->count_all('news');
}

Berikut merupakan script view yang digunakan:


<link href='<?=base_url()?>css/style.css' type='text/css' rel='stylesheet' media='screen'>
<link href='<?=base_url()?>css/kumtabcs/bluedream.css' type='text/css' rel='stylesheet' media='screen'>
<p>Daftar Berita
<input type='button' name='plus' id='plus' value='+' OnClick="location.href='<?=base_url()?>news/lihat_form'"></p>
<table>
<tr>
<th>ID</th>
<th>TITLE</th>
<th>CONTENT</th>
<th>CREATE</th>
<th>UPDATE</th>
<th>DELETE</th>
</tr>
<?php
//melakukan perulangan untuk menampilkan isi dari database
//$hasil_data->result() : mengekstrak hasil cari kedalam bentuk array
foreach($hasil_data->result() as $r){ ?>
<tr>
<td><?=$r->ID?></td>
<td><?=$r->TITLE?></td>
<td><?=$r->CONTENT?></td>
<td><?=$r->XCREATE?></td>
<td><a href="<?=base_url()?>news/update/<?=$r->ID?>">UPDATE</a></td>
<td><a href="<?=base_url()?>news/remove/<?=$r->ID?>">DELETE</a></td>
</tr>
<? } ?>
</table>
<!--menampilkan variable "paging"-->
<?=$paging?>

Hasil:

Nahh… tampilan hasil dari paginationnya akan seperti yang ada dibawah tabel pencarian,😀

Create & Validation Data

Ini tujuannya untuk menambah sebuah data kedalam database dengan pengecekan validasi data, apakah data tersebut valid atau tidak.

Berikut merupakan script controller yang digunakan:


function lihat_form(){
//configurasi validasi
$config = array(
array('field'   => 'title',
'label'   => 'Title',
'rules'   => 'required'),
array('field'   => 'content',
'label'   => 'Content',
'rules'   => 'required'),
);
//set validasi
$this->form_validation->set_rules($config);
//set pesan validasi
$this->form_validation->set_message('required', 'harap diisi');
if ($this->form_validation->run() == FALSE){
//ketika validasi data berstatus tidak valid
//alamat tujuan ketika submit
$data['aksi'] = "news/lihat_form";
//menampilkan halaman view "view_input" dengan variabel "data"
$this->load->view('news/view_input',$data);
}else{
//ketika validasi data berstatus valid
//menyimpan hasil masukan dalam variabel
$data = array(
'TITLE' => $this->input->post('title'),
'CONTENT' => $this->input->post('content'),
'XCREATE' => date('Y-m-d H:i:s'),
);
//menyimpan data kedalam database
$this->modelNews->insertData($data);
redirect('news/show');
}
}

Berikut merupakan script view yang digunakan:


<html>
<head><title>Manajemen Berita</title></head>
<body>
<?php //mengecek apakah variabel edit sudah tersedia atau belum
if(ISSET($edit)){
//mengecek apakah hasil ekstrak variabel edit lebih dari 0
if(count($edit->result())>0){
//apabila hasil ekstrak lebih dari 0,
//maka melakukan perulangan untuk mengambil data didalamnya
foreach($edit->result() as $rec){
$id = $rec->ID;
$title = $rec->TITLE;
$content = $rec->CONTENT;
}
}
} ?>
<?php //menampilkan pesan error ketika validasi
echo validation_errors(); ?>
<?php //membuka tag form dengan tujuan dalam variabel "aksi"
echo form_open($aksi); ?>
<!--membuat sebuah elemen tersembunyi dengan nama "id"
yang isinya di set dengan nilai variabel "id" (jika ada)-->
<input type="hidden" name="id" value="<?php if(!empty($id)){echo $id;} ?>">
<h5>Title</h5>
<!--membuat sebuah elemen dengan nama "title"
yang isinya di set dengan nilai variabel "title" (jika ada)
jika tidak memberikan nilai yang telah dimasukkan sebelumnya (sebelum terjadi validasi atau submit)-->
<input type="text" name="title" value="<?php if(empty($id)){ echo set_value('title'); } else {echo $title;} ?>" size="50" />
<h5>Content</h5>
<!--hampir sama dengan diatas-->
<textarea name="content"><?php if(empty($id)){ echo set_value('content'); } else {echo $content;} ?></textarea>
<!--membuat sebuah tombol sebagai pemicu untuk memproses form-->
<div><input type="submit" value="Simpan Data" /></div>
</form>
</body>
</html>

nb: view ini digunakan pada 2 aksi, yakni create atau update. variabel edit akan diabaikan jika berada pada kondisi create

Berikut merupakan script model yang digunakan:


function insertData($data){ //fungsi insertData untuk menambah data
$this->db->insert('news',$data);
}

Hasil:

Edit & Validation Data

Ini tujuannya untuk mengedit sebuah data kedalam database dengan pengecekan validasi data, apakah data tersebut valid atau tidak. Pada dasarnya, ketika akan mengedit data yang pertama kali diperhatikan adalah data yang mana yang akan di edit, dan kemudian diarahkanlah kita pada halaman edit dimana sudah terdapat informasi data yang akan kita edit. Syntax atau script yang digunakan kurang lebih sama, hanya memiliki sedikit perbedaan.

Berikut merupakan script controller yang digunakan:

public function update($id=""){
//configurasi validasi
$config = array(
array('field'   => 'title',
'label'   => 'Title',
'rules'   => 'required'),
array('field'   => 'content',
'label'   => 'Content',
'rules'   => 'required'),
);
//set validasi
$this->form_validation->set_rules($config);
//set pesan validasi
$this->form_validation->set_message('required', 'harap diisi');
if ($this->form_validation->run() == FALSE){
//ketika validasi data berstatus tidak valid
//menyimpan pencarian data yg dipilih dalam variabel "edit"
$data['edit'] = $this->modelNews->record($id);
//alamat yg dituju ketika submit
$data['aksi'] = "news/update";
//menampilkan halaman view "view_input" dengan variabel "data"
$this->load->view('news/view_input',$data);
}else{
//mengambil data yg sudah di edit
$data = array(
'ID' => $this->input->post('id'),
'TITLE' => $this->input->post('title'),
'CONTENT' => $this->input->post('content'),
'XCREATE' => date('Y-m-d H:i:s'),
);
//eksekusi update data dalam database
$this->modelNews->updateData($data);
redirect('news/show');
}
}

Script view sama dengan saat create, namun pada kondisi update ini variabel edit tidak diabaikan lagi, karena pada controller sudah diberikan nilai.

Berikut merupakan script model yang digunakan:


function record($id){ //fungsi record untuk mencari data
$this->db->from('news');
$this->db->where('ID',$id);
return $this->db->get();
}
function updateData($data){ //fungsi mengupdate data
$this->db->where('ID',$data['ID']);
$this->db->update('news',$data);
}

Hasil:

Delete Data

Ini tujuannya menghapus data. Tampilan atau view pada kondisi ini berada saat menampilkan data atau show data yang ditampilkan dalam bentuk link.

Berikut merupakan script controller yang digunakan:


public function remove($id=""){ //mengambil id yang saat itu diakses
$this->modelNews->removing($id); //memanggil fungsi removing pada model
//bisa ditambahkan variabel disini misal: ,$name="",
//namun dalam kasus ini biasanya menggunakan id, karena id merupakan primary key
redirect('news/show');
}

Berikut merupakan script model yang digunakan:


function removing($id){ //fungsi removing untuk menghapus data
$q="DELETE FROM news WHERE ID='$id'";
$this->db->query($q);
}

Nahhh…. bagaimana? sudah sukses? bismillah amiin🙂 selamat belajar, semangat belajar………….

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s