Diktat Codeigniter

  • Uploaded by: Garry
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Diktat Codeigniter as PDF for free.

More details

  • Words: 2,623
  • Pages: 22
Catatan CodeIgniter by Garry Bernardy, employer #2 Computesta Corp

Pendahuluan (Read Me First) Catatan ini merupakan suatu rangkuman atau handbook sederhana mengenai CodeIgniter. Coding-coding yang disajikan ini tidak bisa kamu langsung copy paste mentah-mentah. Soalnya hasilnya bakal gak bagus (tampilan di browser pasti jelek~). Soalnya coding-coding ini lebih ditekankan supaya pembaca paham cara pakai CodeIgniter. Disini hanya memaparkan fungsi yang umum digunakan. Untuk kumpulan fungsifungsi yang lengkap dapat melihat documentation resmi CodeIgniter(ada dalam paket frameworknya).

Perubahan Struktur Sesuai saran pengguna CodeIgniter, kebanyakan menyarankan untuk mengubah struktur file. Oleh karenanya, saya juga ikut2an ubah struktur. Ok, struktur awal CodeIgniter seperti ini FolderProject -System Application config controllers errors helpers hooks viewers models dll cache codeigniter database fonts helpers dll -index.php Akan saya ubah sedikit dengan perubahan FolderProject -System cache codeigniter database

fonts helpers dll -Application config controllers errors helpers hooks viewers models dll -Asset img css script -index.php Kita akan lebih banyak berhubungan dengan folder Application.

Beberapa TIPS Sebelum Mulai Supaya kita dapat menulis saja atau maka sangat disarankan untuk mengubah $config['rewrite_short_tags'] = TRUE; di file /application/config/config.php Nantinya kita mungkin akan ketemu fungsi anchor() yang sama dengan ataupun img() yang sama dengan . Supaya hasilnya sama dengan yang diinginkan, maka kita akan tetap menggunakan yang versi CodeIgniter, karena dengan demikian, link-nya lebih gampang ditulis, sebab nantinya kalau pakai maka kita akan kewalahan dengan link yang akan tidak biasa.

MVC Bagian I (Controller) Dibuat di dalam folder /application/controllers Struktur dasar:
parent::Controller(); //memanggil fungsi construction parent } function index() { //isi halaman kalau langsung mengakses http://url/index.php/laohe/ } function foo() { //isi halaman kalau panggil di http://url/index.php/laohe/foo } function bar($id) { //misalnya $id itu diisi “xxx” maka url diakses http://url/index.php/laohe/bar/xxx } function _tersembunyi() { //fungsi yang tidak dapat diakses di url. Untuk dipakai bukan untuk diakses } } //NB:nama class harus kapital yang depan. Nama file disave sebagai mycontroller.php di dalam folder controllers

