Download - Materi Framework Codeigniter

Transcript
Page 1: Materi Framework Codeigniter

DASAR-DASAR PEMPROGRAMAN WEBDENGAN FRAMEWORK CODEIGNITER

INSTRUKTUR:

YADI UTAMA, M.KOM

UNIVERSITAS ISLAM NEGERI (UIN)RADEN FATAH PALEMBANG

Page 2: Materi Framework Codeigniter

1. MENGENAL CODEIGNITER

Codeigniter itu adalah sebuah framework untuk web yang dibuat dengan PHP. Framework sendiri dapat diartikan sebagai kumpulan fungsi atau class yang telah siap digunakan sehingga mempermudah dan mempercepat pekerjaan seorang programmer tanpa harus membuat fungsi/class tersebut dari awal.

Codeigniter sendiri merupakan salah satu dari banyak framework PHP dengan model MVC (Model, View, Controller) yang sering digunakan oleh para developer aplikasi berbasis web. Codeigniter pertama kali dirilis pada tanggal 26 Februari 2006 dan hingga saat ini, versi stabil terakhir sudah mencapai versi 3.0.3.

Berbicara soal MVC, Model View Controller adalah merupakan suatu konsep yang cukup popular untuk membangun aplikasi berbasis web. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama untuk membangun sebuah aplikasi melakukan fungsi-fungsinya seperti manipulasi data, user interface, dan bagian yang menjadi kontrol aplikasi. Dalam suatu aplikasi, sebuah MVC pattern dibangun dengan 3 jenis komponen antara lain :

1. Model, merupakan kumpulan class/fungsi yang berhubungan langsung dengan database untuk melakukan manipulasi data (insert, update, delete, search), menangani validasi dari controller, namun tidak dapat berhubungan langsung dengan view. 

2. View, merupakan bagian yang akan menangani tampilan dalam sebuah aplikasi berbasis web dan juga berfungsi menerima dan mempresentasikan data kepada pengguna yang biasanya berisi kode HTML yang diatur oleh controller. 

3. Controller, merupakan bagian yang mengatur hubungan antara model dengan view dimana controller ini berfungsi untuk request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi. 

Dengan menggunakan model MVC, sebuah aplikasi dapat dikembangkan sesuai kemampuan developer, yaitu programer yang menangani bagian kontroler dan model. Sedangkan bagian view ditangani oleh seorang designer sehingga maintanability dan organisasi kode dapat meningkat sesuai penggunaan arsitektur MVC. Namun demikian, untuk menangani variable-variabel yang akan ditampilkan, dibutuhkan komunikasi antara developer dan designer.

Gambar 1.1 Flowchart Aplikasi Dengan Framework CodeIgniter

2

Page 3: Materi Framework Codeigniter

Berikut adalah beberapa kelebihan Codeigniter dibanding dengan framework lainnya:

1. Performa sangat cepat. Eksekusi yang lambat pada framework disbanding dengan PHP from the scratch menjadi satu alasan kenapa tidak memilih framework. Namun tidak dengan codeigniter, bahkan dapat dikatakan codeigniter merupakan framework yang tercepat disbanding framework lainnnya. 

2. Nearly zero configuration (minim pengaturan). Untuk penyesuaian database dan keleluasaan routing tetap dijinkan untuk melakukan konfigurasi dengan merubah beberapa file seperti databse.php. Namun untuk kebutuhan codeigniter dasar, hanya dibutuhkan sedikit perubahan/konfigurasi pada folder config.

3. Banyakanya komunitas pengguna Codeigniter, sehingga memudahkan kita untuk berinteraksi dengan pengguna lain baik untuk bertanya atau berbagi. 

4. Dokumentasi yang sangat lengkap.

3

Page 4: Materi Framework Codeigniter

2. APLIKASI WEB DENGAN FRAMWORK CODEIGNITER

2.1 Membuat Halaman Statis

Untuk membangun sebuah web dengan framework CodeIgniter, langkah pertama yang dilakukan adalah mendefinisikan dan membuat sebuah class dalam komponen controller. Sebagai contoh, jika Anda ingin menampilkan sebuah halaman statis yang memuat sebuah content statis berupa teks “Hello Word!”, maka yang pertama Anda lakukan adalah membuat sebuah class dalam komponen controller, misal “hello”. Sebagai berikut:

