Tutorial CRUD dengan CodeIgniter

Tutorial mengenai Create, Read, Update dan Delete data pada database mysql serta menggunakan Framework Codeigniter PHP.

Active Record - Menambahkan data (insert)Mungkin kali ini saya tidak bisa menjelaskan secara detail script-script yang kita pakai. akan tetapi saya akan berikan link download untuk teman-teman pelajari. didalamnya terdapat backup dari database mysql yg dipakai serta jangan lupa membca User Guide yah. 🙂

Mungkin sekilas tadi kurang lebih 1 jam saya sempatkan untuk membuat tampilan dafar pegawai, fiture tambah, ubah serta hapus data menggunakan Framework Codeigniter ini. silahkan nanti temen-temen buka file pegawai [controller], v_pegawai [pegawai] dan m_pegawai [model] untuk dipelajari scriptnya.

jangan lupa seting konfigurasi database disesuaikan di config/database.php setelah teman-teman restore database kepegawaian yg sudah saya sediakan juga contohnya.

Semoga bermanfaat.. Happy Coding 😀

Download codeigniter 2.1.3 – Contoh CRUD Pegawai 

Iklan

Session pada Code Igniter

Autentikasi adalah suatu mekanisme untuk mengatur hak akses suatu halaman web, biasanya diawali dengan adanya proses login. Dimana user diminta menginput user id dan password. Jika berhasil login kamu berhak masuk ke suatu halaman, jika tidak..anda tidak akan bisa masuk ke halaman tersebut
Session adalah sebuah varibel sementara yang diletakkan di server. Di mana PHP bisa mengambil nilai yang tersimpan di server walaupun kita membuka halaman baru. Biasanya session akan hilang jika kamu menutup browser.
Sebelum kamu menggunakan fungsi – fungsi tentang session di CI kamu hrus memanggil library session terlebih dahulu dengan cara :
$this->load->library(‘session’);
Selanjutnya cara kita membuat atau memasukan nilai ke variabel sementara atau session :
$this->session->set_userdata(‘some_name’, ‘some_value’);
Atau bisa juga dengan menggunakan arra :
$newdata = array(
                   ‘username’  => ‘johndoe’,
                   ’email’     => ‘johndoe@some-site.com’,
                   ‘logged_in’ => TRUE
               );

$this->session->set_userdata($newdata);
Setelah itu jika anda ingin mengambil atau memakai nilai dari session maka cara memanggilnya seperti ini :
$session_id = $this->session->userdata(‘session_id’);
Dan terakhir perintah untuk menghapus atau mengosongkan session :
$this->session->unset_userdata(‘some_name’); 

Setelah kamu paham dengan ini pasti untuk pembuatan Login dan autentifikasinya sudah tidak akan kesulitan, tinggal pahami alurnya. 🙂

Silahkan download tutorial Code Igniter Bahasa Indonesia Disini. 

Active Recoord Update dan delete pada CI

 Banyak Cara yang bisa digunakan untuk Menjalankan Query, tapi berikut saya berikan contoh yang  paling sederhana cara menyimpan data ke database dan menghapus record. semoba bermanfaat..

Query untuk Edit data (Update)

$this->db->update();
Digunakan untuk mengedit/update data suatu tabel berdasarkan nilai tertentu. Conotoh :
$data = array(
               ‘title’ => $title,
               ‘name’ => $name,
               ‘date’ => $date
            );
$this->db->where(‘id’, $id);
$this->db->update(‘mytable’, $data);

hasil : UPDATE mytable  SET title = ‘$title’, name = ‘$name’, date = ‘$date’ WHERE id = $id
Selain contoh diatas kamu jugab bisa mengedit data menggunakan tambahan fungsi set() seperti contoh insert di atas.

Menghapus Data di Table (Delete)

$this->db->delete();
Diguanakan untuk menghapus satu atau beberapa data dalam tabel berdasarkan nilai tertentu.

$this->db->where(‘id’, $id);
$this->db->delete(‘mytable’);

// hasil : DELETE FROM mytable WHERE id = $id

Sedangkan contoh berikut, digunakan untuk menghapus suatu nilai pada bebrapa tabel sekaligus dalam 1 perintah :
$tables = array(‘table1’, ‘table2’, ‘table3’);
$this->db->where(‘id’, ‘5’);
$this->db->delete($tables);
Ket : menghapus data dengan id=5 di tabel1, tabel2 dan tabel 3.
————————————————————-
$this->db->empty_table();
Digunakan Untuk Menghapus seluruh data di suatu tabel.
$this->db->empty_table(‘mytable’);

// hasil : DELETE FROM mytable
————————————————————–
$this->db->truncate();
Digunakan untuk mengosongkan data di suatu tabel.
$this->db->from(‘mytable’);
$this->db->truncate();
// or
$this->db->truncate(‘mytable’);