MVC Bagian II (View) Dibuat dalam folder /application/views Dalam file ini tidak ada class. Isi filenya kebanyakan berupa tag html atau css dengan sedikit php untuk tampil isi. View perlu controller untuk menampilkannya. Tidak mungkin ada view yang berdiri sendiri. (Kalo ada view yang berdiri sendiri pasti kamu utak atik aneh2.) Cara pakai ini Controller nya, dengan namafile : /system/application/controllers/mycontroller.php
{ parent::Controller(); } function index() { $this->load->view('myview1');/*nama view bebas sesuka kamu, yang penting nama file sama*/ } function contoh2() { $data['var1'] = 'Ini ini nilai variable 1'; $data['xxx'] = 24; $this->load->view('myview2', $data); //ini tampil view yang lain dengan kirim nilai. } } Ini view-nya, dengan nama file /application/views/myview1.php

Welcome

Cuman tampil index doang Yang ini view kedua dengan nama file /application/view/myview2.php

MVC Bagian III (Model) Model itu class yang bertugas select, insert, update db dan operasi lainnya. CodeIgniter tidak wajib menggunakan Model. Struktur dasar :
class Mymodel extend Model { function Mymodel() { parent::Model(); } function dapathasil() { //taruh fungsi supaya kalau mau akses db lewat model. } } ?>

Contoh MVC Keseluruhan Kasus: Tampilkan produk dengan menggunakan Model, View serta Controller. Nama tabel yang akan diakses bernama msproduk. Sedangkan atribut-atribut pada tabel tersebut berupa idkategori, nama, parent, isleaf, gambarfolder, gambarbanner. Jawab: Pertama buat dahulu Model dengan nama productmodel.php Codingnya: db->query("SELECT idproduk, namaproduk, ukuran, jumlah, idkategori, gambar1, gambar2, carapakai FROM msproduk WHERE idkategori='$idkategori'"); return $query; }

function tampilkategori($parent='*') { $query = $this->db->query("SELECT idkategori,nama, parent, isleaf, gambarfolder, gambarbanner FROM mskategori WHERE parent='$parent'"); return $query; } } ?>

Lalu kita buat Controller di folder controllers dengan nama product.php (/application/controllers/product.php) Codingnya: load->model('Productmodel'); //buka model $data['produk'] = $this->Productmodel->tampilproduk(); //panggil fungsi model trus smpn var $this->load->view('productview',$data); //memanggil view } } ?> Lalu kita buat View di folder views dengan nama productview.php(Sebetulnya pembuatan view biasanya berbarengan dengan pembuatan controller bukan sesudah controller. Disini hanya contoh) Buat file di /application/views/productview.php Codingnya: Product

result() as $row){ echo $row->idproduk.""; echo $row->namaproduk; echo $row->ukuran; echo "".$row>namaproduk.""; echo "
"; } ?>

Menangani Database Sebelum mulai apa-apa kamu harus tulis ini dulu : $this->load->database(); Kalau misalnya malas tiap kali mau utak-atik database harus tulis coding gitu kamu bisa taruh di autoload (ada di /application/config/autoload.php) tambahkan dibagian libraries jadi gini $autoload['libraries'] = array('database');

Melakukan query

Untuk query ada 2 cara, secara objek atau array. Versi objek: $query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->email;

} Disini diperhatikan bahwa dia menggunakan foreach. Jadi kita tidak pakai while seperti pada mysql_query(). Versi array: $query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result_array() as $row) { echo $row['title']; echo $row['name']; echo $row['email']; } Yang membedakannya hanya pada yang satu $query->result() yang satu lagi $query->result_array(). Jadi kalau array aksesnya dengan menggunakan cara array.

Mengetes hasil query kosong atau tidak

Sebagai pengganti mysql_num_rows(). Kita menggunakan num_rows(). Contoh: $query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0) //Di sini cek query kosong atau tidak { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body;

} } else{ echo “Tidak ada hasil”; }

Melakukan Insert, Update atau Delete

Sebenarnya juga menggunakan fungsi query(). Jadi menggunakan sintaks SQL. Contohnya: $sql = "INSERT INTO mytable (title, name) VALUES ('$title', '$name') )";

$this->db->query($sql);

Active Record, fungsi tanpa mengandalkan SQL

Untuk melakukan fungsi select, update, insert, delete juga bisa menggunakan ActiveRecord yang sudah disediakan CodeIgniter. Dengan fungsi ini, kita tidak usah mengetik sintaks SQL, tetapi cukup panggil fungsi. Contoh Active Record Query (Untuk query pakai fungsi get() ) : $query = $this->db->get('table_name'); foreach ($query->result() as $row) { echo $row->title; } Contoh Active Record Insert (pakai fungsi insert() ): $data = array(

'title' => $title, 'name' => $name, 'date' => $date );

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

Makna dari fungsi diatas adalah “INSERT INTO mstable(title, name, date) VALUES ('$title', '$name', '$date') ”. Contoh Active Record Update (pakai fungsi update() dipadukan where() ): $data = array( 'title' => $title, 'name' => $name, 'date' => $date );

$this->db->where('id', $id); $this->db->update('mytable', $data); Arti dari coding diatas adalah “UPDATE mytable SET title='$title', name='$name', date='$date' WHERE id='$id' “. Contoh Active Record Delete (pakai fungsi delete() ,mungkin perlu dipadukan where() ): $this->db->delete('mytable', array('id'=>$id)); Atau dengan cara yang satu lagi (dipadukan dengan where()) $this->db->where('id', $id);

$this->db->delete('mytable'); Makna dari sintaks di atas yakni hapus record yang id-nya bernilai $id. Contoh Active Record Empty Table (dengan menggunakan empty_table() ): $this->db->empty_table('mytable'); Sebetulnya sintaks ini sama saja dengan sintaks DELETE di SQL atau fungsi delete() di AR(Active Record) tanpa where(). Contoh Active Record Truncate (dengan menggunakan truncate() ): $this->db->truncate('mytable'); Mirip dengan empty table. Kecuali field yang auto-increment. Jika kita empty table maka angka auto-increment tetap lanjut perhitungan sebelumnya. Jika truncate maka variabel akan mulai dari awal lagi.