Buatlah sebuah file hello.php dalam folder application/controllers dengan kode sebagai berikut”

Jika dijalankan melalui browser maka hasil yang di dapat adalah seperti pada gambar berikut:

Gambar 2.1 Membuat Halaman Statis Dengan komponen Controller

Langkah kedua adalah membuat sebuah class dalam komponen model yang nantinya akan berfungsi untuk menyediakan content dalam bentuk data teks “Hello Word!”. Buatlah sebuah file “hello_model.php” dalam folder application/models.

4

<?class hello extends CI_Controller {

public function Index(){

echo "Hello Word!";}

}?>

Page 5: Materi Framework Codeigniter

Selanjutnya pada komponen controller (hello.php), lakukanlah loading class hello_model pada file hello_model.php dengan cara melakukan modifikasi pada file hello.php yang telah dibuat sebelumnya sebagai berikut:

5

<?phpclass hello_model extends CI_Model {

public function __construct() { parent::__construct(); }

public function ambil_content() {

$content = "Hello Word!";return $content;

}

}

?>

<?phpclass hello extends CI_Controller {

public function Index(){

$this->load->model('hello_model');$content = $this->hello_model->ambil_content();echo $content;

}}?>

Page 6: Materi Framework Codeigniter

Apabila dijalankan pada browser, maka hasilnya sama seperti sebelumnya, sebagai berikut:

Gambar 2.2 Membuat Halaman Statis Dengan komponen Controller dan Model

Langkah ketiga, adalah membuat sebuah komponen view. Komponen view digunakan sebagai tampilan yang mengatur presentasi content pada browser sesuai dengan standar kode HTML yang diinginkan. Buatlah sebuah file hello_view.php dalam folder application/views sebagai berikut:

Selanjutnya pada komponen controller (hello.php), lakukanlah loading komponen view pada file hello_view.php dengan cara melakukan modifikasi pada file hello.php yang telah dibuat sebelumnya sebagai berikut:

6

<html><body>

<?echo $content;?>

</body></html>

Page 7: Materi Framework Codeigniter

Apabila dijalankan pada browser maka hasilnya sama seperti pada hasil sebelumnya, yakni sebagai berikut:

Gambar 2.3 Membuat Halaman Statis Dengan Komponen Controller, Model dan View.

Seperti pada contoh terakhir di atas dapat kita lihat, bahwa content statis berupa teks “Hello Word!” kita sajikan dalam framework CodeIgniter yang melibatkan tiga komponen framework MVC secara lengkap yaitu: Model, View dan Controller.

7

<?class hello extends CI_Controller {

public function Index(){

$this->load->model('hello_model');$content = $this->hello_model->ambil_content();

$data = array('content' => $content);

$this->load->view('hello_view', $data);}

}?>

Page 8: Materi Framework Codeigniter

2.2 Membuat Halaman Statis Dengan Menggunakan Content Array Asosiatif Satu Dimensi

Seperti pada bahasan 2.1 sebelumnya, kita telah berhasil membuat sebuah halaman statis dengan melibatkan tiga komponen framework secara lengkap yaitu Model-View-Controller. Ini artinya kita telah menerapkan tujuan yang sebenarnya dari sebuah framework MVC dengan CodeIgniter yaitu melakukan pemisahan antara komponen Model,View dan Controller. Namun untuk melibatkan komponen view, kita harus memahami konsep array asosiatif agar dapat menggunakan komponen view secara maksimal.

Sebagai contoh, misalkan kita ingin menampilkan content web berupa dua data teks yang berbeda, yaitu nama = “Yadi Utama”, usia = “36”. Maka kita harus menyajikan data content berupa sebuah array asosiatif satu dimensi dengan penulisan sebagai berikut:

$content = array (‘nama’ = > ‘Yadi Utama’, ‘usia’ = ‘36’

);

Jika ditulis menjadi 1 baris menjadi:

$content = array(‘nama’ = > ‘Yadi Utama’, ‘usia’ = ‘36’);

Buatlah sebuah file baru dengan nama file “greeting.php” sebagai komponen controller ke dalam folder application/controllers sebagai berikut:

Kemudian buatlah sebuah file dengan nama “greeting_model.php” sebagai komponen model ke dalam folder application/models sebagi berikut:

8

<?class greeting extends CI_Controller {

public function Index(){

$this->load->model('greeting_model');$content = $this->greeting_model->ambil_content();

$data = array('content' => $content);

$this->load->view('greeting_view', $data);}

}?>

Page 9: Materi Framework Codeigniter

Selanjutnya buatlah file “greeting_view.php” sebagai komponen view ke dalam folder application/views sebagai berikut:

Jika dijalankan pada browser maka hasil yang di dapat adalah sebagai berikut:

Gambar 2.4 Membuat Halaman Statis Menggunakan Content Array Asosiatif Satu Dimensi

9

<?class greeting_model extends CI_Model {

public function __construct() { parent::__construct(); }

public function ambil_content() {

$content = array('nama' => 'Yadi Utama', 'usia' => '36');return $content;

}

}?>

<html><body>

<h3>Selamat Datang, <u><? echo $content['nama'] ?></u></h3><h4>Usia Anda saat ini adalah <u><? echo $content['usia'] ?></u> tahun.</h4>

</body></html>

Page 10: Materi Framework Codeigniter

2.3 Membuat Halaman Statis Dengan Menggunakan Content Array Asosiatif Dua Dimensi

Ada kalanya content yang akan ditampikan disajikan dalam bentuk tabel. Ini berarti kita harus menyusun data content tersebut dalam bentuk array asosiatif dua dimensi yang terdiri dari kolom dan baris. Sebagai contoh, disediakan content dengan format tabel sebagai berikut:

NAMA KOTAYadi Utama PalembangHartati Deviana JakartaA. Daris Rasyid BandungM. Farras Ikhwansyah Surabaya

Data content di atas kita susun menjadi sebuah array dua dimensi dengan penulisan sebagai berikut:

$content = array (array (

‘nama’ => ‘Yadi Utama’, ‘kota’ => ‘Palembang’),

array (‘nama’ => ‘Hartati Deviana’, ‘kota’ => ‘Jakarta’),

array (‘nama’ => ‘A. Daris Rasyid’, ‘kota’ => ‘Bandung’),

array (‘nama’ => ‘M. Farras Ikhwansyah’, ‘kota’ => ‘Surabaya’)

);

Jika ditulis menjadi satu baris menjadi:

$content = array ( array (‘nama’ => ‘Yadi Utama’, ‘kota’ => ‘Palembang’), array (‘nama’ => ‘Hartati Deviana’, ‘kota’ => ‘Jakarta’), array (‘nama’ => ‘A. Daris Rasyid’, ‘kota’ => ‘Bandung’), array (‘nama’ => ‘M. Farras Ikhwansyah’, ‘kota’ => ‘Surabaya’));

Langkah pertama, buatlah sebuah file baru dengan nama “person.php” sebagai komponen controller dalam folder application/controllers sebagai berikut:

10

Page 11: Materi Framework Codeigniter

Kemudian buatlah sebuah file “person_model.php” sebagai komponen model dalam folder application/models/ sebagai berikut:

Kemudian buatlah sebuah file “person_view.php” sebagai komponen view dalam folder application/views sebagai berikut:

11

<?class person extends CI_Controller {

public function Index(){

$this->load->model('person_model');$content = $this->person_model->ambil_content();

$data = array('content' => $content);

$this->load->view('person_view', $data);}

}?>

<?class person_model extends CI_Model {

public function __construct() { parent::__construct(); }

public function ambil_content() {

$content = array ( array ('nama' => 'Yadi Utama', 'kota' => 'Palembang'), array ('nama' => 'Hartati Deviana', 'kota' => 'Jakarta'), array ('nama' => 'A. Daris Rasyid', 'kota' => 'Bandung'), array ('nama' => 'M. Farras Ikhwansyah', 'kota' => 'Surabaya')

);return $content;

}

}