// hasil : TRUNCATE mytable

Akhirnya untuk active record yang umum, insert, edit, dan delete sudah saya buat. yah walaupun tutorialnya masih sederhana dan mungkin penyampaianyya kurang jelas. tapi semoga bermanfaat dan Silahkan download tutorial Code Igniter Bahasa Indonesia Disini.  

Active Record – Menambahkan data (insert)


Berikut perintah untuk menambahkan data dengan active record pada Framework Code Igniter.

$this->db->insert();
Fungsi ini digunakan untuk menambahkan data ke tabel : 
$data = array(
   ‘title’ => ‘My title’ ,
   ‘name’ => ‘My Name’ ,
   ‘date’ => ‘My date’
);

$this->db->insert(‘mytable’, $data);

// hasil : INSERT INTO mytable (title, name) VALUES (‘My title’, ‘My name’)
$this->db->insert_batch()
Anda juga bisa menambahkan beberapa data sekaligus dalam 1 perintah dengan membuat nilainya ke dalam bentuk array. contoh :
$data = array(
   array(
      ‘title’ => ‘My title’ ,
      ‘name’ => ‘My Name’ ,
      ‘date’ => ‘My date’
   ),
   array(
      ‘title’ => ‘Another title’ ,
      ‘name’ => ‘Another Name’ ,
      ‘date’ => ‘Another date’
   )
);
$this->db->insert_batch(‘mytable’, $data);
hasil querinya  : INSERT INTO mytable (title, name, date) VALUES (‘My title’, ‘My name’, ‘My date’), (‘Another title’, ‘Another name’, ‘Another date’)
$this->db->set();
Digunakan untuk mengatur satu atau beberapa field dengan nilai yang akan di tambah ke table. Funsi juga bisa berjalan di Update(), pemakaiannya sama.
$this->db->set(‘name’, $name);
$this->db->set(‘title’, $title);
$this->db->set(‘status’, $status);
$this->db->insert(‘mytable’);

Silahkan download tutorial Code Igniter Bahasa Indonesia Disini.  

Active record – Membentuk Hasil Query dengan result()

Result()

Fungsi ini mengembalikan hasil query sebagai array obyek, atau array kosong pada kegagalan. Biasanya kamu akan menggunakan ini dalam sebuah loop foreach, seperti ini:
Contoh :
$query = $this->db->get(‘nama_tabel’);
foreach ($query->result() as $row){
   echo $row->field1;
   echo $row->field2;
   echo $row->field_n;
}
Fungsi di atas adalah alias dari result_object ().
Jika kamu menjalankan query yang mungkin tidak menghasilkan nilai, saya anjurkan untuk menguji hasil terlebih dahulu dengan cara
$query = $this->db->query(“YOUR QUERY”);

if ($query->num_rows() > 0) // mengecek hasil query ada atau tidak
{
   foreach ($query->result() as $row){
      echo $row->title;
      echo $row->name;
      echo $row->body;
   }
}

result_array()

Fungsinya sama seperti result() tapi fungsi ini menghasilkan array murni dari hasil query.
$query = $this->db->query(“YOUR QUERY”);

foreach ($query->result_array() as $row){
   echo $row[‘title’];
   echo $row[‘name’];
   echo $row[‘body’];
}

$query->num_rows()

Memberikan nilai balik berupa jumlah dari baris hasil eksekusi query.
$query = $this->db->query(‘SELECT * FROM my_table’);
echo $query->num_rows();

Silahkan download tutorial Code Igniter Bahasa Indonesia Disini. 

Active Record – Select Query

Untuk Memilih data dari database ( Select )

$this->db->get();
Digunakan untuk menyeleksi seluruh data pada suatu table di database.
Contoh :

  • $query = $this->db->get(‘mytable’);  
    // menghasilkan : SELECT * FROM mytable
  • $query = $this->db->get(‘mytable’, 10, 20); 
    // menhasilkan : SELECT * FROM mytable LIMIT 20, 10
    (limit ini untuk database mysql, di database lain bisa berbeda script)

