Tutorial 1 CI

35
Session Session adalah sebuah varibel yang diletakkan di server. Dengan begitu, PHP bisa mengambil nilai yang tersimpan di dalam variable tersebut meskipun kita membuka halaman baru di browser. Biasanya session akan hilang jika anda menutup browser atau dengan time out yang ditentukan. Session sangat diperlukan untuk penanganan login user/pengguna, yang mana nantinya beberapa data penting pengguna disimpan di dalam variable session, seperti status login, id user, nama user, dan nama group (group = kategori user). Oleh karena itu, ketika tab baru dibuka pun kita masih bisa mengakses data kita dengan asumsi kita sudah login ke dalam aplikasi tersebut. Register Register adalah bagaimana kita mendaftarkan user ke dalam database. Database mempunyai data user yang sewaktu2 dapat dipakai untuk login user. Proses dari register hanyalah penambahan data user ke dalam database dari form registrasi yang nanti kita buat. Login Login adalah proses di mana proses pengecekan user dilakukan. Pengecekan dilakukan untuk memeriksa apakah username dan password cocok atau tidak,  jika ada dalam database dan cocok maka data akan dimasukkan ke dalam session, status login diset menjadi TRUE, dan data session lainnya akan diisikan dengan data user yang ada di dalam database. Logout Logout adalah sebaliknya dari Login. Logout adalah proses penghancuran data di variable session, yang berarti data2 di variable session dihapus. Jika data session dihapus, maka statusnya sekarang adalah tidak login, jadi bisa disebut ‘keluar dari sistem’.  OK, langsung saja kita berangkat ke CI… Buat Table Sebelum ke pembuatan model, controller, dan view tentu saja yang harus dilakukan pertama kali adalah pembuatan database, dalam hal ini kita akan membuat sebuah table user yang berisi id_user, nama_lengkap, username, password, dan group… Saya kasih contoh sederhana seperti ini, yang mana sebetulnya masih bisa dikembangkan, misalnya penambahan status, verifikasi email, reset password, dan sebagainya… Tapi berhubung tidak memungkinkan dan terlalu rumit, maka saya buat contoh sederhana aja.. Buat table user dengan mengcopy syntax SQL berikut ke PhpMyAdmin kamu beserta data sample: CREATE TABLE `user` ( `id_user` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nama_lengkap` VARCHAR100 NOT NULL , `username` VARCHAR50 NOT NULL , `password` VARCHAR50 NOT NULL , `group` VARCHAR20 NOT NULL ) ENGINE = INNODB;  INSERT INTO `user` ( `id_user` , `nama_lengkap` , `username` , `password` , `group` )

Transcript of Tutorial 1 CI

Page 1: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 1/35

 

SessionSession adalah sebuah varibel yang diletakkan di server. Dengan begitu, PHPbisa mengambil nilai yang tersimpan di dalam variable tersebut meskipun kitamembuka halaman baru di browser. Biasanya session akan hilang jika andamenutup browser atau dengan time out yang ditentukan. Session sangat

diperlukan untuk penanganan login user/pengguna, yang mana nantinyabeberapa data penting pengguna disimpan di dalam variable session, sepertistatus login, id user, nama user, dan nama group (group = kategori user). Olehkarena itu, ketika tab baru dibuka pun kita masih bisa mengakses data kitadengan asumsi kita sudah login ke dalam aplikasi tersebut.RegisterRegister adalah bagaimana kita mendaftarkan user ke dalam database.Database mempunyai data user yang sewaktu2 dapat dipakai untuk login user.Proses dari register hanyalah penambahan data user ke dalam database dariform registrasi yang nanti kita buat.LoginLogin adalah proses di mana proses pengecekan user dilakukan. Pengecekan

dilakukan untuk memeriksa apakah username dan password cocok atau tidak, jika ada dalam database dan cocok maka data akan dimasukkan ke dalamsession, status login diset menjadi TRUE, dan data session lainnya akan diisikandengan data user yang ada di dalam database.LogoutLogout adalah sebaliknya dari Login. Logout adalah proses penghancuran data divariable session, yang berarti data2 di variable session dihapus. Jika data sessiondihapus, maka statusnya sekarang adalah tidak login, jadi bisa disebut ‘keluardari sistem’. 

OK, langsung saja kita berangkat ke CI…

Buat TableSebelum ke pembuatan model, controller, dan view tentu saja yang harusdilakukan pertama kali adalah pembuatan database, dalam hal ini kita akanmembuat sebuah table user yang berisi id_user, nama_lengkap, username,password, dan group… Saya kasih contoh sederhana seperti ini, yang manasebetulnya masih bisa dikembangkan, misalnya penambahan status, verifikasiemail, reset password, dan sebagainya… Tapi berhubung tidak memungkinkan

dan terlalu rumit, maka saya buat contoh sederhana aja..Buat table user dengan mengcopy syntax SQL berikut ke PhpMyAdmin kamubeserta data sample:

CREATE TABLE  `user` (`id_user` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`nama_lengkap` VARCHAR( 100 ) NOT NULL ,`username` VARCHAR( 50 ) NOT NULL ,`password` VARCHAR( 50 ) NOT NULL ,`group` VARCHAR( 20 ) NOT NULL) ENGINE = INNODB; 

INSERT INTO  `user` (`id_user` ,`nama_lengkap` ,`username` ,

`password` ,`group`)

Page 2: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 2/35

 

VALUES (NULL , 'Cecep Yusuf', 'cheyuz', MD5('cheyuz') , 'admin'), (NULL , 'Ayu Dwi S', 'ayue', MD5('ayue') , 'operator');

Catatan: group adalah kategori dari user tersebut, misalnya: administrator,operator, member, dan sebagainya.

Buat Model AccountSebelum kita membuat controller dan view untuk registrasi, login, dan logout,pertama2 kita harus membuat modelnya terlebih dahulu.. model apakah itu?

 Yup, model untuk account nya… kita buat account_model.php di direktori/application/models/account_model.php

<?php /*** @author cheyuz*/ class Account_model extends CI_Model{

private $table = 'user'; //isi nama table user di sini 

function __construct()  {

parent::__construct();  } }

Di dalam class Account_model terdapat variable private $table, yang nantinyafunction2 di bawah akan mengakses variable itu, dari table mana datadidapatkan.Setelah class dibuat, maka harus dibuat fungsi2 dalam class tersebut. Fungsi2 ygperlu kita buat adalah function register, login, dan logout, juga ada fungsi2tambahan lainnya.

 Tambahkan function register di dalam class tersebut:...

function register($data)  {  }...

di dalam function register terdapat parameter $data. Parameter ini adalahberupa array yang mana nantinya data dari form registrasi dimasukkan ke dalamdatabase, maka di dalam function register() ditambahkan kode berikut ini:

...function register($data)

  {  $this->db->insert($this->table, $data);  }...

Setelah function register dibuat, maka selanjutnya tambahkan function login didalam class tersebut:

...function login($username, $password)

  {  }...

Di atas terlihat bahwa ada dua parameter, yaitu $username dan $password. Iniberguna buat nanti kita cek apakah usernamenya ada atau tidak, cocok atautidak dengan passwordnya. Dan setelah itu isi function tersebut dengan kode dibawah ini:

Page 3: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 3/35

 

...function login($username, $password)

  {  $data = $this->db  ->where(array('username' => $username, 'password' =>md5($password)))

  ->get($this->table);  }...

$data adalah seleksi dari syntax SQL:SELECT * FROM `user` WHERE `username`= $username AND `password` =md5($password)

Kemudian hasil tersebut dicek apakah ada dan cocok username denganpasswordnya atau tidak, ada berarti jika banyak baris lebih dari 0 (nolmenyatakan bahwa tidak ada yang terseleksi).Nah di bawah ini cara ngeceknya memakai if…

  .... 

if ($data->num_rows() > 0)  {  $user = $data->row(); 

//data hasil seleksi dimasukkan ke dalam $session  $session = array(  'logged_in' => 1,  'id_user' => $user->id_user,  'group' => $user->group,  'username' => $user->username  ); 

//data dari $session akhirnya dimasukkan ke dalam session(menggunakan library CI)  $this->session->set_userdata($session);  }  else  {  $this->session->set_flashdata('notification', 'Usernamedan Password tidak cocok');  } 

....

berikut ini adalah function login() secara lengkap:  ...

function login($username, $password)  {  $data = $this->db  ->where(array('username' => $username, 'password' =>md5($password)))  ->get($this->table); 

//dicek  if ($data->num_rows() > 0)  {  $user = $data->row(); 

//data hasil seleksi dimasukkan ke dalam $session  $session = array(  'logged_in' => 1,  'id_user' => $user->id_user,  'group' => $user->group,

Page 4: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 4/35

 

  'username' => $user->username  ); 

//data dari $session akhirnya dimasukkan ke dalam session(menggunakan library CI)  $this->session->set_userdata($session);

  }  else  {  $this->session->set_flashdata('notification', 'Usernamedan Password tidak cocok');  }  }  ...

Nah, kemudian setelah itu dibuat function logoutnya…Ingat bahwa logout adalah menghapus session, maka scriptnya sederhana,cukup dengan function $this->session->sess_destroy();

  ...function logout()

  {  $this->session->sess_destroy();  }  ...

Sehingga kode PHP lengkapnya untuk class Account_model adalah sebagaiberikut:

<?php /*** @author cheyuz*/ class Account_model extends CI_Model{

private $table = 'user'; //isi nama table user di sini 

function __construct()  {

parent::__construct();  } 

function register($data)  {  $this->db->insert($this->table, $data);  } 

function login($username, $password)

  {  $data = $this->db  ->where(array('username' => $username, 'password' =>md5($password)))  ->get($this->table); 

//dicek  if ($data->num_rows() > 0)  {  $user = $data->row(); 

//data hasil seleksi dimasukkan ke dalam $session  $session = array(

  'logged_in' => 1,  'id_user' => $user->id_user,

Page 5: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 5/35

 

  'group' => $user->group,  'username' => $user->username,  'nama_lengkap' => $user->nama_lengkap,  ); 

//data dari $session akhirnya dimasukkan ke dalam session

(menggunakan library CI)  $this->session->set_userdata($session);  }  else  {  $this->session->set_flashdata('notification', 'Usernamedan Password tidak cocok');  }  } 

function logout()  {  $this->session->sess_destroy();

  }}

Untuk menggunakannya, caranya cukup dengan meload model tersebut,kemudian masukkan variable post dari form login ke dalam parameter darifunction login() di model account_model…Salah satu contoh penggunaan di controller:

...function masuk()

  {  $post = $this->input->post('login');  if($post==NULL)  {  $this->load->view('login');

  }  else  {  $this->account_model->login($post['username'],$post['password']);

redirect('home');  }  }...}

Validasi Input Form memang diperlukan untuk kebenaran nilai dari suatu data. Misalnya,untuk input E-Mail, kita harus mengisikan format yang sesuai/valid dengan format email,contohnya: [email protected], [email protected], [email protected], dan sebagainya.Untuk input Nama misalnya tidak boleh dikosongkan, jika isian kosong maka data tidak akandisubmit ke server, melainkan akan munculnya laporan bahwa data terdapat kesalahan, yaitu

 belum diisi.

Hampir semua input form menggunakan validasi. Untuk contoh pada tutorial ini, kita akanmembuat validasi untuk form Registrasi (Pendaftaran pada suatu situs), yang input danaturannya adalah sebagai berikut:

- Nama depan (wajib diisi)

- Nama belakang (optional)- Alamat (wajib diisi)- E-Mail (wajib diisi, harus format E-Mail)

Page 6: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 6/35

 

- No Telepon (optional, harus nomor)- Pekerjaan (optional)- Username (wajib diisi, minimal 6 karakter)- Password (wajib diisi, minimal 6 karakter)- Konfirmasi Password (wajib diisi, harus sama dengan password)

Dengan menggunakan Codeigniter, Anda bisa membuat validasi form dengan mudah, karenaCodeigniter sudah menyediakan library untuk Form Validation.

Untuk mengikuti tutorial ini, diharapkan Anda sudah menghilangkan index.php yang ada ditutorial ini: http://harian.cheyuz.com/_other/menghilangkan-index-php-di-code-igniter-untuk-di-berbagai-server dan mengeset base_url() dengan http://localhost/webku dansedikitnya sudah paham semua materi yang ada di Tutorial Dasar CI Part I, Tutorial Dasar CIPart II, dan Tutorial Dasar CI Part III.

Untuk tutorial ini, kita tidak akan fokus kepada database, tetapi kepada validasi form, jadisaya tidak akan membuat model registrasi_model, melainkan Anda explore sendiri

 bagaimana cara memasukkan data ke dalam database yang sudah dipelajari di Tutorial Dasar 

Sebelumnya.OK, kita mulai aja, langkah pertama, buatlah sebuah controller kosong registrasi.php

dengan isi file sebagai berikut:

 <?php /*** @author cheyuz*/ class Registrasi extends Controller{ 

function __construct()

  {parent::Controller();

  } 

//code}

Kemudian, langkah pertama yang harus dilakukan adalah meload helper Form dan libraryform_validation yang sudah disediakan oleh Codeigniter ke dalam controller kita, caranyatambahkan kode $this->load->helper('form')  $this->load->library('form_validation') di dalam function __construct() , jadi sekarang code didalam __construct menjadi seperti ini:

... 

function __construct()  {

parent::Controller();  $this->load->helper('form');  $this->load->library('form_validation');  } ...

Sejauh ini Anda sudah menggunakan library Form Validation, sekarang tinggal buatfunction index() di dalam controller supaya kita bisa mengakses di dalam URL dengan

 bentuk seperti ini: http://localhost/webku/registrasi . Tambahkan function index() setelahfunction __construct() dibuat.. jadi kode lengkapnya seperti ini:

Page 7: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 7/35

 

 <?php /*** @author cheyuz*/ class Registrasi extends Controller

function __construct()  {

parent::Controller();  $this->load->helper('form');  $this->load->library('form_validation');  } 

function index()  { 

}

 }

kemudian, buatlah view di dalam folder /system/application/views/ dengan nama:registrasi_view.php yang isinya berupa html form sebagai berikut:

<h2>Registrasi</h2> 

 <?php echo form_open('registrasi') ?> <table>

<tr><td>Nama depan</td><td> <?php echo form_input('nama_depan') ?> </td>

</tr>

<tr><td>Nama belakang</td><td> <?php echo form_input('nama_belakang') ?> </td>

</tr><tr>

<td>Alamat</td><td> <?php echo form_textarea('alamat') ?> </td>

</tr><tr>

<td>E-Mail</td><td> <?php echo form_input('email') ?> </td>

</tr><tr>

<td>No Telepon</td><td> <?php echo form_input('no_telepon') ?> </td>

</tr><tr>

<td>Pekerjaan</td><td> <?php echo form_input('pekerjaan') ?> </td>

</tr><tr>

<td>Username</td><td> <?php echo form_input('username') ?> </td>

</tr><tr>

<td>Password</td>

<td> <?php echo form_password('password') ?> </td></tr><tr>

Page 8: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 8/35

 

<td>Konfirmasi Password</td><td> <?php echo form_password('konfirmasi_password') ?> </td>

</tr><tr>

<td></td><td> <?php echo form_submit('daftar','Daftar') ?> </td>

</tr></table>

 <?php echo form_close() ?> 

Setelah view dibuat, baru kita tambahkan kode untuk meload view tersebut, yaitu: $this-

>load->view('registrasi'); ini kita simpan di function index().

Setelah itu, kita buat aturan untuk validation tadi, caranya yaitu dengan menambahkan array berupa rules2 tadi dengan bentuk seperti berikut:

$rules = array(  array(  'field'  => [nama input field]  'label'  => [label]

  'rules'  => [aturan]  ), 

//dan seterusnya ... 

);

Jadi, secara lengkap buatlah $rules tersebut sebelum view diload, lengkapnya seperti berikut:

...  $rules= array(  array(  'field' => 'nama_depan',

  'label' => 'Nama Depan',  'rules' => 'required'  ),  array(  'field' => 'alamat',  'label' => 'Alamat',  'rules' => 'required'  ),  array(  'field' => 'email',  'label' => 'E-Mail',  'rules' => 'required|valid_email'  ),

  array(  'field' => 'no_telepon',  'label' => 'No Telepon',  'rules' => 'numeric'  ),  array(  'field' => 'username',  'label' => 'Username',  'rules' => 'required|min_length[6]'  ),  array(  'field' => 'password',  'label' => 'Password',

  'rules' => 'required|min_length[6]|matches[konfirmasi_password]'  ),

Page 9: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 9/35

 

  array(  'field' => 'konfirmasi_password',  'label' => 'Konfirmasi Password',  'rules' => 'required'  ),  );

  $this->form_validation->set_rules($rules); ...

Setelah itu, ada pengecekan apakah data sudah dikirim atau belum dengan cara memakai if,kodenya seperti berikut:

  if ($this->form_validation->run() == FALSE)  {  //jika belum dikirim/belum valid, masukkan kode di sini  }  else  {  //jika sudah valid, masukkan kode INSERT di sini  }

Di atas ada pengecekan jika belum dikirim/belum valid, di dalam bagian itu pindahkan kode$this->load->view('registrasi'); ke dalam statemen ini.Jadi, jika kita lihat, code lengkapnya seperti ini:

  function index()  {  $rules = array(  array(  'field' => 'nama_depan',  'label' => 'Nama Depan',  'rules' => 'required'  ),  array(  'field' => 'alamat',  'label' => 'Alamat',  'rules' => 'required'  ),  array(  'field' => 'email',  'label' => 'E-Mail',  'rules' => 'required|valid_email'  ),  array(  'field' => 'no_telepon',  'label' => 'No Telepon',  'rules' => 'numeric'  ),  array(  'field' => 'username',  'label' => 'Username',  'rules' => 'required|min_length[6]'  ),  array(  'field' => 'password',  'label' => 'Password',  'rules' => 'required|min_length[6]|matches[konfirmasi_password]'  ),  array(

  'field' => 'konfirmasi_password',  'label' => 'Konfirmasi Password',

Page 10: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 10/35

 

  'rules' => 'required'  ),  );  $this->form_validation->set_rules($rules);  if ($this->form_validation->run() == FALSE)  {

  $this->load->view('registrasi');  }  else  {  echo 'Data berhasil dimasukkan';  //kode insert ke database di model--> contoh: $this->registrasi_model->insert();  }  }

Kode di Controller sudah selesai, kini Anda tinggal buat daftar error dari validation di view,caranya yaitu dengan menambahkan kode di bawah sebelum tag form..

<h2>Registrasi</h2>

  <?php echo validation_errors(); ?>  

 <?php echo form_open('registrasi') ?> <table>......

Tutorial selesai. Kini Validasi Form Anda siap digunakan, untuk mencobanya silakankosongkan atau salahkan isi inputan Anda, kemudian submit! Jika data sudah benar, makamuncul tulisan Data sudah dimasukkan. Jika data masih salah, maka browser akanmenampilkan form kembali dan menampilkan error yang ada dalam kesalahan inputan.

Selain itu, Anda bisa membuat rules di dalam config Anda, caranya buatlah sebuah file bernama form_validation.php di dalam /system/application/config/ dengan isi sebuahvariable $config (HARUS $config) yg isinya adalah array rules yang sudah kita buat tadi.

form_validation.php

 <?php $config = array(  array(  'field' => 'nama_depan',  'label' => 'Nama Depan',  'rules' => 'required'  ),

  array(  'field' => 'alamat',  'label' => 'Alamat',  'rules' => 'required'  ), 

...  /* dan seterusnya sama seperti tadi */  );

Dan hapus kode $this->form_validation->set_rules($rules); di controller (jika memakaiconfig itu). Dengan demikian, code di Controller akan lebih sedikit dari sebelumnya.

Page 11: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 11/35

 

Multiple Input Form adalah suatu bentuk form di mana kita akan menginputkan banyak datake dalam database melalui form secara sekaligus. Jadi kita tidak menginputkan data satu

 persatu.

Form Input Mahasiswa

 NIM: 0700335

 Nama:Cecep Yus

Alamat:Cianjur 

Jika kita memakai cara yang di atas, maka kita harus menginputkan mahasiswa satu persatu.Bayangkan gimana kalo kita ingin menginputkan 50 data? Tentu kita harus mengisi formsebanyak 50 kali bukan?

Coba lihat form berikut ini:

Form Input Mahasiswa

 NIM Nama Alamat

0700335 Cecep Yus Cianjur 

0900634 Sabr ina Cianjur  

Coba Anda lihat, apa bedanya cara pertama dengan cara kedua? keliatan kan? Nah, jadi

 bedanya apabila kita memakai cara kedua, kita dapat menginput beberapa siswa sekaligus.Di sini kita akan membuat 3 bagian modul, yaitu:

1. Form untuk mengisi berapa data yang akan dimasukkan

2. Form untuk pengisian form multiple

3. Daftar data yang telah dimasukkan

Catatan:Diasumsikan base_url() untuk tutorial ini adalah http://localhost/webku

dan index.php telah dihilangkan..

tutorial untuk menghilangkan index.php ada di sini 

Pertama2 buat dulu database sebagai berikut:

CREATE TABLE IF NOT EXISTS mahasiswa (id int(5)  NOT  NULL  AUTO_INCREMENT,

  `nim`  varchar(20)  NOT  NULL,  `nama`  varchar(100)  NOT  NULL,  `alamat` text  NOT  NULL,  PRIMARY KEY (id)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Jangan lupa cek koneksi ke database apakah sudah benar atau belum..konfigurasi untuk koneksi database ada di /system/application/config/database.php .

Buatlah sebuah controller data_mahasiswa.php (atau Anda bisa melanjutkan tutorial dariTutorial Dasar Part I untuk membuat controller data_mahasiswa.php dan melanjutkannya).

Di controller tersebut, tambahkan function untuk membuat tampilan multiple input form:

Page 12: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 12/35

 

 <?phpclass Data_mahasiswa extends Controller { ... 

function add_multiple() {

  $this->load->view('add_multiple');  }}?> 

Setelah kamu bikin controller di atas, kamu tinggal bikin ‘view’ untuk tampilan formnya,dengan cara membuat file add_multiple.php di folder /system/application/viewIsikan code HTML berikut di file tersebut:

<h2>Multiple Form Input Mahasiswa</h2><form action="" method="post">

Banyak mahasiswa yang ingin dimasukkan:<input name="banyak_data" size="3" /> orang<br /><input type="submit" value="Lanjut" />

</form>

Maka hasilnya seperti berikut:

Multiple Form Input Mahasiswa

Top of Form

Banyak mahasiswa yang ingin dimasukkan:

orangBottom of Form

Kemudian tambahkan code berikut untuk function add_multiple() file controller 

data_mahasiswa.php tadi, menjadi seperti berikut: <?phpclass Data_mahasiswa extends Controller { ... 

//ADD MULTIPLE   function add_multiple() {  if($_POST== NULL) {  $this->load->view('add_multiple');  }else{

redirect('data_mahasiswa/add_multiple_post/' .$_POST['banyak_data']);

  }  }}?> 

Maksud dari function di atas adalah meload view add_multiple.php yang berisi halamaninput banyak data mahasiswa yang dimasukkan.. kemudian ketika disubmit (POST) makaakan di-redirect/alihkan ke function add_multiple_post()dengan parameter banyaknyadata yg dimasukkan ($_POST['banyak_data']) yang akan kita buat nanti… yaitu halamanmunculnya multiple form.

Tambahkan function berikut di bawah function add_multiple():

class Data_mahasiswa extends Controller { ...

Page 13: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 13/35

 

 function add_multiple_post($banyak_data=0) {

  $data['banyak_data'] = $banyak_data;  $this->load->view('add_multiple_form',$data);  }}

Kemudian, buatlah tampilan multiple form input seperti gambar table di atas.Berikut ini adalah kode HTML dari add_multiple_form.php , simpan di/system/application/views:

<h2>Multiple Form Input Mahasiswa</h2><form action="" method="post">

<table><tr>

<td>NIM</td><td>Nama</td><td>Alamat</td>

</tr><?php for($i=1;$i<=$banyak_data;$i++): ?>

<tr><td><input name="data[<?php echo $i ?>][nim]" /></td><td><input name="data[<?php echo $i ?>][nama]" /></td><td><input name="data[<?php echo $i ?>][alamat]" /></td>

</tr><?php endfor ?>

</table><input type="submit" value="simpan" />

</form>

http://localhost/webku/data_mahasiswa/add_multiple_post/3

Multiple Form Input Mahasiswa

Top of Form No NIM Nama Alamat

1

2

3

Bottom of Form

http://localhost/webku/data_mahasiswa/add_multiple_post/5

Multiple Form Input MahasiswaTop of Form

 No NIM Nama Alamat

1

2

3

4

Page 14: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 14/35

 

5

Bottom of Form

Kemudian, tambahkan ‘if’ dan ‘foreach’ di function add_multiple_post tadi, fungsinyaadalah untuk mengetahui apakah form udah disubmit atau belum… jadi kode PHP

lengkapnya sbb:

 <?phpclass Data_mahasiswa extends Controller { ... 

function add_multiple_post($banyak_data=0) {  if($_POST== NULL) {  $data['banyak_data'] = $banyak_data;  $this->load->view('add_multiple_form',$data);  }else {  foreach($_POST['data'] as $d){

  $this->db->insert('mahasiswa',$d);  }redirect('data_mahasiswa/lihat_data');

  }  }}?> 

OK, aku jelasin ya…untuk function add_multiple_post():

1. Data dicek dulu apakah sudah disubmit ato belum ($_POST==NULL), kalo belum,load view add_multiple_form.php dengan variable $banyak_data yang diambil dari

 parameter berdasarkan data yg dimasukkan sebelumnya (di functionadd_multiple(), yaitu $_POST['banyak_data'])

2. Kalo datanya udah disubmit, maka lakukan insert data yang berulang sebanyak elemen dari $_POST['data'] (berdasarkan $banyak_data) ke dalam table ‘mahasiswa’dengan data dari $_POST['data'] (input-an dari multiple form)

3. Kemudian redirect/alihkan ke function lihat_data untuk menampilkan seluruh datamahasiswa yang akan kita buat setelah ini.

 Nah, sekarang kita tinggal bikin daftar data ‘mahasiswa’ yang sudah dimasukkan.. Caranya, buat file list_mahasiswa.php di /system/application/views/ dengan isi sebagai berikut:

list_mahasiswa.php:<h2>Daftar Mahasiswa</h2> <table>

<tr><th>No</th><th>NIM</th><th>Nama</th><th>Alamat</th>

</tr><?php $i = 0 ?><?php foreach($mahasiswa as $m): ?><tr>

<td><?php echo $i++ ?></td><td><?php echo $m->nim ?></td>

Page 15: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 15/35

 

<td><?php echo $m->nama ?></td><td><?php echo $m->alamat ?></td>

</tr><?php endforeach ?>

</table><?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>

Lalu buat function-nya di Controller data_mahasiswa.php :

 <?phpclass Data_mahasiswa extends Controller { ... 

function lihat_data(){  $data['mahasiswa'] = $this->db->get('mahasiswa')->result();  $this->load->view('list_mahasiswa',$data);  }}?> 

Selesai.

Berikut ini adalah source code lengkapnya:

/system/application/controllers/data_mahasiswa.php

class Data_mahasiswa extends Controller {  //...  //... function2 yg ada di tutorial sebelumnya  //... 

//ADD MULTIPLE   function add_multiple() {  if($_POST== NULL) {

  $this->load->view('add_multiple');  }else {

redirect('data_mahasiswa/add_multiple_post/' .$_POST['banyak_data']);  }  }  function add_multiple_post($banyak_data=0) {  if($_POST== NULL) {  $data['banyak_data'] = $banyak_data;  $this->load->view('add_multiple_form',$data);  }else {  foreach($_POST['data'] as $d){  $this->db->insert('mahasiswa',$d);

  }redirect('data_mahasiswa/lihat_data');

  }  }  function lihat_data(){  $data['mahasiswa'] = $this->db->get('mahasiswa')->result();  $this->load->view('list_mahasiswa',$data);  }}

/system/application/views/add_multiple.php

<h2>Multiple Form Input Mahasiswa</h2><form action="" method="post">

Banyak mahasiswa yang ingin dimasukkan:<input name="banyak_data" size="3" /> orang<br /><input type="submit" value="Lanjut" />

Page 16: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 16/35

 

</form>

/system/application/views/add_multiple_form.php

<h2>Multiple Form Input Mahasiswa</h2><form action="" method="post">

<table>

<tr><td>No</td><td>NIM</td><td>Nama</td><td>Alamat</td>

</tr><?php for($i=1;$i<=$banyak_data;$i++): ?><tr>

<td><?php echo $i ?></td><td><input name="data[<?php echo $i ?>][nim]" /></td><td><input name="data[<?php echo $i ?>][nama]" /></td><td><input name="data[<?php echo $i ?>][alamat]" /></td>

</tr>

<?php endfor ?></table><input type="submit" value="simpan" />

</form>

/system/application/views/list_mahasiswa.php

<h2>Daftar Mahasiswa</h2> <table>

<tr><th>No</th><th>NIM</th><th>Nama</th><th>Alamat</th>

</tr><?php $i = 0 ?><?php foreach($mahasiswa as $m): ?><tr>

<td><?php echo $i++ ?></td><td><?php echo $m->nim ?></td><td><?php echo $m->nama ?></td><td><?php echo $m->alamat ?></td>

</tr><?php endforeach ?>

</table><?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>

Untuk contoh file nya klik link Download yang ada di bawah ini..

Page Template adalah sebuah pola layout pada sebuah halaman web di mana kita akan selalumemakai pola tersebut sesuai kebutuhan kita untuk meload halaman lengkap beserta header,content, dan footernya.. dengan menggunakan page template, kita tidak harus meload header dan footer di setiap fungsi pada controller di CodeIgniter.

Contoh misalnya ada kasus seperti ini:Pada sebuah halaman web, ketika diload harus selalu load header, sidebar, content, footer,dsb.. maka secara normal di program akan berbentuk seperti ini:

 <?php

class Home extends Controller {  function index() {  $data['title'] = 'Webku';

Page 17: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 17/35

 

  $this->load->view('header');  $this->load->view('topmenu');  $this->load->view('home_view', $data);  $this->load->view('footer');  }}

?> Di dalam function index, kode tersebut akan meload view header.php, sidebar.php,home_view.php, dan footer.php. Cara ini sebenarnya kurang efektif, walaupun yangdihasilkan adalah sama, yaitu nge-load lengkap sebuah halaman web (dari tag [html] sampai[/html]). Kenapa kurang efektif? karena di setiap function kita harus meload lagi semuaelemen di atas… Ini baru satu function, bagaimana jika di dalam satu controller terdapat 50function? tentu hal ini dapat merepotkan, dan sangat tidak efektif karena membuat redudansikode.

Menggunakan Page Template Helper

Untuk mempermudah penggunaan code, kita akan membuat sebuah helper baru yang akankita namakan Page Template Helper (page_template_helper.php) yang akan kita gunakanuntuk merender layout yang sudah kita buat. Jadi layaknya seperti gabungan dari function$this->layout() dan $this->render() di Framework CakePHP.

OK, pertama-tama buatlah layout untuk template kita, dan simpan di folder /system/application/view/layout/ (seperti biasa, base_url() website kita adalah‘webku’) dengan nama default.php, kodenya adalah sebagai berikut:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"><html>

<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Webku <?php echo isset ($title)?" | ".$title:'' ?> </title>

</head><body>

<div id="header">   <?php $this->load->view('layout/element/header') ?> 

</div><div id="topmenu">

   <?php $this->load->view('layout/element/topmenu') ?> </div><div id="content">

   <?php $this->load->view($view) ?> </div><div id="footer">

   <?php $this->load->view('layout/element/footer') ?> </div>

</body></html>

Kode di atas adalah sebuah template default website kita, yang berarti setiap action/functionyang akan kita panggil akan selalu meload tag html di atas, mulai dari title, kemudian loadCSS atau JS misalnya, terus header-nya, topmenu, footer, dan sebagainya. Kita cukupmenambahkan elemen di file tersebut.

Contoh ini belum menggunakan CSS, pembahasan tentang CSS akan dijelaskan

pada tutorial selanjutnya

Setelah membuat file default.php, buatlah semua file ‘layout element’ (header, topmenu,dan footer) dan simpan di direktori /system/application/view/layout/element/ .Berikut adalah isi dari masing-masing elemen:

Page 18: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 18/35

 

Isi dari file-file di bawah ini hanya pemisalan/contoh

../view/layout/element/header.php

<img src="images/banner.jpg" /> Ini adalah HEADER

../view/layout/element/topmenu.php

<a href="#">MENU 1</a> | <a href="#">MENU 2</a> | <a href="#">MENU 3</a>

../view/layout/element/footer.php

Copyright &copy 2010 by Cheyuz

Jadi ketika file default.php dirender, maka element/header.php, element/topmenu.php, danelement/footer.php akan selalu diload.

 Nah, untuk pemanggil template tersebut dan yang akan digunakan di controller adalah PageTemplate Helper… jadi rencananya kode kita yang sebelumnya:

 <?php

class Home extends Controller {  function index() {  $data['title'] = 'Webku';  $this->load->view('header');  $this->load->view('topmenu');  $this->load->view('home_view', $data);  $this->load->view('footer');  }}?> 

menjadi seperti ini:

 <?php

class Home extends Controller {  function index() {  $data['title'] = 'Webku';

show('home_view',$data);  }}?> 

Singkatnya, kita tidak menggunakan function $this->load->view() lagi di Controller,tetapi kita menggunakan function show() yang berfungsi sama dan meload seluruh elemenyang kita tentukan.

Sekarang, kita buat sebuah helper page_template_helper.php di

/system/application/helper/ dengan kode seperti berikut: <?phpif ( ! function_exists('element')) {  function show($view, $data=array(), $template='default') {  $ci = &get_instance();  $data['view'] = $view;  $data = $ci->load->view('layout/'.$template, $data);  }} /* End of file page_template_helper.php */ /* Location: ./system/helpers/page_template_helper.php */ 

OK, akan Cheyuz jelaskan..Di kode itu terlihat bahwa $view yang ada di parameter 1 di function show() ini akan

Page 19: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 19/35

 

dimasukkan ke dalam variable array $data, yang kemudian akan diload view yang bernama$template (diubah sesuai nama layout, defaultnya adalah default.php) dengan $data tetap dari

 parameter ke-2.. dan parameter ke-3 ($default) adalah nama file template yang kita buat…secara default file template yang akan diload adalah ../layout/default.php.

 Nah, di controller Home tadi, kita dapat mengubahnya menjadi seperti ini:

 <?phpclass Home extends Controller {  function index() {  $data['title'] = 'Webku';

show('home_view',$data);  }  function about(){  $data['title'] = 'About';

show('home_view',$data);  }  function other(){  $data['title'] = 'Other (layout tanpa topmenu)';

show('home_view',$data, 'other');  }}?> 

Ada function other(), yang akan memanggil halaman dengan template yang berbeda,yaitu menghilangkan topmenu.. karena kita sudah membuat helpernya, maka untuk membuattemplate baru untuk function other() tersebut, kita tinggal membuat file template bernamaother.php di /system/application/view/layout/ dengan isi file seperti berikut:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"><html>

<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Webku <?php echo isset ($title)?" | ".$title:'' ?> </title></head><body>

<div id="header">   <?php $this->load->view('layout/header') ?> 

</div> 

 <?php // menghilangkan topmenu untuk action tertentu ?>  

<div id="content">   <?php $this->load->view($view) ?> 

</div><div id="footer">

   <?php $this->load->view('layout/footer') ?> </div>

</body></html>

Setelah semua langkah selesai, selanjutnya adalah meload helper tersebut. Karena kita akanselalu meload helper ini, maka kita atur konfigurasi autoloadnya di file/system/application/config/autoload.php

Tambahkan ‘page_template’ pada bagian kode berikut:

..$autoload['helper'] = array('page_template');..

Instalasi

Page 20: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 20/35

 

OK, kita mulai aja… kita di sini memakai XAMPP pertama-tama, extract file codeigniter.rar ke C:\xampp\htdocs, file bisa didownload di sini. Misalnya kita namakan nama folder root(nama situs) kita adalah webku.

Konfigurasi

Kemudian, hal yang pertama harus dilakukan adalah konfigurasi awal, yaitu base_url, base_url adalah nama root situs kita… caranya edit file/webku/system/application/config/config.php, ubah $config['base_url'] =“http://example.com/“ menjadi:

$config['base_url']  = "http://localhost/webku/";

kemudian hilangkan index.php di $config['index_page'] sehingga menjadi:

$config['index_page'] = "";

Langkah kedua adalah konfigurasi routes, yaitu controller default apakah yang ingindiload…? jadi di sini adalah konfigurasi untuk controller ‘home’, sehingga ketika kitamengetikkan url http://localhost/webku maka yang dipanggil adalah controller yang sudah

dikonfigurasi di routes ini.. Cara konfigurasinya yaitu dengan mengedit file/webku/system/application/config/routes.php, dan di bagian $route['default_controller']isi dengan ‘home’ sehingga seperti ini:

$route['default_controller'] = "home";

kita akan membuat supaya ketika kita menuju url http://localhost/webku maka controller yang akan dijalankan adalah controller home .

Kemudian setelah itu adalah konfigurasi Databasenya… ada di file/webku/system/application/config/database.php,Di situ terlihat konfigurasi-konfigurasiseperti host, username, password, nama db, dsb.. silakan diisi seperti berikut:

$db['default']['hostname'] = "localhost";

$db['default']['username'] = "root";$db['default']['password'] = "";$db['default']['database'] = "blog"; //nama database$db['default']['dbdriver'] = "mysql";$db['default']['dbprefix'] = "";$db['default']['pconnect'] = TRUE;$db['default']['db_debug'] = TRUE;$db['default']['cache_on'] = FALSE;$db['default']['cachedir'] = "";$db['default']['char_set'] = "utf8";$db['default']['dbcollat'] = "utf8_general_ci";

Kemudian konfigurasi selanjutnya adalah konfigurasi untuk autoload, jadi ketika situsdibuka, library/helper/model/dsb apakah yang akan selalu diload.. file ada di/webku/system/application/config/autoload.php, tambahkan database di bagian$autoload['libraries'] menjadi seperti ini:

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

Kemudian yang terakhir adalah penambahan .htaccess supaya kita tidak perlu mengetikkanindex.php di URL kita, cara untuk menghilangkan index.php (menggunakan .htaccess) adadi sini.

Contoh Aplikasi Database Sederhana

Buatlah sebuah database bernama blog, kemudian copy SQL berikut:

CREATE TABLE IF  NOT EXISTS `buku_tamu` (

 `id` INT(11)  NOT  NULL  AUTO_INCREMENT, `nama`  VARCHAR (100)  NOT  NULL, `email`  VARCHAR (20)  NOT  NULL,

Page 21: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 21/35

 

 `situs`  VARCHAR (100)  NOT  NULL, `komentar` text NOT  NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; INSERT INTO `buku_tamu` (`id`, `nama`, `email`, `situs`, `komentar`)  VALUES

(1, 'Cecep Yusuf', '[email protected]', 'http://www.cheyuz.com', 'Iniadalah komentar pertama'),(2, 'Deddy Mizwar', '[email protected]', 'http://www.facebook.com', 'Iniadalah komentar kedua');

Kita buat sebuah contoh di mana kita akan menampilkan isi dari database di atas..

Pertama-tama, buatlah model terlebih dahulu di /webku/system/application/model/ dengannama file buku_tamu.php yang berisi code sebagai berikut:

 <?phpclass Buku_tamu extends Model{  function selectAll()  {

  return $this->db->get('buku_tamu')->result();  }}?> 

Di dalam folder /webku/system/application/controller/ bikin sebuah file bernamahome.php untuk membuat class controller yang bernama Home… isi dari home.php adalah:

 <?phpclass Home extends Controller{  function __construct()  {

parent::Controller();  $this->load->model('buku_tamu');

  }  function index()  {  $data['title'] = 'Ini adalah aplikasi sederhana'; 

//memanggil function selectAll di model buku_tamu, dimasukkan ke$data['buku_tamu']  $data['buku_tamu'] = $this->buku_tamu->selectAll(); 

//meload view bernama home_view.php dengan data variable adalah $data  $this->load->view('home_view', $data);  }}

?> ; Nah, kemudian kita buat file home_view.php di folder /webku/system/application/view/dengan isi sebagai berikut:

 <h2> <?php echo $title ?> </h2> <table border="1" cellpadding="5" cellspacing="0">

<tr><td>No</td><td>Nama</td><td>Email</td><td>Situs</td>

<td>Komentar</td></tr>

   <?php $i = 0 ?> 

Page 22: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 22/35

 

   <?php foreach ($buku_tamu as $bt): ?> <tr>

<td> <?php echo $i++ ?> </td><td> <?php echo $bt->nama ?> </td><td> <?php echo $bt->email ?> </td><td> <?php echo $bt->situs ?> </td>

<td> <?php echo $bt->komentar ?> </td></tr>

   <?php endforeach ?> </table>

Silakan dibuka di browser url berikut: http://localhost/webku

Hasilnya adalah sebagai berikut:

Ini adalah aplikasi sederhana

N

oNama Email Situs Komentar

1Cecep

 Yusuf 

[email protected]

o.id

http://www.cheyuz.

com

Ini adalah komentar

pertama

2Deddy

Mizwar

deddy@mizwar.

com

http://www.cheyuz.

com

Ini adalah komentar

kedua

untuk membuat aplikasi yang kompleks, sebenarnya kita hanya mengelola dan mengolahdatabase, meliputi membuat database (Create), membaca (Read), mengubah (Update),menghapus (Delete), ato disingkat menjadi CRUD.

Adapun di sini kita akan belajar membuat model untuk data yang akan diolah, view untuk membuat interface, dan controller untuk mengolah model dan ngeload view..

OK, pertama-tama, kita buat sebuah database bernama tutorial_ci, dan buatlah sebuah table

 bernama mahasiswa (kenapa selalu ‘mahasiswa’? ga punya contoh lain ), isinya ada id,nim, nama, alamat.. OK segitu saja.. kamu tinggal copy SQL berikut:

CREATE TABLE IF  NOT EXISTS `mahasiswa` (  `id` INT(5)  NOT  NULL  AUTO_INCREMENT,

  `nim`  VARCHAR (20)  NOT  NULL,  `nama`  VARCHAR (100)  NOT  NULL,  `alamat` text NOT  NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Jadi kita membuat tabel kosong bernama ‘mahasiswa’ dengan field seperti di atas…

Diharapkan kamu yang mengikuti tutorial ini udah pernah mengikuti tutorial

sebelumnya.. kenapa? karena konfigurasinya kita menggunakan konfigurasi di

tutorial dasar part I, bisa klik di sini 

Seperti pada tutorial dasar part I, webroot kita ini diasumsikan bernama

“webku”, dan konfigurasinya diasumsikan sama, oleh karena itu silahkan bacatutorial dasar part I terlebih dahulu.

Page 23: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 23/35

 

1. Menampilkan semua data

OK, langkah pertama adalah membuat sebuah model….

Buatlah sebuah file mahasiswa_model.phpdi /system/application/models dengan isiadalah barisan kode seperti berikut:

 <?php/*** @author Cecep Yusuf */  class Mahasiswa_model extends Model { }?> 

Sejauh ini, kita sudah membuat sebuah model untuk mahasiswa, yang nantinya mempunyai banyak fungsi untuk mengolah table ‘mahasiswa’…

Di bawah ini, kita akan menambahkan function selectAll(), yang mana berfungsi untuk menyeleksi semua field di table mahasiswa (select * from mahasiswa), jadi code tadisetelah ditambahkan menjadi seperti berikut:

 <?php/*** @author Cecep Yusuf */  class Mahasiswa_model extends Model {  function selectAll(){  return $this->db->get('mahasiswa')->result();  } }

?> 

 Nah, sejauh ini kita sudah bikin function selectAll() yang berfungsi untuk memilih semuafield dari table mahasiswa.

Setelah itu, model akan diolah oleh controller, jadi sekarang kita buat sebuah controller yang berfungsi untuk memanipulasi objek mahasiswa_model…

OK, buatlah sebuah controller bernama data_mahasiswa.php di/system/application/controllers dengan isi file sebagai berikut:

 <?php/*** @author Cecep Yusuf 

*/  class Data_mahasiswa extends Controller {  function __construct() {

parent::Controller();  }}?> 

function __construct() adalah sebagai konstruktor… berbagai perintah yang ada di dalamfungsi ini akan selalu dipanggil di saat objek Data_mahasiswa dibuat… jadi berbagai fungsiuntuk meload library, model, helper, dan sebagainya, kita tinggal masukkan di function inisupaya tidak diketik ulang di setiap fungsi….

Page 24: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 24/35

 

Karena kita akan meload model mahasiswa_model setiap kali dibuat controller, maka kitaload modelnya di bagian __construct() di dalam controller Data_mahasiswa. Jadi kodelengkapnya seperti berikut:

 <?php/**

* @author Cecep Yusuf */  class Data_mahasiswa extends Controller {  function __construct() {

parent::Controller();  $this->load->model('mahasiswa_model');  } }?> 

Kemudian, kita buat function index() sebagai penampil semua data yang ada di table

mahasiswa, jadi URLnya akan berbentuk http://localhost/webku/data_mahasiswa/index ATAUhttp://localhost/webku/data_mahasiswa (Index tidak perlu dituliskan)

 <?php/*** @author Cecep Yusuf */ class Data_mahasiswa extends Controller {  function __construct() {

parent::Controller();  $this->load->model('mahasiswa_model');  }  function index(){  $data['mahasiswa'] = $this->mahasiswa_model->selectAll();  $this->load->view('data_mahasiswa_view', $data);  }}?> 

Di dalam function index() di atas, kita lihat ada script seperti ini:$data['mahasiswa'] = $this->mahasiswa_model->selectAll();

kode tersebut berarti data hasil keluaran dari function selectAll() di modelmahasiswa_model berupa array dan disimpan di dalam array $data['mahasiswa'] , yangnantinya data tersebut bisa diakses di view..

Kemudian kita lihat lagi, ada script berikut:$this->load->view('data_mahasiswa_view');function view() dalam objek ‘load’ adalah untuk meload view yang sudah kita buat di/system/application/views, dengan mengeset variable hasil ekstrak dari variable $data,sehingga nanti bisa diakses dari view..

OK, kita buat view-nya dengan nama file data_mahasiswa_view.php di/system/application/viewsdengan isi sebagai berikut ini:

<h1>Data Mahasiswa</h1><table>

<thead><tr>

<th>No</th>

<th>NIM</th><th>Nama</th><th>Alamat</th>

Page 25: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 25/35

 

<th>Aksi</th></tr>

</thead><tbody>

   <?php $i = 1 ?>    <?php foreach($mahasiswa as $m): ?> 

<tr><td> <?php echo $i++ ?> </td><td> <?php echo $m->nim ?> </td><td> <?php echo $m->nama ?> </td><td> <?php echo $m->alamat ?> </td><td></td>

</tr>   <?php endforeach ?> 

</tbody></table>

Sekarang, coba buka alamat di browser: http://localhost/webku/data_mahasiswa , keluar apa?table kan? dengan data KOSONG….

OK, sekarang kita lanjut ke sesi yg kedua.. yaitu MENAMBAHKAN DATA…

2. Menambahkan data

Kita akan membuat tampilan seperti berikut:

Data Mahasiswa

N

oNIM Nama Alamat Aksi

1

07003

35

Cecep

 

 Yusuf 

Cipanas,

Cianjur

edit | delete |

detail

208001

13

Fitri

 Yuniar Jakarta

edit | delete |

detail

Tambah data 

Silakan buat sebuah anchor() (a) di bawah table di dalam file data_mahasiswa_view.php ..Jangan lupa sebelumnya load dulu url_helper di controller dengan cara menambahkan code

 berikut:

 <?php 

...  $this->load->helper('url');

...?> 

anchor() adalah function helper yang udah tersedia di CI, untuk menggantikan

tag ‘a’

Buatlah sebuah anchor sebagai link ke function add() di Controller (fungsi ini belum dibuat),caranya dengan menambahkan script berikut:

 <?php echo anchor('data_mahasiswa/add', 'Tambah Data') ?> 

 jadi kode lengkapnya di data_mahasiswa_view.phpadalah sebagai berikut:

<h1>Data Mahasiswa</h1><table>

<thead>

Page 26: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 26/35

 

<tr><th>No</th><th>NIM</th><th>Nama</th><th>Alamat</th><th>Aksi</th>

</tr></thead><tbody>

   <?php $i = 1 ?>    <?php foreach($mahasiswa as $m): ?> 

<tr><td> <?php echo $i++ ?> </td><td> <?php echo $m->nim ?> </td><td> <?php echo $m->nama ?> </td><td> <?php echo $m->alamat ?> </td><td></td>

</tr>   <?php endforeach ?> 

</tbody></table> <?php echo anchor('data_mahasiswa/add', 'Tambah Data') ?> 

Langkah selanjutnya adalah membuat function add() di controller data_mahasiswa.php ,tambahkan function ini:

...  function add(){  $this->load->view('add_view');  }...

Di sana terdapat code untuk meload file view yang bernama add_view.php…

Silakan buat view add_view.php di folder /system/application/views dengan isi sebagai berikut:

<h1>Tambah data</h1><form action="" method="post">  <table>  <tr>  <th>NIM</th>  <td><input name="nim" /></td>  </tr>  <tr>  <th>Nama</th>  <td><input name="nama" /></td>  </tr>  <tr>  <th>Alamat</th>  <td><textarea name="alamat"></textarea></td>  </tr>  <tr>  <th></th>  <td><input type="submit" value="tambah" /></td>  </tr>  </table></form>

Perlu diketahui bahwa cara di atas belum menggunakan library ‘form’ bawaan

dari CI.. kita memakai cara manual dulu, sebelum nanti kita bahas penggunaan

helper di CI di tutorial selanjutnya…

Page 27: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 27/35

 

Method yang digunakan yaitu POST, yang akan menghasilkan sebuah variable array$_POST…

Sebelumnya, kita tambahkan function insert() di model mahasiswa_model.php seperti berikut:

...  function insert($set){  $this->db->insert('mahasiswa', $set);  }...

function insert tersebut sudah ada di library database CI, jadi kita tidak usah membuat query‘insert into….’ lagi…

sekarang, di Controller data_mahasiswa.php kita ubah function add() menjadi seperti berikut:

...  function add() {  if($_POST== NULL) {  $this->load->view('add_view');  }else {  $this->mahasiswa_model->insert($_POST);

redirect('data_mahasiswa/index');  }  }...

Kita jelasin, di sana ada fungsi If untuk mengecek apakah data dari $_POST sudah terSET atau belum… kalo kita udah mengklik submit, berarti kita sudah mengeset variable$_POST… jika belum (=NULL), maka program hanya meload view saja….

di sana ada function redirect(), yaitu function bawaan CI, yang berfungsi untuk me-

redirect halaman (mengalihkan), sehingga ketika kita menambahkan data, maka akandialihkan lagi ke index…

Sejauh ini, kamu berhasil membuat aplikasi CI untuk menambahkan data ke database danmenampilkannya….

sekarang mari kita buat fungsi/aksi lainnya, yaitu update dan delete…

Kita review hasil kerjaan dari tutorial kemarin…

<h1>Data Mahasiswa</h1><table>

<thead><tr>

<th>No</th><th>NIM</th><th>Nama</th><th>Alamat</th><th>Aksi</th>

</tr></thead><tbody>

   <?php $i = 1 ?>    <?php foreach($mahasiswa as $m): ?> 

<tr><td> <?php echo $i++ ?> </td><td> <?php echo $m->nim ?> </td>

<td> <?php echo $m->nama ?> </td><td> <?php echo $m->alamat ?> </td><td></td>

Page 28: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 28/35

 

</tr>   <?php endforeach ?> 

</tbody></table>

Sebelumnya kita tambahkan 2 buah anchor (link) untuk membuat hyperlink menuju ke

masing2 fungsi tersebut,.. yaitu anchor untuk edit dan delete.. (catatan: edit = update).Buatlah dua buah anchor dengan bentuk kode seperti ini di kolom paling kanan tabel:

 <?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') . ' | ' .anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?> 

 jadi bentuknya seperti ini:

<h1>Data Mahasiswa</h1><table>

<thead><tr>

<th>No</th><th>NIM</th><th>Nama</th>

<th>Alamat</th><th>Aksi</th>

</tr></thead><tbody>

   <?php $i = 1 ?>    <?php foreach($mahasiswa as $m): ?> 

<tr><td> <?php echo $i++ ?> </td><td> <?php echo $m->nim ?> </td><td> <?php echo $m->nama ?> </td><td> <?php echo $m->alamat ?> </td><td> <?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') .

' | ' . anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?> </td></tr>

   <?php endforeach ?> </tbody>

</table>

 previewnya:

Data Mahasiswa

N

oNIM Nama Alamat Aksi

107003

35

Cecep

 Yusuf 

Cipanas,

Cianjur

edit |

delete

208001

13

Fitri

 Yuniar Jakarta

edit |

delete

Tambah data 

1. Menghapus Data

Kemudian setelah itu, kita buat sebuah function di dalam model mahasiswa_model.php difolder /system/application/models :

Page 29: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 29/35

 

 <?php...  function delete($id){  $this->db->delete('mahasiswa', array('id'=>$id));  }...

?> Kemudian, di controller data_mahasiswa.php di /system/application/controllerstambahkan function berikut:

...  function delete($id){  $this->mahasiswa_model->delete($id);

redirect('data_mahasiswa');  }...

fungsi di atas memanggil fungsi dari objek Mahasiswa_model yaitu delete, yang akanmenghapus data dari table mahasiswa yang id nya adalah parameter dari function tersebut

($id)… Kemudian setelah itu baru diredirect/dialihkan ke tampilan index dari controller data_mahasiswa.

2. Mengubah Data

 Nah, untuk mengubah data.. kita harus tahu fungsi untuk mengubah database dari ActiveRecord yang disediakan oleh CI.. yaitu $this->db->update($nama_table, $data)…

Sekarang, kita tambahkan function update() dan select($id) untuk menyeleksi SATUdata yang akan dipilih berdasarkan id-nya… dibuat di model mahasiswa.php di/system/application/models ,,,

...

  function update($id){  $this->db->where('id',$id)->update('mahasiswa', $_POST);  }  function select($id){  return $this->db->get_where('mahasiswa', array('id'=>$id))->row();  }...

Di situ ada fungsi update(), yang equivalen dengan query update from mahasiswa where

id=$id set $_POST. Dan fungsi select yang nantinya akan kita gunakan ketika nilai daridata akan dimasukkan ke dalam sebuah form (untuk diedit) sehingga kita menggunakanrow() yang berfungsi meretrieve data menjadi objek, tetapi hanya SATU BARIS DATA...

(segitunya sampe dipertebel hehe )

Setelah kita membuat modelnya… kemudian kita tambahkan function edit() di Controller data_mahasiswa.php di /system/application/controller/:

...  function edit($id){  $data['m'] = $this->mahasiswa_model->select($id);  $this->load->view('edit_view',$data);  }...

Di situ kita buat sebuah fungsi edit di controller data_mahasiswa.php dengan parameter $id.. karena kita akan mengubah data pada setiap data yang ada dengan mengambil id-nya…

dan dipanggillah fungsi update() dari model mahasiswa… Tetapi sebelumnya kita harus

Page 30: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 30/35

 

ngambil sebuah data mahasiswa tertentu berdasarkan $id yang ada untuk dimasukkan kedalam form,, sehingga nantinya bisa diubah… makanya kita membuat fungsi select()

Ini adalah view yang harus ada di /system/application/viewsdengan nama fileedit_view.php (yang udah kita masukkan ke dalam fungsi $this->load->view()dicontroller.

Ini adalah isi dari view-nya:

<h1>Ubah data</h1><form action="" method="post">

<table><tr>

<th>NIM</th><td><input name="nim" value=" <?php echo $m->nim ?> " /></td>

</tr><tr>

<th>Nama</th><td><input name="nama" value=" <?php echo $m->nama ?> " /></td>

</tr>

<tr><th>Alamat</th><td><textarea name="alamat"> <?php echo $m->alamat ?

> </textarea></td></tr><tr>

<th></th><td><input type="submit" value="ubah" /></td>

</tr></table>

</form>

Jadi, ketika view tersebut diload, maka form akan langsung terisi dengan data yang kita

 panggil dengan $id yang ada di URL… (yang merupakan parameter)Kemudian, di controller kita tambahkan code berikut:

...  function edit($id) {  if($_POST== NULL) {  $data['m'] = $this->mahasiswa_model->select($id);  $this->load->view('edit_view',$data);  }else {  $this->mahasiswa_model->update($id);

redirect('data_mahasiswa');  }  }

...

Kita lihat, ada fungsi if else… buat apa tuh??itu buat ngecek apakah data udah dikirim atau belum (NULL)? Nah, klo udah dikirim berarti

 bakal diupdate… kalo belum maka program akan mengambil data (select) dan dimasukkan kedalam form…

Kemudian terdapat fungsi redirect (sama seperti add), ketika data sudah diubah, makahalaman langsung dialihkan ke dalam action yang ada di prameter redirect tersebut….

 Nah, sejauh ini kita sudah membuat aplikasi CRUD lengkap… Create, Read, Update, danDelete….

Penamaan Class

Page 31: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 31/35

 

SALAH:

class superclass

BENAR:

class Super_classclass SuperClass

CONTOH:

class Super_class { 

function __construct(){

 }

}class SuperClass { 

function __construct(){

 }

}

Penamaan Function

SALAH:

function fileproperties() // tidak deskriptif, membutuhkanunderscorefunction fileProperties() // tidak deskriptif dan menggunakanCamelCasefunction getfileproperties() // Lebih baik! Tetapi masihmenggunakan underscore

function getFileProperties() // menggunakan CamelCasefunction get_the_file_properties_from_the_file() // Terlalu banyakkata (njelimet)

BENAR:

function get_file_properties() // Deskriptif, ada pemisahan denganunderscore, dan huruf kecil semua

Penamaan Variable

SALAH:

$j = 'foo'; // satu huruf lebih baik digunakan untuk variableyang digunakan pada pengulangan$Str // ada huruf yang kapital, ini bukan objek!$bufferedText // menggunakan CamelCasing, dan dapat dipendekkantanpa menghilangkan maksud semantik$groupid // dua kata tapi tidak memakai underscore, tidakdeskriptif $name_of_last_city_used // terlalu njelimet lagi ???

BENAR:

for ($j = 0; $j < 10; $j++)$str$buffer$group_id$last_city

Page 32: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 32/35

 

Constants

SALAH:

myConstant // tidak ada underscore dan tidak full kapitalN // Jangan ada constant yang menggunakan satu karakter S_C_VER // tidak deskriptif 

BENAR:

MY_CONSTANTNEWLINESUPER_CLASS_VERSION

TRUE, FALSE, dan NULL

Harus menggunakan full karakter kapital (uppercase)

SALAH:

if ($foo == true)$bar = false;

function foo($bar = null)BENAR:

if ($foo == TRUE)$bar = FALSE;function foo($bar =  NULL)

Operator Logika

SALAH:

if ($foo || $bar)if ($foo AND $bar)  // OK tapi tidak direkomendasikan untuk IDE yang mengandung syntax highlighting if (!$foo)if (! is_array($foo))

BENAR:

if ($foo OR $bar)if ($foo && $bar) // recommended if ( ! $foo)if ( ! is_array($foo))

Whitespace

Jangan ada ‘spasi’ sebelum tag

SALAH:

 

 <?php// ...ada whitespace sebelum php dibuat

?> 

 — 

BENAR:

 <?php// ...Tidak ada whitespace sebelum php dibuat

?> 

 — 

Code Indenting

Page 33: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 33/35

 

Tabulasi pada penulisan kode program

KURANG BAIK:

function foo($bar) {// ...

}

 foreach ($arr as $key => $val) {

// ...} if ($foo == $bar) {

// ...} else {

// ...} for ($i = 0; $i < 10; $i++)

{

for ($j = 0; $j < 10; $j++){// ...}

}

BAIK:

function foo($bar){

// ...} foreach ($arr as $key => $val)

{// ...

} if ($foo == $bar){

// ...}else{

// ...} 

for ($i = 0; $i < 10; $i++){

for ($j = 0; $j < 10; $j++){

// ...}

}

Bracket dan Parenthetic Spacing

SALAH:

$arr< $foo > = 'foo'; //ada spasi di dalam bracket

BENAR:

$arr<$foo> = 'foo'; // tidak ada spasi di dalam bracket

Page 34: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 34/35

 

SALAH:

function foo ( $bar ){ }

BENAR:function foo($bar) // tidak ada spasi di dalam parameter { }

SALAH:

foreach( $query->result() as $row )

BENAR:

foreach ($query->result() as $row)

Private dan Public Method

convert_text() // public method _convert_text() // private method 

Short Open Tags

SALAH:

 <? echo $foo; ?>  

 <?=$foo?> 

BENAR:

 <?php echo $foo; ?> 

Satu Statemen pada Satu Baris

SALAH:

$foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);

BENAR:

$foo = 'this';$bar = 'that';$bat = str_replace($foo, $bar, $bag);

Strings

SALAH:

"My String" // tidak ada variable yang diparsing, lebih baik satu tanda kutip"My string $foo" // membutuhkan kurung kurawal'SELECT foo FROM bar WHERE baz = \'bag\'' // jelek

CORRECT:

'My String'"My string {$foo}""SELECT foo FROM bar WHERE baz = 'bag'"

Query SQL

SALAH:

$query = mysql_query("select foo, bar, baz, foofoo, foobar as raboof,foobaz from exp_pre_email_addresses where foo != 'oof' and baz != 'zab'order by foobaz limit 5, 100"); //susah dibaca

Page 35: Tutorial 1 CI

5/12/2018 Tutorial 1 CI - slidepdf.com

http://slidepdf.com/reader/full/tutorial-1-ci 35/35

 

BENAR:

$query = mysql_query("SELECT foo, bar, baz, foofoo, foobar AS raboof,foobaz

FROM exp_pre_email_addressesWHERE foo != 'oof'AND baz != 'zab'ORDER BY foobazLIMIT 5, 100"); //lebih mudah dibaca