?>

Page 12: Materi Framework Codeigniter

Jika dijalankan menggunakan browser, maka hasil yanh di dapat adalah seperti berikut:

Gambar 2.5 Membuat Halaman Statis Menggunakan Content Array Asosiatif Dua Dimensi

12

<html><body>

<table border="1" width="500px"><tr>

<th>NAMA</th><th>KOTA</th>

</tr><? foreach ($content as $row=>$value) { ?><tr>

<td><? echo $value['nama'] ?></td><td><? echo $value['kota'] ?></td>

</tr><? } ?></table>

</body></html>

Page 13: Materi Framework Codeigniter

2.4 Menampilkan Content Web Menggunakan Database

Adakalanya content yang akan ditampilkan disimpan dalam sebuah database. Di sini kita mempelajari MySQL sebagai database server yang akan digunakan untuk menyimpan content web. Langkah pertama yang harus dilakukan adalah membuat sebuah database. Sebagai contoh kita buat sebuah database MySQL dengan nama “db_person”. Tabel yang dibuat kita beri nama “person” dengan perintah SQL sebagai berikut:

CREATE DATABASE `db_person`;

USE `db_person`;

CREATE TABLE IF NOT EXISTS `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nama` varchar(40) NOT NULL, `kota` varchar(40) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Kemudian kita masukkan data content ke dalam tabel “person” dengan perintah SQL sebagai berikut:

INSERT INTO `person` (`id`, `nama`, `kota`) VALUES(1, 'Yadi Utama', 'Palembang'),(2, 'Hartati Deviana', 'Jakarta'),(3, 'A. Daris Rasyid', 'Bandung'),(4, 'M. Farras Ikhwansyah', 'Surabaya');

Setelah database kita buat, selanjutnya adalah melakukan koneksi ke database tersebut melalui aplikasi web dengan framework CodeIgniter yang kita bangun. Untuk melakukan koneksi ke sebuah database MySQL, lakukanlah konfigurasi dengan memodifikasi file “database.php” dalam folder application/config/ sebagai berikut:

$db['default'] = array('dsn' => '','hostname' => 'localhost','username' => 'root','password' => '','database' => 'db_person','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

);

13

Page 14: Materi Framework Codeigniter

Kemudian buatlah sebuah file baru dengan nama “acces_person.php”sebagai komponen controller dalam folder application/controllers/ sebagai berikut:

Selanjutnya buatlah sebuah file “access_person_model.php” sebagai komponen model yang berfungsi untuk mengambil data content dari database dan menyusunnya ke dalam bentuk array asosiatif dua dimensi sebagai berikut:

14

<?class access_person extends CI_Controller {

public function Index(){

$this->load->model('access_person_model');$content = $this->access_person_model->ambil_content();

$data = array('content' => $content);

$this->load->view('access_person_view', $data);}

}?>

<?class access_person_model extends CI_Model {

public function __construct() { parent::__construct(); }

public function ambil_content() {

$db = $this->load->database();$query = $this->db->query('SELECT * FROM person');$result = $query->result();$content = array();foreach($result as $row) {

$content[] = $content[] = array ('id' => $row->id, 'nama' => $row->nama, 'kota' => $row->kota);}return $content;

}

}

?>

Page 15: Materi Framework Codeigniter

Selanjutnya buatlah sebuah file “access_person_view.php” sebagai komponen view dalam folder application/views sebagai berikut:

Apabila dijalankan aplikasi dijalankan melalui browser maka akan didapat hasil sebagai berikut:

Gambar 2.6 Menampilkan Content Web Menggunakan Database

15

<html><body><h3>MENAMPILKAN CONTENT WEB MENGGUNAKAN DATABASE</h3><table border="1" width="500px"><tr>

<th>NAMA</th><th>KOTA</th>

</tr><? foreach ($content as $row=>$value) { ?><tr>

<td><? echo $value['nama'] ?></td><td><? echo $value['kota'] ?></td>

</tr><? } ?></table>

</body></html>

Page 16: Materi Framework Codeigniter

2.5 Membuat Content Web Dinamis dan Interaktif