Bisa dilihat diatas menghasilkan data untuk variable query yang bisa kita oleh seperti ini :
$query = $this->db->get(‘nama_tabel’);
foreach ($query->result() as $baris) {
    echo $baris->nama_field;
}
Fungsi result() digunakan untuk membuat objek atau array kosong jika salah, nanti akan dibahas lebih dalam.
—————————————————————
$this->db->get_where();
Digunakan untuk menyeleksi dan memberikan kondisi where, menggantikan get_where() pada versi sebelumnya.
$query = $this->db->get_where(‘mytable’, array(‘id’ => $id), $limit, $offset);
Hasilnya : Select * from mytable where id=’$id’ limit $limit,$offset
—————————————————————
$this->db->select();
Digunakan untuk menyeleksi satu atau bebrapa field saja pada suatu query.
$this->db->select(‘title, content, date’);
$query = $this->db->get(‘mytable’);
// hasilnya : SELECT title, content, date FROM mytable
—————————————————————
$this->db->select_max();
Digunakan untuk memberikan nilai maksimal suatu field, atau bebrapa field pada table tertentu
$this->db->select_max(‘age’);
$query = $this->db->get(‘members’);
// Menghasilkan : SELECT MAX(age) as age FROM members

$this->db->select_max(‘age’, ‘member_age’);
$query = $this->db->get(‘members’);
// Menghasilkan : SELECT MAX(age) as member_age FROM members
—————————————————————
$this->db->select_min();
Digunakan untuk memberikan nilai miniimal suatu field, atau bebrapa field pada table tertentu, , cara penulisan dan pemakaiannya sama seperti select_max()
$this->db->select_avg();
Digunakan untuk menghitung nilai rata – rata suatu field, cara penulisan dan pemakaiannya sama seperti select_max()
$this->db->select_sum();
Digunakan untuk menghitung jumlah nilai dari suatu field, cara penulisan dan pemakaiannya sama seperti select_max()
—————————————————————
$this->db->from();
Digunakan untuk memilih table yang akan di SELECT, sebenarnya kita bisa dan cukup memilih table pada get() jadi semua terserah kamu ingin memakai yang mana.
$this->db->select(‘title, content, date’);
$this->db->from(‘mytable’);
$query = $this->db->get();

