Professional Documents
Culture Documents
Free, karena berada diba"ah lisensi open source mirip +pache,B#%, kita dapat melakukan apapun dengan CodeIgniter. Lisensi lengkapnya dapat dilihat di halaman dokumentasi
2. Light Weight, sistem inti CodeIgniter memerlukan library yang sedikit. Berbeda sekali dengan frame"ork lainnya yang membutuhkan banyak sumber daya tambahan. Library tambahan akan digunakan ketika re-uest secara dinamis, membuat sistem yang dibangun menjadi efisien dan cukup cepat . Fast, menurut dokumentasi, performa yang dimiliki CodeIgniter terbukti cepat setelah dibandingkan dengan "eb frame"ork lainnya !. $enggunakan kaidah $./.C, %engan menggunakan $odel./ie".Controller, kita dapat memisahkan bagian logic dan presentation dari aplikasi yang kita bangun. !al ini tentu sangat cocok dan bagus untuk proyek yang memfokuskan desainer fokus pada template file dan programmer fokus pada pembangunan logic dari aplikasi yang dibangun ". $enghasilkan 0RL yang bersih, 0RL yang dihasilkan oleh CodeIgniter bersih dan ramah terhadap mesin pencari. CodeIgniter menggunakan pendekatan segment#based dibandingkan dengan $uery string yang biasa digunakan oleh programmer yang tidak menggunakan web framework. Berikut adalah contoh 0RL yang dihasilkan CodeIgniter*
cs.upi.edu/news/post/123
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1 %. &acks a &unch, CodeIgniter hadir dengan berbagai library yang akan membantu tugas ) tugas di pengembangan web yang sudah umum dan sering dilakukan seperti mengakses database, mengirim email, 6alidasi data dari form, mengelola session, manipulasi gambar, bekerja dengan 8$L.R C dan masih banyak lagi '. (xtensible, kita dapat menambahkan library atau helper yang kita ciptakan sendiri ke dalam CodeIgniter. #elain itu kita dapat juga menambahkan fitur le"at class extension atau system hooks. ). *horoughly +ocumented, hampir semua fitur, library, dan helper yang ada di CodeIgniter telah terdokumentasi dengan lengkap dan tersusun dengan baik. 4etika mendapatkan unduhan CodeIgniter, dokumentasinya sudah tersedia dan siap digunakan ,. $empunyai komunitas yang ramah, komunitas CodeIgniter sangat ramah dan siap membantu pengguna CodeIgniter pemula atau yang sudah mahir. 4omunitasnya dapat ditemui di * http*,,codeigniter.com,forums, 0ntuk mendukung pengembangan aplikasi yang kokoh, Code Igniter memiliki fitur ) fitur seperti berikut* 1. -odel#.iew#/ontroller 0ased 1ystem 1. ! 3 /ompatible 9. #angat ringan 3. 5itur lengkap untuk beberapa engine database. :. 2cti3e 4ecord ;. 5orm dan 6alidasi data <. 4eamanan dan 8## filtering ). 1ession -anagement 7. (mail 1ending /lass. 1upports 2ttachments, !&$L,&e=t email, multiple protocols 'sendmail, #$& , dan $ail( dan lainnya 12. 5mage -anipulation Library 'cropping, resi6ing, rotating, dsb.(. $endukung >%, Image$agick, dan ?et B$ 11. File 7ploading /lass 12. F*& /lass 1 . Locali6ation 1!. &agination 1". +ata (ncryption 1%. 0enchmarking 1'. Full &age /aching 1). (rror Logging 17. 2pplication &rofiling 28. 1caffolding
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
9 21. /alendaring /lass 22. 7ser 2gent /lass 2 . 9ip (ncoding /lass 2!. *emplate (ngine /lass 2". *rackback /lass 1;. 8$L.R C Library 2'. 7nit testing class 1@. 1earch#engine friendly 0RLs 17. 0RI routing yang fleksibel 92. $endukung hooks, class extension dan plugins 91. ustaka helper yang lengkap
Berikut adalah penjelasan cara kerja Code Igniter* 1. inde=.php bertindak sebagai controller terdepan, dan menginisialisasi resource yang diperlukan untuk menjalankan Code Igniter 1. 4outer memeriksa !&& re$uest untuk menentukan apa yang harus dikerjakan 9. Aika cache file ada, maka akan ditampilkan langsung, dengan mele"ati eksekusi normal sistem 3. #ebelum memuat controller, !&& re$uest akan memeriksa apa yang disubmit user dan memfilternya untuk keamanan :. /ontroller memuat model, core libraries, plugin, helper, dan resource lainnya untuk memproses permintaan tertentu
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
3 ;. .iew ditampilkan di bro"ser sesuai proses yang dikerjakan controller. Aika caching dijalankan, 3iew akan di.cache terlebih dahulu agar dapat ditampilkan di re$uest selanjutnya
:ambar 1.2 /ara ;er<a -./ (1umber = http=>>killer#web# de3elopment.com>section>1> ) CodeIgniter menggunakan pendekatan -odel#.iew#/ontroller, yang bertujuan untuk memisahkan logika dan presentasi. 4onsep ini mempunyai keunggulan dimana desainer dapat bekerja pada template file, sehingga redundansi kode presentasi dapat diperkecil. Berikut adalah konsep -odel# .iew#/ontroller yang diterapkan di CodeIgniter* 1. -odel menggambarkan struktur data. Biasanya kelas model akan berisi fungsi yang digunakan untuk mengambil, menambah, dan memperbaharui informasi yang ada di database. 1. .iew adalah informasi yang diperlihatkan kepada user. /ie" adalah halaman "eb yang terdiri dari !&$L, C## dan Aa6ascript, tapi pada Code Igniter, 6ie" dapat juga sebagai potongan halaman seperti header atau footer. Bahkan dapat juga halaman R## atau tipe halaman lainnya. 9. /ontroller adalah perantara $odel, /ie", dan resource lainya yang dibutuhkan untuk menangani !&& re-uest dan menghasilkan halaman "eb. &api pada CodeIgniter, de3eloper juga dapat mengabaikan pemakaian $odel dan cukup menggunakan Controller dan /ie".
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<. +atabase 0rowser, digunakan untuk melihat database secara grafikal. #ebagai contoh, ! $y+dmin, $y#CLBro"ser, Chi6e, #CLite9 $anager, g+dmin, #CL #er6er Bro"ser, Dracle +pe= @. #istem Dperasi, landasan untuk mengembangkan aplikasi web sebelum diluncurkan di ser3er. #ebagai contoh, Findo"s <, Findo"s 8 , 0buntu, 5edora, #lack"are, BlankDn,
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
; I>D# ?usantara, 5reeB#% 7. %an berbagai alat lainnya yang dapat digunakan oleh ! atau memiliki interoperabilitas terhadap ! %alam praktiknya, terdapat juga paket ) paket yang menyertakan web ser3er? database management system, beserta database browser dalam satu paket. #eperti 8+$ , F+$ , atau L+$ yang cukup sekali install, kita sudah dapat menggunakan web ser3er, database management system, database browser, dan fungsional ser3er lainnya. 0ntuk praktikum kita dari a"al hingga akhir, akan digunakan CodeIgniter 6ersi 1.1.3, paket 8+$ 'terdiri dari +pache Web 1er3er, $y#CL +atabase -anagement 1ystem, dan ! $y+dmin +atabase 0rowser(, internet browser 5irefo= atau >oogle Chrome, text editor seperti ?otepadBB atau >eany, dan sistem operasi Findo"s <.
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<
2.Me&ulai CodeIgniter
2.1.Instalasi CodeIgniter
&entunya untuk membuat aplikasi web dengan CodeIgniter, kita harus mengenal cara instalasinya terlebih dahulu. Berikut adalah cara untuk instalasi CodeIgniter di Findo"s <* 1. unduh CodeIgniter dari link berikut * http*,,ellislab.com,codeigniter,do"nload 2. kemudian ekstrak bundelan CodeIgniter'2.1.4 di tempat unduhan +nda . copy hasil ekstraksi ke folder C*,=ampp,htdocs atau direktori =ampp di mesin +nda !. ubah namanya menjadi pelati"an(asdat ". nyalakan +pache 'web ser3er( dan $y#CL 'database management relationship( melalui 8+$ Control anel %. akses direktori tersebut le"at browser dengan 0RL * http*,,localhost,pelatihanbasdat '. Aika berhasil akan muncul tampilan seperti berikut*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
@ 1. menentukan halaman error 1. membangun controller 9. membangun model 3. membangun 3iews :. konfigurasi aplikasi web yang dibangun ;. membangun library sendiri <. membangun helper sendiri Folder s%ste& adalah tempat dimana programmer aplikasi web yang menggunakan CodeIgniter, akan menyusun aplikasinya. Berikut adalah peranan folder s%ste& di CodeIgniter* 1. menyimpan library inti CodeIgniter di folder core 2. menyimpan library dan dri3er untuk database di folder data(ase . menyimpan font yang dapat digunakan oleh keseluruhan aplikasi web secara default di folder !ont !. menyimpan kumpulan helper yang dapat digunakan untuk membantu menyelesaikan tugas ) tugas tertentu di folder "elpers ". menyimpan fitur bahasa yang disimpan di folder language %. menyimpan berbagai library lainnya yang digunakan untuk pengembangan aplikasi web di folder li(raries Folder user'guide adalah tempat dimana programmer aplikasi web yang menggunakan CodeIgniter, akan menyusun aplikasinya. Berikut adalah peranan folder user'guide di CodeIgniter* 1. Berisi file dokumentasi pengenalan CodeIgniter 1. Berisi file dokumentasi tentang pembahasan fitur ) fitur umum yang dimiliki CodeIgniter :ambar 2.2 1truktur +irektori /ode5gniter 9. Berisi file dokumentasi tentang penggunaan library yang terdapat di CodeIgniter 3. Berisi file dokumentasi tentang penggunaan
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
7 helper yang terdapat di CodeIgniter :. Berisi file dokumentasi tentang penggunaan dri3er yang terdapat di CodeIgniter
........................................................................
Gdi6 idHIcontainerIJ Gh1JFelcome to CodeIgniterKG,h1J Gdi6 idHIbodyIJ GpJ&he page you are looking at is being generated dynamically by CodeIgniter.G,pJ GpJIf you "ould like to edit this page youLll find it located at*G,pJ GcodeJapplication,6ie"s,"elcomeMmessage.phpG,codeJ GpJ&he corresponding controller for this page is found at*G,pJ GcodeJapplication,controllers,"elcome.phpG,codeJ GpJIf you are e=ploring CodeIgniter for the 6ery first time, you should start by reading the Ga hrefHIuserMguide,IJ0ser >uideG,aJ.G,pJ G,di6J Gp classHIfooterIJ age rendered in GstrongJNelapsedMtimeOG,strongJ secondsG,pJ G,di6J
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
12 ........................................................................
ada kode yang ditandai dedndgan "arna kuning, kita ubah tulisan PFelcome to CodeIgniterKQ menjadi P#elamat %atang di elatihan Basis %ata 1213Q, yang akhirnya source code diatas berubah menjadi seperti berikut ini*
........................................................................ Gdi6 idHIcontainerIJ Gh1J#elamat %atang di elatihan Basis %ata 1213G,h1J Gdi6 idHIbodyIJ GpJ&he page you are looking at is being generated dynamically by CodeIgniter.G,pJ GpJIf you "ould like to edit this page youLll find it located at*G,pJ GcodeJapplication,6ie"s,"elcomeMmessage.phpG,codeJ GpJ&he corresponding controller for this page is found at*G,pJ GcodeJapplication,controllers,"elcome.phpG,codeJ GpJIf you are e=ploring CodeIgniter for the 6ery first time, you should start by reading the Ga hrefHIuserMguide,IJ0ser >uideG,aJ.G,pJ G,di6J Gp classHIfooterIJ age rendered in GstrongJNelapsedMtimeOG,strongJ secondsG,pJ G,di6J
........................................................................
!asil dari pengubahan kode diatas akan menjadi seperti tampilan berikut ini*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
11 Bagaimanakah halaman diatas muncul R !alaman diatas muncul karena kita memanggil sebuah controller yang bernama welco&e. /ontroller ini terdapat di pelati"an (asdat 01 application 01 controllers 01 welco&e.p"p . %i dalam file ini welco&e.p"p terdapat source code seperti berikut*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class Felcome e=tends CIMController N ,TT T Inde= age for this controller. T T $aps to the follo"ing 0RL T http*,,e=ample.com,inde=.php,"elcome T . or . T http*,,e=ample.com,inde=.php,"elcome,inde= T . or . T #ince this controller is set as the default controller in T config,routes.php, itLs displayed at http*,,e=ample.com, T T #o any other public methods not prefi=ed "ith an underscore "ill T map to ,inde=.php,"elcome,GmethodMnameJ T Usee http*,,codeigniter.com,userMguide,general,urls.html T, public function inde='( N Vthis.Jload.J6ie"'L"elcomeMmessageL(S O O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
$ari kita simak bagian kode yang ditandai oleh "arna kuning diatas* 1. class 3elco&e e4tends CI'Controller N .. O, merupakan controller di CodeIgniter yang direpresentasikan dalam sebuah class. /lass ini dibangun untuk mengelompokkan fungsional web dalam yang akan diakses melalui 0RL. #etiap controller memiliki !unction yang me"akili cabang dari controller sebagai 0RI utama. erintah e4tends digunakan untuk memanggil semua fungsional controller CodeIgniter. Istilahnya adalah di"ariskan atau diturunkan 'inherit) dalam teori pemrograman berorientasi objek. %i CodeIgniter, dapat dibuat banyak controller tergantung kebutuhan sistem yang akan dibangun. $isal di dalam controller welco&e terdapat sebuah !unction yang bernama li"at'in!o56. $aka ketika kita memanggil li"at'in!o56 di controller welco&e akan menjadi *
http*,,pelatihanbasdat,inde=.php,"elcome,lihatMinfo
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
11 1. pu(lic !unction inde4 56 7 8 , merupakan cara untuk membuat sub 0RI dari sebuah controller. Aika sub 0RI tersebut bernama inde4'( maka ketika sub 0RI tersebut diakses tidak perlu ditulis langsung seperti pada contoh sebelumnnya di poin no 1. Aika mempunyai nama selain inde456 misalnya li"at'in!o'( maka ketika memanggil sub 0RI tersebut, harus ditulis secara jelas. %i dalam sebuah !unction di controller +nda dapat menentukan logika dari aplikasi +nda. #ebagai contoh, +nda dapat menampilkan halaman tertentu, atau menampilkan jumlah mahasis"a yang mengontrak mata kuliah basis data 9. ,t"is01load012iew5.welco&e'&essage.6, perintah ini digunakan untuk menampilkan halaman web dari 3iew tertentu. arameter welco&e'&essage merupakan 3ie" yang akan ditampilkan ke halaman web ketika user meminta re$uest terhadap 0RL tersebut. .ie" ini terdapat di application 01 2iews 01 welco&e'&essage.p"p
................................................................................
%i dalam function li"at'in!o56, hanya terdapat kode yang mencetak dokumen !&$L melalui perintah ec"o yang dimiliki oleh ! . #etelah menambahkan kode diatas, akseslah function tersebut melalui 0RL berikut*
http*,,pelatihanbasdat,inde=.php,"elcome,lihatMinfo Aika berhasil, kode diatas akan menampilkan tampilan seperti berikut*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
19
#impan file diatas di application 01 2iews dengan nama (iodata.p"p. 4emudian di controller welco&e tambahkan potongan kode berikut untuk menampilkan 3iew biodata yang telah ditulis. Berikut kode di controller untuk menampilkan 3iew biodata*
................................................................................
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
13
public function lihatMbiodata'( N Vthis.Jload.J6ie"'LbiodataL(S O
................................................................................
%i dalam function li"at'(iodata56, hanya terdapat kode yang menampilkan 3iew biodata dengan menggunakan perintah load02iew yang tersedia di CodeIgniter. #etelah menambahkan kode diatas, akseslah function tersebut melalui 0RL berikut*
http*,,pelatihanbasdat,inde=.php,"elcome,lihatMbiodata Aika berhasil, kode diatas akan menampilkan tampilan seperti berikut*
................................................................................
:ambar 2.' *ampilan .iew Bumlah 2ngka Bagaimanakah hal diatas bekerja R Coba perhatikan 0RL diatas* 1. welco&e adalah controller yang diakses oleh user 1. ju&la"'angka adalah function yang terdapat di controller welco&e yang memiliki
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1; argumen Vangka1 dan Vangka1 9. 12 adalah nilai untuk Vangka1 3. 12 adalah nilai untuk Vangka1 $enurut dokumentasi CodeIgniter, jika terdapat 0RI segment lebih dari dua. $aka 0RI segment yang ketiga dan seterusnya adalah argumen bagi function yang diakses oleh user. %alam kasus ini adalah function ju&la"'angka56 menerima dua argumen yaitu 12 dan 12. Bagaimanakah jika argumen yang dile"atkan tidak sesuai R. Berikut adalah beberapa contoh kasus jika argumen tidak dile"atkan sesuai dengan banyaknya argumen yang dibutuhkan*
:ambar 2., *ampilan .iew Bumlah 2ngka 1aat *idak 2da 2rgumen
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1<
:ambar 2.18 *ampilan .iew Bumlah 2ngka 1aat 2rgumen yang *erpenuhi hanya 1atu 2rgumen
:ambar 2.11 *ampilan .iew Bumlah 2nkga 1aat 2rgumen yang *erpenuhi yang 1alah 1atunya bukan 2ngka
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1@
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class Calculator e=tends CIMController N public function MMconstruct'( N parent**MMconstruct'(S Vthis.Jload.Jhelper'LurlL(S Vthis.Jload.Jlibrary'LinputL(S O public function inde='( N Vthis.Jload.J6ie"'LformMhitungL(S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
4emudian setelah kita menyalin source code diatas, sekarang kita buat 3iew !or&'"itung di application ; 2iews yang akan ditampilkan ketika controller calculator diakses oleh user. Berikut adalah source code !or&'"itung yang akan digunakan oleh controller calculator*
17
G,headJ GbodyJ Gh1J4alkulator CIG,h1J Gform actionHIGRphp echo siteMurl'Lcalculator,hasilMhitungL(SRJI methodHI D#&IJ Ginput typeHIte=tI nameHIangka1I,J Gbr ,JGbr,J Ginput typeHIte=tI nameHIangka1I,J Gbr ,JGbr,J Gselect nameHIpilih.hitungIJ Goption 6alueHIBIJBG,optionJ Goption 6alueHI.IJ.G,optionJ Goption 6alueHITIJTG,optionJ Goption 6alueHI,IJ,G,optionJ G,selectJGbr,JGbr,J Ginput typeHIsubmitI 6alueHI!itungI ,J G,formJ G,bodyJ G,htmlJ
.iew diatas menerima dua masukan yaitu angka1 dan angka2. 4emudian user akan memilih operasi yang disediakan oleh calculator. 4emudian masukan tersebut dikirim ke function "asil'"itung di controller calculator. 0ntuk melihat form diatas akses 3iew tersebut melalui 0RL berikut * http*,,pelatihanbasdat,inde=.php,calculator
#etelah +nda mengakses 0RL diatas, tampilan pada gambar 9.1 disamping akan tampak pada browser +nda. %engan demikian tinggal menulis function "asil'"itung56. ada function tersebut akan terjadi proses penangkapan nilai ) nilai dari form, penentuan proses perhitungan sesuai yang ditentukan oleh user, membungkus hasil perhitungan, kemudian menampilkannya di 3iew "asil'"itung. #ebelum menulis source code 3iew "asil'"itung, mari kita tulis dulu source code dari function "asil'"itung56. 1ource code tersebut adalah sebagai berikut* :ambar .1 *angkapan Layar /ontroller /alculator
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
12
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class Calculator e=tends CIMController N ................................................................................................ public function hasilMhitung'(N ,, mengecek masukan dari form Vangka1 H Vthis.Jinput.Jpost'Langka1L(S Vangka1 H Vthis.Jinput.Jpost'Langka1L(S VpilihMhitung H Vthis.Jinput.Jpost'Lpilih.hitungL(S VhasilMhitung H 2S ,, mengecek proses perhitungan yang diminta if 'VpilihMhitung HH IBI(N VhasilMhitung H Vangka1 B Vangka1S O else if 'VpilihMhitung HH I.I(N VhasilMhitung H Vangka1 . Vangka1S O else if 'VpilihMhitung HH ITI(N VhasilMhitung H Vangka1 T Vangka1S O else if 'VpilihMhitung HH I,I(N VhasilMhitung H Vangka1 , Vangka1S O ,, membungkus semua data perhitungan untuk ditampilkan di 6ie" VdataYLangka1LZ H Vangka1S VdataYLangka1LZ H Vangka1S VdataYLpilihMhitungLZ H VpilihMhitungS VdataYLhasilMhitungLZ H VhasilMhitungS ,, menampilkan hasil Vthis.Jload.J6ie"'LhasilMhitungL, Vdata(S O O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
Gh1J !asil perhitungan G,h1J Gh9J GRphp echo Vangka1.I VpilihMhitung I.Vangka1.I H I.VhasilMhitungRJ G,h9J Ga hrefHIGRphp echo siteMurl'Lcalculator,L(SRJIJGG 4embali menghitungG,aJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
11 .iew diatas menampilkan hasil perhitungan dan menu untuk kembali menghitung. Berikut adalah hasil tangkapan layar dari 3iew "asil'"itung*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
11
:ambar !.1 -embuat +atabase #aat ini kita hanya selesai membuat database saja, tabel yang akan digunakan oleh aplikasi web yang akan kita gunakan adalah tabel agenda. 0ntuk membuatnya klik terlebih dahulu database yang telah dibuat di panel sebelah kiri halaman muka jika baru masuk ke ! $y+dmin, atau dapat meneruskan proses sehabis pembuatan database jika belum keluar dari halaman ! $y+dmin. 0ntuk itu ketikkan nama tabel yaitu, agenda, dan jumlah kolom atau field yang dibutuhkan. 0ntuk kasus ini diperlukan tiga buah kolom pada tabel agenda.
19 4emudian +nda akan diba"a ke halaman untuk mengisi kolom sesuai kolom yang dibutuhkan. ada fase ini kita akan membuat tiga buah field yaitu id'agenda, na&a, keterangan. 4etiga field tersebut mempunyai spesifikasi tersendiri. Field id'agenda memiliki type int* dianggap sebagai primary key, dan bersifat auto increment. Field na&a memiliki type 2arc"ar dan memiliki length 122. Field keterangan memiliki type 2arc"ar dan memiliki length 288. erhatikan gambar diba"ah ini*
:ambar !. *angkapan Layar ;etika -engisikan Field di *abel 2genda #etelah selesai mengisikan field yang dibutuhkan, tekan tombol )a2e yang berada di ba"ah form pengisian field C field tabel*
:ambar !.! *angkapan Layar *ombol 1a3e yang @arus +itekan ;etika 1elesai -engisikan Field
Aika berhasil, ! $y+dmin akan menampilkan hasil tabel yang telah berhasil dibuat. #etelah tabel selesai dibuat, +nda dapat mengisikan data ) data yang dibutuhkan sebagai data a"al, atau membangun aplikasi terlebih dahulu, kemudian mengisikan data le"at aplikasi web yang +nda bangun. Berikut adalah tangkapan layar dari tabel yang berhasil dibuat*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
13
:ambar !." *angkapan Layar dari *abel 2genda yang 0erhasil +ibuat Aangan lupa untuk menambahkan data dummy pada tabel tersebut karena kita akan mencoba untuk menampilkan data yang ada di dalam tabel agenda. Isilah kira ) kira 9 [ : data pada tabel tersebut.
1: VdbYLdefaultLZYLcachedirLZ H LLS VdbYLdefaultLZYLcharMsetLZ H Lutf@LS VdbYLdefaultLZYLdbcollatLZ H Lutf@MgeneralMciLS VdbYLdefaultLZYLs"apMpreLZ H LLS VdbYLdefaultLZYLautoinitLZ H &R0ES VdbYLdefaultLZYLstrictonLZ H 5+L#ES ,T End of file database.php T, ,T Location* .,application,config,database.php T,
4emudian setelah mengkonfigurasi database, kita harus menambahkan library database di autoload.p"p yang berlokasi di application 01 con!ig . !al ini dilakukan agar library data(ase selalu di load dimanapun di controller yang ada di CodeIgniter '&entunya jika semua controller memerlukan database(. Berikut cara menambahkan library data(ase kedalam file autoload.p"p* ................................................................................ ,T X ................................................................... X +uto.load Libraries X ................................................................... X &hese are the classes located in the system,libraries folder X or in your application,libraries folder. X X rototype* X X VautoloadYLlibrariesLZ H array'LdatabaseL, LsessionL, L=mlrpcL(S T, VautoloadYLlibrariesLZ H array'LdatabaseL(S ................................................................................
?ah, seperti itulah cara konfigurasi database di CodeIgniter, sampai fase ini kita belum dapat menggunakan database untuk dipanggil di controller. 4ita harus membuat model terlebih dahulu yang akan dipergunakan sebagai perantara ketika mengakses database.
1; #ebuah model di CodeIgniter, biasanya merepresentasikan satu tabel di database. %alam kasus ini karena hanya tabel agenda yang digunakan berarti model yang akan kita buat adalah agenda'&odel.p"p. Biasanya didalam sebuah model terdapat bagian kode untuk mengambil semua data dari tabel, mengambil salah satu baris data, memperbaharui data di tabel, menghapus data di tabel, dan menambahan data baru. %i CodeIgniter, kita dapat menggunakan sebuah cara yang dinamakan +cti6e Record untuk mengakses database. Bentuknya adalah function yang siap pakai ketika CIM$odel digunakan dalam inheritance kedalam model yang kita buat. Aadi tidak hanya menggunakan $uery yang biasa saja, dengan +cti6e Record kita dapat membuat proses akses ke database lebih independen terhadap berbagai database engine dibandingkan $uery biasa. 4arena setiap $uery biasa memiliki sintaks yang unik terhadap database engine yang menyediakan $uery tersebut. #ingkatnya +cti6e Record membuat aplikasi web +nda dapat beradaptasi dengan database manapun. 0ntuk melihat contoh nyatanya mari kita lihat isi file agenda'&odel berikut ini*
GRphp class +gendaMmodel e=tends CIM$odel N function MMconstruct'(N parent**MMconstruct'(S O function insertMagenda'Vdata(N Vthis.Jdb.Jinsert'LagendaL, Vdata(S O function selectMall'(N Vthis.Jdb.Jselect'LTL(S Vthis.Jdb.Jfrom'LagendaL(S Vthis.Jdb.JorderMby'LdateMmodifiedL, LdescL(S return Vthis.Jdb.Jget'(S O function selectMbyMid'VidMagenda(N Vthis.Jdb.Jselect'LTL(S Vthis.Jdb.Jfrom'LagendaL(S Vthis.Jdb.J"here'LidMagendaL, VidMagenda(S return Vthis.Jdb.Jget'(S O function updateMagenda'VidMagenda, Vdata(N Vthis.Jdb.J"here'LidMagendaL, VidMagenda(S Vthis.Jdb.Jupdate'LagendaL, Vdata(S O function deleteMagenda'VidMagenda(N Vthis.Jdb.J"here'LidMagendaL, VidMagenda(S Vthis.Jdb.Jdelete'LagendaL(S O
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1<
,, function yang digunakan oleh paginationsample function selectMallMpaging'VlimitHarray'((N Vthis.Jdb.Jselect'LTL(S Vthis.Jdb.Jfrom'LagendaL(S Vthis.Jdb.JorderMby'LdateMmodifiedL, LdescL(S if 'Vlimit KH ?0LL( Vthis.Jdb.Jlimit'VlimitYLperpageLZ, VlimitYLoffsetLZ(S return Vthis.Jdb.Jget'(S O O RJ
#alin source code diatas kemudian simpan di application01&odels01da!taragenda dengan nama agenda'&odel.p"p. #ebelumnya buat terlebih dahulu folder da!taragenda di dalam folder application 01 &odels. Lebih lengkapnya untuk melihat +cti6e Record atau pembahasan tentang model di CodeIgniter, dapat +nda lihat di dokumentasi CodeIgniter bagian -odel di :eneral *opics dan bagian +atabase /lass di +ri3er 4eference.
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class %aftaragenda e=tends CIMController N public function MMconstruct'( N parent**MMconstruct'(S Vthis.Jload.Jhelper'LurlL(S Vthis.Jload.Jlibrary'LinputL(S Vthis.Jload.Jmodel'Ldaftaragenda,agendaMmodelL(S O
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
1@
,, bagian pengelolaan agenda public function inde='( N VdataYLdaftarMagendaLZ H Vthis.JagendaMmodel.JselectMall'(.Jresult'(S Vthis.Jload.J6ie"'Ldaftaragenda,daftarMagendaL, Vdata(S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
#eperti yang bisa +nda lihat, untuk menggunakan model di controller pertama kali +nda harus memuat model agenda'&odel terlebih dahulu. Baru setelah itu +nda dapat menggunakan agenda'&odel di function manapun di dalam controller. %alam kasus ini agenda'&odel dipanggil di function inde4. 4emudian karena kita ingin mengambil semua isi tabel agenda maka function select'all56 yang terdapat di agenda'&odel dipanggil. 0ntuk proses akhirnya jika +nda ingin mendapatkan semua data maka dapat digunakan result56 , tapi nilai keluarannya akan sebagai array ob<ect. #edangkan jika hanya ingin satu baris saja digunakan row56, tapi nilai keluarannya akan sebagai ob<ect. 4emudian hasil keluaran tersebut disimpan di array ,data dengan naman da!tar'agenda. 4emudian le"atkan ke 3iew da!tar'agenda untuk menampilkan agenda yang ada di tabel agenda. #ebelumnya buat dulu folder da!taragenda di dalam application 01 2iews. #impan 3iew diba"ah ini dengan nama da!tar'agenda.p"p di folder application012iews01da!taragenda. Berikut adalah source code dari 3iew da!tar'agenda*
GK%DC&W E htmlJ GhtmlJ GheadJ GtitleJ%aftar !adir raktikumG,titleJ G,headJ GbodyJ Gh1J%aftar +gendaG,h1J Ga hrefHIGRphp echo siteMurl'Ldaftaragenda,tambahMagendaL(SRJIJ&ambah +gendaG,aJ Gbr ,J Gbr ,J GRphp foreach 'VdaftarMagenda as Vagenda( NRJ GfieldsetJ Gh9JGRphp echo Vagenda.JnamaSRJG,h9J Ga hrefHIGRphp echo siteMurl'Ldaftaragenda,editMagenda,L.Vagenda.JidMagenda(SRJIJEditG,aJ X Ga hrefHIGRphp echo siteMurl'Ldaftaragenda,deleteMagenda,L.Vagenda.JidMagenda(SRJIJ%eleteG,aJ Gbr ,J GpJ GRphp echo Vagenda.JketeranganSRJ G,pJ G,fieldsetJ Gbr ,J GRphp O RJ G,bodyJ G,htmlJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
17
%i dalam source code diatas terdapat link untuk menambahkan agenda baru, menampilkan setiap data di dalam tabel melalui looping? serta menambatkan link edit dan delete di setiap item tabel agenda. 0ntuk melihat bagaimana function inde4 bekerja, akseslah le"at 0RL berikut* http*,,localhost,pelatihanbasdat,inde=.php,daftaragenda 4emudian tampilannya kira ) kira akan seperti berikut ini*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class %aftaragenda e=tends CIMController N
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
92
................................................................................................ public function tambahMagenda'(N Vthis.Jload.J6ie"'Ldaftaragenda,formMtambahMagendaL(S O public function prosesMtambahMagenda'(N VdataYLnamaLZ H Vthis.Jinput.Jpost'LnamaL(S VdataYLketeranganLZ H Vthis.Jinput.Jpost'LketeranganL(S Vthis.JagendaMmodel.JinsertMagenda'Vdata(S redirect'siteMurl'LdaftaragendaL((S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
ada kode diatas function ta&(a"'agenda56 digunakan untuk menampilkan 3iew !or&'ta&(a"'agenda. 4emudian function proses'ta&(a"'agenda56 digunakan untuk memproses masukan dari form dan menambahkannya ke tabel agenda melalui model agenda'&odel. #etelah memasukkan data ke tabel agenda, tampilan "eb dialihkan ke halaman inde4 yang ada di controller da!taragenda. 0ntuk 3iew !or&'ta&(a"'agenda* didalamnya terdapat sebuah form yang mengarahkan proses ke function proses'ta&(a"'agenda di controller da!taragenda* kemudian terdapat sebuah text area yang akan menerima masukan judul agenda dan keterangan agenda. #impanlah 3iew diba"ah ini dengan nama !or&'ta&(a"'agenda.p"p dan simpan di application 01 2iews 01 da!taragenda. 1ource code !or&'ta&(a"'agenda dapat +nda lihat sebagai berikut*
GK%DC&W E htmlJ GhtmlJ GheadJ GtitleJ%aftar !adir raktikumG,titleJ G,headJ GbodyJ Gh1J5orm &ambah +gendaG,h1J GfieldsetJ Gform actionHIGRphp echo siteMurl'Ldaftaragenda,prosesMtambahMagendaL(SRJI methodHI D#&IJ ?ama * Gbr,JGte=tarea nameHInamaI colsHI:2I ro"sHI:IJG,te=tareaJ Gbr,JGbr,J 4eterangan * Gbr,JGte=tarea nameHIketeranganI colsHI:2I ro"sHI:IJG,te=tareaJ Gbr,JGbr,J Ginput typeHIsubmitI 6alueHI&ambahI ,J G,formJ G,fieldsetJ G,bodyJ G,htmlJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:ambar !.' -encoba -enu *ambah 2genda 4emudian jika berhasil, +nda akan melihat tampilan berikut*
:ambar !.) -elihat *ampilan Form *ambah 2genda #ekarang kita coba masukkan sebuah agenda baru sebagai percobaan seperti pada gambar berikut
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
91 ini*
:ambar !., -enambahkan 2genda 0aru #etelah memberikan masukan, tentunya tekan tomboh +a&(a" pada form tersebut. Lalu Lihatlah apa yang akan terjadi*
99
93 #ebelum itu, kita harus membuat kode untuk menampilkan halaman edit agenda dan memproses hasil dari edit agenda tersebut. &ambahkan kode berikut di controller agenda*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class %aftaragenda e=tends CIMController N ................................................................................................ public function editMagenda'VidMagenda(N VdataYLagendaLZ H Vthis.JagendaMmodel.JselectMbyMid'VidMagenda(.Jro"'(S Vthis.Jload.J6ie"'Ldaftaragenda,formMeditMagendaL, Vdata(S O public function prosesMeditMagenda'(N VdataYLnamaLZ H Vthis.Jinput.Jpost'LnamaL(S VdataYLketeranganLZ H Vthis.Jinput.Jpost'LketeranganL(S VidMagendaHVthis.Jinput.Jpost'LidMagendaL(S Vthis.JagendaMmodel.JupdateMagenda'VidMagenda, Vdata(S redirect'siteMurl'LdaftaragendaL((S O ........................................................................................ ........ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
4emudian agak berbeda sedikit dengan 3iew !or&'ta&(a"'agenda, isi source code dari 3iew !or&'edit'agenda adalah sebagai berikut*
GK%DC&W E htmlJ GhtmlJ GheadJ GtitleJ%aftar !adir raktikumG,titleJ G,headJ GbodyJ Gh1J5orm Edit +gendaG,h1J GfieldsetJ Gform actionHIGRphp echo siteMurl'Ldaftaragenda,prosesMeditMagendaL(SRJI methodHI D#&IJ +genda * Gbr,JGte=tarea nameHInamaI colsHI:2I ro"sHI:IJGRphp echo Vagenda.JnamaSRJG,te=tareaJ Gbr,JGbr,J 4eterangan * Gbr,JGte=tarea nameHIketeranganI colsHI:2I ro"sHI:IJGRphp echo Vagenda.JketeranganSR JG,te=tareaJ Gbr,JGbr,J Ginput typeHIhiddenI nameHIidMagendaI 6alueHIGRphp echo Vagenda.JidMagendaSRJI ,J Ginput typeHIsubmitI 6alueHI0bahI ,J G,formJ G,fieldsetJ G,bodyJ G,htmlJ
9: da!taragenda. 4emudian coba klik data yang baru saja dimasukkan atau data manapun untuk mencoba melihat halaman edit dari item tersebut*
:ambar !.12 @alaman (dit 2genda #ekarang coba ubah sedikit data yang dipilih sesuai kehendak masing ) masing. $isal dalam gambar diba"ah ini diubah seperti berikut*
9<
GRphp O RJ ................................................................................................
4emudian setelah mengklik link tersebut, proses selanjutnya akan berjalan di function delete'agenda di controller agenda. Berikut adalah potongan kode yang harus ditambahkan di controller agenda*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class %aftaragenda e=tends CIMController N ................................................................................................ public function deleteMagenda'VidMagenda(N Vthis.JagendaMmodel.JdeleteMagenda'VidMagenda(S redirect'siteMurl'LdaftaragendaL((S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
%i dalam function diatas, proses akan menghapus terlebih dahulu item yang berada di dalam tabel agenda. 4emudian akan dialihkan ke halaman daftar agenda. Berikut adalah tangkapan layar bagaimana proses hapus agenda berjalan*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
9@
:ambar ".1 1truktur *abel 7ser di +atabase &elatihan 0asdat 4emudian setelah berhasil membuat tabel diatas, isikan data dummy seperti pada gambar berikut ini*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
97
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
32
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class +ccount e=tends CIMController N function MMconstruct'(N parent**MMconstruct'(S Vthis.Jload.Jmodel'Laccount,userMmodelL(S Vthis.Jload.Jhelper'LurlL(S Vthis.Jload.Jhelper'LformL(S Vthis.Jload.Jlibrary'LformM6alidationL(S O ,, melihat halaman login public function inde='(N Vthis.Jload.J6ie"'Laccount,formMloginL(S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
ada function inde4, +nda bisa melihat bah"a function tersebut mengarah ke 3iew !or&'login. Berikut adalah isi dari 3iew !or&'login* Gh1J#ilahkan LoginG,h1J
GfieldsetJ GRphp echo 6alidationMerrors'(S RJ Gp styleHIcolor*redSIJGRphp echo Vthis.Jsession.Jflashdata'LnotificationL(RJG,pJ GRphp echo formMopen'Laccount,loginL(RJ 0sername * Ginput typeHIte=tI nameHIusernameI 6alueHIGRphp echo setM6alue'LusernameL(RJI ,J Gbr ,JGbr ,J ass"ord * Ginput typeHIpass"ordI nameHIpass"ordI 6alueHIGRphp echo setM6alue'Lpass"ordL(RJI ,J Gbr ,JGbr ,J Ginput typeHIsubmitI nameHImasukI 6alueHI$asukI ,J Gbr ,J G,formJ G,fieldsetJ
#etelah selesai disalin, simpanlah source code diatas dengan nama !or&'login.p"p dan taruh di application 01 2iews 01 account. %i dalam source code diatas terdapat beberapa poin penting seperti berikut* 2alidation'error56, akan menampilkan error yang dihasilkan ketika proses 6alidasi form ,t"is01session01!las"data5.noti!ication.6, akan menampilkan kesalahan ketika pengecekan keberadaan akun
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
4emudian akses function inde4 melalui 0RL berikut* http*,,localhost,pelatihanbasdat,inde=.php,account $aka akan muncul tampilan seperti berikut ini*
31
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class +ccount e=tends CIMController N ................................................................................................ ,, memeriksa keberadaan akun username public function login'(N Vusername H Vthis.Jinput.Jpost'LusernameL, LtrueL(S Vpass"ord H Vthis.Jinput.Jpost'Lpass"ordL, LtrueL(S VtempMaccount H Vthis.JuserMmodel.JcheckMuserMaccount'Vusername, Vpass"ord(.Jro"'(S ,, check account VnumMaccount H count'VtempMaccount(S Vthis.JformM6alidation.JsetMrules'LusernameL, L0sernameL, Lre-uiredL(S Vthis.JformM6alidation.JsetMrules'Lpass"ordL, L ass"ordL, Lre-uiredL(S if 'Vthis.JformM6alidation.Jrun'( HH 5+L#E( N Vthis.Jload.J6ie"'Laccount,formMloginL(S O else N if 'VnumMaccount J 2(N ,, kalau ada set session VarrayMitems H array' LidMuserL HJ VtempMaccount.JidMuser, LusernameL HJ VtempMaccount.Jusername, LloggedMinL HJ true (S Vthis.Jsession.JsetMuserdata'VarrayMitems(S redirect'siteMurl'Laccount,6ie"MsuccessMpageL((S O else N ,, kalau ga ada diredirect lagi ke halaman login Vthis.Jsession.JsetMflashdata'LnotificationL, L eringatan * 0sername dan ass"ord tidak cocokL(S redirect'siteMurl'LaccountL((S O O O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
39 4etika akun yang dimasukkan ada di dalam tabel user. /ontroller account akan mengarahkan +nda ke halaman sukses. #ebenarnya disini terjadi pengarahan ke /ontroller account itu sendiri yang targetnya adalah function yang menampilkan halaman sukses. 4ita akan membuat function yang bernama 2iew'success'page56 di dalam controller account. %i dalam controller ini terdapat proses pengecekan session. 4emudian jika session dari user yang sedang login masih ada, maka akan ditampilkan halaman sukses. Aadi ketika +nda login kemudian berhasil, +nda dapat mengakses function 2iew'success'page56 '0RL * http*,,pelatihanbasdat,inde=.php,account,6ie"MsuccesMpage( kembali sekalipun tab di browser sudah ditutup. +pabila sebelumnya belum login, kemudian +nda mengakses function 2iew'success'page56 maka +nda akan dialihkan ke halaman form login. Berikut adalah source code dari function 2iew'success'page56D
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class +ccount e=tends CIMController N ................................................................................................ public function 6ie"MsuccessMpage'(N VloggedMin H Vthis.Jsession.Juserdata'LloggedMinL(S if 'KVloggedMin(N redirect'siteMurl'LaccountL((S O Vthis.Jload.J6ie"'Laccount,successMpageL(S O ................................................................................................ O ,T End of file "elcome.php T, ,T Location* .,application,controllers,"elcome.php T,
4arena function 2iew'success'page56 akan menampikan sebuah 3iew, maka kita harus membuat sebuah 3iew yang menampilkan sukses ketika login. 4ita akan membuat sebuah 3iew dengan nama success'page.p"p kemudian simpan 3iew tersebut di application 01 2iews 01 account. Berikut adalah source code dari 3iew success'page*
Gh1J+nda berhasil login *% G,h1J Ghr ,J !ai, GRphp echo Vthis.Jsession.Juserdata'LusernameL(SRJ *% Gbr ,J #elamat %atang di "ebsite coba . coba... Gbr ,JGbr ,J Ga hrefHIGRphp echo siteMurl'Laccount,logoutL(S RJIJkeluarG,aJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
33
Gbr ,J
#ekarang "aktunya kita menguji coba sistem autentikasi kita. ertama masukkan username sesuai dengan akun yang ada di tabel user di database*
4emudian jika berhasil, +nda akan diarahkan ke function 2iew'success'page56 seperti pada gambar berikut *
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
3:
#ekarang mari coba klik link Keluar yang ada di halaman sukses*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
3;
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
3< ada kode diatas, kita membutuhkan helper url, library input, dan model agenda'&odel. ertama, kita menentukan jumlah item yang ingin ditampilkan setiap halaman. 4emudian kita gunakan library pagination. 4emudian kita konfigurasi pagination yang akan kita hasilkan. 4ita memilih function apa yang akan menggunakan pagination? mencatat total data yang akan ditampilkan, dan menentukan banyak item yang akan ditampilkan. 4onfigurasi kemudian digunakan oleh library pagination. %an kita mele"atkan batas a"al 'offset( dan banyaknya item yang akan ditampilkan untuk pagination ke function select'all'paging56 di model agenda'&odel. %engan masih menggunakan model agenda'&odel tambahkan function select'all'paging56 di model tersebut. Berikut adalah source code dari function select'all'paging56*
GRphp class +gendaMmodel e=tends CIM$odel N ........................................................................................... ,, function yang digunakan oleh paginationsample function selectMallMpaging'VlimitHarray'((N Vthis.Jdb.Jselect'LTL(S Vthis.Jdb.Jfrom'LagendaL(S Vthis.Jdb.JorderMby'LdateMmodifiedL, LdescL(S if 'Vlimit KH ?0LL( Vthis.Jdb.Jlimit'VlimitYLperpageLZ, VlimitYLoffsetLZ(S return Vthis.Jdb.Jget'(S O O
ada function select'all'paging56 diatas, data yang diambil dibatas sesuai offset dan banyaknya item yang ingin ditampilkan di function inde4 di controller paginationsa&ple. #ekarang kita akan melihat source code dari 3iew untuk menampilkan pagination yang bernama da!tar'agenda'pagination. Berikut adalah source code dari 3iew da!tar'agenda'pagination*
GK%DC&W E htmlJ GhtmlJ GheadJ GtitleJ%aftar !adir raktikumG,titleJ G,headJ GbodyJ Gh1J%aftar +gendaG,h1J Ga hrefHIGRphp echo siteMurl'Ldaftarhadir,tambahMagendaL(SRJIJ&ambah +gendaG,aJ Gbr ,J Gbr ,J Gbr ,J GRphp echo Vthis.Jpagination.JcreateMlinks'(S RJ Gbr ,J Gbr ,J GRphp foreach 'VdaftarMagenda as Vagenda( NRJ GfieldsetJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
3@
Gh9JGRphp echo Vagenda.JnamaSRJG,h9J Ga hrefHIGRphp echo siteMurl'Ldaftarhadir,editMagenda,L.Vagenda.JidMagenda(SRJIJEditG,aJ X Ga hrefHIGRphp echo siteMurl'Ldaftarhadir,deleteMagenda,L.Vagenda.JidMagenda(SRJIJ%eleteG,aJ Gbr ,J GpJ GRphp echo Vagenda.JketeranganSRJ G,pJ G,fieldsetJ Gbr ,J GRphp O RJ Gbr ,J GRphp echo Vthis.Jpagination.JcreateMlinks'(S RJ Gbr ,J Gbr ,J G,bodyJ G,htmlJ
#ebelumnya buat terlebih dahulu folder dengan nama paginationsa&ple di application 01 2iews. 4emudian simpan file diatas dengan nama da!tar'agenda'pagination.p"p di dalam folder paginationsa&ple. 4emudian akses controller paginationsa&ple dengan 0RL berikut* http*,,localhost,pelatihanbasdat,inde=.php,paginationsample 4emudian +nda akan melihat tampilan seperti berikut*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
37
#ebelumnya simpan source code diatas dengan nama !or&"andling.p"p kemudian simpan di folder application E controllers. 4emudian mari kita coba untuk membuat 3iew yang field di form#nya dibuat menggunakan helper !or&. Berikut adalah source code yang akan ditulis*
GhtmlJ GheadJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:2
GtitleJ5orm !andlingG,titleJ G,headJ GbodyJ Gh1J+yo >abung Bersama 4amiG,h1J GfieldsetJ GRphp echo formMopen'Lformhandling,prosesMregisterMuserL(SRJ GRphp echo formMerror'LnamaL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ ?ama * GRphp echo formMinput'LnamaL(SRJ Gbr ,JGbr,J GRphp echo formMerror'LsamaranL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ #amaran * GRphp echo formMinput'LsamaranL(SRJ Gbr ,JGbr,J GRphp echo formMerror'LemailL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ Email * GRphp echo formMinput'LemailL(SRJ Gbr ,JGbr,J GRphp echo formMerror'Lpass"ordL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ ass"ord * GRphp echo formMpass"ord'Lpass"ordL(SRJ Gbr ,JGbr,J GRphp echo formMerror'Lulangpass"ordL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ 0lang ass"ord * GRphp echo formMpass"ord'Lulangpass"ordL(SRJ Gbr ,JGbr,J GRphp echo formMerror'LumurL, LGdi6 styleHIcolor*redIJL,LG,di6JL(SRJ 0mur * GRphp echo formMinput'LumurL(SRJ Gbr ,JGbr,J &"itter * GRphp echo formMinput'Lt"itterL(SRJ Gbr ,JGbr,J Febsite * GRphp echo formMinput'L"ebsiteL(SRJ Gbr ,JGbr,J GRphp echo formMsubmit'LdaftarL, L%aftarkan #aya KL(SRJ GRphp echo formMclose'(S RJ G,fieldsetJ G,bodyJ G,htmlJ
Beri nama file dari source code diatas dengan nama !or&'register'user.p"p. #ebelumnya buat terlebih dahulu folder yang bernama !or&"andling di folder application E 2iews. %an simpanlah source code diatas di folder !or&"andling. Beberapa function dari helper !or& yang harus diingat antara lain* !or&'open56, function yang digunakan untuk membuka form dan menentukan tipe form. !or&'error56, function yang digunakan untuk memperlihatkan error di form ketika proses 6alidasi !or&'input56, function yang digunakan untuk menyingkat penulisan input tipe text di form !or&'password56* function yang digunakan untuk menyingkat penulisan input tipe password di form !or&'su(&it56* function yang digunakan untuk menyingkat penulisan tombol submiti di form !or&'close56, function yang digunakan untuk menutup form
%engan menggunakan helper !or& tersebut, setidaknya kita dapat menghemat "aktu untuk membuat form di aplikasi web yang akan kita bangun. $ari kita coba lihat form pendaftaran diatas le"at 0RL berikut* http*,,localhost,pelatihanbasdat,inde=.php,formhandling, %an cobalah lihat dengan mode 3iew source code pada browser yang +nda gunakan. #intaks untuk membuat form sudah ditangani oleh CodeIgniter. Berikut adalah screenshot dari form yang diciptakan oleh CodeIgniter*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:1
:ambar '.2 1ource /ode dari Form yang dibuat dengan @elper Form
:1 6alidasi dari form yang telah kita buat. Berikut adalah source code dari function proses'register'user56 di controller !or&'"andling yang akan kita gunakan untuk mem6alidasi form yang telah dibuat*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class 5ormhandling e=tends CIMController N .......................................................................................... public function prosesMregisterMuser'(N Vthis.JformM6alidation.JsetMrules'LnamaL, L?amaL, Lre-uiredL(S Vthis.JformM6alidation.JsetMrules'LsamaranL, L#amaranL, Lre-uiredL(S Vthis.JformM6alidation.JsetMrules'Lpass"ordL, L ass"ordL, Lre-uiredL(S Vthis.JformM6alidation.JsetMrules'Lulangpass"ordL, L0lang ass"ordL, Lre-uiredL(S Vthis.JformM6alidation.JsetMrules'LemailL, LEmailL, Lre-uiredX6alidMemailL(S Vthis.JformM6alidation.JsetMrules'LumurL, L0murL, LintegerL(S if 'Vthis.JformM6alidation.Jrun'( HH 5+L#E( N Vthis.Jload.J6ie"'Lformhandling,formMregisterMuserL(S O else N Vthis.Jload.J6ie"'Lformhandling,successMregisterMuserL(S O O O ,T End of file formhandling.php T, ,T Location* .,application,controllers,formhandling.php T,
Bisa +nda lihat pada source code diatas bah"a untuk menentukan aturan 6alidasi cukup dengan menggunakan !or&'2alidation01set'rules56 dengan parameter pertama adalah nama dari field yang akan diberikan 6alidasi, parameter kedua adalah nama dari field yang akan ditampilkan dalam peringatan error, dan parameter ketiga adalah jenis 6alidasi yang akan digunakan. Berikut adalah source code untuk melihat halaman sukses setelah 6alidasi*
GhtmlJ GheadJ GtitleJ5orm !andlingG,titleJ G,headJ GbodyJ Gh9J+nda sudah bergabung bersama kami *%G,h9J GpJGRphp echo anchor'LformhandlingL, LCoba Lagi KL(S RJG,pJ G,bodyJ G,htmlJ
#impan source code diatas dengan nama success'register'user.p"p dan simpan di folder !or&"andling di application E 2iews. 0ntuk menjalankan 6alidasi dari form tersebut, digunakanlah !or&'2alidation01run56 untuk menguji 6alidasi. Aika sukses diarahkan ke halaman sukses. Aika gagal maka akan dikembalikan ke halaman form dengan memberikan informasi dari form yang error. $ari kita coba form tersebut dengan kasus tanpa diis
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:9
:3
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
::
#eperti biasa kita membutuhkan controller yang akan menampilkan 3iew yang berisi kode !&$L. %alam percobaan ini kita membutuhkan controller seperti berikut ini*
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class Bootstrapsample e=tends CIMController N public function MMconstruct'(N parent**MMconstruct'(S Vthis.Jload.Jhelper'LurlL(S O
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:;
public function inde='( N Vthis.Jload.J6ie"'LcontohMformMbootstrapL(S O O ,T End of file bootstrapsample.php T, ,T Location* .,application,controllers,bootstrapsample.php T,
#impanlah controller diatas dengan nama (ootstrapsa&ple.p"p di application 01 controllers. Berikutnya kita akan membuat 3iew yang berisi contoh form yang menggunakan style dari &"itter Bootstrap. $ari kita simak source code berikut ini*
GK%DC&W E htmlJ Ghtml langHIenIJ GheadJ GtitleJContoh 5orm BootstrapG,titleJ Gscript typeHIte=t,ja6ascriptI srcHIGRphp echo baseMurl'Lasset,bootstrap,js,bootstrap.jsL(SRJIJG,scriptJ Glink hrefHIGRphp echo baseMurl'Lasset,bootstrap,css,bootstrap.min.cssL(SRJI relHIstylesheetIJ Glink hrefHIGRphp echo baseMurl'Lasset,bootstrap,css,bootstrap.theme.min.cssL(SRJI relHIstylesheetIJ G,headJ GbodyJ Gform classHI"ell form.horiEontalIJ GfieldsetJ Gdi6 classHIcontrol.groupIJ Glabel classHIcontrol.labelI forHIinput21IJ?amaG,labelJ Gdi6 classHIcontrolsIJ Ginput typeHIte=tI classHIinput.=largeI idHIinput21IJ Gp classHIhelp.blockIJIsikan nama lengkap +ndaG,pJ G,di6J G,di6J Gdi6 classHIcontrol.groupIJ Glabel classHIcontrol.labelI forHIinput21IJ&"itterG,labelJ Gdi6 classHIcontrolsIJ Ginput typeHIte=tI classHIinput.=largeI idHIinput21IJ Gp classHIhelp.blockIJIsikan akun &"itter +ndaG,pJ G,di6J G,di6J Gdi6 classHIcontrol.groupIJ Glabel classHIcontrol.labelI forHIselect21IJ ekerjaanG,labelJ Gdi6 classHIcontrolsIJ Gselect idHIselect21IJ GoptionJFeb rogrammerG,optionJ GoptionJ%esktop rogrammerG,optionJ GoptionJ+ndroid rogrammerG,optionJ GoptionJFeb %esignerG,optionJ G,selectJ G,di6J G,di6J Gdi6 classHIform.actionsIJ Gbutton classHIbtn btn.primaryI typeHIsubmitIJ #a6e changes G,buttonJ Gbutton classHIbtnIJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:<
Cancel G,buttonJ G,di6J G,fieldsetJ G,formJ G,bodyJ G,htmlJ
#impanlah source code diatas dengan nama conto"'!or&'(ootstrap.p"p kemudian simpan di folder application 01 2iews. #ekarang kita akan meninjau beberapa bagian source code diatas. $ari kita simak* 0ntuk menggunakan Bootstrap kedalam halaman 3iew kita maka dilakukan dengan cara seperti berikut 'source code diba"ah ini jangan disalin( *
GK%DC&W E htmlJ Ghtml langHIenIJ GheadJ GtitleJContoh 5orm BootstrapG,titleJ Gscript typeHIte=t,ja6ascriptI srcHIGRphp echo baseMurl'Lasset,bootstrap,js,bootstrap.jsL(SRJIJG,scriptJ Glink hrefHIGRphp echo baseMurl'Lasset,bootstrap,css,bootstrap.min.cssL(SRJI relHIstylesheetIJ Glink hrefHIGRphp echo baseMurl'Lasset,bootstrap,css,bootstrap.theme.min.cssL(SRJI relHIstylesheetIJ G,headJ GbodyJ ..........................................................................................
+nda dapat menambahkan class !or&0"oriGontal pada form yang ditentukan untuk menciptakan form yang sesuai gaya &"itter Bootstrap class control0group digunakan untuk membuat sebuah susunan komponen form yang biasanya terdiri dari label dan controls class control0la(el digunakan untuk memberikan style bagi label dari control yang akan digunakan class controls merupakan sebuah susunan komponen input yang biasanya terdiri dari class input04large memberikan style untuk input yang membuatnya terlihat lebih luas class "elp0(lock memberikan style untuk panduan ketika mengisi di input class !or&0action memberikan style untuk class (tn0pri&ar% memberikan style untuk tombol yang ukurannya lebih besar
0ntuk lebih lengkapnya +nda dapat membaca dokumentasi &"itter Bootstrap bagian Base C)). #ekarang mari kita lihat tampilan dari form yang menggunakan &"itter Bootstrap melalui 0RL berikut ini* http*,,localhost,pelatihanbasdat,inde=.php,bootstrapsample #edangkan tampilannya dapat dilihat seperti berikut ini*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
:@
:7
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class 0ploadsample e=tends CIMController N public function MMconstruct'( N parent**MMconstruct'(S Vthis.Jload.Jhelper'LurlL(S Vthis.Jload.Jhelper'LformL(S Vthis.Jload.Jlibrary'LinputL(S O public function inde='( N Vthis.Jload.J6ie"'Luploadsample,formMuploadL, array'LerrorLHJLL((S O .......................................................................................... O ,T End of file uploadsample.php T, ,T Location* .,application,controllers,uploadsample.php T,
#impanlah source code diatas dengan nama uploadsa&ple.p"p kemudian simpan di application 01 controllers. #eperti yang tertulis di source code? controller ini memerlukan dua buah helper yaitu url dan !or& serta membutuhkan library input. %isana terdapat sebuah function inde456 yang akan menampilkan form upload yang akan kita tulis. 0ntuk form upload sendiri yang akan digunakan dalam percobaan ini adalah sebagai berikut*
GhtmlJ GheadJ GtitleJ%emo 0pload 5ileG,titleJ G,headJ GbodyJ GRphp echo VerrorSRJ GRphp echo formMopenMmultipart'Luploadsample,prosesMuploadL(SRJ Audul* Gbr ,J
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;2
Ginput typeHIte=tI nameHIjudulI siEe H I92I ,J Gbr,JGbr,J 0pload 5ilenya * Gbr ,JGbr ,J Ginput typeHIfileI nameHIuserfileI siEeHI12I ,J Gbr ,JGbr ,J Ginput typeHIsubmitI 6alueHIuploadI ,J G,formJ G,bodyJ G,htmlJ
Ingat untuk membuat sebuah form yang menyertakan uploading digunakanlah !or&'open'&ultipart56 agar form tersebut dapat meng.upload file yang kita sertakan di form. #ebelum disimpan, buatlah terlebih dahulu folder yang bernama uploadsa&ple di application0 12iews. 4emudian simpan source code diatas dengan nama !or&'upload.p"p dan simpan di folder uploadsa&ple. 0ntuk melihat "ujud dari 3iew diatas akseslah le"at 0RL berikut ini* http*,,localhost,pelatihanbasdat,inde=.php,uploadsample,
;1
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class 0ploadsample e=tends CIMController N .......................................................................................... public function prosesMupload'(N Vjudul H Vthis.Jinput.Jpost'LjudulL(S VconfigYLuploadMpathLZ H L.,upload,LS VconfigYLallo"edMtypesLZ H LgifXjpgXpngLS VconfigYLma=MsiEeLZ H L122LS VconfigYLma=M"idthLZ H L1213LS VconfigYLma=MheightLZ H L<;@LS Vthis.Jload.Jlibrary'LuploadL, Vconfig(S if 'KVthis.Jupload.JdoMupload'((N Verror H array'LerrorLHJVthis.Jupload.JdisplayMerrors'((S Vthis.Jload.J6ie"'Luploadsample,formMuploadL, Verror(S O else N VuploadMdata H Vthis.Jupload.Jdata'(S VuploadMdataYLjudulLZ H VjudulS Vdata H array'LuploadMdataL HJ VuploadMdata(S Vthis.Jload.J6ie"'Luploadsample,6ie"MuploadMsuccessL, Vdata(S O O O ,T End of file uploadsample.php T, ,T Location* .,application,controllers,uploadsample.php T,
ada source code diatas, +nda dapat melihat beberapa config dasar yang dibutuhkan untuk proses upload file. %i dalam config tersebut terdapat* upload'pat" untuk menentukan letak folder yang akan menyimpan file yang di.upload allowed't%pes untuk menentukan jenis file apa saja yang boleh di.upload &a4'siGe untuk menentukan ukuran maksimal file yang boleh di.upload &a4'widt" untuk menentukan lebar maksimal file yang boleh di.upload &a4'"eig"t untuk menentukan tinggi maksimal file yang boleh di.upload #etelah itu, config yang telah ditentukan akan dile"atkan kedalam proses pemanggilan library upload sebelum melakukan proses upload. 0ntuk memulai proses upload dilakukan dengan memanggil perintah upload01do'upload56. Aika berhasil maka +nda dapat memanggil upload0 1data56 untuk mendapatkakn data hasil upload yang mungkin dapat +nda simpan di database. #edangkan jika gagal, maka proses upload akan memberitahu kesalahan apa yang terjadi selama proses upload dan memperlihatkan error tersebut di form upload.
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;1 #ebelum mencoba form upload tersebut mari kita buat terlebih dahulu halaman sukses yang diperlukan untuk menampilkan data ) data dari file hasil upload*
GhtmlJ GheadJ GtitleJ%emo 0pload 5ileG,titleJ G,headJ GbodyJ Gh9J roses 0pload Berhasil KKKG,h9J GulJ GRphp foreach 'VuploadMdata as Vitem HJ V6alue(*RJ GliJGRphp echo VitemSRJ* GRphp echo V6alueSRJG,liJ GRphp endforeachS RJ G,ulJ GpJGRphp echo anchor'LuploadsampleL, LCoba lagi KL(S RJG,pJ G,bodyJ G,htmlJ
#impan source code diatas dengan nama 2iew'upload'success.p"p dan simpan di folder uploadsa&ple. $ari kita coba fitur upload ini dengan meng.upload foto yang +nda miliki. $ari kita lihat prosesnya*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;9
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;3
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;:
1I.Mena&(a"kan A:AJ
1I.1.$ersiapan Menggunakan A:AJ
+A+8 atau 2synchronous Ba3ascript and D-L merupakan fitur yang terdapat di standard pembangunan sebuah world wide web 'FFF(. %engan menggunakan +A+8, +nda tidak perlu memuat seluruh bagian halaman, cukup bagian tertentu saja yang dimuat ulang sesuai kebutuhan. %engan demikian +A+8 dapat menghemat beban pemuatan halaman web di sisi client. #alah satu kekurangan +A+8 adalah history yang tidak dapat dicatat ketika mengunjungi bagian ) bagian web. &idak seperti web tanpa +A+8 yang dapat menyimpan history +nda ketika mengunjungi halaman web tertentu. %an di percobaan kita kali ini akan digunakan +A+8 yang terdapat di A-uery. !al tersebut dipilih karena dengan A-uery, dapat meringkas "aktu pengembangan aplikasi web yang menggunakan +A+8. &entunya agar percobaan +A+8 ini lebih terlihat, maka diperlukanlah sebuah data yang disimpan di database untuk menampilkan data ) data di aplikasi web ber.+A+8. 4ita akan menggunakan tabel agenda yang terdapat di database pelati"an(asdat. 4ita akan mencoba membuat fitur lihat agenda, tambah agenda, dan cari agenda. %alam percobaan ini kita akan menggunakan model agenda'&odel yang sudah pernah digunakan sebelumnya. !anya saja kita akan menambahkan function yang digunakan untuk melakukan pencarian agenda. Berikut adalah source code yang digunakan untuk melakukan pencarian di tabel agenda*
GRphp class +gendaMmodel e=tends CIM$odel N .......................................................................................... ,, function yang digunakan oleh aja=sample * prosesMcariMagenda function selectMbyMnama'Vnama(N Vthis.Jdb.Jselect'LTL(S Vthis.Jdb.Jfrom'LagendaL(S Vthis.Jdb.Jlike'LnamaL, Vnama, LbothL(S return Vthis.Jdb.Jget'(S O O RJ
4emudian tentu kita memerlukan A-uery itu sendiri. %alam percobaan kita kali ini diperlukan j-uery.1.@.9.min.js. +nda dapat men.download#nya di http*,,j-uery.org. 4emudian buatlah folder dengan nama js di pelati"an(asdat 01 asset. %an taruhlah A-uery di dalam folder js.
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;;
4emudian kita harus membuat halaman utama untuk menampilkan menu dan daftar agenda. Berikut adalah source code dari halaman utama yang akan kita bangun*
GK%DC&W E htmlJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;<
GhtmlJ GheadJ GtitleJ%aftar !adir raktikumG,titleJ Gscript typeHIte=t,ja6ascriptI srcHIGRphp echo baseMurl'Lasset,js,j-uery.1.@.9.min.jsL(SRJIJG,scriptJ G,headJ GbodyJ Gh1J%aftar +gendaG,h1J Ga idHIsho".list.agendaI hrefHIja6ascript*6oid'2(IJLihat #emuaG,aJ X Ga idHIsho".form.tambah.agendaI hrefHIja6ascript*6oid'2(IJ&ambah +gendaG,aJ X Ga idHIsho".form.cari.agendaI hrefHIja6ascript*6oid'2(IJCari +gendaG,aJ Gbr ,JGbr ,J Gdi6 idHI6ie".formIJ G,di6J Gbr,J Gdi6 idHI6ie".list.agendaIJ G,di6J G,bodyJ Gscript typeHIte=t,ja6ascriptIJ V'document(.ready'function'(N ,, menampilkan semua list agenda saat pertama kali halaman utama diload V'I\6ie".list.agendaI(.load'LGRphp echo siteMurl'Laja=sample,lihatMagendaL(SRJL(S ,, menampilkan semua list ketika menu lihat agenda ditekan V'I\sho".list.agendaI(.click'function'(N V'I\6ie".formI(.empty'(S V'I\6ie".list.agendaI(.load'LGRphp echo siteMurl'Laja=sample,lihatMagendaL(SRJL(S O(S ,, menampilkan form tambah agenda V'I\sho".form.tambah.agendaI(.click'function'(N V'I\6ie".formI(.load'LGRphp echo siteMurl'Laja=sample,tambahMagendaL(SRJL(S O(S ,, menampilkan form cari agenda V'I\sho".form.cari.agendaI(.click'function'(N V'I\6ie".formI(.load'LGRphp echo siteMurl'Laja=sample,cariMagendaL(SRJL(S O(S O(S G,scriptJ G,htmlJ
#ebelum menyimpan source code diatas, buatlah terlebih dahulu folder yang bernama aja4sa&ple di application 01 2iews. 4emudian #impanlah source code diatas dengan nama 2iew'da!tar'agenda.p"p di folder aja4sa&ple. $ari kita simak beberapa bagian source code diatas* Bagian berikut merupakan cara untuk me.load A-uery ke dalam halaman web*
Gdi6 idHI6ie".formIJ
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
;@
G,di6J
,5docu&ent6.read%5!unction56786K digunakan untuk memulai membuka script A-uery ,5LM2iew0list0agendaL6.load5.NOp"p ec"o site'url5.aja4sa&ple/li"at'agenda.6KO1.6K digunakan untuk menambatkan tampilan li"at'agenda dari controller aja4sa&ple ke dalam komponen yang memiliki id 2iew0list0agenda ,5LMs"ow0list0agendaL6.click5!unction56786K digunakan untuk menangani e3ent klik pada komponen yang memiliki id s"ow0list0agenda
%an terakhir kita harus membuat 3iew yang berisi daftar agenda yang akan ditambatkan di halaman utama. Berikut adalah source code nya*
GRphp foreach 'VdaftarMagenda as Vagenda( NRJ GfieldsetJ Gh9JGRphp echo Vagenda.JnamaSRJG,h9J Gbr ,JGbr ,J GRphp echo Vagenda.JketeranganSRJ G,fieldsetJ Gbr ,J GRphp O RJ
#impan source code diatas dengan nama 2iew0list0agenda.p"p kemudian simpan di application 01 2iews 01 aja4sa&ple. #ekarang kita coba akses controller aja4sa&ple melalui 0RL berikut* http*,,localhost,pelatihanbasdat,inde=.php,aja=sample #ebelumnya kita memerlukan de3eloper tools tekan Ctrl P )"i!t P K jika +nda menggunakan 5irefo= atau tekan Ctrl P )"i!t P : jika +nda $enggunakan Chrome. $aka +nda akan melihat tampilan seperti berikut ini*
;7 $elihat lebih dalam apa yang terjadi ketika +A+8 dieksekusi di halaman web yang menggunakan +A+8*
:ambar 18.2 @alaman yang 0erhasil +imuat dengan 2B2D ;etika +iperiksa -enggunakan +e3eloper *ools pada 0rowser
:ambar 18. @alaman yang :agal +imuat dengan 2B2D ;etika +iperiksa -enggunakan +e3eloper *ools pada 0rowser
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<2
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class +ja=sample e=tends CIMController N .......................................................................................... ,, proses untuk mencari agenda public function cariMagenda'(N Vthis.Jload.J6ie"'Laja=sample,formMcariMagendaL(S O public function prosesMcariMagenda'(N Vnama H Vthis.Jinput.Jpost'LnamaL(S VdataYLdaftarMagendaLZ H Vthis.JagendaMmodel.JselectMbyMnama'Vnama(.Jresult'(S Vthis.Jload.J6ie"'Laja=sample,6ie"MlistMagendaL, Vdata(S O .......................................................................................... O ,T End of file aja=sample.php T, ,T Location* .,application,controllers,aja=sample.php T,
#etelah membuat function yang dibutuhkan, kini kita akan membuat form pencarian yang terdiri dari input teks dan tombol batal. 5nput teks ini digunakan untuk menampung kata kunci, sedangkan tombol batal digunakan untuk menutup form jika ingin membatalkan pencarian. 4emudian tombol batal akan dihubungkan dengan e3ent click56 yang akan melakukan penutupan form. !al ini ditangani oleh A-uery. #edangkan input teks dihubungkan dengan e3ent ke%up56 dan e3ent tersebut akan menangani proses penampilan hasil data yang hasilnya akan dimuat ke komponen di2 yang mempunyai id 2iew0list0agenda. Berikut adalah source code dari form pencarian berbasis +A+8*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<1
GfieldsetJ Gform actionHII methodHI D#&IJ ?ama * Ginput idHIinput.namaI typeHIte=tI nameHInamaI siEeHI122I,J Ginput idHIbtn.form.closeI typeHIbuttonI 6alueHIBatalI ,J G,formJ G,fieldsetJ Gscript typeHIte=t,ja6ascriptIJ ,, menutup form ketika tidak akan digunakan V'I\btn.form.closeI(.click'function'(N V'L\6ie".formL(.html'LL(S O(S ,, melakukan proses pencarian ketika mengetikkan nama agenda V'L\input.namaL(.keyup'function'(N 6ar nama H V'L\input.namaL(.6al'(S V.aja='N type*I D#&I, url*IGRphp echo siteMurl'Laja=sample,prosesMcariMagendaL(SRJI, data*LnamaHLBnama, success*function'html(N V'L\6ie".list.agendaL(.html'html(S O O(S O(S G,scriptJ
#impanlah source code diatas dengan nama !or&'cari'agenda.p"p kemudian simpan di application 01 2iews 01 aja4sa&ple. 4emudian coba tampilkan form tersebut dan cobalah mencari salah satu agenda yang sudah disimpan di database. Berikut adalah contoh penggunaan dari form pencarian berbasis +A+8 *
<1
GRphp if ' K defined'LB+#E +&!L(( e=it'L?o direct script access allo"edL(S class +ja=sample e=tends CIMController N .......................................................................................... ,, proses untuk memproses tambah agenda public function tambahMagenda'(N Vthis.Jload.J6ie"'Laja=sample,formMtambahMagendaL(S O public function prosesMtambahMagenda'(N VdataYLnamaLZ H Vthis.Jinput.Jpost'LnamaL(S VdataYLketeranganLZ H Vthis.Jinput.Jpost'LketeranganL(S Vthis.JagendaMmodel.JinsertMagenda'Vdata(S O
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<9
.......................................................................................... O ,T End of file aja=sample.php T, ,T Location* .,application,controllers,aja=sample.php T,
&entunya form tambah agenda akan digunakan sebagai antarmuka antara user dan sistem. Bila pada cara tanpa +A+8 kita memerlukan atribut action di dalam tag !or&. 4ini hal tersebut ditangani oleh +A+8 A-uery sehingga tidak perlu terjadi proses memuat ulang seluruh halaman web. Form tambah agenda akan memproses tambah agenda ketika terjadi e3ent su(&it56. (3ent tersebut akan terjadi ketika user menekan tombol submit. %engan menggunakan +A+8, data akan dikirimkan terlebih dahulu ke function yang dituju di controller kemudian jika hal tersebut berhasil maka lakukan aksi terkait saat proses tambah agenda berhasil. %alam hal ini jika proses tambah agenda berhasil maka daftar agenda akan dimuat ulang. Berikut adalah source code dari form tambah agenda*
GfieldsetJ Gform idHIform.tambah.agendaIJ ?ama * Ginput nameHInamaI siEeHI122I,J Gbr,JGbr,J 4eterangan * Gbr,JGte=tarea nameHIketeranganI colsHI@9I ro"sHI:IJG,te=tareaJ Gbr,JGbr,J Ginput typeHIsubmitI 6alueHI&ambahI ,J Ginput idHIbtn.form.closeI typeHIbuttonI 6alueHIBatalI ,J G,formJ G,fieldsetJ Gscript typeHIte=t,ja6ascriptIJ V'document(.ready'function'(N ,, menutup form ketika tidak akan digunakan V'I\btn.form.closeI(.click'function'(N V'L\6ie".formL(.html'LL(S O(S ,, melakukan proses tambah agenda ketika tombol ditekan V'L\form.tambah.agendaL(.submit'function'(N V'L\6ie".formL(.empty'(S V.aja='N type*L D#&L, url*IGRphp echo siteMurl'Laja=sample,prosesMtambahMagendaL( RJI, data*V'this(.serialiEe'(, success*function 'data( N V'L\6ie".list.agendaL(.load'IGRphp echo siteMurl'Laja=sample,lihatMagendaL( RJI(S O, error*function 'data(N V'L\6ie".list.agendaL(.html'LGh1J enambahan agenda gagal KKG,h1JL(S O O(S return falseS O(S O(S
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<3
G,scriptJ
#impan source code diatas dengan nama !or&'ta&(a"'agenda.p"p dan taruh di folder application 01 2iews 01 aja4sa&ple . 4emudian coba akses form tersebut melalui menu ta&(a" agenda dan cobalah buat agenda baru*
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227
<:
elatihan CodeIgniter 1213 oleh Lab Basis %ata Ilmu 4omputer 5akultas endidikan $atematika dan Ilmu engetahuan +lam, 0ni6ersitas endidikan Indonesia %okumen ini disusun oleh Rid"an 5adjar #eptian, Ilmu 4omputer 1227