Dengan menggunakan database, kita dapat membuat content web yang dinamis dengan menyediakan fasilitas interaksi dengan pengguna. Interaksi dengan pengguna dapat berupa edit data, tambah data maupun hapus data.

Sebagai contoh, kita akan memodifikasi komponen view pada file “access_person.php” yang telah kita buat pada contoh sebelumnya dengan menambahkan fasilitas edit data, sebagai berikut:

Sehingga apabila dijalankan melalui browser akan didapat hasil sebagai berikut:

Gambar 2.7 Menyediakan Fasilitas Interaksi Pada Content Web

16

<html><body><h3>MENAMPILKAN CONTENT WEB MENGGUNAKAN DATABASE</h3><table border="1" width="500px"><tr>

<th>NAMA</th><th>KOTA</th><th>AKSI</th>

</tr><? foreach ($content as $row=>$value) { ?><tr>

<td><? echo $value['nama'] ?></td><td><? echo $value['kota'] ?></td><td align="center"><a href="access_person/edit/<? echo $value['id'] ?>">Edit</a></td>

</tr><? } ?></table>

</body></html>

Page 17: Materi Framework Codeigniter

Kemudian pada file “access_person.php” yang telah dibuat pada contoh sebelumnya, tambahkanlah fungsi edit dan edit_process sebagai berikut:

Kemudian, tambahkanlah fungsi “edit_content” dan “edit_content_process” ke dalam file “access_person_model.php” yang telah dibuat pada contoh sebelumnya, sebagai berikut:

17

<?class access_person extends CI_Controller {

public function Index(){

$this->load->model('access_person_model');$content = $this->access_person_model->ambil_content();$data = array('content' => $content);$this->load->view('access_person_view', $data);

}

public function edit($id){

$this->load->model('access_person_model');$content = $this->access_person_model->edit_content($id);$data = array('content' => $content);$this->load->view('access_person_edit_view', $data);

}

public function edit_process($id){

$this->load->model('access_person_model');$this->access_person_model->edit_content_process($id, $_POST);header("location: ../../access_person");

}

}?>

Page 18: Materi Framework Codeigniter

18

<?class access_person_model extends CI_Model {

public function __construct() { parent::__construct(); }

public function ambil_content() {

$db = $this->load->database();$query = $this->db->query("SELECT * FROM person");$result = $query->result();$content = array();foreach($result as $row) {

$content[] = array ('id' => $row->id, 'nama' => $row->nama, 'kota' => $row->kota);}return $content;

}

public function edit_content($id) {

$db = $this->load->database();$query = $this->db->query("SELECT * FROM person WHERE id = '".$id."'");$result = $query->row_array();$content = $result;return $content;

}

public function edit_content_process($id, $post) {

$db = $this->load->database();$query = $this->db->query("UPDATE person SET nama = '".$post['nama']."', kota = '".$post['kota']."'

WHERE id = '".$id."'");return;

}

}

?>

Page 19: Materi Framework Codeigniter

Selanjutnya, kita buat sebuah file baru “access_person_edit_view.php” sebagai komponen view yang akan digunakan sebagai form edit data setiap kali pengguna mengklik link “Edit” pada masing-masing item data content web yang ditampilkan, sebagai berikut:

Apabila dijalankan melalui browser, maka akan didapat hasil seperti berikut:

Gambar 2.8 Form Edit Data

19

<html><body><h3>EDIT DATA</h3><form method="post" action="../edit_process/<? echo $content['id'] ?>"><table width="600px"><tr>

<td>NAMA</td><td>:</td><td><input name="nama" size="40" value="<? echo $content['nama'] ?>"></td>

</tr><tr>

<td>KOTA</td><td>:</td><td><input name="kota" size="40" value="<? echo $content['kota'] ?>"></td>

</tr></table><input type="submit" value="SIMPAN"></table></form></body></html>

Page 20: Materi Framework Codeigniter

LATIHAN

Dengan memahami contoh pada bahasan 2.5 di atas, modifikasilah aplikasi pada contoh yang telah diberikan sebelumnya dengan menambahkan fasilitas interaksi Tambah Data dan Hapus Data.

20