Anda di halaman 1dari 84

Website Intermediet 2009 PHP&MySQL

By KPOS Jurusan Fisika FMIPA UNNES

PHP
I.

Pengenalan

P HP

A. Apa itu PHP ? PHP merupakan singkatan dari "PHP: Hypertext Preprocessor", adalah sebuah bahasa scripting yang terpasang pada HTML. Sebagian besar sintaks mirip dengan bahasa , !a"a dan Perl, ditambah beberapa #ungsi PHP yang spesi#ik. Tu$uan utama bahasa ini adalah untuk memungkinkan perancang %eb menulis halaman %eb dinamik dengan cepat . B. Bagaimana PHP beke rjasama dengan HTML Halaman %eb biasanya disusun dari kode&kode html yang disimpan dalam sebuah #ile berekstensi .html. 'ile html ini dikirimkan oleh ser"er (atau #ile) ke bro%ser, kemudian bro%ser menter$emahkan kode&kode tersebut sehingga menghasilkan suatu tampilan yang indah. Lain halnya dengan program php, program ini harus diter$emahkan oleh %eb&ser"er sehingga menghasilkan kode html yang dikirim ke bro%ser agar dapat ditampilkan. Program ini dapat berdiri sendiri ataupun disisipkan di antara kode&kode html sehingga dapat langsung ditampilkan bersama dengan kode&kode html tersebut. Program php dapat ditambahkan dengan mengapit program tersebut di antara tanda *+ dan +,. Tanda&tanda tersebut biasanya disebut tanda untuk escaping (kabur) dari kode html. 'ile html yang telah dibubuhi program php harus diganti ekstensi&nya men$adi .php. Salah satu #aktor yang membuat PHP men$adi sangat populer sebagai bahasa skrip dalam pembuatan aplikasi berbasis %eb dan situs %eb dinamis adalah karena bahasa ini mendukung demikian banyak sistem basis data, mulai dari mS-L, MyS-l, MS&S-L, MS&.ccess, PostgreS-L, bahkan sampai /racle. 'ungsi&#ungsi untuk mempermudah pengaksesan berbagai $enis basis data tersebut tersedia lebih dari cukup pada PHP, sehingga meringankan, menyederhakanan, serta mempercepat proses pengembangan aplikasi berbasis %eb. MyS-L memberikan hasil yang optimal dari sisi kecepatan dan reliabitas mana$emen data. Si#atnya yang open&source menyebabkan MyS-L berkembang secara pesat dan digunakan begitu banyak pengguna yang tidak ingin membuang dana begitu besar untuk sebuah sistem basis data seperti $ika menggunakan sistem basis data komersial . 0ntuk penggunaan pada $umlah data skala medium ke ba%ah, MyS-L memang pas, apalagi ditambah ketersediaan MyS-L pada berbagai plat#orm populer seperti Linux, 'ree1S2, dan MS 3indo%s 4x56T57888. Produk open source lain dalam beberapa hal lebih unggul, misalnya PostgreS-L yang mampu men$amin integritas data dan dapat digunakan

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

untuk $umlah data skala besar, namun keterbatasan plat#orm pendukungnya sangat berpengaruh terhadap populari tasnya. Saat MyS-L tanpa perlu modul tambahan. ini, PHP secara built&in telah mendukung

II.
2alam bagian ini,

Dasar Dasar PHP


kita akan membuat kode program sederhana untuk

menun$ukkan bagaimana aplikasi PHP beker$a. 9ita membutuhkan satu #ile yang akan kita namakan %elcome.php A. Sour e ode 'ile %elcome.php akan berisi tiga baris kode sebagai berikut : !? e "o #$Hallo user .. %&'( ?) B. *ompile 9ode program pada mengkompile kode ini. *. Deplo+ 0ntuk mendeploy, copy #ile %elcome.php ke dalam #older percobaan yang telah disiapkan pada bagian instalasi di atas. D. ,rror message 9ode di atas akan mengalami error, karena kita terlalu banyak menulis tanda ). Pesan error akan muncul di layar, menun$ukkan lokasi error pada kode, dan tipe errornya. ,. -utput Perbaiki kode %elcome.php sehingga men$adi seperti berikut ini: !? e "o #$.el ome to m+ /ebsite .. %&'( ?) kode akan dapat di$alankan dengan baik dan menghasilkan output sebagai berikut : umumnya akan mengalami proses kompilasi setelah source code selesai dibuat. Tetapi karena PHP adalah interpreted language, kita tidak perlu

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

III.
A. Statement

Statement dan *omment

Statement adalah satuan perintah dalam PHP. Statement harus diakhiri dengan tanda semicolon5titik&koma (:). ontoh statement : e "o $"ello user 0 %&( ontoh lainnya : , "o $1 2 3 4 & . 123( B. ,5pression Expression adalah satu bagian kecil kode yang akan dihitung hasilnya oleh php. ontoh expression : 123 Penggunaan expression : e "o 123( *. *omment omment adalah bagian dari kode yang tidak dieksekusi5di$alankan. menulis comment : comment satu baris dan comment banyak baris. di$alankan oleh interpreter. ontoh penggunaan: omment dibuat untuk memper$elas atau memberi keterangan pada kode program. .da dua cara omment satu baris dibuat dengan menggunakan tanda 55. Semua statement yang ada di kanan 55 tidak

e "o#$1 2 3 4 & . 123'( 66 menampilkan "asil 1 2 3 omment banyak baris dibuat dengan menggunakan pasangan 5; dan ;5. Semua tulisan yang dibuat di antara tanda tersebut tidak akan dieksekusi oleh interpreter. ontoh penggunaan : 67 kode ini akan menampilkan "asil dari 123 76 e "o#$1 2 3 4 & . 123'(

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

I8. 8ariabel dan Tipe Data


<ariabel digunakan sebagai tempat penyimpanan data sementara. 2ata yang disimpan dalam "ariabel akan hilang setelah program selesai dieksekusi. 0ntuk penyimpanan data yang permanen, kita dapat menyimpan data di database atau di disk. Silahkan mengacu pada .kses 2atabase untuk mendalami penggunaan database, dan akses 'ile dan 'older untuk penyimpanan data di #ilesystem. <ariabel di PHP dia%ali dengan tanda =. 0ntuk dapat menggunakan "ariabel, ada dua langkah yang harus dilakukan, deklarasi dan inisialisasi. A. Deklarasi 9ariabel 2eklarasi "ariabel bisa disebut $uga memperkenalkan atau menda#tarkan "ariabel ke dalam program. 2alam php, deklarasi "ariabel seringkali digabung dengan inisialisasi. <ariabel dalam PHP dinyatakan dengan a%alan =. ontoh : :namaPembeli :jumla"Barang :"arga .da beberapa aturan yang diikuti berkenaan dengan penggunaan nama "ariabel. .turan pemberian nama "ariabel :

2imulai dengan tanda = 9arakter pertama harus huru# atau garis ba%ah ( > ) 9arakter berikutnya boleh huru#, angka, atau garis ba%ah.

B. Inisialisasi 9ariabel ?nisialisasi "ariabel adalah mengisi nilai untuk pertama kalinya ke dalam "ariabel. ontoh inisialisasi : :namaDepan 4 $Imam&( :namaBelakang 4 $Tau;ik&( :jumla"Barang 4 <( :"arga 4 =>>>( *. Tipe data 2alam bahasa pemrograman yang lain, ada bermacam&macam tipe data, misalnya integer (bilangan bulat), #loat (bilangan pecahan), char (karakter angka dan huru#), string(kumpulan huru# atau kata), dan berbagai tipe lainnya. PHP mengenal dua tipe data

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

sederhana: numerik dan literal. 2itambah dengan dua tipe data yang tidak sederhana, yaitu array dan ob$ect. Tipe 6umerik dapat menyimpan bilangan bulat. PHP mampu menyimpan data bilangan bulat dengan $angkauan dari &7 milyar sampai @7 milyar. ontoh bilangan bulat: A, B, 78. Selain itu, tipe numerik $uga digunakan untuk menyimpan bilangan pecahan Tipe literal digunakan untuk menyimpan data berupa kumpulan huru#, kata, dan angka. Tipe boolean, yang dikenal dalam bahasa program yang lainnya, tidak ada dalam PHP. 0ntuk mengu$i benar salah (true #alse), kita menggunakan tipe data yang tersedia. '.LSC dapat digantikan oleh integer 8, double 8.8 atau string kosong, yaitu "". Selain nilai itu, semua dianggap TD0C. <ariabel dapat digunakan untuk menyimpan berbagai $enis data. Misalnya data numerik yang dapat dioperasikan secara matematika. ontoh : :jumla"Barang 4 <( :"arga 4 =>>>( :pemba+aran 4 :jumla"Barang 7 :"arga( pada contoh di atas, "ariabel pembayaran akan menyimpan nilai A888. Sedangkan data non numerik (disebut $uga data literal) tidak dapat dioperasikan secara matematika. :nama 4 :namaDepan 2 :namaBelakang( "ariabel nama akan menyimpan gabungan dari dua "ariabel, yaitu E?mam Tau#ikF. Secara umum, data literal ditandai dengan pasangan E dan E. 2ata numerik tidak dikelilingi oleh E dan E. Tetapi biasanya PHP akan secara otomatis mengubah tipe data sesuai kebutuhan. ontoh : ontoh :

:jalan 4 $?ubeng @ertaja+a&( :noAuma" 4 BC( :blok 4 1 ( :jumla"Peng"uni 4 <( :alamat 4 :jalan 2 :noAuma"( :"asil 4 :noAuma" 2 :jumla"Peng"uni( :"asilAne" 4 :blok 2 :noAuma"( Pada sampel kode di atas, "ariabel alamat akan menyimpan nilai Gubeng 9erta$aya 74. PHP secara otomatis mengubah tipe data "ariabel noDumah (numerik) men$adi literal. <ariabel alamat akan bertipe literal. <ariabel hasil akan menyimpan nilai A7, yaitu pen$umlahan dari 74 dan A. Perhatikan, kon"ersi otomatis ini kadang ber$alan secara tidak semestinya. ?ni dapat dilihat dari "ariabel hasil .neh yang akan menyimpan nilai B. PHP
Disajikan Dalam Pelatihan Pembuatan ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

mengambil nilai numerik dari "ariabel blok, yaitu H, kemudian menambahkannya dengan isi "ariabel $umlahPenghuni. Hasil akhirnya adalah H @ A, yaitu B. D. Passing 8ariable <ariabel dapat di&passing atau diteruskan ke halaman %eb berikutnya yang diakses user. .da beberapa teknik untuk meneruskan "ariabel, diantaranya :

Melalui 0DL Melalui 'orm Melalui ookie

=. DAL <ariabel diteruskan melalui 0DL dengan #ormat sbb Ealamat /ebF?9ar=4nilai=G9arB4nilaiB Misalnya, untuk memberikan "ariabel =nama berisi E?mamF dan =alamat I EPemalangF ke %elcome.php, kita akan menulis : /el ome.p"p?nama4ImamGalamat4Pemalang alamat ini akan terlihat di kolom address. 0ntuk lebih $elasnya, perhatikan gambar berikut.

<ariabel ini dapat diakses di script %elcome.php dengan cara sebagai berikut : !? e "o#$8ariabel H:user berisi I :user&'( e "o#$8ariabel H:alamat berisi I :alamat&'( ?)

2. Jorm
ara lain untuk mengirim kedua "ariabel tersebut adalah dengan menggunakan #orm dengan kode sebagai berikut :

!"tml) !"ead)

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

!title)Passing 8ariable!6title) !6"ead) !bod+) !;orm met"od4KP-STK a tion4K/el ome.p"pK) !p)Lama I !input t+pe4Kte5tK name4Knama&)!6p) !p)Alamat I !input t+pe4Kte5tK name4KalamatK)!6p) !p)!input t+pe4KsubmitK 9alue4KSubmitK name4KB=K)!6p) !6;orm) !6bod+) !6"tml) dan tampilan sebagai berikut :

#orm tersebut akan diproses oleh #ile %elcome.php

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

8.

-perators

/perator digunakan untuk memanipulasi nilai suatu "ariabel. <ariabel yang nilainya dimodi#ikasi oleh operator disebut operand. ontoh penggunaan operator misalnya JA & A. JA dan A adalah operand. Tanda "&" disebut operator. 0ntuk kemudahan pen$elasan, operator diklasi#ikasikan men$adi :

.rithmetic /perator .ssignment /perator omparison /perator Logical /perator Lain&lain

A. Arit"meti operator .rithmetic /perator digunakan untuk melakukan perhitungan matematika. Misalnya :a 4 3 2 <( /perator "@" ber#ungsi untuk menambahkan kedua operand (K dan A). .da beberapa arithmetic operator, yaitu :

@ : pen$umlahan & : pengurangan ; : perkalian 5 : pembagian L : nilai sisa pembagian

B. Aelational operator Delational operator digunakan untuk membandingkan nilai dari dua operand. Hasil perbandingan dinyatakan dalam nilai boolean. TD0C berarti benar, dan '.LSC berarti salah. 1eberapa $enis relational operator :

II : memeriksa apakah operand kanan bernilai sama dengan operand kiri , : memeriksa apakah operand kiri bernilai lebih besar daripada operand kanan

* : memeriksa apakah operand kiri bernilai lebih kecil dengan operand kanan ,I : memeriksa apakah operand kiri bernilai lebih besar atau sama

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

dengan operand kanan

*I : memeriksa apakah operand kiri bernilai lebih kecil atau sama dengan operand kanan MI : memeriksa apakah operand kanan tidak bernilai sama dengan operand kiri

*. Logi al operator Logical /perator digunakan untuk membandingkan dua nilai "ariabel yang bertipe boolean. Hasil yang didapat dari penggunaan logical operator adalah boolean. Tabel logika berikut digunakan sebagai pedoman perhitungan /perand kiri TD0C TD0C '.LSC '.LSC TD0C TD0C '.LSC '.LSC TD0C TD0C '.LSC '.LSC M M /perator NN NN NN NN OO OO OO OO Por Por Por Por 6ot 6ot 6ama .nd .nd .nd .nd /r /r /r /r Cxclusi"e /r Cxclusi"e /r Cxclusi"e /r Cxclusi"e /r /perand kanan TD0C '.LSC TD0C '.LSC TD0C '.LSC TD0C '.LSC TD0C '.LSC TD0C '.LSC TD0C '.LSC Hasil TD0C '.LSC '.LSC '.LSC TD0C TD0C TD0C '.LSC '.LSC TD0C TD0C '.LSC '.LSC TD0C

D. Assignment -perator .ssignment operator digunakan untuk memberi5mengisi nilai ke dalam "ariabel tertentu. ontoh sederhana : :nama 4 KimamK( Pada contoh di atas, operator "I" digunakan untuk mengisi nilai "imam" ke dalam "ariabel nama.

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

Selain operator "I", ada beberapa assignment operator yang lainnya, seperti dapat dilihat pada pen$elasan berikut :

1. -perator 24
Pen$elasan : Menambahkan nilai pada "ariabel ontoh : :a 24 <( sama dengan :a 4 :a 2 <(

2. -perator M4
Pen$elasan : Mengurangi nilai pada "ariabel ontoh : :a M4 <( sama dengan :a 4 :a M <(

3. -perator 74
Pen$elasan : Mengalikan "ariabel dengan bilangan tertentu ontoh : :a 74 <( sama dengan :a 4 :a 7 <(

4. -perator 64
Pen$elasan : Membagi "ariabel dengan bilangan tertentu ontoh : :a 64 <( sama dengan :a 4 :a 6 <(

5. -perator N4

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

Pen$elasan : Mencari sisa hasil bagi "ariabel dengan bilangan tertentu ontoh : :a N4 <( sama dengan :a 4 :a N <(

6. -perator G4
Pen$elasan : Melakukan operasi logical .62 pada "ariabel ontoh : :a G4 TAD,( sama dengan :a 4 :a G TAD,(

7. -perator O4
Pen$elasan : Melakukan operasi logical /D pada "ariabel ontoh : :a O4 JALS,( sama dengan :a 4 :a O JALS,(

8. -perator P4
Pen$elasan : Melakukan operasi bit%ise xor pada "ariabel ontoh : :a P4 <( sama dengan :a 4 :a P <(

9. -perator .4
Pen$elasan : Menambahkan String pada "ariabel ontoh : :a .4 $rudi&( sama dengan

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

:a 4 :a . $rudi&(

10.-perator 22
Pen$elasan : Menambahkan nilai satu pada "ariabel ontoh : :a 22 ( sama dengan :a 4 :a 2 =(

11.-perator MM
Pen$elasan : Mengurangi nilai satu pada "ariabel ontoh : :a MM ( sama dengan :a 4 :a M =( ,. -perator lainMlain

1. /perator penggabung String


Pada penggunaan : :string= 4 KHelloK( :stringB 4 K.orldK( e "o#:string=.K K.:stringB'( akan menampilkan : Hello .orld PHP, string digabungkan dengan operator . (titik). ontoh

2. /perator percabangan
Percabangan pada umumnya dilakukan dengan struktur i#&else, seperti pada contoh berikut:

i;#:user 44 KimamK'Q e "o#K.el ome ImamK'(

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

RelseQ e "o#K.rong usernameK'( R

Hal yang sama dapat dilakukan dengan cara : e "o#:user 44 imam ? K.el ome ImamK I K.rong usernameK'(

Perhatikan tanda + dan : PHP memeriksa apakah pernyataan di sebelah kiri "+" benar atau salah. .pabila benar, pernyataan di sebelah kiri tanda ":" dieksekusi. 1ila salah, pernyataan di sebelah kanan ":" dieksekusi. Lebih $elas tentang percabangan dapat dipela$ari dalam bagian ontrol 'lo%.

3. /perator Crror Suppression


PHP menampilkan pesan error apabila built&in #unction (#unction yang disediakan PHP) mengalami error. Misalnya tidak bisa membuka #ile, tidak bisa mengakses database, dan lainnya. Pada saat pembuatan aplikasi, pesan error ini sangat membantu dalam menyelesaikan dan memperbaiki kesalahan pemrograman. Tetapi, pada saat aplikasi selesai dibuat dan digunakan secara umum, pesan error ini akan mengganggu pengguna. 0ntuk mematikan pesan error tersebut, kita menggunakan operator Q. ontoh penggunaan : S "dir#KtempK'( Pada kondisi normal, #unction chdir akan menimbulkan pesan error apabila direktori temp tidak ditemukan atau tidak dapat diakses. 2engan menggunakan operator Q, PHP akan "diam sa$a" apabila direktori temp tidak ditemukan atau tidak dapat diakses.

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

8I. *ontrol Jlo/


ontrol #lo% dalam bahasa ?ndonesia dapat diartikan sebagai aliran

kendali. Maksud sebenarnya dari control #lo% adalah bagaimana urutan eksekusi perintah di dalam program. Misalnya, dalam #unction : ;un tion testJlo/#' Q int a 4 3( e "o#a'( R

Perintah pertama yang di$alankan adalah mengisi nilai K ke dalam "ariabel a. Perintah kedua yang di$alankan adalah menampilkan nilai yang tersimpan dalam "ariabel a (dalam hal ini K) ke bro%ser. ontrol #lo% di atas merupakan sebuah contoh sederhana. 1eberapa control #lo% yang tersedia dalam PHP :

o o o

Percabangan (branching) Perulangan (looping) Perpindahan ($umping)

A. Per abangan Percabangan, atau sering disebut $uga dengan istilah decision&making, memungkinkan aplikasi untuk memeriksa isi suatu "ariabel atau hasil perhitungan ekspresi dan mengambil tindakan yang sesuai. .da dua $enis percabangan, dipilih berdasarkan kriteria pemeriksaan dan $umlah pilihan yang tersedia.

1. i; else
9onstruksi i#&else dapat di$elaskan sebagai berikut : i;# ondition' Q 66 statement = goes "ere R else

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

Website Intermediet 2009 PHP&MySQL


By KPOS Jurusan Fisika FMIPA UNNES

Q 66 statemant B goes "ere R 66 statement < goes "ere .liran program : J. ondition akan diperiksa 7. 1ila bernilai true, statement J akan di$alankan A. 1ila bernilai #alse, statement 7 akan di$alankan H. Statement A di$alankan

2. i; M elsei; M else
0ntuk pilihan yang lebih dari dua, PHP menyediakan konstruksi i#&elsei#& else. i;# ondition=' Q 66 statement = R elsei;# onditionB' Q 66 statement B R else Q 66 statement < R 66 statement 1 .liran program : .da A kemungkinan aliran program :

.pabila condition J bernilai true : J. Statement J di$alankan 7. Statement H di$alankan

.pabila condition J bernilai #alse, dan condition 7 bernilai true : J. Statement 7 di$alankan 7. Statement H di$alankan

Disajikan Dalam Pelatihan Pembuatan

ebsite Interme!iet Di "AB. FISIKA K#m$utasi FMIPA UNNES

.pabila condition J dan condition 7 bernilai #alse : J. Statement A di$alankan 7. Statement H di$alankan ontoh penggunaan i#&else dapat dilihat dengan mengikuti contoh di ba%ah.

1uatlah dua #ile, control>#lo%.htm dan i#2emo.php. control>#lo%.htm mempunyai tampilan sebagai berikut :

i#2emo.php berisi listing kode sebagai berikut : !? 66 i;Demo.p"p 66 digunakan bersama ontrolT;lo/."tm :kelabu 4 KU<><><>K( :puti" 4 KUJJJJJJK( i;#:kelamin= 44 KPriaK'Q :latar= 4 :kelabu( RelseQ :latar= 4 :puti"( R i;#:kelaminB 44 KPriaK'Q

:latarB 4 :kelabu( RelseQ :latarB 4 :puti"( R i;#:kelamin< 44 KPriaK'Q :latar< 4 :kelabu( RelseQ :latar< 4 :puti"( R i;#:kelamin1 44 KPriaK'Q :latar1 4 :kelabu( RelseQ :latar1 4 :puti"( R :output 4 K !table border4=) !tr) !td ba kground4:latar=):nama=!6td) !6tr) !tr) !td ba kground4:latarB):namaB!6td) !6tr) !tr) !td ba kground4:latar<):nama<!6td) !6tr) !tr) !td ba kground4:latar1):nama1!6td) !6tr) !6table) K( e "o#:output'( ?)

3. s/it " ase


konstruksi s%itch dapat di$elaskan sebagai berikut : s/it "#a'Q ase =( 66 statement = goes "ere break( ase B(

66 statement B goes "ere break( ase <( 66 statement < goes "ere break( de;ault( 66 statement 1 goes "ere break( R 66 statement 3 goes "ere

.liran program : J. <ariabel a diperiksa 7. Statement dieksekusi a) .pabila a II J, statement J di$alankan b) .pabila a II 7, statement 7 di$alankan c) .pabila a II A, statement A di$alankan d) .pabila a tidak memenuhi 7a & 7c, statement H di$alankan A. Statement K di$alankan 9ey%ord break memegang peranan penting di sini. 'ungsinya adalah mencegah #all&through, bandingkan dengan program berikut(break di baris ke K dihilangkan) s/it "#a'Q ase =( 66 statement = goes "ere ase B( 66 statement B goes "ere break( ase <( 66 statement < goes "ere break( de;ault( 66 statement 1 goes "ere break( R

.liran program : J. "ariabel a diperiksa

.pabila a II J, statement J di$alankan, kemudian men$alankan statement 7. .pabila a II 7, statement 7 di$alankan

.pabila a II A, statement A di$alankan .pabila a tidak memenuhi 7a & 7c, statement H di$alankan

A. Statement K di$alankan Perbedaan ada pada langkah 7a. 1andingkan dengan listing pertama. 0ntuk melihat contoh penggunaan s%itch R case, tambahkan tampilan pada control>#lo%.htm men$adi seperti gambar di ba%ah.

1uat #ile s%itch2emo.php sebagai berikut : !? s/it "#:bulan'Q ase = I ase < I ase 3 I ase V I ase W I ase => I ase =B I :"ari 4 <=( break( ase 1 I ase X I ase W I ase == I

:"ari 4 <>( break( ase B I i;##:ta"unN1' 44 >'Q :"ari 4 BC( RelseQ :"ari 4 BW( R R e "o#K!"B)Yumla" "ari pada bulan :bulan ta"un :ta"un 4 :"ari "ari!6"B)K'( ?) B. Perulangan #Looping' =. ;or Looping dengan #or disebut $uga determinate loop, artinya looping yang $umlah pengulangannya (iterasi) telah ditentukan di a%al looping. .da beberapa bagian penting dari #or loop: ?nitialiSation expression Stop condition ?terati"e expression Loop body Cxpression di$alankan satu kali, diperiksa dieksekusi. nilainya 1agian sebelum setiap pada saat looping dimulai.

?nitialiSation condition iterasi

1iasanyabagian ini digunakan untuk menginisialisasi counter(penghitung). Stop iterasi dieksekusi. .pabila dilakukan setelah condition bernilai #alse, iterasi dihentikan. ?terati"e expression

ini biasanya digunakan untuk menambah nilai

counter. Loop body dieksekusi sekali setiap iterasi, merupakan perintah yang ingin kita lakukan berulang&ulang.ontoh kode di atas akan menampilkan tulisan Hello 3orld di bro%ser sebanyak J8 kali. 0ntuk melihat contoh penggunaan #or, tambahkan tampilan pada control>#lo%.htm men$adi seperti gambar di ba%ah.

Pasang baris kode berikut pada #or2emo.php !? :jumla" 4 >( ;or#:i4>( :i!strlen#:kata'( :i22'Q i;#substr#:kataZ :iZ =' 44 :"uru;'Q :jumla" 22( R R ?)

2. /"ile
%hile loop $uga dikenal dengan istilah indeterminate loop, artinya $umlah loopingnya tidak ditentukan pada a%al looping. %hile loop lebih sederhana daripada #or loop, karena cuma memiliki dua bagian:

%. Stop ondition &. Loop body


Stop condition diperiksa sebelum tiap iterasi dilaksanakan. Selama stop condition bernilai true, perintah dalam loop body akan dilakukan berulang& ulang. ?terasi akan dihentikan apabila stop condition bernilai #alse. Sama seperti pada #or loop, loop body dilaksanakan satu kali setiap iterasi. Loop di atas akan ber$alan terus tanpa henti, karena tidak ada perintah yang mengubah

nilai stop condition. do&%hile

loop

merupakan

modi#ikasi

dari

%hile

loop.

1entuknya dapat dilihat pada sampel kode berikut:

doQ 66 some statement R /"ile #a 44 true' untuk melihat contoh penggunaan %hile, gunakan #orm yang sama dengan #or2emo. Tambahkan baris kode berikut pada %hile2emo.php !? :jumla" 4 >( :i 4 >( /"ile#:i!strlen#:kata''Q i;#substr#:kataZ :iZ =' 44 :"uru;'Q :jumla" 22( :i22( R R ?) *. Perpinda"an

1. break
1reak digunakan dalam looping untuk menghentikan suatu loop. 0ntuk lebih $elasnya, perhatikan kode berikut : !? 66 melakukan break pada :i 44 B ;or#:i 4 >( :=!3( :i22'Q i;#:i 44 B'Q break( R e "o#KLilai i I :i !br)K'( R e "o#$Loop Selesai&'( ?) kode tersebut akan melakukan break pada saat i bernilai 7, sehingga akan menghasilkan output sebagai berikut :

Lilai i I > Lilai i I = Loop Selesai

2.

ontinue

continue ber#ungsi untuk mele%ati satu iterasi5putaran dalam rangkaian loop. 0ntuk lebih $elasnya, kode di atas akan kita modi#ikasi. !? 66 melakukan ontinue pada :i 44 B ;or#:i 4 >( :=!3( :i22'Q i;#:i 44 B'Q ontinue( R e "o#KLilai i I :i !br)K'( R e "o#KLoop SelesaiK'( ?) kode tersebut akan melakukan break pada saat i bernilai 7, sehingga akan menghasilkan output sebagai berikut : Lilai i I > Lilai i I = Lilai i I < Lilai i I 1 Loop Selesai <. return perintah return ber#ungsi untuk memerintahkan kode untuk keluar dari #ungsi. 'ungsi akan kita pela$ari dengan lebih mendalam pada bagian selan$utnya. 0ntuk sementara, #ungsi cuma akan digunakan untuk men$elaskan return. Perhatikan kode di ba%ah : !? ;un tion testAeturn#'Q ;or#:i 4 >( :=!3( :i22'Q 66 melakukan return pada :i 44 B i;#:i 44 B'Q return( R e "o#KLilai i I :i !br)K'( R

e "o#KLoop SelesaiK'( R 66 jalankan ;un tion testAeturn#'( e "o#KJun tion selesaiK'( ?) outputnya adalah : Lilai i I > Lilai i I > Jun tion Selesai

Perhatikan bah%a Loop Selesai tidak di$alankan. ?ni menun$ukkan bah%a setelah return dieksekusi, program langsung keluar dari #unction dan mengeksekusi perintah setelah #unction, yaitu e "o#$Jun tion Selesai&'(

1. e5it exit digunakan untuk menghentikan keseluruhan script php. 0ntuk lebih $elasnya, kita akan modi#ikasi kode di atas men$adi seperti berikut : !? ;un tion test,5it#'Q ;or#:i 4 >( :=!3( :i22'Q 66 melakukan return pada :i 44 B i;#:i 44 B'Q e5it( R e "o#KLilai i I :i !br)K'( R e "o#KLoop SelesaiK'( R 66 jalankan ;un tion test,5it#'( e "o#KJun tion selesaiK'( ?)

outputnya adalah : Lilai i I > Lilai i I > Jun tion Selesai Perhatikan bah%a baris e "o#KJun tion selesaiK'( Tidak di$alankan. 0ntuk melihat contoh penggunaan break, continue, return, dan exit: tambahkan tampilan pada control>#lo%.htm men$adi seperti gambar di ba%ah.

Tambahkan baris kode berikut pada perpindahan.php !? 67 9ariabel +ang dibutu"kan :mark M) tempat dilakukan perpinda"an :perinta" M) perinta" pinda" I ontinueZ breakZ returnZ e5it 76 ;un tion e5e ute#:tandaZ :perinta"'Q ;or#:i4>( :i!==( :i22'Q i;#:i 44 :tanda'Q i;#:perinta" 44 K ontinueK'Q

ontinue( Relsei;#:perinta" 44 KbreakK'Q break( R elsei;#:perinta" 44 KreturnK'Q return( Relsei;#:perinta" 44 Ke5itK'Q e5it( R R e "o#:i.K!br)K'( R e "o#KLooping Selesai!br)K'( R e5e ute#:tandaZ :perinta"'( e "o#KJun tion e5e ute selesai!br)K'( ?

8II. Jun tion


A. @onsep ;un tion 'unction adalah kumpulan beberapa statement yang dibuat dengan tu$uan menyelesaikan satu tugas tertentu. B. Aeturn 9alue dan parameter Perhatikan kode berikut : ;un tion add#:aZ :b'Q return :a 2 :b( R 'unction sederhana di atas akan menerima masukan berupa dua angka. 9emudian kedua angka tersebut akan di$umlahkan, dan hasilnya dikembalikan kepada pemanggil #unction. 6ilai yang dikembalikan tersebut disebut return "alue. Sedangkan nilai yang imasukkan ke dalam #unction (=a dan =b) disebut parameter.

*. Deklarasi ;un tion .da beberapa hal utama yang perlu diperhatikan dalam deklarasi #unction pada PHP. nama #unction parameter #unction body

ontoh #unction: = < 1 3 X V W C ;un tion jumla"kanla"#int 5Z Q [ 4 5 2 +( int +' R ;un tion addLumber#:5Z :+' [ 4 5 2 +( e "o#['( B Q

=> return [( == R

Perhatikan contoh #unction add6umber di atas. 1aris satu merupakan deklarasi #unction. deklarasi berisi : & key%ord #unction & nama #unction & parameter Parameter adalah nilai yang dimasukkan ke dalam #unction untuk diproses sehingga menghasilkan output. 6ama #unction ditentukan dengan memenuhi aturan sebagai berikut : Tidak boleh sama dengan #unction yang telah ada dalam PHP. Hanya boleh terdiri dari huru#, angka, dan garis ba%ah (underscore) Tidak boleh dia%ali dengan angka 66 tidak bole"

;un tion 1u-nl+#'QR

bahasa pemrograman lain mendukung #asilitas o"erloading, yaitu sebuah #unction dapat memiliki nama yang sama dan hasil yang berbeda, dengan syarat parameternya berbeda. PHP tidak mendukung o"erloading. !adi, dapat menggunakan nama yang telah digunakan sebelumnya. D. Implementasi ;un tion ontoh #unction: kita tidak

%
B < 1 3 X V

;un tion addLumber #:5Z :+' Q [ 4 5 2 +( e "o#['( R ;un tion jumla"kanla" #int 5Z int +' Q [ 4 5 2 +( return [(

'
C

=> R

Perhatikan contoh #unction add6umber di atas. Perhatikan baris 7 sampai H. 'unction body dibatasi oleh sepasang T dan U menghasilkan output yang diinginkan. 1aris A menyuruh komputer untuk membuat satu "ariabel bernama S yang isinya adalah hasil pen$umlahan x dan y. 'unction body berisi instruksi yang harus dilakukan komputer untuk

x dan y didapat dari input yang diberikan user.

1aris H menyuruh komputer untuk menampilkan hasil perhitungan ke layar. 1edakan dengan baris H pada #unction $umlahkanlah yang memerintahkan komputer untuk menampilkan hasil perhitungan di layar ontoh penggunaan #unction "asil 4 jumla"kanla"#1Z3'( addLumber#1Z3'( 8I I I.

I\. 8ariable Li;etime


A. S ope Scope, li#etime, "isibility adalah berbagai istilah yang sama, menyatakan di mana "ariabel dapat digunakan dalam program. PHP mengenal dua macam scope, yaitu local dan global. <ariabel local hanya dapat digunakan dalam blok tempatnya dideklarasi. <ariabel global dapat digunakan program setelah dideklarasi dan diinisialisasi. di mana sa$a dalam

1. Lo al
0ntuk lebih memahami scope local, perhatikan script di ba%ah : !? ;un tion test8ar#'Q :a 4 <( R e "o#:a'( ?) <ariabel =a hanya berlaku di dalam #unction test<ar, sehingga tidak dapat diakses di luar #unction. 66 error 9ariabel :a tidak dikenali

2. ?lobal
<ariabel global dideklarasi di luar #unction dan dapat digunakan di mana sa$a dalam !? :a 4 1( ;un tion test8arB#'Q e "o#:a'( global :a( e "o#:a'( R ?) 66 MM menampilkan 1 66 MM tidak meng"asilkan apaMapa program. <ariabel global tidak berlaku di dalam #unction kecuali dipanggil dengan key%ord global. ontoh penggunaan :

B. Passing 9ariabel

1. B+ 8alue
<ariabel dipassing (dimasukkan) ke dalam #unction dengan cara pass by "alue. Pass by "alue membuat kopi dari "ariabel yang asli. 2engan demikian "ariabel asli tidak terpengaruh. 0ntuk lebih $elasnya, perhatikan contoh berikut : ;un tion tamba"Satu#:angka'Q :angka22( R 'unction tersebut akan digunakan sebagai berikut : !? :a 4 V( tamba"Satu#:a'( e "o#$Lilai a 4 & . :a'( ?) kode di atas akan menghasilkan output Lilai a 4 V karena "ariabel angka yang ada dalam #unction berakhir umurnya pada saat #unction selesai di$alankan. 2an "ariabel a yang asli tetap bernilai B. 0ntuk menghasilkan e#ek yang diinginkan, kita dapat menggunakan pass by re#erence. B. B+ Ae;eren e Pada pass by re#erence, kita memasukkan "ariabel yang asli ke dalam #unction. Teknik ini dilakukan dengan cara sebagai berikut : ;un tion tamba"Satu#G:angka'Q :angka22( R 'unction tersebut akan digunakan sama seperti contoh di atas : !? :a 4 V( tamba"Satu#:a'( e "o#$Lilai a 4 & . :a'( ?) kode di atas akan menghasilkan output Lilai a 4 W

\.

Jile Handling

Pada bagian ini, kita akan mempela$ari bagaimana script php berinteraksi dengan #ile. Sebagai contoh, kita akan meneruskan aplikasi contact manager dengan memungkinkan pengguna untuk mengupload #ile #oto beserta komentarnya. Setelah #oto berhasil diupload, kita akan memberikan halaman untuk mengakses #oto dan komentar tersebut. Sebelumnya, #orm HTML yang dibutuhkan harus disiapkan dengan bentuk sebagai berikut :

#orm tersebut harus dapat menghandle #ile upload. Listing kode upload.htm adalah sebagai berikut : !"tml) !"ead) !title)Pi Dploader!6title) !6"ead) !bod+) !"=)Pi Dploader!6"=)

!;orm en t+pe4Kmultipart6;ormMdataK met"od4KP-STK a tion4Kupload.p"pK) !p)Lama andaGnbsp( I !input t+pe4Kte5tK name4KnamaK)Gnbsp(Gnbsp( !6p) !p)Masukkan ;oto andaGnbsp( I !input t+pe4K;ileK name4Kpi K)Gnbsp(Gnbsp( !6p) @omentar I !br)!T,\TAA,A A-.S43 *-LS41> name4K ommentK)!6T,\TAA,A) !p)!input t+pe4KsubmitK 9alue4KSubmitK name4KB=K)!6p) !6;orm) !6bod+) !6"tml)

A. Menulis ;ile Sekarang kita akan menger$akan #ile upload.php yang berguna untuk

menangani #ile upload dari #orm tersebut. Sebagai contoh, kita akan mengisi #orm tersebut sebagai berikut :

'orm tersebut, setelah diisi dan disubmit, akan diterima oleh ser"er dan menghasilkan beberapa "ariabel berikut :

Lama 8ariabel =nama

@eterangan 1erisi tulisan yang diisikan user di ?mam Tau#ik text#ield nama anda

Isi

=comment

1erisi tulisan yang diisikan user di ?ni #oto saya %aktu kecil textarea komentar

=pic

1erisi #ile gambar yang diupload, && disimpan sementara di ser"er

=pic>name =pic>siSe

1erisi nama #ile yang diupload 1erisi ukuran #ile yang diupload

o##ee 1ean.bmp JV.V k1

?n#ormasi di atas dapat kita tampilkan dalam script upload.php dengan kode sebagai berikut : e "o#KLama Jile Dser 4 :pi Tname !br)K'( e "o#KLama Jile Dser di ser9er4 :pi !br)K'(

e "o#KDkuran Jile Dser 4 :pi Tsi[e !br)K'( e "o#KYenis Jile Dser 4 :pi Tt+pe !br)K'( 'ile yang akan kita tulis ke harddisk berada dalam "ariabel =pic. 'ile ini akan kita copy untuk disimpan secara permanen dalam disk. 0ntuk itu, kita akan menambah kode berikut pada upload.php : :;ileSer9er 4 Kupload6:nama6:pi TnameK( op+#:pi Z :;ileSer9er'(

Selain #ile gambar yang diupload, kita $uga akan menuliskan komentar yang ada di textarea ke dalam #ile, dengan nama yang sama dengan nama gambar, diakhiri dengan extension txt untuk menandai bah%a #ile tersebut mempunyai #ormat text. 0ntuk menulis ke dalam #ile, lakukan langkah&langkah berikut :

1. Buka6buat ;ile
0ntuk descriptor. dapat 'ile mengakses descriptor dan adalah mengubah suatu isi #ile, kita membutuhkan sebuah #ile "ariabel yang digunakan untuk me%akili #ile

tertentu. 'ile descriptor didapat dengan menggunakan #ungsi php : #open, untuk membuka #ile. 'ile yang akan kita buat akan diberi nama sesuai dengan nama gambar. Tambahkan kode berikut pada upload.php :;ile*omment 4 K6upload6:nama6:pi TnameM omment.t5tK( :;p 4 ;open#:;ile*ommentZ K/K'( seperti kita lihat pada contoh di atas, kita menggunakan #ungsi #open. 'ungsi ini

membutuhkan dua masukan (parameter), yaitu : nama #ile, dan $enis akses. 6ama 'ile : bertipe string, merupakan nama #ile yang akan dibuka. Harus berada dalam #older yang sama dengan tempat script php yang memanggilnya. !enis .kses : bertipe string, menentukan perlakuan yang diperbolehkan terhadap #ile yang dibuka. .da beberapa $enis akses: Dead : disimbolkan dengan huru# r. 'ile yang dibuka hanya dapat dibaca dan tidak boleh ditulisi. 'ile yang dibuka dengan akses r akan menimbulkan ada usaha untuk menulis ke dalamnya. 3rite : disimbolkan dengan huru# %. 'ile yang dibuka hanya dapat ditulis dan tidak bisa dibaca. Penulisan terhadap #ile akan meng"apus isi yang sebelumnya. Dead dan %rite : disimbolkan dengan r@. 'ile yang dibuka dapat dibaca dan $uga ditulisi. Penulisan terhadap #ile akan ditambahkan pada bagian a%al #ile. 3rite dan read : disimbolkan dengan %@. .pabila #ile sudah ada, isinya akan dihapus. pesan error kalau

Menambahkan (append) : disimbolkan dengan a.Membuka (membuat bila belum ada) dan menulis di a%al #ile. Menambahkan (append) dan membaca: disimbolkan dengan a@. Membuka (membuat bila belum ada) dan menulis di a%al #ile. Mode binary. 2isimbolkan dengan b. 2igunakan pada #ilesystem %indo%s yang membedakan #ile text dan binary.

2. Masukkan data
Setelah #ile berhasil dibuka5dibuat, masukkan data ke dalamnya. Perintahnya adalah sebagai berikut : ;/rite#:;pZ : omment'(

3. Tutup ;ile
Setelah itu, tutup #ile. ; lose#:;p'( B. Meng"apus ;ile 'ile yang dupload pada pembahasan di atas telah tersimpan secara permanen di harddisk ser"er di #older upload5imamTau#ik5 o##ee 1ean.bmp. dengan demikian, kita dapat menghapus #ile yang disimpan sementara oleh ser"er. 'ile tersebut kita hapus dengan menggunakan perintah unlink() atau delete(). Tambahkan baris berikut pada upload.php. unlink#:pi '( *. Membuat direktori Pembaca yang teliti akan menyadari bah%a nama #older pada contoh di atas disesuaikan dengan nama user yang mengupload #oto. 9arena kita sebagai programmer tidak dapat meramalkan nama user yang akan mengupload #oto, kita tidak dapat menyediakan #older yang sesuai dengan kebutuhan tersebut. 2engan demikian, kita harus membuat #older secara dynamic. Membuat direktori atau #older baru bukan hal yang sulit, tambahkan baris berikut pada upload.php : :oldmask 4 umask#>'( mkdir#Kupload6:namaKZ >VVV'( umask#:oldmask'( direktori akan dibuat dengan nama #older sesuai dengan nama user yang dimasukkan pada

#orm dengan permission BBB. .rti dari permission BBB dan umask tidak dibahas dalam tutorial ini. D. La9igasi direktori Selan$utnya, kita akan menampilkan #oto yang telah diupload oleh user. 0ntuk itu, kita harus membuka #older yang berisi #ile, melihat da#tar #ile yang ada, dan menampilkan #oto serta isi comment. 0ntuk menampilkan #oto, kita cukup memberikan link nya sa$a dalam tag *img, *5img,. Sedangkan untuk menampilkan isi #ile text, kita harus membuka dan membaca #ile txt tersebut. 0ntuk menampilkan isi direktori, kita terlebih dulu harus membuka direktori. Tambahkan kode berikut pada upload.php : :m+Dir 4 Kupload6:namaK( :dir 4 opendir#:m+Dir'( 2irektori yang telah terbuka akan disimpan dalam "ariabel =dir. Selan$utnya, kita akan melakukan looping untuk membaca setiap entry yang ada dalam #older. Tambahkan kode berikut : e "o#KIsi ;older upload6:nama I !br)K'( /"ile#:tmp 4 readdir#:dir''Q e "o#:tmp.K!br)K'( R Setelah selesai, tutup #older dengan kode berikut: losedir#:dir'(

,.

Meng"apus direktori 0ntuk menghapus direktori, gunakan kode berikut : rmdir#:namaDirektori'( direktori yang akan dihapus "arus kosong.

J.

Memba a ;ile 0ntuk menampilkan isi comment yang telah kita tulis ke dalam #ile, kita akan menempuh langkah&langkah yang sama dengan menulis #ile, yaitu: 1uka #ile R baca isinya R tutup #ile. .da sedikit modi#ikasi, kita akan memproses isi comment agar tidak mengandung tag&tag html. Tambahkan kode berikut pada upload.php : :; 4 ;open#:;ile*ommentZ KrK'( :isi 4 ;read#:;Z ;ilesi[e#:;ile*omment''( ; lose#:;'( :output 4 nlBbr#"tmlspe ial "ars#:isi''( e "o#$@omentar anda I !br)&'( e "o#:output'( demikianlah isi #ile ditampilkan. 'ile lengkap upload.php adalah sebagai berikut : !? 66 MM Dpload Jile MM 66 66 in;o tentang ;ile user I e "o#KLama Jile Dser 4 :pi Tname !br)K'( e "o#KLama Jile Dser di ser9er4 :pi !br)K'( e "o#KDkuran Jile Dser 4 :pi Tsi[e !br)K'( e "o#KYenis Jile Dser 4 :pi Tt+pe !br)K'( 66 menulis ;ile pi ke "arddisk ser9er :oldmask 4 umask#>'( mkdir#Kupload6:namaKZ >VVV'( umask#:oldmask'( :;ile?ambar 4 Kupload6:nama6:pi TnameK( op+#:pi Z :;ile?ambar'( 66 menulis ;ile omment ke ;ile

:;ile*omment 4 Kupload6:nama6:pi TnameM omment.t5tK( :;p 4 ;open#:;ile*ommentZ K/K'( ;/rite#:;pZ : omment'( ; lose#:;p'( 66 MM Menampilkan isi ;older MM 66 :m+Dir 4 Kupload6:namaK( :dir 4 opendir#:m+Dir'( e "o#K!"r)Isi ;older upload6:nama I !br)K'( /"ile#:tmp 4 readdir#:dir''Q e "o#:tmp.K!br)K'( R losedir#:dir'( 66 MM menampilkan pi +ang tela" diupload MM 66 e "o#K!"r)Pi :nama I !br)K'( e "o#K!img sr 4HK:;ile?ambarHK border4> /idt"4=>> "eig"t4=>>)K'( 66 MM menampilkan isi ;ile te5t MM66 e "o#K!"r)@omentar I !br)K'( :; 4 ;open#:;ile*ommentZ KrK'( :isi 4 ;read#:;Z ;ilesi[e#:;ile*omment''( ; lose#:;'( :output 4 "tmlspe ial "ars#:isi'( e "o#:output'( ?) Da ta ba se A ess

(I.

Menyimpan data dalam #ile biasa memiliki banyak keterbatasan. Semakin besar ukuran #ile, pencarian data men$adi lebih sulit. 'ile biasa $uga tidak memiliki kemampuan untuk mengolah data, misalnya menghitung total nilai, rata&rata, dan lain sebagainya.

2an yang lebih penting, adanya keterbatasan untuk mengendalikan akses terhadap data. 9ita tidak dapat menentukan siapa yang boleh dan siapa yang tidak boleh mengakses data. Siapa yang boleh membaca dan tidak boleh menulis, dan sebagainya. 9arena itu, sekarang kita akan menggunakan media penyimpanan data yang lebih mutakhir, yaitu database. /perasi data dalam database umumnya mengikuti pola yang sama, yaitu melalui rangkaian langkah sebagai berikut : Membuka sambungan dengan database ser"er Memilih dan membuka database yang diinginkan Mengirim perintah untuk mengambil5mengubah5menghapus data. Mengakses hasil pengambilan data Mengakhiri sambungan 9ita akan membahas masing&masing langkah tersebut satu per satu. Sebagai contoh, kita akan mengakti#kan #asilitas login pada aplikasi ontact Manager. 0ser akan diminta untuk memasukkan username dan pass%ord. 1ila data yang dimasukkan sama dengan yang ada dalam database, user akan diteruskan ke halaman %elcome. 9alau salah, akan muncul pesan error. Sebagai tambahan, kita akan membuat halaman yang memungkinkan user untuk mengganti pass%ord. 0ser yang belum terda#tar dapat melakukan registrasi di halaman yang akan disediakan. 1erikut screenshot halaman %eb yang dibutuhkan : login.htm :

register.htm

S]L
I. S]L *onsole

II. A. Sekilas S]L ]uer+ S-L (Structured digunakan untuk -uery

S]L ]uer+

Language) adalah database.

bahasa 0ntuk

yang

khusus memudahkan

mengoperasikan

pela$aran, S-L Wuery akan dikelompokkan men$adi tiga: -uery untuk mengelola database -uery untuk mengakses data dalam satu tabel -uery yang melibatkan lebih dari satu tabel

%. ]uer+ pengelolaan database


Xang termasuk ke dalam kelompok ini adalah Wuery yang bertu$uan untuk : Membuat database Menghapus database Membuat tabel Memodi#ikasi tabel Menghapus tabel Menambah user Mengatur permission Menghapus user Membuat database dilakukan dengan perintah sebagai berikut : *A,AT, DATABAS, !nama database) ontohnya : untuk aplikasi ontent Management, kita akan membuat database ontentManager dengan Wuery sebagai berikut : A,AT, DATABAS, *onta tManager Menghapus database dilakukan dengan perintah : DA-P DATABAS, !nama database) ontoh : DA-P DATABAS, *onta tManager Membuat tabel dilakukan dengan memberikan perintah sebagai berikut: *A,AT, TABL, !nama tabel) # !nama kolom) !nama kolom) YY.. !nama kolom) !tipe data) !tipe data) !tipe data)

'( contohnya: *A,AT, TABL, userTable# DserId ILT #<'Z DserLame 8AA*HAA #3>'Z Pass/ord 8AA*HAA #3>'Z LamaLengkap 8AA*HAA #3>' '( Menghapus tabel dilakukan dengan menggunakan Wuery DA-P TABL, !nama tabel)( ontoh : DA-P TABL, userTable(

&. ]uer+ satu tabel


-uery satu tabel digunakan untuk mengelola data dalam satu tabel. 1eberapa hal yang dapat dilakukan pada satu tabel adalah : Tujuan Memasukkan data Memodi#ikasi data Mengambil data Menghapus data Menghitung banyaknya data Menghitung pen$umlahan data Menghitung nilai minimal Menghitung nilai maksimal Menghitung nilai rata&rata ]uer+ ?6SCDT 0P2.TC SCLC T 2CLCTC /06T S0M M?6 M.P .<G

0ntuk memasukkan data ke dalam database, kita menggunakan perintah ?6SCDT. .turan penulisannya adalah : ILS,AT ILT- !nama tabel) #!nama kolom =)Z ! nama kolom =)Z ..' 8ALD,S #!isi kolom =)Z !isi kolom B)Z ..'( ontoh :

ILS,AT ILT- userTable 8ALD,S # =Z ^imam^Z ^inipas/od^Z ^Imam Tau;ik^ '( 0ntuk mengubah data dalam database, digunakan perintah 0P2.TC, dengan aturan penulisan sebagai berikut : DPDAT, !nama tabel) S,T !nama kolom)4!isi kolom) .H,A, !kriteria) ontoh : DPDAT, userTable S,T pass/ord4_test_ .H,A, DserLame4_imam_ 0ntuk menampilkan data dalam tabel, gunakan perintah SCLC T. .turan penulisannya adalah sebagai berikut: S,L,*T !nama kolom) JA-M !nama tabel) .H,A, !kriteria) ontoh : S,L,*T 7 JA-M DserTable .H,A, DserId4= 0ntuk menghapus data dari dalam tabel, gunakan perintah 2CLCTC. .turan penulisannya adalah : D,L,T, JA-M !nama tabel) .H,A, !kriteria) ontoh : D,L,T, JA-M DserTable .H,A, LamaLengkap4_Imam Tau;ik_

). ]uer+ ban+ak tabel


-uery banyak tabel digunakan untuk menghubungkan data di lebih dari satu database. Pembahasan tentang $oin berada di luar materi PHP Programming dan ada di pembahasan tentang relational database. B. Membuat koneksi ke database Sebelum mulai, kita terlebih dahulu akan membuat database. 9ita membutuhkan tabel user untuk menyimpan data sebagai berikut :

Lama Jield 0ser?d 0ser6ame Pass%ord 6amaLengkap

Tipe Data int(A) "archar(K8) "archar(K8) "archar(K8)

Tabel dibuat dengan memberikan Wuery sebagai berikut:

*A,AT, TABL, userTable# DserId ILT #<' ADT-TIL*A,M,LT PAIMAA` @,`Z DserLame 8AA*HAA #3>'Z Pass/ord 8AA*HAA #3>'Z LamaLengkap 8AA*HAA #3>' '( tabel siap digunakan. 9ita akan mulai dengan halaman da#tar, karena kita belum punya user. 'ile register.php akan menangani penda#taran user baru. Tugasnya adalah memasukkan data yang diisi dalam #orm ke dalam database. Selan$utnya, kita akan melakukan langkah&langkah seperti yang disebutkan di atas.

*. Membuka sambungan dengan database ser9er


0ntuk membuka sambungan, kita membutuhkan alamat ser"er serta username dan pass%ord untuk database. Setelah itu, kita membuka sambungan dengan perintah sebagai berikut : :dbSer9er 4 Klo al"ostK(

:dbDser 4 KimamK( :dbPass 4 KtestK( :db*onn 4 m+salTp onne t#:dbSer9erZ :dbDserZ :dbPass'( sambungan dengan database disimpan dalam "ariabel =db onn untuk

digunakan pada langkah&langkah selan$utnya.

+. Memili" dan membuka database +ang diinginkan


Selan$utnya, kita akan menggunakan database tutorial, yang sebelumnya telah dibuat dengan menggunakan PHPMy.dmin. Gunakan kode berikut untuk memilih dan membuka database phpTutorial. :dbLame 4 Kp"pTutorialK( m+salTsele tTdb#:dbLame'( sekarang database telah siap untuk digunakan. 9ita dapat melangkah ke tahap selan$utnya, yaitu memasukkan data.

,. Mengirim perinta" untuk mengambil6menguba"6meng"apus data.


Perintah untuk memasukkan data dibuat dengan menggunakan aturan S-L, di$elaskan lebih lengkap pada bagian selan$utnya. -uery (perintah) untuk memasukkan data adalah : ILS,AT ILT- userTable 8ALD,S # =Z ^imam^Z ^inipas/od^Z ^Imam Tau;ik^ '( perintah tersebut dieksekusi di dalam script PHP sebagai berikut : :auer+ 4 K ILS,AT ILT- userTable 8ALD,S # =Z ^imam^Z ^inipas/od^Z ^Imam Tau;ik^ '(

K( :"asil 4 m+salTauer+#:auer+'( i;#:"asil'Q e "o#m+salTa;;e tedTro/s#'.K orang ditamba"kan ke dalam sistemK'( R Script kita harus mengambil data dari HTML 'orm (register.htm) dan

memasukkannya ke dalam database. 0ntuk itu, kita akan membuat #ile register.php yang berisi kode sebagai berikut : !? :dbSer9er 4 Klo al"ostK( :dbDser 4 KimamK( :dbPass 4 KtestK( :db*onn 4 m+salTp onne t#:dbSer9erZ :dbDserZ :dbPass'( :dbLame 4 Kp"pTutorialK( m+salTsele tTdb#:dbLame'( :auer+ 4 K ILS,AT ILT- userTable #DserLameZ Pass/ordZ LamaLengkap' 8ALD,S # ^:user^Z ^:pass^Z ^:namaLengkap^ '( K( :"asil 4 m+salTauer+#:auer+'( i;#:"asil'Q e "o#m+salTa;;e tedTro/s#'.K orang ditamba"kan ke dalam sistemK'( R ?)

*. Mengakses "asil auer+ Setelah register.htm dieksekusi dengan sukses, kita telah memiliki satu user dalam database. 2engan demikian, kita dapat mengu$i halaman login yang telah kita buat. 0ntuk itu, kita perlu mengakses data dalam database dan mencocokkannya dengan input yang diberikan user. Langkah&langkah untuk mengakses data dalam database adalah : Membuat sambungan database Memilih database Membuat Wuery Men$alankan Wuery Mengambil hasilnya Memproses hasil

-uery yang akan digunakan adalah : S,L,*T 7 JA-M DserTable .H,A, userLame4_input dari user_ -uery ini akan dimasukkan ke dalam script men$adi : :auer+ 4 S,L,*T 7 JA-M DserTable .H,A, userLame4_:login_ 2an dieksekusi dengan kode : :"asil 4 m+salTauer+#:auer+'( 1ila user6ame yang diinputkan user tidak ada dalam database, Wuery akan mengembalikan 8(nol) baris hasil. 1ila ada, Wuery akan menghasilkan array yang berisi data pada masing&masing kolom dalam database. 0ntuk mengetahui $umlah hasil yang didapat dari Wuery, digunakan kode sebagai berikut: :jumla"Hasil 4 m+salTnumTro/s#:"asil'( .pabila hasilnya tidak nol (berarti username telah terda#tar dalam sistem), kita akan mengambil data pass%ord. 0ntuk itu, kita gunakan perintah: :data 4 m+salT;et "Tarra+#:"asil'( data pass%ord ada dalam array, diakses dengan cara : :passDb 4 :dataE$Pass/ord&F( 2engan demikian, keseluruhan script login.php akan men$adi : !?

66 9ariabel +ang diperlukan untuk akses database :user 4 KimamK( :pass 4 KtestK( :db 4 K*ontentManagerK( :ser9er 4 Klo al"ostK( 66 membuat koneksi :koneksi 4 m+salT onne t#:ser9erZ :userZ :pass'( 66 memeriksa koneksi i;#%:koneksi'Q e "o#K@oneksi ke database gagalK'( e5it( R 66 membuka database m+salTsele tTdb#:db'( 66 membuat auer+ :auer+ 4 KS,L,*T 7 JA-M userTable .H,A, userLame4^K.:login.K^K( 66 mengeksekusi auer+ :"asil 4 m+salTauer+#:auer+'( 66 mengakses "asil :jumla"Hasil 4 m+salTnumTro/s#:"asil'( i;#:jumla"Hasil ! ='Q e "o#KDser :login tidak ada dalam database !br)K'( RelseQ e "o#KDser :login ada dalam database!br)K'( :data 4 m+salT;et "Tarra+#:"asil'( :pass/ordAsli 4 :dataEKpass/ordKF( i;#:pass/ord 44 :pass/ordAsli'Q e "o#KPass/ord untuk user :login benar!br)K'( RelseQ e "o#KPass/ord untuk user :login sala"!br)K'( R R ?)

!S!"

!#!$!S% M&SQL

!S!" #%'"I (t(b(se Mys)* Meru$akan sebuah system manajemen !atabase relasi -relati#nal !ataba!e mana.ement system/. Bersi0at #$en s#ur1e !a$at !i!#2nl#a! se1ara bebas3 mys4l memiliki kinerja3 ke1e$atan3 $r#ses3 !an ketan..uhan yan. ti!ak kalah !en.an !atabase yan. lain. E5 6 #ra1le3 Sybase3 unity3 !ll. Pa!a a2alnya mys4l hanya berjalan !iatas $lat0#rm system #$erasi linu5. 7am$ir semua !istr# linu5 telah memasukkan mys4l seba.ai !atabase stan!arnya.3 namun saat ini mys4l !a$at $ula berjalan !iatas system #$erasi lainnya3 e5 6 Ms. in!#2s3 S#laris3 FreeBSD3 ma1 OS(3 !sb.

Pa!a tahun &88) mys4l AB meneliti men..unakan jejak $en!a$at $a!a situsnya bah2a %&.+9' res$#n!en !i!a$at +.'&* - *,3&: / !iantaranya men..unakan linu5 seba.ai $lat0#rm system #$erasinya !an !atabase mys4l. Men.a$a mys4l ; %. Ke1e$atan3 !alam hal ke1e$atan $r#ses mys4l memiliki kemam$uan !iatas rata < rata !ari $a!a !atabase lain. &. Mu!ah !i.unakan3 $erintah !an return $a!a mys4l mau$un instalasi relati=e mu!ah. ). O$en s#ur1e3 sia$a$un !a$at men.emban.kan mys4l. *. Ka$abilitas3 mys4l !a$at !i.unakan untuk men.el#la !atabase !en.an jumlah +8 juta re1#r!. ,8888 table3 !en.an jumlah baris + milyar baris3 )& buah in!e5 $er table3 se!an. setia$ in!e5 ter!iri hin..a %, k#l#m kriteria. +. >e$likasi !ata3 !a$at !ibuat mirr#r ser=er !ari ser=er in!uk sehin..a kerja system terbantu.

,. K#nekti0itas !an keamanan3 mys4l men..unakan system keamanan !an ijin akses tin.kat lanjut3 !a$at men.en1ri$sikan !ata $ass2#r! user. ?. "intas $lat0#rm system #$erasi3 !a$at !ijalankan !iberba.ai system #$erasi. Q+ery Untuk men.akses !atabase !i.unakan 4uery seba.ai $erintahnya. %. Menam$ilkan !atabase yan. a!a $a!a mys4l.
Mysql>show database;

&. Membuat !atabase


mysql>create database <nama database>;

). Men..unakan !atabase
mysql>use <nama Db>;

*. Melihat table $a!a !atabase


mysql>show tables;

+. Membuat table baru


mysql>create table <nama table> (<nama kolom><tipe data>);

,. Memasukkan !ata $a!a table


mysql>insert into <nm table> (<nama kolom>)value(<isi>);

?. Menam$ilkan !ata
mysql>select <kolom>; <nm kolom> from<nm table>where <kriteria>order by

'. Men.e!it !ata


mysql>update <table>set <kolom=perubahan data>where <kriteria>;

9. Men.ha$us !ata
mysql>delete from <table>where <kriteria>;

%8.Keluar !ari mys4l


mysql>quit atau e it atau !q

,enis -.*.m /#i0e

(t( P(d( Mys)*1

%. Numeri1 6 tinyint3 smallint3 me!iumint3 int3 bi.int3 0l#at3 !#uble3 !e1imal. &. Karakter 6 1har3 =ar1har. ). Enum 6 enum3 set. *. Bl#b 6 tinybl#b3 bl#b3 me!iumbl#b3 l#n.bl#b3 tinyte5t3 me!iumte5t3 te5t3 l#n.te5t. +. @an..al !an aktu 6 !ate3 !atetime3 time3 timestam$3 year.

P%"M!S!L!H!2 %. Akti0kan Mys4l Database


"tart > pro#ramfile > phptriad > mysql > mysql $ d (win%&) mysql $ d'nt (win p)

&. "#.in Seba.ai User Pa!a Mys4l


()!apache!mysql!bin>mysql $u root $p

). Melihat Da0tar Database Aan. A!a


Mysql > show databases;

*. Membuat Database Baru


Mysql > (*+,-+ D,-,.,"+ <namamhs>;

+. Memilih Atau Men..unakan Database


Mysql > use <namamhs>;

,. Membuat @able An..#ta


mysql > (*+,-+ -,./+ an##ota key5 nama (0d int unsi#ned 121213// alamat auto4increment primary varchar(67) 13//5

varchar(68) 13//5

telp varchar(68) 13//);

?. Melihat Struktur @able An..#ta


Mysql > describe an##ota;

'. Men.ubah Struktur @able An..#ta


Mysql > ,/-+* -,./+ an##ota ,DD (2/3M1 email varchar(98) 13// ,:-+* alamat;

9. Memasukkan Data Pa!a @able An..#ta

Mysql > 01"+*- 01-2 an##ota ;telp;) <,/3+" (65 =>oni=5 =7&6&7&7&7&=);

(;0d;5 ;nama;5 ;alamat;5 ;email;5 =>o#>a=5 =>oni?utystudents@or@id=5

%8.menam$ilkan !ata table an..#ta


mysql > select id5 nama5 email from an##ota order by id;

%%.Men.e!it Data Pa!a @able An..#ta


Mysql > 3AD,-+ an##ota "+- ;0d;=65 ;alamat;==>ombor= BC+*+ ;0d;= 6;

%&.Men.ha$us Data Pa!a @able An..#ta


Mysql > delete from an##ota where id=6;

M%M$!3-4P

!#!$!S%

Salinlah 0#l!er $a!a 6 16Ba$a1heBmys4lB!ataBCnamamhsD ke tem$at yan. aman. M%"%S#'"% Salinlah !#!$!S% CnamamhsD !ari tem$at $enyim$anan ke

0#l!er

16Ba$a1heBmys4lB!ataB

-'2%-SI PHP

%25!2

!#!$!S% M&SQL

!S!" #%'"I Men6en(* 7+n6si89+n6si MySQL Untuk k#neksi P7P ke !atabase MySE" !ilakukan !en.an men..unakan 0un.siF0un.si mys)*:;.nne;t-/3 mys)*:0;.nne;t-/3 mys)*:se*e;t:db-/. mys)*:;.nne;t-/ mys4lG1#nne1t -/ !i.unakan untuk melakukan k#neksi ke ser=er !atabase MySE". F#rmat $enulisan 6 mys4lG1#nne1t-namaGh#st3 namaGuser3 $ass2#r!/H Jika $arameter nama h#st ti!ak !i!eklarasikan3 #t#matis akan berisi l#1alh#st. K#neksi ke !atabase akan se1ara #t#matis ter$utus $a!a saat s1ri$t $r#.ram selesai !ieksekusi seluruhnya3 ke1uali !iberikan $erintah 0un.si mys4lG1l#se-/. Fun.si mys4lG1#nne1t-/ akan men.hasilkan nilai true jika k#neksi berhasil !ilakukan !an nilai 0alse jika .a.al. mys)*:0;.nne;t-/ Fun.si mys4lG$1#nne1t-/ ju.a !i.unakan untuk memban.un akses ke !atabase3 sama !en.an 0un.si mys4lG1#nne1t-/. Se!ikit $erbe!aannya a!alah jika men..unakan 0un.si mys4lG$1#nne1t-/3 k#neksi ti!ak akan ter$utus meski$umn $r#.ram telah selesai !ieksekusi. mys)*:;re(te:db-/ Fun.si mys4lG1reateG!b-/ !i.unakan untuk membuat sebuah !atabase. Biasanya untuk sebuah a$likasi !i.unakan sebuah !atabase. Sebuah !atabase akan berisi bebera$a tabel. F#rmat $enulisan 6

mys4lG1reateG!b-InmG!atabaseJ/H 7+n6si mys)*:se*e;t:db/1 Fun.si ini ber.una untuk memilih atau men.akti0kan !atabase3 se$erti !alam $r#.ram klien mys4l $akai 4S% . 0#rmat $enulisannya6 mys)*:se*e;t:db/database,pengenal_hub1 Dalam hal ini !atabase a!alah nama !atabase yan. !i.unakan3 se!an. $en.enalGhub a!alah $en.enal yan. !i$er#leh !ari $eman..ilan 0un.si mys)*:;.nne;t/1. mys)*:)+ery/1 P7P ti!ak menye!iakan 0un.si khusus untuk membuat tabel !en.an 0iel!F 0iel!nya3 sehin..a untuk membuat tabel !ata teta$ men..unakan sintaks !ari $r#.ram !atabase MySE" yan. !i.unakan3 kemu!ian Sehin..a sintaks 0un.si !i#$erasikan men..unakan 0un.si mys)*:)+ery/1.

mys4lG4uery-/ a!alah menjalankan $erintah 4uery yan. ter!a$at !i MySE". mys)*:db:)+ery/1 0un.si ini ber0un.si untuk menjalankan suatu $ermintaan terha!a$ suatu !atabase 0#rmat $enulisan 6 mys)*:db:)+ery-!atabase3$ermintaan3$en.enalGhub/ $en.enalGhub menyatakan $en.enal yan. !alam !ari hal ini

!i!a$at

0un.si

mys)*:;.nne;t/1< se!an.kan a!alah nama !atabase yan. !i$er.unakan !an $ermintaan a!alah $erintah SE".

Pa!a a$likasi 2eb !atabase !i$erlukan mekanisme akses !atabase !en.an $emr#.raman $h$. Dalam hal ini a!a bebera$a lan.kah untuk men.k#neksikan halaman 2eb !en.an !atabase mys4l. Antara lain 6 %. Buat 0ile k#neksi.$h$ yan. meru$akan mekanisme akses !atabasenya.

&. Akti0kan mys4l !atabase ). Jalankan 0ile k#neksi.$h$ untuk memastikan !atabase mys4l terk#neksi !en.an $h$.

P%"M!S!L!H!2 %. k#neksi.$h$ <D EE buka koneksi ke database server Fdatabase=GpraktikumdbG; sendiri EE sesuaikan den#an database

Fhostname=GlocalhostG; EE sesuaikan Fusername=GrootG; EE sesuaikan Fpassword=GG; EEsesuaikan if (HFdbh=mysql4connect(Fhostname5Fusername5Fpassword)) I echo mysql4error(); e it; Jelse I EE select default database mysql4select4db(Fdatabase5 Fdbh); echo G<h6><b>selamat anda database<Eb><Eh6><brE><hrE>G; J D> &. lihatGan..#ta.$h$ <D include(Gkoneksi@phpG); echo G<table cellspacin#=7> border=6 ali#n=center cellpaddin#=7 sukses men#akses

<tr><h9>ini adalah data an##ota<Eh9><Etr> <tr> <td>1o@<Etd> <td><div ali#n=center>1ama<Ediv><Etd> <td>,lamat<Etd> <td>+'Mail<Etd> <td>telp<Etd><Etr>G;

Fsql=Gselect K from an##ota order by idG; Fqry = mysql4query(Fsql); while ( Fa = mysql4fetch4array ( Fqry ) ) I FiLL; echo (G<tr><td><center><font face=verdana siMe=9>Fi@<Etd>G); echo (G<td><font face=verdana siMe=9>FaNnamaO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNalamatO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNemailO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNtelpO<Etd><Etr>G); J echo G<Etable>G; D> ). lihatG0#rum.$h$ <D include(Gkoneksi@phpG); echo G<table cellspacin#=7> border=6 ali#n=center cellpaddin#=7

<tr><h9>ini adalah data forum<Eh9><Etr> <tr>

<td>1o@<Etd> <td><div ali#n=center>1ama<Ediv><Etd> <td>pesan<Etd>G;

Fsql=Gselect K from forum order by idfG; Fqry = mysql4query(Fsql); while ( Fa = mysql4fetch4array ( Fqry ) ) I FiLL; echo (G<tr><td><center><font face=verdana siMe=9>Fi@<Etd>G); echo (G<td><font face=verdana siMe=9>FaNnamaO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNpesanO<Etd><Etr>G); J echo G<Etable>G; D>

!PLI-!SI W%$ P%M!S4-!2 M&SQL

!#! -%

!#!$!S%

!S!" #%'"I H(*(m(n 7.rm Untuk memasukkan atau in$ut suatu !ata ke !atabase3 a$likasi 2eb membutuhkan alat yaitu 0#rm yan. !i.unakan untuk me!ia in$ut !ata. Dalam 0#rm ter!a$at elemen yan. mana harus mem$unyai i!enti0ier atau =ariable. 7al yan. 2ajib !i$erhatikan !alam $embuatan 0#rm in$ut yaitu 6 =ariableKi!enti0ier3 !estinati#nKtujuanKa1ti#n !an meth#!. Setia$ elemen 0#rm baik itu te5tb#53 butt#n3 0#rm3 hin..a 1#mb#b#5 harus memiliki nama i!enti0ier. Pa!a a1ti#n !i.unakan untuk menentukan kemana !ata 0#rm tersebut !ikirimkan !an nantinya !i#lah. Meth#! !i.unakan untuk menentukan 1ara $en.iriman !ata.

H(*(m(n Pr.ses Meru$akan tujuan !ari halaman 0#rm yan. !i.unakan untuk

mem$r#ses !ata. 7alaman $r#ses menerima !ata atau =ariable yan. kemu!ian !i$r#ses men..unakan $emr#.raman P7P. 7asil $r#ses !a$at beru$a !ata atau =ariable baru yan. !a$at !itam$ilkan3 !isim$an3 atau !ikirimkan ke halaman $r#ses lain. Pa!a halaman $r#ses yan. berhubun.an atau membutuhkan k#neksi !atabase membutuhkan mekanisme k#neksi !atabase. P%"M!S!L!H!2 "akukan rest.re d(t(b(se terlebih !ahulu. Pr#se!urnya !a$at !ilihat $a!a m#!ul !atabase mys4l.

1. in0+t(n66.t(.0=0 Synt(> <D include(Gkoneksi@phpG); if (Fsubmit)I function e ec4time()I Fmtime Fmsec Fsec = e plode(G G5microtime()); = (double)FmtimeN7O; = (double)FmtimeN6O;

return Fsec L Fmsec; J Fstart4e ec = e ec4time(); EEmulai men#hitun# waktu eksekusi query Fsql=Ginsert values (=Ft tnama=5=Ft talamat=5=Ft temail=5=Ft ttelp=5=Fr#ender=)G; Fhasil = mysql4query(Fsql) or die (Ginsert user Ft tnama into an##ota (nama5alamat5email5telp5#ender)

P,P,/5 harap coba la#iG); if (Fhasil)I echo G<center><CQ>"+/,M,- ,1D, -+/,C .+*C,"0/ D0D,:-,* D0"0-3" 010<EhQ><Ecenter>G; J elseI echo GA*2"+" P,P,/ C,*,A 3/,1P0 /,P0HG; J Fend4e ec = e ec4time();EEmencatat wektu query diselesaikan

Frun4time=Fend4e ec ' Fstart4e ec;EE men#hitun# waktu J D> <form method=post action=Ginputan##ota@phpG> <table width=GQR&G border=G7G ali#n=GcenterG cellpaddin#=G7G cellspacin#=G7G b#color=GS::::((G> <tr b#color=GS77((::G> <td colspan=GQG><div ali#n=GleftG> <h9>Aendaftaran ,n##ota .aru <Eh9> <Ediv><Etd> <Etr> <tr> <td width=G89G vali#n=GtopG><stron#>1ama<Estron#><Etd> <td width=GQ7%G><input name=Gt tnamaG type=Gte tG

id=Gt tnamaG siMe=G68G ma len#th=G68G><Etd> <Etr> <tr> <td vali#n=GtopG><stron#>,lamat<Estron#><Etd> <td><te tarea id=Gt talamatG><Ete tarea><Etd> <Etr> <tr> <td hei#ht=GQ9G vali#n=GtopG><stron#>+mail<Estron#><Etd> name=Gt talamatG cols=G98G

<td><input name=Gt temailG type=Gte tG id=Gt temailG siMe=G97G ma len#th=G97G><Etd> <Etr> <tr> <td vali#n=GtopG><stron#>-elp<Estron#><Etd> <td><input name=Gt ttelpG type=Gte tG id=Gt ttelpG

siMe=GQ7G ma len#th=GQ7G><Etd> <Etr> <tr> <td vali#n=GtopG><stron#>Pender<Estron#><Etd> <td><input checked> Male <input name=Gr#enderG type=GradioG value=G7G> :emale<Etd> <Etr> <tr> <td><Etd> <td><input value=GDaftarG> <input value=G3lan#G> <a href=Glihatan##ota@phpG>/ihat ,n##ota<Ea> <Etd> <Etr> name=GbtnresetG type=GresetG id=GbtnresetG name=GsubmitG type=GsubmitG id=GsubmitG name=Gr#enderG type=GradioG value=G6G

<tr> <td><stron#>"erver<Estron#><Etd> <td><D echo FC--A4"+*<+*4<,*"NG*+M2-+4,DD*GO; EE

mendeteksi ip address userD> <Etd> <Etr> <Etable> <Eform> <D if (Fsubmit)I echo G<center><b>Baktu e ekusi query = Frun4time

detik<Eb><Ecenter>G;J D>

'+0+t

2. *i=(t(n66.t(.0=0 Synt(>

<D include(Gkoneksi@phpG); echo G<table border=6 ali#n=center cellpaddin#=7 cellspacin#=7 b#color =Sffffcc> <tr><h9>ini adalah data an##ota<Eh9><Etr> <tr b#color=S77ccff> <td>1o@<Etd> <td><div ali#n=center>1ama<Ediv><Etd> <td>,lamat<Etd> <td>+'Mail<Etd> <td>telp<Etd> <td>#ender<Etd><Etr>G; EEperintah query Fsql=Gselect K from an##ota order by idG; Fqry = mysql4query(Fsql); EEmenampilkan data tabel an##ota while ( Fa = mysql4fetch4array ( Fqry ) ) I FiLL; echo (G<tr><td><center><font face=verdana siMe=9>Fi@<Etd>G); echo (G<td><font face=verdana siMe=9>FaNnamaO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNalamatO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNemailO<Etd>G); echo (G<td><font face=verdana siMe=9>FaNtelpO<Etd>G);

if(FaN#enderO===6=)I F#ender==male=; JelseI F#ender==female=;J echo (G<td><font face=verdana siMe=9>F#ender<Etd><Etr>G); J echo G<Etable>G; echo G<center><a href=!Ginputan##ota@php!G>kembali ke

input<Ea><Ecenter>G; mysql4close();EEmenutup koneksi database mysql D> .+t0+t

!PLI-!SI W%$ M!2IP4L!SI M&SQL

!#! P! !

!#!$!S%

!S!" #%'"I % I# !#!

Pemeliharaan !ata $a!a taha$ im$lemantasi suatu 2ebsite meru$akan ke2ajiban !ari $emiliknya. 7al ini !i$erlukan a.ar !ata !an in0#rmasi yan. a!a $a!a 2ebsite selalu u$t#!ate. Untuk kebutuhan tersebut maka !i.unakan alat bantu yaitu 0asilitas e!it !ata. L#nt#h Al.#ritma e!it !ata 6 %. men1ari !ata yan. akan !ie!it. Pr#ses $en1arian men..unakan $erintah 4uery yaitu 6 sele1t Cnama0iel!D 0r#m CnamatableD hasil 4uery. &. melakukan $en.e!itan men..unakan halaman 0#rm e!it. Data yan. telah !itemukan kemu!ian !itam$ilkan $a!a element 0#rm. Dan !ilakukan $en.e!itan !ata. ). setelah !ata !ie!it lalu !ilakukan $r#ses u$!ate !en.an 4uery u$!ate. *. untuk menam$ilkan !ata terbaru !a$at men..unakan halaman #ut$ut. %L%#% !#! 2here Ck#n!isiDH setelah 4uery

!ijalankan akan memberikan 0ee!ba1k beru$a re1#r!set yan. berisi !ata

A!a saat ketika suatu !ata atau in0#rmasi ti!ak la.i !ibutuhkan. Untuk itu !i$erlukan sebuah mekanisme !elete !ata yan. mana akan men.ha$us re1#r! $a!a !atabase. Al.#ritma !elete ham$ir sama !en.an e!it !ata3 namun $a!a lan.kah ke ) ti!ak melakukan $en.e!itan ta$i melakukan $r#ses !elete yan. !a$at men..unakan $erintah 4uery !elete 0r#m table. L#nt#h al.#ritma !elete !ata 6

%. men1ari !ata yan. akan !ie!it. Pr#ses $en1arian men..unakan $erintah 4uery yaitu 6 sele1t Cnama0iel!D 0r#m CnamatableD 2here Ck#n!isiDH setelah 4uery

!ijalankan akan memberikan 0ee!ba1k beru$a re1#r!set yan. berisi !ata hasil 4uery. &. untuk keamanan $r#ses maka !a$at !itambahkan halaman k#n0irmasi yan. ber0un.si untuk menam$ilkan !ata yan. akan !i !elete. ). melakukan $erintah !elete !en.an 4uery !elete 0#rm table. *. untuk menam$ilkan !ata terbaru !a$at men..unakan halaman #ut$ut. P%"M!S!L!H!2 Sebelum men.erjakan hara$ melakukan rest.re d(t(b(se terlebih !ahulu. Dan ketika selesai lakukan b(;?+0 sem+( d(t(. Setia$ *istin6 0r.6r(n =(r+s di;e? d(=+*+ sebelum !ijalankan. 1. edit:db.0=0 Synt(>
<HD2(-TA+ html A3./0( G'EEB9(EED-D UC-M/ 6@7 -ransitionalEE+1G Ghttp)EE www@w9@or#E-*E html6ED-DE html6'transitional@dtdG> <html <head> <title>edit4db<Etitle> <Ehead> <body> <table width=GR8VG border=G7G ali#n=GcenterG cellpaddin#=G7G mlns=Ghttp)EEwww@w9@or#E6%%%E htmlG>

cellspacin#=G7G b#color=GS::::((G> <tr ali#n=GcenterG b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG> <? include "koneksi1.php"; ?> <Etd> <Etr> <tr> <td width=G6Q9G hei#ht=G6%G ali#n=GcenterG vali#n=GtopG

b#color=GS((((((G><font color=GS777777G>Menu<Efont><Estron#><Etd> <td width=GW8&G rowspan=GWG vali#n=GtopG b#color=GS::::::G>

<? echo G<table border=7 ali#n=center cellpaddin#=9 cellspacin#=7 b#color =Sffffcc> <tr><h9>pilih data an##ota yan# akan di edit atau dihapus<Eh9><Etr> <tr b#color=Scccccc> <td>1o@<Etd> <td><div ali#n=center>1ama<Ediv><Etd> <td>,lamat<Etd> <td>+'Mail<Etd> <td>telp<Etd> <td>#ender<Etd> <td>order<Etd><Etr>G; EEperintah query $sql="select nama from anggota order by id"; $qry = mysql query!$sql"; ##menampilkan data tabel anggota $hile ! $a = mysql fetch array ! $qry " " % $i&&; echo !"<tr><td><center><font face='erdana si(e=)>$i.<#td>""; echo !"<td><font face='erdana si(e=)>$a*nama+<#td>""; echo !"<td><font face='erdana si(e=)>$a*alamat+<#td>""; echo !"<td><font face='erdana si(e=)>$a*email+<#td>""; echo !"<td><font face='erdana si(e=)>$a*telp+<#td>""; if!$a*gender+==,1,"% $gender=,male,; -else% $gender=,female,;echo !"<td><font face='erdana si(e=)>$gender<#td>"";

echo "<td><a href=."paneleditdb.php?id=$a*/d+.">edit<#a><#td>"; echo "<td><a href=."paneldeldb.php?id=$a*/d+.">delete<#a><#td><#tr>"; echo G<Etable>G; mysql4close(); D> <Etd> <Etr> <tr> <td hei#ht=G6XG ali#n=GcenterG vali#n=GtopG><a

href=Ginput4an##ota@phpG tar#et=G4selfG>0nput an##ota<Ea><Etd> <Etr> <tr> <td hei#ht=G6&G ali#n=GcenterG vali#n=GtopG><a href=Glihatdb@phpG tar#et=G4selfG>/ihat an##ota<Ea><Etd> <Etr> <tr> <td hei#ht=G6WRG vali#n=GtopG><Etd> <Etr> <tr b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG><Etd> <Etr> <Etable> <Ebody> <Ehtml>

'+t0+t

&. $anele!it!b.$h$ syntak


<HD2(-TA+ html A3./0( G'EEB9(EED-D UC-M/ 6@7 -ransitionalEE+1G Ghttp)EE www@w9@or#E-*E html6ED-DE html6'transitional@dtdG> <html <head> <title>paneleditdb<Etitle> <Ehead> <body> <table width=GXXRG border=G7G ali#n=GcenterG cellpaddin#=G7G cellspacin#=G7G b#color=GS::::((G> <tr ali#n=GcenterG b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG> <? include "koneksi.php"; $sql="select 0 from anggota $here /d=$id"; $hasil = mysql query!$sql" or die !"gagal operasi""; $a = mysql fetch array ! $hasil "; ?> <Etd> <Etr> <tr> mlns=Ghttp)EEwww@w9@or#E6%%%E htmlG>

<td width=G6Q9G hei#ht=G6%G ali#n=GcenterG vali#n=GtopG b#color=GS((((((G><font color=GS777777G>Menu<Efont><Estron#><Etd> <td width=GW8&G rowspan=GWG vali#n=GtopG b#color=GS::::::G> <form action="proseseditdb.php" method="post" name="form1" target=" self"> <table width=G677VG border=G7G ali#n=GcenterG cellpaddin#=GWG cellspacin#=G7G> <tr b#color=GS&.%,,6G> <th colspan=GQG class=GnaviG scope=GrowG>A,1+/ +D0D,-,.,"+<Eth> <Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>0D<Ediv><Eth> <td> <? if !$hasil"% echo "<input name=."t1tid." type=."te1t." id=."t1tid." 'alue=."$a*/d+." si(e=."12." ma1length=."12.">"; ?> <Etd> <Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>1ama<Ediv><Eth> <td> <? if !$hasil"% echo "<input name=."t1tnama." type=."te1t." id=."t1tnama." 'alue=."$a*nama+." si(e=.")2." ma1length=.")2.">"; ?> <Etd> <Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>,lamat<Ediv><Eth>

<td> <? if !$hasil"% echo "<te1tarea name=."t1talamat." cols=.")2." id=."t1talamat.">$a*alamat+<#te1tarea>"; ?> <Etd> <Etr> <tr> <th class=GcontentG scope=GrowG><div

ali#n=Gri#htG>+mail<Ediv><Eth> <td><? if !$hasil"% echo "<input name=."t1temail." type=."te1t." id=."t1temail." 'alue=."$a*email+." si(e=.")2." ma1length=.")2.">"; ?> <Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>-elp<Ediv><Eth> <td> <? if !$hasil"% echo "<input name=."t1ttelp." type=."te1t." id=."t1ttelp." 'alue=."$a*telpon+." si(e=.")2." ma1length=.")2.">"; ?> <Etr><tr><td scope=GrowG><div ali#n=Gri#htG><stron#>Pender<Estron#><Ediv><Etd> <td> <? if !$a*gender+==,1,"% echo " <input name=."rbgender." type=."radio." 'alue=."1." checked> 3aki 4 laki";

echo "<input name=."rbgender." type=."radio." 'alue=."5.">6erempuan<#td>"; -else% echo " <input name=."rbgender." type=."radio." 'alue=."1." > 3aki 4 laki"; echo "<input name=."rbgender." type=."radio." 'alue=."5." checked >6erempuan<#td>"; ?> <Etd> <Etr> <tr> <td scope=GrowG><Etd> <td scope=GrowG> <input type=GsubmitG name=G"ubmitG id=G"ubmitG value=GupdateG E> <input name="reset" type="reset" id="reset7" 'alue="8eset" #> <input name="batal" type=button id="batal" 'alue="batal" onclick=9a'ascript:$indo$.location.href="edit db.php" # ><Eth> <Etr> <Etable> <Eform> <Etd> <Etr> <tr> <td hei#ht=G6XG ali#n=GcenterG vali#n=Gtop"><a href="input anggota.php" target=" self">0nput an##ota<Ea><Etd> <Etr>

<tr> <td hei#ht=G6&G ali#n=GcenterG vali#n=GtopG><a href=Glihatdb@phpG tar#et=G4selfG>/ihat an##ota<Ea><Etd> <Etr> <tr> <td hei#ht=G6WRG vali#n=GtopG><Etd> <Etr> <tr b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG><Etd> <Etr> <Etable> <Ebody> <Ehtml>

.+t0+t

3. 0r.seseditdb.0=0 synt(?
<D include(Gkoneksi@phpG); if (Ft tid<>GG)I

Fsql=Gupdate

an##ota

set

YnamaZ==Ft tnama=5

alamat==Ft talamat=5

email==t temail=5#ender==Frb#ender= where id==Ft tid=G; $hasil = mysql qeury!$sql" or die !"gagal operasi""; echo G <script lan#ua#e =!G>avascript!G > window@location@href=!Gedit4db@php!G; <Escript>G; JelseI echo G <script lan#ua#e =!G>avascript!G > self@history@back(); <Escript>G; J D>

4. 0(ne*de*db.0=0 synt(?
<HD2(-TA+ html A3./0( G'EEB9(EED-D UC-M/ 6@7 -ransitionalEE+1G Ghttp)EE www@w9@or#E-*E html6ED-DE html6'transitional@dtdG> <html <head> <title>paneldelete4db<Etitle> <Ehead> <body> <table width=GXXRG border=G7G ali#n=GcenterG cellpaddin#=G7G cellspacin#=G7G b#color=GS::::((G> <tr ali#n=GcenterG b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG> <? include "koneksi.php"; mlns=Ghttp)EEwww@w9@or#E6%%%E htmlG>

$sql="select 0 from anggota $here /d=$id"; $hasil = mysql query!$sql" or die !"gagal operasi""; $a = mysql fetch array ! $hasil "; ?> <Etd> <Etr> <tr> <td width=G6Q9G hei#ht=G6%G ali#n=GcenterG vali#n=GtopG b#color=GS((((((G><font color=GS777777G>Menu<Efont><Estron#><Etd> <td width=GW8&G rowspan=GWG vali#n=GtopG b#color=GS::::::G> <? echo "<form action=."prosesdeldb.php?id=$a*/d+." method=."post." name=."form1." target=." self.">"; ?> <table width=G677VG border=G7G ali#n=GcenterG cellpaddin#=GWG cellspacin#=G7G> <tr b#color=GS&.%,,6G> <th colspan=GQG class=GnaviG scope=GrowG>[21:0*M,"0 D+/+-+ D,-,.,"+<Eth> <Etr><tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>0D<Ediv><E th> <td> <? if !$hasil"% echo "<font color=."red."><b>$a*/d+<#b><#font>"; ?> <Etd> <Etr><tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>1ama<Ediv><Eth> <td> <? if !$hasil"% echo "<font color=."red."><b>$a*nama+<#b><#font>";

?> <Etd><Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>,lamat<Ediv><Eth> <td> <?if !$hasil"% echo "<font color=."red."><b>$a*alamat+<#b><#font>"; ?> <Etd> <Etr> <tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>+mail<Ediv><Eth> <td><? if !$hasil"% echo "<font color=."red."><b>$a*email+<#b><#font>"; ?> <Etr><tr> <th class=GcontentG scope=GrowG><div ali#n=Gri#htG>-elp<Ediv><Eth> <td> <? if !$hasil"% echo "<font color=."red."><b>$a*teelp+<#b><#font>"; ?> <Etr><tr> <td scope=GrowG><div ali#n=Gri#htG><stron#>Pender<Estron#><Ediv><Etd> <td> <?

if !$b*gender+==,1,"% echo "<font color=."red."><b>laki4laki<#b><#font>"; -else% echo "<font color=."red."><b>perempuan<#b><#font>";

?> <Etd> <Etr> <tr> <td scope=GrowG><Etd> <td scope=GrowG> <input type=GsubmitG name=G"ubmitG id=G"ubmitG value=GhapusG E> <input name="batal" type=button id="batal" 'alue="batal" onclick=9a'ascript:$indo$.location.href="edit db.php" #><Eth> <Etr><Etable><Eform> <Etd> <Etr> <tr> <td hei#ht=G6XG ali#n=GcenterG vali#n=GtopG><a href=Ginput4an##ota@phpG tar#et=G4selfG>0nput an##ota<Ea><Etd> <Etr> <tr> <td hei#ht=G6&G ali#n=GcenterG vali#n=GtopG><a href=Glihatdb@phpG tar#et=G4selfG>/ihat an##ota<Ea><Etd><Etr> <tr> <td hei#ht=G6WRG vali#n=GtopG><Etd> <Etr> <tr b#color=GS((((((G> <td hei#ht=G6%G colspan=GQG vali#n=GtopG><Etd> <Etr> <Etable> <Ebody> <Ehtml>

.+t0+t

5. 0r.sesde*db.0=0
<D include(Gkoneksi@phpG); if (Fid<>GG)I Fsql=Gdelete form an##ota where 0d==Fid=G; Fhasil = mysql4query(Fsql) or die (G#a#al operasiG); echo G <script lan#ua#e =!G>avascript!G >window@location@href=!Gedit4db@php!G; <Escript>G; JelseI echo G <script lan#ua#e =!G>avascript!G > self@history@back(); <Escript>G; J D>

,. men.ubah 0ile in0+t:(n66.t(.0=0 ubah 0ile !en.an menambahkan *in? kehalaman edit:db.0=0.

?. men.ubah 0ile *i=(tdb.0=0 ubah 0ile tersebut sehin..a memiliki *in? ke halaman edit:db.0=0

Anda mungkin juga menyukai