// Menghasilkan : SELECT title, content, date FROM mytable
—————————————————————
$this->db->join();
Digunakan untuk menggabungkan beberapa table,
$this->db->select(‘*’);
$this->db->from(‘blogs’);
$this->db->join(‘comments’, ‘comments.id = blogs.id’);
$query = $this->db->get();
// Menghasilkan : SELECT * FROM blogs JOIN comments ON comments.id = blogs.id
Jika kamu ingin memberikan penggabungan yang lain kamu bisa memberikan nilai pada parameter ke 3 dengan nilai : left, right, outer, inner, left outer, and right outer.
$this->db->join(‘comments’, ‘comments.id = blogs.id’, ‘left’);
// Menghasilkan : LEFT JOIN comments ON comments.id = blogs.id
—————————————————————
$this->db->where();
Digunakan untuk memberikan kondisi Where pada penyeleksian table. Nilai/value yang digunakan dalam fungsi ini juga otomastis fileter untuk wild character (Escaped automatically) jadi aman.
$this->db->where(‘name’, $name);
// menhasilkan : WHERE name = ‘Joe
Tapi jika kamu menggunakannya lebih dari Satu maka hasilnya menjadi  Where … AND
$this->db->where(‘name’, $name);
$this->db->where(‘title’, $title);
$this->db->where(‘status’, $status);
// Menghasilkan : WHERE name = ‘Joe’ AND title = ‘boss’ AND status = ‘active’
Atau kamu juga bisa mengganti kondisi method where nya
$this->db->where(‘name !=’, $name);
$this->db->where(‘id <', $id);
// Menghasilkan : WHERE name != ‘Joe’ AND id < 45
Dan mungkin kamu ingin cara manual seperti biasanya :
$where = “name=’Joe’ AND status=’boss’ OR status=’active'”;
$this->db->where($where);
Mudah bukan ? J
—————————————————————
$this->db->or_where();
Digunakan untuk memberikan wher lebih dari satu dengan kondisi ATAU.
$this->db->where(‘name !=’, $name);
$this->db->or_where(‘id >’, $id);
// Menghasilkan : WHERE name != ‘Joe’ OR id > 50
—————————————————————

$this->db->where_in();

Bagi kamu yang sudah mempelajari SQL dengan detail dan dalam, pasti paham ini.
$names = array(‘Frank’, ‘Todd’, ‘James’);
$this->db->where_in(‘username’, $names);
// Menghasilkan : WHERE username IN (‘Frank’, ‘Todd’, ‘James’)
—————————————————————
$this->db->like();
Digunakan membuat query dengan syarat Like atau seperti nilai yg diberikan.
$this->db->like(‘title’, ‘match’);
$this->db->like(‘body’, ‘match’);
// WHERE title LIKE ‘%match%’ AND body LIKE ‘%match%
Atau mungkin kamu ingin membuat kuery dengan kondisi Like seperti ini :
$this->db->like(‘title’, ‘match’, ‘before’);
// Menghasilkan : WHERE title LIKE ‘%match’

$this->db->like(‘title’, ‘match’, ‘after’);
// Menghasilkan : WHERE title LIKE ‘match%’

$this->db->like(‘title’, ‘match’, ‘both’);
// Menghasilkan : WHERE title LIKE ‘%match%’
—————————————————————
$this->db->or_like();
Pemakaiannya sama seperti Like() or_like() digunakan untuk kondisi OR (atau) dengan like.
$this->db->like(‘title’, ‘match’);
$this->db->or_like(‘body’, $match);
// WHERE title LIKE ‘%match%’ OR body LIKE ‘%match%’
—————————————————————
$this->db->group_by();
Digunakan untuk memberikan method group by.. atau kelompokan berdasarkan ..
$this->db->group_by(array(“nama_field1”, “nama_field2”));
// Menghasilkan : GROUP BY title, date,
Digunakan untuk
—————————————————————
$this->db->order_by();
Digunakan untuk mengurutkan data berdasarkan nilai.
$this->db->order_by(“title”, “desc”);
// Menghasilkan : ORDER BY title DESC
—————————————————————
$this->db->limit();
Digunakan untuk mebatasi jumlah baris yang akan ditampilkan dari hasil query
$this->db->limit(10);
// Produces: LIMIT 10
Atau kamu ingin membuatnya seperti ini :
$this->db->limit(10, 20);

// menghasikan : LIMIT 20, 10 (di mysql, kalau database lain beda perintah)
—————————————————————
$this->db->count_all_results();
Digunakan untuk Menampilkan nilai dari jumlah baris hasil query, hampir sama dengan num_row().
echo $this->db->count_all_results(‘my_table’);
// menghasilkan nilai integer, misalkan :  25

$this->db->like(‘title’, ‘match’);
$this->db->from(‘my_table’);
echo $this->db->count_all_results();
// menghasilkan nilai integer, karena ada kondisi misalkan jadi :  17
—————————————————————

Seperti itulah. jadi simple dan mudah, silahkan baca artikel selanjutnya untuk active record Insert, Update dan delete.  ATAU
Silahkan download tutorial Code Igniter Bahasa Indonesia Disini.  

Models pada frameworl CodeIgniter

Model adalah class yang berguna untuk mengatur hubungan dengan database, karan pasti kita akan melakukan insert, update delete dll, dan dengan dibuatnya class / model ini kita tidak perlu brulang ulang kembali menuliskan script tersebut. Akan tetapi model ini tidak harus ada semua terserah programmer, karena di controllerpun sebenarnya bisa mengurusi data ke database tapi kalau kamu ingin kemudahan model merupakan solusinya.
class M_artikel extends CI_Model {

 var $judul   = ”;
var $isi = ”;
var $tanggal    = ”;
    function __construct()
{
// Call the Model constructor
parent::__construct();
}
function get10ArtikelTerbaru()
{
$query = $this->db->get(‘entries’, 10);
return $query->result();
}
function tambahArtikel()
{
$this->judul   = $_POST[‘judul’];
$this->isi = $_POST[‘isi’];
$this->tanggal    = time();
        $this->db->insert(‘entries’, $this);
}
    function update_entry()
{
$this->judul  = $_POST[‘judul’];
$this->isi = $_POST[‘isi’];
$this->tanggal    = time();
        $this->db->update(‘entries’, $this, array(‘id’ => $_POST[‘id’]));
}
}

Simpan dengan nama m_artikel.php (seperti biasa, penamaan class sama dengan nama filenya) untuk model folder penyimpanannya ada di application/models/
Mungkin bagi yang baru belajar CI ini terlihat script diatas terlihat asing, tapi seperti itulah di CI kita memakai Active Record.  Untuk active record detailnya kita bahas nanti, yang penting disini kamu hanya harus tau apa itu model. J
Dan dibawah contoh pemakaian model di controller. class Artikel extends CI_Controller {

 function terbaru()    {
$this->load->model(‘M_artikel’);
$data[‘query’] = $this->M_artikel->get10ArtikelTerbaru();
$data[‘title’]= ‘Artikel Terbaru’;
$this->load->view(‘v_artikel’, $data);
}
}

Simpan di folder controller dengan namaartikel.php, ingat untuk mengatur database di file controller/database.php. sekarang kita buat di viewnya :

<?php
foreach($query->result() as $row){
echo “

“.$row[‘judul’].”

”;
echo “tanggal : “.$row[‘tgl’].”.  “.$row[‘isi’].”
”;
echo “


”;
}
?>
Ok. Simpan dengan nama v_artikel.php di application/views
Silahkan dilihat hasilnya : http://localhost/webku/index.php/artikel/terbaru

Silahkan download tutorial Code Igniter Bahasa Indonesia Disini.