Melanjutkan artikel sebelumnya Tampil data memakai Codeigniter versi 2.0.2 sekarang kita tambahkan pada aplikasi kita fungsi untuk menyimpan, edit dan delete data.
Dalam aplikasi pendaftaran user ini, saya menyimpan password dengan meng-enkripsi md5 terlebih dahulu untuk field password. Kemudian pada waktu edit,password tidak akan tampil. Jika field password tidak diedit, maka password tidak di ganti, tetapi jika filed input password diubah, maka password akan diubah, dengan fungsi enkripsi md5 tentunya.
Kalau dilihat dari sisi coding, ga terlalu jauh dengan script terdahulu, tetapi saya menambahkan fungsi validasi inputannya. Sehingga pada controller user, kita tambahkan fungsi edit untuk menampilkan data yang akan diedit, fungsi submit yang berfungsi menangani submit dari form input dan edit, dan fungsi delete untuk menghapus data. Scriptnya adalah sebagai berikut :
[php]
<?php
class User extends CI_Controller{
/*—script sebelumnya—*/
function submit(){
if ($this->input->post(‘submit’)){
if ($this->input->post(‘id’)){
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required|min_length[5]|max_length[12]’);
$this->form_validation->set_rules(‘password’, ‘Password’, ‘matches[passconf]’);
$this->form_validation->set_rules(‘fullname’, ‘Fullname’, ‘required|min_length[5]|max_length[25]’);
if ($this->form_validation->run() == FALSE){
$data[‘id’] = $this->input->post(‘id’);
$data[‘username’] = set_value(‘username’);
$data[‘fullname’] = set_value(‘fullname’);
$this->load->view(‘view_user/edit’,$data);
}else{
$this->Model_user->update();
redirect(‘user/index’);
}
}else{
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required|min_length[5]|max_length[12]’);
$this->form_validation->set_rules(‘password’, ‘Password’, ‘required|matches[passconf]’);
$this->form_validation->set_rules(‘passconf’, ‘Password Confirmation’, ‘required’);
$this->form_validation->set_rules(‘fullname’, ‘Fullname’, ‘required|min_length[5]|max_length[25]’);
if ($this->form_validation->run() == FALSE){
$data[‘query’] = $this->Model_user->getAll();
$this->load->view(‘view_user/input’,$data);
}else{
$this->Model_user->save();
redirect(‘user/index’);
}
}
}
}
function edit(){
$id=$this->uri->segment(3);
$data[‘result’]=$this->Model_user->getUser($id);
if (empty($id) or count($data[‘result’])==0 ){
redirect(‘user/index’);
}else{
$result=$this->Model_user->getUser($id);
$data[‘id’] = $result[‘id’];
$data[‘username’] = $result[‘username’];
$data[‘fullname’] = $result[‘fullname’];
$this->load->view(‘view_user/edit’, $data);
}
}
function delete($id){
$this->db->delete(‘user’, array(‘id’ => $id));
redirect(‘user/index’);
}
}
[/php]
agak panjang ya 😀 mungkin jika Anda menemukan yang lebih pendek, bisa kasih tau saya 😀
Untuk modelnya ditambahkan fungsi seperti dibawah ini :
[php]
<?php
class Model_user extends CI_Model{
/*—fungsi sebelumnya —*/
function getUser($id){
$this->db->where(‘id’, $id);
$query = $this->db->get(‘user’);
return $query->row_array();
}
function save(){
$username = $this->input->post(‘username’);
$password = $this->input->post(‘password’);
$fullname = $this->input->post(‘fullname’);
$data = array(
‘username’=>$username,
‘password’=>md5($password),
‘fullname’=>$fullname
);
$this->db->insert(‘user’,$data);
}
function update(){
$id = $this->input->post(‘id’);
$username = $this->input->post(‘username’);
$password = $this->input->post(‘password’);
$fullname = $this->input->post(‘fullname’);
if ($password==”){
$data = array(
‘username’=>$username,
‘fullname’=>$fullname
);
}else{
$data = array(
‘username’=>$username,
‘password’=>md5($password),
‘fullname’=>$fullname
);
}
$this->db->where(‘id’,$id);
$this->db->update(‘user’,$data);
}
}
[/php]
Untuk view, saya membuat file edit.php pada folder view_user yang scriptnya sebagai berikut :
[php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Data User</title>
</head>
<body>
<div id="form_input" title="Edit Data">
<table>
<?php echo validation_errors(); ?>
<?php echo form_open(‘user/submit’); ?>
<tr >
<td> <?php echo form_label(‘User Name : ‘); ?></td><?php echo form_hidden(‘id’,$id); ?>
<td> <?php echo form_input(‘username’,$username,’id="username"’); ?></td>
</tr>
<tr>
<td> <?php echo form_label(‘Password : ‘);?> </td>
<td> <?php echo form_password(‘password’,”,’id="password"’); ?></td>
</tr>
<tr>
<td> <?php echo form_label(‘Repeat Password : ‘);?> </td>
<td> <?php echo form_password(‘passconf’,”,’id="passconf"’); ?></td>
</tr>
<tr>
<td> <?php echo form_label(‘Full Name : ‘);?> </td>
<td> <?php echo form_input(‘fullname’, $fullname,’id="fullname"’); ?></td>
</tr>
<tr>
<td><?php echo form_submit(‘submit’,’Save’)?>
</tr>
</table>
</div>
</body>
</html>
[/php]
Terima kasih atas tutorailnya CI untuk versi 2.0 sangat berguna bagi saya.
sama-sama, senang bisa membantu .. 🙂
pertamaxx
salam kenal bang, saya juga newbie di codeigniter programmer, ni lagi ngobrak-ngabrik situs anda, cukup mudah dipahami, dan bisa saya kembangkan,….
..
Mas Dudu salam kenal.. boleh ngga dishare file attachmentnya. TQ mas
tinggal ikuti artikelnya, sudah ada disitu.. 🙂 copas juga bisa
Nice share gan 🙂
akhirnya nemu juga artikel yang bergna tentang CI 2.0 😀
agak beda struktur codingan dibandingkan CI 1.7.x ..
ane baru mulai belajar CI, pas CI release CI 2.0 jadi jarang nemu artikel yang bahas CI 2.0
sama-sama
gan ko ane keluar ini yah
An Error Was Encountered
Unable to load the requested file: view_user.php
sudah terjawab di errornya 🙂 silahkan buat view_user.php
tutorialnyaaaa mudah di pelajari hehhahh
$id=$this->uri->segment(3);
code ini maksudnya apa ya ?
mengambil variabel dari URI segment ke 3, silahkan baca
http://codeigniter.com/user_guide/general/urls.html
Ikut belajar mas..
mu nanya ni..
pas ngeklik delete, datanya emang ilang.. tapi ga ke apus..
jadi pas di refresh balik lagi datanya..
kenapa ya mass??
🙂
kemungkinan salah di query nya
gan, koq gak ada tempat downloadnya?? maap ane masih newbie
ada di github, cari aja..
mas dudu apakah script ini perlu pada waktu submit dan form tidak ada isi.?
$data[‘query’] = $this->Model_user->getAll();
menurut saya kok tidak perlu, maaf ini cuma pendapat orang baru belajar.
Kalo kosong ya memang tidak digunakan, script tersebut diperlukan karena setelah submit saya menampilkan isi datanya sekaligus
saya memakai jqgrid mas saya punya controller seperti ini..
class user extends CI_Controller {
function __construct()
{
parent:: __construct();
$this->load->model(‘user_model’, ‘user’);
}
function edit(){
$id=$this->uri->segment(3);
$data[‘result’]=$this->adm_user->getUser($id);
if (empty($id) or count($data[‘result’])==0 ){
redirect(‘admin/article/index’);
}else{
$result=$this->adm_user->getUser($id);
$this->load->view(‘admin/article/edit_form’, $result);
}
}
}
dan model seperti ini
class user_model extends CI_Model {
function __construct()
{
parent:: __construct();
}
function getUser($id){
$this->db->where(‘id’, $id);
$query = $this->db->get(‘tp_user’);
return $query->row_array();
}
}
jika kita ingin memanggil fungi getUser biasanya kan kita manggilnya
$result=$this->adm_user_model->getUser($id);
tapi saya pakai itu malah error, tetapi saya pakai
$result=$this->adm_user->getUser($id);
malah tidak error, apa masalahnya mas.?
pemanggilannya harusnya seperti ini [php] $this->nama_model->nama_function($id).[/php] kalo dari yang anda bilang diganti nama modelnya, berarti mungkin penamaan modelnya yang salah
mass dudu .. kok pas di klik save malah muncul
Object not found!
kenapa ya ?
nama function nya belum ada / salah tulis
good articel
bagus bang artikel nya,, haha thx
mas kok edit ku nggak jalan
cek lagi sintaknya
mas dudu, maksudnya kata ‘user’ di sytax yang ini apa ya?
$this->db->insert(‘user’,$data);
aku baru belajar soalnya 🙂
user nama tabelnya
mas, eror ku sama kayak capone ..
object not found!
padahal function submit di controllernya udah ada .. function submit yg salah dimana ya?
di cek url nya
maksudnya gimana ya mas?
soalnya url-nya udah sama kok ..
salah dimana lagi ya urlnya ..
not found kan bearti function nya ga ada/ salah. siapa tau URL nya ngarah ke function lain
Gan suwun tutorialnya…
sangat membantu buat newbie seperti ane…hehehehe
A PHP Error was encountered
Severity: Notice
Message: Undefined property: User::$form_validation
Filename: controllers/user.php
Line Number: 30
mas ko saya muncul ERROR seperti di atas ya??:|padahal lagi belajar tapi ko muncul error seperti itu 🙁
tambahkan
[php]$this->load->library(‘form_validation’);[/php]
pada constructor
Krennnnn
hahahaha
gan,,
udah nyoba bkin sama kyag gtu kok gk bisa insert yah
#keterlaluan..
salah query mungkin?
permisi mas mau tanya, (semoga blog nya masih sering dikunjungi hehe)
saya dapat masalah di controller user method submit
di baris >> if ($this->input->post(‘id’)){}else{}
kenapa di kondisi itu saya selalu masuk di else nya ya? kodingan nya menurut saya sudah sama itu kan ngambil id dari method edit sebelumnya di $data[‘id’] = $result[‘id’]; tp kenapa selalu masuk ke kondisi else nya ya -_-” tolongin saya dong. trus kalo mau tau nilai value id di taruh di console nya gimana ya? nulis console di php method nya apa ya? karena saya sudah pake echo””; gak bisa. terima kasih
hehehe terimakasih kunjungannya. Masih sering dikunjungi ko meskipun artikelnya sedikit berkurang 🙁
if ($this->input->post(‘id’)) terse but gambol dari form edit mas, yaitu membuat input hidden dengan nama id. Dan id tersebut merupakan id yang akan di edit. Jadi di form edit ada kode seperti ini mas
semoga membantu
ahh [solved] saya tidak membaca seluruh script nya hehe iya mas, saya kurang form hidden di view nya. kebetulan saya bikin sendiri view nya. terima kasih banyak mas. meskipun sudah jarang ada waktu posting artikel tp tetep fast response itu sangat membantu yang noobs seperti saya mas hehe. kalo boleh add akun skype atau media chat lain mungkin?
Saya SUdah ga pake codeigniter lagi sekarang, mulai move on ke Laravel. Dan terkendala kesibukan ini itu :D. Silakan mention/follow di twitter @dwijonarko 🙂
cara nampilin data asli nya gimana pak ? soalnya ini yang nampil malah enkripsi nya
kalo sudah di eknripsi ga bisa tampil data aslinya, karena enkripsi MD5 sifatnya searah