Membuat Form Mengapa menggunakan helper dan tidak langsung coding HTML saja langsung? Alasannya kalau kita pakai yang sudah disediakan dia nantinya akan dengan mudah dapat menambah atribut dan hidden field. Selain itu tingkat portabiliti code lebih tinggi, misalnya ketika URL berubah. Alasan lainnya, elemen-elemen ini sudah divalidasi html nya. Jadi kalau misalnya value text adalah “” maka tidak akan merusak susunan form, karena akan diganti dengan karakter aman. Untuk menggunakan Form Helper kita harus load terlebih dahulu $this->load->helper('form'); Langkah awal adalah membuat kepala Form echo form_open('email/send'); Makna dari sintaks itu adalah nantinya akan muncul tag HTML demikian
Bisa juga kita membuat akhir dari Form dengan menggunakan echo echo form_close();

tetapi sebetulnya juga bisa langsung mengetik tag html
Keduanya adalah sama Menambah attribut pada kepala form $tambahan = array('id'=>'formlogin','name'=>'formlogin'); echo form_open('dologin', $tambahan); Makna dari sintaks ini adalah
Membuat hidden field Untuk membuat hidden field, kita bisa menentukan apa saja isinya kemudian taruh di parameter ketiga dari form_open(). $tersembunyi = ('hdnnama'=>'joe', 'hdnnumber'=>'123'); echo form_open('email/send', '', $tersembunyi); Artinya: List persamaan Form dengan form helper CodeIgniter echo form_input('txtnama','john');

echo form_password('txtpass', 's3cr3t'); echo form_upload('filimage'); echo form_textarea('txtalamat','jln $isi = echo form_checkbox(“newsletter”, echo form_radio('radsex', 'p', true);
echo form_submit('mysubmit','Kirim');

value=”p” checked=”checked” />

Satu hal yang diingat, kalau menggunakan form_upload() berarti kita menggunakan input type='file', yang artinya form harus di set nilai enctype="multipart/form-data". Tinggal pakai form_open_multipart() dengan cara : echo form_open_multipart('/send/email');

Untuk redirect halaman Ada 2 cara untuk redirect di dalam CodeIgniter Cara pertama kita menggunakan Output Class $this->output->set_header(“Location:login.php”); Output Class sudah diinisialisasi secara otomatis, jadi tidak usah di load() lagi Cara kedua kita menggunakan URL Helper $this->load->helper('url'); redirect('/login'); Satu hal yang perlu diingat adalah kita men-direct URI, jadi JANGAN tulis link lengkap. Kalau ingin mendapat kontrol lebih, lebih baik menggunakan yang versi Output Class

Validasi Form Biar lebih gampang harus kasih contoh keseluruhan. Jadi disini ada kasus dimana kita akan validasi form registrasi. User akan memasukkan data ke form, jika semua syarat terpenuhi maka akan keluar informasi yang diinput user, kalau salah maka akan tampilkan form dengan pesan kesalahan. Kita perlu controller dan view. Untuk controller codingnya demikian:
{ function Register() { parent::Controller(); } function index() { $this->load->library('form_validation'); $this->form_validation->set_rules('nama','Nama', 'trim|required'); $this->form_validation->set_rules('umur','Umur', 'trim|required| is_natural'); $this->form_validation->set_rules('alamat', 'trim|Alamat| required'); $this->form_validation->set_rules('sex', 'Sex', 'required'); $this->form_validation->set_rules('email','Email', 'trim|required| valid_email'); if ($this->form_validation->run()==false){ $this->load->view('feedbackview'); }else{ echo "Sukses
"; $nama = $this->input->post('nama'); $umur = $this->input->post('umur'); $alamat = $this->input->post('alamat'); $jeniskelamin = $this->input->post('sex'); echo $nama."
". $umur. "
".$alamat. "
" . $jeniskelamin; } } } ?> Penjelasan: $this->load->library(‘form_validation’) untuk meload Class Form Validation supaya dapat mengggunakan fungsi-fungsi validasi. $this->form_validation->run() untuk melakukan validasi. Jika misalnya kita tidak melakukan set_rules() maka hasilnya akan selalu false. $this->form_validation->set_rules(‘param1’,’param2’, ‘param3’); untuk menentukan peraturan yang harus divalidasikan ketika run() dijalankan. Keterangan set_rules() : Param1 berisi nama objek yang ingin divalidasi. Param2 berisi nama yang akan ditampilkan pesan error. Param3 berisi daftar-daftar aturan validasi. Daftar-daftar aturan validasi yang sering dipakai:

required : matches[x] : min_length[x] max_length[x] exact_length[x] : alpha : alpha_numeric : alpha_numeric : numeric : integer is_natural : is_natural_no_zero valid_email : valid_emails valid_ip : valid_base64

Harus diisi Harus sesuai dengan x, x harus diisi : Panjang minimal, x harus diisi angka : Panjang maksimum, x harus diisi angka Panjang pasti, x harus diisi angka Harus huruf alphabet Harus huruf alphabet atau angka Harus alpha-numeric ditambah strip dan garis bawah Harus berupa karakter angka : Harus berupa angka integer Harus berupa angka natural (0, 1, 2, 3, …) : Harus berupa angka natural tanpa nol (1, 2, 3…) Harus berbentuk email : Harus berupa email-email yang dipisah koma Harus berbentuk IP : Harus berupa a-z, A-Z,0-9, +, -

Kemudian membuat view yang berisi : load->helper('form'); echo validation_errors(); echo form_open_multipart('/feedback'); //pakai multipart karena ada upload file ?>
Nama
Umur
Alamat
Jenis Kelamin
Kota 'Jakarta', 'Medan'=>'Medan', 'Pontianak'=>'Pontianak', 'Batam'=>'Batam'); echo form_dropdown('kota',$pilihan, set_value('kota')); ?>

File Gambar
Email
Penjelasan: echo validation_errors(); akan menampilkan pesan error jika validasi salah. Karena saya taruh sintaksnya diatas form, maka nantinya pesan error akan muncul disitu. Jadi peletakan ini tergantung sesuai posisi yang diinginkan. set_value('x') :Untuk mengisi objek itu lagi jika ternyata masih belum valid. Kalau dulunya kami menggunakan Cookie dan ketik panjang2, sekarang tidak usah. Biasanya set_value() ditaruh di parameter kedua, karena parameter tersebut memang untuk value/nilai Mengubah pesan error Pesannya biasanya berupa bahasa Inggris. Untuk mengubah isi pesan error maka ganti-ganti isi file di system/language/english/form_validation_lang.php

Template Kita dapat menggunakan template di CodeIgniter, hanya sayang saja tidak tersedia built-in. Tapi jangan sedih, karena saya sudah menemukan library buatan orang yang sangat sederhana untuk membuat template. Download di http://maestric.com/wiki/lib/exe/fetch.php?id=&cache=cache&media=php:ci_tem plate_library3.zip Kemudian taruh file Template.php yang ada dalam zip itu kedalam /system/libraries/ Cara Penggunaan: Kalau biasanya untuk buka view kita menggunakan $this->load->view('about', $data); Maka jika sudah menggunakan template kita tinggal : $this->template->load('templateview', 'about', $data);

Dimana templateview ini juga terletak di folder /application/views. Hal yang harus diperhatikan adalah didalam template (dalam contoh ini berarti file templateview.php) harus ada $contents (gak boleh nama lain) misalnya Halaman Utama Kalau misalnya ada lebih dari satu yang ingin dikirim kamu bisa buat variabel lain selain $contents. Yang jelas $contents harus ada. Misalnya dibawah ini adalah contoh file templateview.php <?= $judul ?> Maka di controller kita tinggal mengetik begini (contoh yang sama dengan atas): $this->template->set('title', 'Halaman Utama'); $this->template->load('templateview', 'about',$data);

Menggunakan Session Untuk memanfaatkan session harus load dahulu $this->load->library('session'); Untuk set nilai $this->session->set_userdata(‘item’, ‘nilai’);

Kalau mau ambil nilai $this->session->userdata(‘item’);

Untuk hapus $this->session->unset_userdata(‘item’); Hancurkan session $this->session->sess_destroy();

Menggunakan Cookie Untuk memanfaatkan cookie harus load dahulu $this->load->helper(‘cookie’); Untuk set cookie set_cookie($nama, $nilai, $kadaluarsa, $domain, $path, $prefix); Keterangan : - $nama merupakan nama cookie $nilai merupakan nilai yang diingin simpan $kadaluarsa ditentukan detik lamanya hidup. Gak usah ditambahin time() lagi. Cukup tentukan berapa lama dia bertahan. $domain perlu kalo cookie nya mau simpan dalam jangkauan antar domain $path biasanya tidak perlu diisi karena fungsi set path root $prefix hanya dipakai kalau kamu takut terjadi tabrakan nama dengan cookie lain. Untuk ambil nilai cookie get_cookie($nama); Delete cookie delete_cookie($nama);

Paging Untuk load menggunakan: $this->load->library('pagination'); Contoh bentuk dasar setting:

$config['base_url'] = 'http://example.com/index.php/test/page/'; $config['total_rows'] = '200'; $config['per_page'] = '20'; $this->pagination->initialize($config); echo $this->pagination->create_link(); Contoh nyata: Misalnya kita ingin menampilkan daftar produk. Sekedar diketahui jumlah produk itu adalah 23 buah. Kita ingin setiap halaman hanya bisa menampilkan 5 produk. Maka di controller kita harus setting. Controller ini bernama Main dengan alamat /application/controllers/main.php load->model('Productmodel'); $this->load->library('pagination'); //pagination $config['base_url']= 'index.php/main/produk/'; $config['total_rows'] = $this->Productmodel->maksproduk(); $config['per_page'] =5; $this->pagination->initialize($config); $data['paging']= $this->pagination->create_links(); //tampilproduk $data['produk'] = $this->Productmodel->tampilproduk("limit $id,5"); /*intinya select * from msproduk limit $id, 5(lebih jelas lihat di model nantinya)*/ //meload view $this->load->view('productview',$data); } function index() { } }

Di view kita tinggal menampilkan saja result() as $row){ echo $row->idproduk.""; echo $row->namaproduk; echo $row->ukuran; echo "
"; } echo $paging; ?> Kalau ingin lebih mengerti model yang dipakai silahkan lihat ini: db->query("SELECT idproduk FROM msproduk"); return $query->num_rows(); } function tampilproduk($additional='',$idkategori='-1') { if ($idkategori==-1){ $query = $this->db->query("SELECT idproduk, namaproduk, ukuran, jumlah, idkategori, gambar1, gambar2, carapakai FROM msproduk ".$additional); }else{ $query = $this->db->query("SELECT idproduk, namaproduk, ukuran, jumlah, idkategori, gambar1, gambar2, carapakai FROM msproduk WHERE idkategori like '$idkategori' ".$additional); } return $query; }

} ?>

Upload file Untuk dapat menggunakannya harus load: $this->load->library('upload'); Dibawah ini adalah contoh untuk upload gambar sederhana Di controller kita beri nama doupload.php di alamat /applications/controllers/doupload.php: upload->initialize('upload'); $this->upload->do_upload(); } } Kemudian di bagian view kita buat form untuk upload gambar dengan alamat /applications/views/upload.php echo form_open_multipart('/feedback'); //harus form_open_multipart() soalnya upload file ?>

File Gambar
Satu hal yang harus diingat, karena di controller tadi hanya ditulis do_upload() tanpa isi parameter maka nama form_upload() harus "userfile". Kalau selain "userfile" maka ketika do_upload() harus diisi parameter nama form_upload() nya

Pentutupan Sekian diktat mengenai CodeIgniter. Jika ingin melihat lebih detail apa saja yang dapat dipakai di CodeIgniter silhakan lihat dibagian User Guide CodeIgniter karena Guide ini sudah sangat lengkap (bahkan dipuji sebagai salah satu framework PHP yang paling bagus dokumentasinya).

Related Documents

Diktat Pemograman
June 2020 28
Diktat Urogenitalia
May 2020 29
Diktat Acces
December 2019 21
Diktat Ecotourism
May 2020 17
Diktat Asli.pdf
December 2019 49

More Documents from "Widi Widayanti"

Diktat Codeigniter
June 2020 7
Component Joomla
June 2020 15
Daily Bible Reading
May 2020 7
Referat Skizoid.docx
April 2020 17
Thule 695 Cargo Rack
May 2020 16