SlideShare a Scribd company logo
rio astamalrio astamal
MODULMODUL
PEMROGRAMAN PHPPEMROGRAMAN PHP
Lisensi dibawah:
Creative Commons
Attribution-Share Alike 3.0
http://creativecommons.org
Level - PemulaLevel - Pemula
Versi - 1.0Versi - 1.0
http://lug.stikom.edu/http://lug.stikom.edu/http://ossc.stikom.edu/http://ossc.stikom.edu/
OSSC LOGO
LUG STIKOM Surabaya
Software Open Source yang Digunakan dalam Pembuatan Modul ini adalah:
OpenOffice.org
Linux XAMPP
Apache httpd Server PHP
Ubuntu
Geany PDFSam
Firefox
dan beberapa software lain yang mungkin lupa disebutkan.
© 2008-2010 Rio Astamal – Hal. ii
LUG STIKOM Surabaya
Kata Pengantar
Modul Pemrograman PHP ini adalah sebuah modul yang berisikan tutorial dasar-dasar
pemrograman web menggunakan bahasa pemrograman PHP. Seperti yang telah diketahui PHP saat
ini merupakan bahasa pemrograman untuk web yang terpopuler. Facebook, Yahoo, Digg dan masih
banyak website populer lainnya menggunakan PHP. Belum lagi jumlah CMS yang bebasiskan PHP
beberapa yang terpopuler diantaranya: Joomla, Wordpress, Drupal, ModxCMS, dan masih banyak
lagi. Dengan menguasasi PHP sudah dapat dibayangkan bukan banyak kelebihan yang akan anda
dapat.
Pada modul ini penulis coba untuk menjelaskan secara step-by-step bagaimana membuat sebuah
halaman website yang lengkap dengan mengetahui terlebih dahulu dasar-dasar web. Hal tersebut
meliputi dasar-dasar WWW, HTML, CSS dan pengetahuan dasar tentang website yang menurut
penulis perlu diketahui. Baru setelah itu penulis masuk ke bahasan utama yaitu PHP. Pada akhir
modul ini penulisan sertakan beberapa contoh aplikasi sederhana yang mungkin akan sangat
membantu pemahaman pembaca mengenai PHP.
Penulis sampaikan terima kasih kepada seluruh pihak yang mendukung dan membantu hingga
modul ini selesai terutama rekan-rekan di LUG STIKOM Surabaya dan pihak Open Source
Software Center (OSSC) STIKOM.
Semoga modul ini dapat berguna bagi semua pembaca. Kritik dan saran untuk modul ini dapat
disampaikan pada email penulis di rio@lug.stikom.edu. Terima Kasih.
Surabaya, Maret 2010
Penulis
© 2008-2010 Rio Astamal – Hal. iii
LUG STIKOM Surabaya
Daftar Isi
Kata Pengantar.................................................................................................................................iii
Daftar Isi............................................................................................................................................iv
Pendahuluan......................................................................................................................................vi
BAB I HTML & World Wide Web....................................................................................................1
Cara Kerja WWW................................................................................................................................1
HTML..................................................................................................................................................2
Manipulasi Font...................................................................................................................................3
Hyperlink.............................................................................................................................................4
Membuat Tabel....................................................................................................................................5
HTML Form........................................................................................................................................6
Macam-macam Input......................................................................................................................7
Menampilkan Gambar.........................................................................................................................9
XHTML & DOCTYPE......................................................................................................................10
CSS.....................................................................................................................................................11
CSS Class dan ID..........................................................................................................................12
Hyperlink Pseudoclass...................................................................................................................14
External CSS.................................................................................................................................15
Membuat Layout dengan DIV............................................................................................................16
Javascript...........................................................................................................................................21
Menggunakan Javascript...............................................................................................................21
Manipulasi DOM..........................................................................................................................23
BAB II Pengenalan PHP..................................................................................................................26
Apa itu PHP?....................................................................................................................................26
Cara Kerja PHP.................................................................................................................................26
Variabel pada PHP.............................................................................................................................27
Tipe Variabel.................................................................................................................................27
Konstanta......................................................................................................................................27
Komentar...........................................................................................................................................29
Operator.............................................................................................................................................30
Operator Aritmatik.......................................................................................................................30
Operator Kombinasi.....................................................................................................................30
Operator Perbandingan.................................................................................................................31
Operator Logika............................................................................................................................31
Operator Increment/Decrement....................................................................................................31
Operator String.............................................................................................................................32
Escape Character...............................................................................................................................32
Special Character..............................................................................................................................33
BAB III Struktur Kontrol................................................................................................................35
Struktur Kondisi................................................................................................................................35
Statement if...................................................................................................................................35
Statement if...else..........................................................................................................................36
Statement if...elseif...else..............................................................................................................36
Statement switch...case...break.....................................................................................................40
Struktur Perulangan (Looping)..........................................................................................................41
© 2008-2010 Rio Astamal – Hal. iv
LUG STIKOM Surabaya
Statement for.................................................................................................................................41
Statement while.............................................................................................................................43
Statement do...while......................................................................................................................44
BAB IV File dan Array....................................................................................................................46
Berinteraksi dengan File...................................................................................................................46
Menyimpan File...........................................................................................................................46
Fungsi-fungsi Lain.......................................................................................................................50
Array pada PHP.................................................................................................................................51
Mengakses Isi Array.....................................................................................................................52
Looping Array Index Numerik.....................................................................................................52
Array dengan Index String (Associative Array)...........................................................................55
Mengakses Associative Array.......................................................................................................55
Looping pada Associative Array...................................................................................................56
Array Multidimensi...........................................................................................................................56
Array 2-Dimensi............................................................................................................................56
Array 3-Dimensi............................................................................................................................58
BAB V Contoh-contoh Aplikasi......................................................................................................60
Pre-Requirements..............................................................................................................................60
Simple Contact Form........................................................................................................................60
Penjelasan Script Simple Concat Form........................................................................................62
Simple Guestbook.............................................................................................................................63
Penjelasan Script Simple Guestbook............................................................................................67
Improvisasi Simple Guestbook.....................................................................................................68
Simple Poll........................................................................................................................................68
Penjelasan Script Simple Poll.......................................................................................................72
Daftar Pustaka..................................................................................................................................74
© 2008-2010 Rio Astamal – Hal. v
LUG STIKOM Surabaya
Pendahuluan
A. Linux
Konfigurasi dan software-software yang digunakan penulis test menggunakan distro Ubuntu, namun
dapat dipastikan tidak terlalu berbeda jika diterapkan pada distro Linux lainnya. Software-software
yang diperlukan:
• XAMPP for Linux
• Text Editor (vi, gedit, emacs, geany atau yang lain)
• Postfix Mail Server
• Email Client (Evolution, Claws Mail, Thunderbird atau yang lain)
• Web Browser (Firefox, Chrome, atau yang lain)
1. Instalasi XAMPP for Linux
Download file XAMPP for Linux dari situs http://www.apachefriends.org/. Asumsi yang saya
berikan adalah:
• File xampp-linux-x.y.z (x.y.z versi xampp) anda letakkan pada home direktori.
• Username pada sistem yang digunakan adalah lug (Sesuaikan dengan username anda).
• XAMPP akan diinstall pada direktori /opt sesuai standard defaultnya.
Langkah-langkahnya:
1. Buka Terminal (Application → Accecories → Terminal)
2. Extract file xampp ke direktori /opt
$ sudo ­zxvf xampp­linux­x.y.z ­C /opt
3. Ubah permission /opt/lampp/htdocs ke user lug
$ sudo chown ­R lug /opt/lampp/htdocs
4. Buat direktori webpro pada direktori /opt/lampp/htdocs
$ mkdir /opt/lampp/htdocs/webpro
5. Sekarang coba jalankan XAMPP
$ sudo /opt/lampp/lampp startapache
6. Jika semuanya benar maka jika anda mengarahkan alamat web browser anda ke
http://localhost/ akan muncul tampilan XAMPP for Linux.
2. Instalasi Postfix Mail Server
Tujuan kita menginstall postfix adalah karena ada contoh aplikasi yang kita buat melibatkan proses
pengiriman email. Jadi otomatis kita memerlukan sebuah SMTP server. Untuk instalasi postfix
langkahnya cukup sederhana namun pastikan repository anda sudah terkonfigurasi dengan bebar.
Langkah-langkah instalasi dan konfigurasi postfix:
1. Buka Terminal (Application → Accecories → Terminal)
2. Install dengan menggunakan apt-get
$ sudo apt­get install postfix
3. Tambahkan domain localhost.org, localhost.com, localhost.net ke dalam mydestination
postfix.
© 2008-2010 Rio Astamal – Hal. vi
LUG STIKOM Surabaya
$ sudo gedit /etc/postfix/main.cf
4. Cari baris mydestination dan tambahkan entry yang baru, setiap entry dipisahkan koma dan
tetap satu baris. Sehingga hasil akhir dari isi mydestination kurang lebih akan terlihat seperti
berikut:
mydestination = lug­laptop, localhost.localdomain, localhost, 
localhost.com, localhost.org, localhost.net
5. Restart postfix
$ sudo /etc/init.d/postfix restart
3. Konfigurasi Email Client
Pada contoh konfigurasi ini saya menggunakan email client Claws Mail. Namun konsep
konfigurasinya sama saja untuk setiap email client yang menggunakan local mailbox. Berikut-
langkah-langkahnya.
1. Install Claws Mail
$ sudo apt­get claws­mail
2. Kirim email lewat terminal untuk mengetes (ganti lug sesusai username anda)
$ mail lug
Subject: HELLO
INI ADALAH TES UNTUK LOCAL MAILBOX
3. Tekan ENTER lalu CTRL-D untuk mengakhiri penulisan pesan. Jika muncul pertanyaan cc:
tekan ENTER saja.
4. Buka claws mail (Applications → Internet → Claws Mail)
5. Klik Configuration → Create new Account
6. Kemudian isikan seperti dibawah ini (ganti lug sesuai username anda)
7. Klik Apply
8. Untuk mengecek email baru klik Icon “Get Mail” pada pojok kiri atas.
9. Jika ada email masuk maka akan tampil di Inbox
10. Email yang kita kirimkan lewat terminal akan masuk ke inbox kita, hasilnya dapat dilihat
pada gambar berikut.
© 2008-2010 Rio Astamal – Hal. vii
LUG STIKOM Surabaya
B. Instalasi pada Windows
Instalasi software dan konfigurasi penulis lakukan pada sistem operasi Windows XP. Bagi anda
yang menggunakan Windows Vista/7 silahkan menyesuaikan. Software-software yang akan kita
gunakan diantaranya:
• XAMPP for Windows
• Text Editor (Notepad++)
• Mercury untuk mail server (sudah include dengan XAMPP)
• Email Client (Outlook Express, Thunderbird, atau yang lain)
• Web Browser (Firefox, Opera, Chrome, atau yang lain. IE tidak dianjurkan)
1. Instalasi XAMPP for Windows
Download file XAMPP for Windows dari situs http://www.apachefriends.org/. Asumsi yang saya
berikan adalah:
• File xampp-win32-x.y.z.exe (x.y.z versi xampp)
• XAMPP yang anda download adalah XAMPP versi installer.
• Target instalasi adalah C:xampp
Langkah-langkahnya:
1. Double klik file xampp-win32-x.y.z.exe
2. Pada pilihan bahasa pilih saja English lalu OK
3. Pada Destination Folder pilih saja defaultnya yaitu c:xampp
4. Klik Next > Install
5. Setelah selesai coba jalankan XAMPP Control panel melalui Start → Programs → Apache
Friends → XAMPP → XAMPP Control Panel
6. Klik tombol “Start” disebelah kanan Apache
7. Coba buka browser anda pada alamat http://localhost/ jika semuanya OK maka akan muncul
tampilan XAMPP for Windows
© 2008-2010 Rio Astamal – Hal. viii
LUG STIKOM Surabaya
2. Konfigurasi Mercury Mail Server
Mercury Server adalah sebuah aplikasi mail server yang mendukung protokol SMTP, POP3, dan
IMAP. Mercury sudah dimasukkan dalam XAMPP jadi anda tidak perlu mendownload. Berikut ini
adalah cara konfigurasi mercury.
Langkah-langkah membuat account baru:
1. Jalankan XAMPP Control Panel
2. Klik tombol Start sebelah kanan Mercury untuk men-start mercury server.
3. Klik tombol Admin untuk membuka window konfigurasi
4. Klik Menu Configuration → Manage local user...
5. Klik tombol Add untuk menambahkan user baru. Pada contoh saya memasukkan
Username: lug
Personal name: LUG STIKOM
Password: lugstikom
6. Klik tombol OK → Close
7. Langkah selanjutnya adalah mempersingkat waktu poll untuk email baru agar proses
send/receive email terjadi secara realtime. Klik menu Configuration → Mercury core
module...
8. Pada isian Poll for new mail every ganti dengan 3.
9. Klik OK
10. Tahap berikutnya adalah pengetesan account. Klik menu File → Send mail message
Isikan To: lug@localhost.org
Subject: HELLO
Body: INI TEST ACCOUNT
11. Klik Send
Tahap berikutnya adalah melakukan konfigurasi email client. Dalam contoh ini saya menggunakan
email client bawaan Windows Outlook Express. Saya rasa langkah-langkahnya hampir sama untuk
semua email client.
1. Pertama jalankan aplikasi Outlook Express
2. Jika tidak muncul window untuk membuat account klik menu Tools → Accounts...
3. Pindah ke tab Mail lalu klik tombol add → Mail...
Display Name: LUG STIKOM
Email Address: lug@localhost.org
Incoming Mail: localhost
Outgoing Mail: localhost
Account Name: lug
Password: lugstikom (sesuai dengan di mercury)
4. Klik Next → Finish → Close
5. Klik tombol Send/Receive untuk mengecek inbox
6. Jika semuanya benar maka seharunya ada email baru di inbox anda. Email tersebut adalah
email yang anda kirim lewat mercury.
© 2008-2010 Rio Astamal – Hal. ix
Penting!
Menutup window Mercury berarti sama saja mematikan mail server. Oleh karena itu cukup
minimize saja jangan ditutup.
LUG STIKOM Surabaya
C. Konvensi Letak Direktori
Pada modul ini anda akan sering menemui perintah untuk menyimpan file ke suatu direktori.
Karena sistem pengalamatan direktori pada sistem operasi berbasis Linux/*NIX berbeda dengan
windows maka pada modul dibuat konvensi sebagai berikut.
Jika disebutkan alamat direktori sebagai berikut htdocs/ maka:
Untuk linux berarti: /opt/lampp/htdocs/
Untuk Windows berarti: c:xampphtdocs
Modul ini terdiri dari lima bab, untuk itu penulis menyarankan untuk membuat direktori baru
bernama webpro didalam htdocs/. Setelah itu berturut-turut buatlah direktori dengan nama bab1,
bab2, bab3, bab4, dan bab5. Sehingga struktur direktori akhir akan terlihat seperti tabel dibawah.
Linux Windows
/opt/lampp/htdocs/webpro/bab1 C:xampphtdocswebprobab1
/opt/lampp/htdocs/webpro/bab2 C:xampphtdocswebprobab2
/opt/lampp/htdocs/webpro/bab3 C:xampphtdocswebprobab3
/opt/lampp/htdocs/webpro/bab4 C:xampphtdocswebprobab4
/opt/lampp/htdocs/webpro/bab5 C:xampphtdocswebprobab5
Jadi setiap project yang anda kerjakan pada modul ini simpan sesuai dengan babnya masing-masing
untuk lebih mempermudah organisasi.
Mungkin anda bingung dengan perbedaan istilah direktori dan folder. Anggap saja itu sama, tidak
usah dipusingkan. Folder ya direktori, direktori ya folder.
© 2008-2010 Rio Astamal – Hal. x
LUG STIKOM Surabaya
Halaman ini sengaja dikosongkan
© 2008-2010 Rio Astamal – Hal. xi
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
BAB I
HTML dan World Wide Web
1.1 Cara Kerja WWW
Ketika kita mengunjungi sebuah situs katakanlah, google.com, ada sebuah proses “dibalik layar”
yang tidak anda ketahui. Proses tersebut cukup kompleks namun, jika digambarkan dalam sebuah
diagram sederhana kurang lebih akan seperti berikut:
Gambar 1.1: Cara kerja WWW
Secara kronologis urutan proses pada diagram diatas adalah:
1. User membuka alamat website pada browser
2. Browser mengirim HTTP-Request ke server
3. Server merespon HTTP-Request dari browser
4. Server mengirim HTTP-Response ke browser
5. Browser menampilkan halaman website kepada user
1.2 HTML
HTML/XHTML merupakan format tampilan yang digunakan untuk menampilkan halaman website.
HTML terdiri dari simbol-simbol tertentu yang sering disebut dengan tag. Sebuah halaman website
yang valid selalu diapit tag <html></html>. File HTML umumnya memiliki akhiran *.htm atau
*.html.
Tag-tag pada HTML selalu diawali dengan <x>...</x>, dimana x tag HTML seperti <strong>, <p>,
<div>, dan lain-lain. Dibawah ini adalah tabel beberapa tag HTML yang sering digunakan.
Tag HTML Keterangan
<html></html> Tag untuk mengapit halaman HTML
<head></head> Tag yang berisi informasi umum dari halaman
<title></title> Judul Halaman *
<body></body> Akan ditampilkan di browser
<style></style> Untuk CSS *
<strong></strong> Untuk menebalkan teks
<div></div> Untuk membuat layer
<a></a> Untuk membuat hyperlink
© 2008-2010 Rio Astamal – Hal. 1
Web
Server
Browser
INTERNET
User
REQUEST
RESPONSE
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
<p></p> Untuk membuat paragraf
<hn></hn> Untuk membuat header **
<span></span> Untuk inline style (manipulasi teks)
<!-- --> Komentar
* Tag tersebut harus berada didalam tag <head>...</head>
** n dapat berupa angka dari 1 – 5, contoh <h1>...</h1>
Penerapan Teori HTML
1. Buka editor anda (gedit(Linux), Notepad++(Windows), dsb))
2. Ketik kode berikut:
1. <html>
2. <head>
3. <title>Website Pertamaku</title>
4. </head>
5. <body>
6. <h1>Hello World!!</h1>
7. </body>
8. </html>
3. Simpan dengan nama hello-world.html
4. Buka browser anda(Firefox, IE, dsb) dan buka file yang baru saja anda buat.
5. Hasilnya akan seperti gambar 1.1
Gambar 1.1: hello-world.html
1.3 Manipulasi Font
Untuk memanipulasi font kita akan menggunakan inline style/CSS (akan dibahas dibagian
berikutnya). Kita tidak akan menggunakan tag <font> karena tag ini sudah “kuno” alias deprecated.
W3C sebagai pengembang HTML sudah tidak menyarankan untuk menggunakan tag font lagi.
Sebagai gantinya digunakan tag <span> dan inline style. Inline style adalah attribut style yang
diberikan pada sebuah tag HTML. Contoh, untuk membuat tampilan teks tebal gunakan cara
berikut:
<span style=”font­weight:bold”>Aku adalah teks tebal</span>
Output:
© 2008-2010 Rio Astamal – Hal. 2
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Aku adalah teks tebal
Pada contoh diatas kita memberikan attribut style, yang berisi “font-weight:bold”. Maksudnya
adalah kita akan mengaplikasikan style bold pada teks yang diapit oleh tag <span></span>.
Pemberian style tidak hanya terbatas pada satu bagian saja. anda dapat memberikan beberapa style
sekaligus dengan memberi tanda pemisah berupa “;” untuk setiap style.
<span style=”font­weight:bold;text­decoration:underline;font­style:italic”>Aku 
adalah teks tebal, bergaris bawah dan miring</span>
Output
Aku adalah teks tebal, bergaris bawah, dan miring
Pada contoh diatas kita menerapkan tiga style pada tag span. Dapat dilihat kalau setiap style
dipisahkan oleh titik koma. Intinya kita dapat memberikan banyak style sekaligus pada suatu tag.
Penerapan Teori Manipulasi Teks
1. Buka gedit/Notepad++
2. Ketik kode HTML berikut ini
1. <html>
2. <head>
3. <title>Manipulasi Teks</title>
4. </head>
5. <body>
6. <h1 style="color:red;text­decoration:underline">PENGUMUMAN!</h1>
7. <span style="color:#FF0000">
8. Barang siapa yang menemukan dompet saya, akan saya beri 
9. <span style="font­weight:bold;font­style:italic">ISTRI, MOBIL, RUMAH dan 
10. Segala SERTIFIKAT TANAH SAYA</span> DIJAMIN!!!.</span>
11.</body>
12.</html>
3. Simpan dengan nama manipulasi-teks.html
4. Buka dengan browser anda
5. Hasilnya akan seperti gambar 1.2
1.4 Hyperlink
Anda tentu sering melngklik gambar atau tulisan yang mengarah ke halaman lain atau website
lainnya. Yang anda klik itu adalah hyperlink atau lebih dikenal dengan istilah link saja. Untuk
membuat link kita dapat menggunakan tag <a></a>. Dua attribut yang paling sering digunakan
pada tag <a> adalah href dan target. href digunakan untuk menentukan lokasi tujuan dari link.
Dapat berupa relatif URL atau absolut URL.
© 2008-2010 Rio Astamal – Hal. 3
Attribut style tidak terbatas pada tag span saja, hampir semua tag yang digunakan
untuk presentasi teks dapat kita sisipi tag style.
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Gambar 1.2: Manipulasi font menggunakan atribut style
target digunakan untuk menentukan apakah halaman akan dibuka pada jendela/window baru atau
tidak. Defaultnya adalah self dimana link tidak dibuka pada window baru. Jika ingin membuka pada
window baru gunakan nilai _blank.
Untuk lebih memahami cara kerja link, kita akan membuat dua file yaitu profilku.html dan daftar-
situs.html.
1. Buka gedit/Notepad++
2. Ketik kode berikut:
1. <html>
2. <head>
3. <title>Profil JSL</title>
4. </head>
5. <body>
6. <h2>ProfilKu</h2>
7. <ul>
8. <li><strong>Nama Lengkap:</strong> John Septian Lennon</li>
9. <li><strong>Tempat/Tgl. Lahir: </strong>Lipermboh, 14 September 1940</li>
10. <li><strong>Pekerjaan:</strong> Rocker Jalanan</li>
11. <li><strong>Wafat: </strong> Tewas tertembak oleh penggemar di depan 
12. kandang sapi pada 1980</li>
13. </ul>
14. <p>Ingin lihat daftar situs favorit saya? <a href="daftar­situs.html">
15. klik disini</a>.</p>
16.</body>
17.</html>
3. Simpan dengan nama profilku.html
4. Buat file baru lagi, kemudian ketik kode berikut:
1. <html>
2. <head>
3. <title>Daftar situs favorit JSL</title>
4. </head>
5. <body>
6. <h2>Daftar Situs favoritku</h2>
7. <ol>
8. <li><a target="_blank" href="http://www.google.com/">Om Google</a></li>
9. <li><a target="_blank" href="http://www.milw0rm.com">
10. Cacing Underground</a></li>
© 2008-2010 Rio Astamal – Hal. 4
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
11. </ol>
12. <p><a href="profilku.html">Lihat profil lengkap</a></p>
13.</body>
14.</html>
5. Simpan dilokasi yang sama dengan profilku.html dan beri nama daftar-situs.html
6. Buka file profilku.html dengan browser anda, dan coba klik link yang ada untuk memahami
cara kerjanya
Gambar 1.3
1.5 Membuat Tabel
Untuk membuat tabel kita dapat menggunakan tag <table></table>. Dalam beberapa tahun terakhir,
penggunaan tabel sebagai layout website sudah tidak relevan lagi, dan digantikan oleh tag DIV. Saat
ini penggunaan tabel dikhususkan hanya untuk menampilkan data secara tabular saja tidak untuk
design halaman.
Beberapa tag yang sering digunakan saat membuat tabel adalah:
Tag Keterangan
<tr></tr> Digunakan untuk membuat baris baru
<th></th>* Digunakan untuk membuat header tabel
<td></td>* Digunakan untuk membuat kolom
* Tag tersebut selalu berada didalam tag <tr>...</tr>
Seperti halnya tag lain yang digunakan untuk presentasi teks, seperti <span>, anda dapat
menggunakan attribut style untuk memformat tampilan tabel. Berikut ini adalah contoh pembuatan
tabel menggunakan HTML.
1. Buka teks editor (gedit/Notepad++)
2. Ketik kode berikut:
1. <html>
2. <head>
3. <title>TABEL IPS/IPK</title>
4. </head>
5. <body>
6. <h2>Tabel IP Sampai semester 4:</h2>
7. <table style="width:600px;" border="1">
© 2008-2010 Rio Astamal – Hal. 5
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
8. <tr style="background­color:#cfcfcf">
9. <th>SEMESTER</th>
10. <th>IPS</th>
11. </tr>
12. <tr>
13. <td>SEMESTER 1</td><td style="text­align:right">4.0</td>
14. </tr>
15. <tr>
16. <td>SEMESTER 2</td><td style="text­align:right">4.0</td>
17. </tr>
18. <tr>
19. <td>SEMESTER 3</td><td style="text­align:right">4.0</td>
20. </tr>
21. <tr>
22. <td>SEMESTER 4</td><td style="text­align:right">4.0</td>
23. </tr>
24. <tr style="text­align:right;background­color:#FFCB68;font­weight:bold">
25. <td style="text­align:center;">NILAI IPK &gt;&gt;&gt;</td>
26. <td style="text­align:inherit;">4.0</td>
27. </tr>
28. </table>
29.</body>
30.</html>
3. Simpan denan nama tabel.html
4. Buka dengan browser anda, hasilnya akan nampak seperti gambar 1.4
Gambar 1.4: Penggunaan Tabel
1.6 HTML Form
HTML Form sering digunakan untuk meminta inputan dari user yang kemudian diproses oleh
server side scripting seperti PHP, JSP, dan sebagainya. Form HTML diapit oleh tag <form></form>.
Dua attribut yang paling sering digunakan dalam penggunaan form adalah:
– Action: Nilai dari attribut ini menunjukkan lokasi dari file pemroses dari form. Dapat berupa
relatif URI, contoh “folderX/file.php” atau absolut URI, contoh “http://contoh.com/file.php”.
© 2008-2010 Rio Astamal – Hal. 6
&gt; merupakan special character untuk tanda “>”. Dalam HTML special character
diawali tanda ampersand “&” dan diakhiri “;”. Contoh lain adalah &lt; untuk “<”,
&copy; untuk “©”
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
– Method: Nilai dari attribut menentukan metode data yang dikirimkan ke file pemroses, apakah
melalui metode “GET” atau “POST”.
Contoh penggunaan tag form sebagai berikut:
<form action=”file.php” method=”POST”>
...
</form>
Tag form tidak banyak berguna tanpa adanya tag input lain. Tag form berfungsi hanya sebagai
wrapper yang mengelompokkan data yang akan dikirim. Tag yang digunakan bersama tag form
adalah tag <input>.
1.6.1 Macam-macam input
Untuk menampilkan textbox, checkbox, radio button, dan lainnya hanya diperlukan tag <input>.
Yang membedakan output dari masing-masing tampilan adalah nilai dari attribut type. Contoh
berikut merupakan penggunaan tag input untuk menampilkan textbox:
<input type=”text” size=”16” maxlength=”16”>
Berikut ini daftar nilai yang dapat digunakan pada attribut type:
Nilai type Keterangan
text Untuk menampilkan textbox
password Untuk menampilkan password field
file Untuk menampilkan proses upload file (mirip seperti textbox namun
dengan tombol Browse)
checkbox Untuk menampilkan tombol checkbox (lebih dari satu pilihan)
radio Untuk menampilkan tombol radio/option (hanya satu pilihan)
submit Tombol untuk men-submit form (default button untuk submit)
button sama dengan submit hanya saja bukan default button
reset Untuk membersihkan tampilkan form
hidden Input tidak ditampilkan dibrowser.
Selain tag <input> masih ada tag lain yang biasa digunakan dalam form yaitu tag <select> dan
<textarea>.
PENERARAN TEORI HTML FORM
1. Buka gedit / Notedpad++
2. Ketik kode berikut:
1. <html>
2. <head>
3. <title>Registrasi</title>
4. </head>
5. <body>
© 2008-2010 Rio Astamal – Hal. 7
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
6. <h2>Form Registrasi</h2>
7. <form action="" method="POST">
8. <label>Nama: </label>
9. <input type="text" size="30" name="nama"><br>
10. <label>Username: </label>
11. <input type="text" size="16" name="uname" maxlength="16"><br>
12. <label>Password: </label>
13. <input type="password" size="16" name="pass" maxlength="16"><br>
14. <label>Jenis Kelamin: </label>
15. <input type="radio" name="jk" value="pria" checked><span> Pria</span>
16. <input type="radio" name="jk" value="wanita"><span> Wanita</span>
17. <br>
18. <label>Hoby: </label><br>
19. <input type="checkbox" name="hob" value="spkbola"><span> Sepak Bola</span>
20. <input type="checkbox" name="hob" value="game"><span> Game</span>
21. <input type="checkbox" name="hob" value="tidur"><span> Tidur</span><br>
22. <label>Deskripsikan diri anda: <label><br>
23. <textarea style="height:100px;width:400px" name="desc"></textarea>
24. <hr><br>
25. <label>Darimana anda mendengar kami?</label><br>
26. <select name="dengar">
27. <option value="kuburan">Dari dalam kubur</option>
28. <option value="google">Google</option>
29. <option value="mimpi">Mimpi</option>
30. </select><br>
31. <input type="submit" value="DAFTAR"> 
32. <input type="reset" value="RESET">
33. </form>
34.</body>
35.</html>
3. Simpan dengan nama form.html
4. Buka dengan browser file tersebut.
Hasilnya memang tidak begitu bagus karena kita tidak melakukan styling pada form.
Gambar 1.6: Contoh HTML Form Sederhana
Dalam kasus real world nilai yang ada pada attribut name dan value-lah yang akan dikirim ke file
© 2008-2010 Rio Astamal – Hal. 8
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
pemroses.
1.7 Menampilkan Gambar
Untuk menampilkan gambar pada halaman HTML dapat digunakan tag <img>. Beberapa attribut
yang sering digunakan adalah src, height, dan width. Attribut src digunakan untuk menentukan
alamat dari gambar yang akan ditampilkan, dapat berupa relatif URI atau absolut URI. Attribut
height digunakan untuk menentukan tinggi, sedangkan width untuk menentukan lebar.
Secara default nilai yang ada pada height dan width adalah dalam pixel, kecuali anda menambahkan
tanda “%”. Maka lebar atau tinggi diukur menggunakan persen. Jika anda tidak menyertakan
attribut height dan width, maka gambar tersebut akan ditampilkan sesuai dengan ukuran aslinya.
Untuk lebih memahaminya ikuti langkah berikut:
1. Siapkan dua buah gambar dalam folder yang sama dengan file html
2. Dalam contoh ini saya menggunakan (1)stikom.jpg dan (2)join-revolution.jpg
3. Buka gedit/Notepad++
4. Ketik kode berikut:
1. <html>
2. <head>
3. <title>Join The Revolution</title>
4. </head>
5. <body>
6. <img src="stikom.jpg" align="left">
7. <strong style="color:red">SHOULD</strong>
8. <img src="join­revolution.jpg" align="center">
9. </body>
10.</html>
5. Simpan dengan nama gambar.html
Gambar 1.7: Menampilkan gambar dengan img
1.8 XHTML dan DOCTYPE
© 2008-2010 Rio Astamal – Hal. 9
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Apakah XHTML itu? apakah ia berbeda dengan HTML? Sebenarnya XHTML adalah HTML hanya
saja XHTML mengikuti format XML sebagai standar penulisannya. Jadi setiap tag harus memiliki
penutup.
Anda tentu pernah mengetik tag-tag tanpa penutup seperti <br>, <img>, dan <input> pada
pembahasan sebelumnya. Pada XHTML semua tag harus memiliki penutup, jika tidak maka
halaman yang anda buat tidak sesuai dengan standar yang telah ditentukan dan dianggap tidak
valid/compliant dengan standar W3C.
Berikut ini adalah beberapa contoh penulisan yang valid di HTML tapi tidak di XHTML.
SALAH BENAR
<strong><span>Hello 
World</strong></span>
<strong><span>Hello 
World</span></strong>
<input type=”radio” checked> <input type=”radio” checked=”checked” />
<br> <br /> atau <br></br>
<img border=1> <img border=”1” />
<input type=”button” value=”GO >>>”> <input type=”button” 
value=”GO &gt;&gt;&gt;” />
<STRONG>Hello</strong> <strong>Hello</strong>
Mungkin anda bertanya, lalu bagaimana saya memberitahu browser bahwa halaman saya adalah
XHTML? Semua itu terletak pada DOCTYPE halaman anda. DOCTYPE adalah pententu tipe
document yang ingin anda gunakan apakah HTML 4.01, XHTML 1.0 Transitional, XHTML 1.0
Strict dan lainnya.
DOCTYPE juga sering disebut DTD (Document Type Definition). Berikut ini adalah contoh
penggunaan tipe dokumen HTML 4.01,
<!DOCTYPE HTML PUBLIC "­//W3C/DTD HTML 4.01//EN" 
"http://www.w3c.org/TR/html4/strict.dtd"> 
Jika anda tidak menyebutkan DTD yang anda gunakan asumsi dari satu browser dengan browser
yang lain mungkin berbeda-beda. Jadi jika memang anda ingin menggunakan HTML murni bukan
XHTML gunakanlah DTD 4.01. Deklarasi DOCTYPE harus diletakkan paling awal sebelum tag
<html>.
Untuk XHTML beberapa DTD yang sering digunakan adalah
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­strict.dtd">
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">
3. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Frameset//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­frameset.dtd">
Perbedaan Transitional dan Strict terdapat pada toleransi kesalahan. Pada transitional jika masih ada
kesalahan standar penulisan masih diberikan toleransi, sedangkan Strict tidak memberikan toleransi
sama sekali. Contoh halaman XHTML yang valid adalah sebagai berikut:
© 2008-2010 Rio Astamal – Hal. 10
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
<?xml version="1.0" encoding="UTF­8"?> 
<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
<html xmlns="http://www.w3.org/TR/xhtml1"> 
  <head> 
    <title>Every document must have a title</title> 
  </head> 
  <body> 
<span>Hello World</span>
  </body> 
</html>
Dalam pembahasan selanjutnya kita akan selalu menggunakan XHTML bukan lagi HTML.
1.9 CSS (Cascading Style Sheets)
CSS merupakan suatu teknologi yang digunakan untuk mempermudah pembuatan sebuah website.
Dengan CSS kita dapat dengan cepat mengaplikasikan suatu style pada tag tertentu. Bahkan kita
dapat meletakkan CSS pada suatu file sehingga dapat digunakan oleh banyak halaman sekaligus.
Itu merupakan salah satu kelebihan CSS. CSS diapit oleh tag <style></style> dan berada diantara
tag <head></head>. Kelebihan lainnya adalah anda dapat menyisipkan komentar pada CSS, hal ini
cukup penting jika jumlah CSS anda sangat banyak. Komentar pada CSS diapit oleh karakter /* 
*/.
Pada pembahasan-pembahasan sebelumnya kita sering menggunakan attribut style untuk
memformat tampilan atau sering disebut inline style. Apa yang ada pada attribut style tersebut
sebenarnya adalah CSS yang valid, hanya saja letaknya didalam tag.
Hampir semua tag dapat dimanipulasi menggunakan CSS seperti <body>, <span>, <div>, <table>,
<p>, dan masih banyak lagi. Berikut ini adalah contoh sederhana penggunaan CSS pada tag body.
body {font­face: Verdana; font­size: 11px }
Pada contoh diatas kita memformat semua teks yang ada pada tag body menjadi berjenis huruf
Verdana dengan ukuran 11 pixel. Tag body pada contoh disebut selector sedangkan attribut style
didalamnya disebut declaration. Declaration ditandai dengan adanya kurung kurawal {...}.
Penerapan Teori CSS
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>CSS ­ Cascading Style Sheets</title> 
© 2008-2010 Rio Astamal – Hal. 11
Deklarasi versi XML pada awal halaman tidak harus ditulis namun sangat
dianjurkan untuk ditulis. Attribut “xmlns” harus ditulis untuk menentukan
namespace yang digunakan.
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
7. <style type="text/css">
8. body { font­family: Verdana, Serif; font­size: 11px }
9. div {
10. border: 2px solid #cccccc;
11. padding: 4px
12. }
13. h2 { 
14. text­decoration: underline; 
15. font­style: italic;
16. font­size: 18px
17. }
18. </style>
19.</head> 
20.<body> 
21. <div>
22. <h2>Ini adalah contoh sederhana penggunaan CSS</h2>
23. </div>
24.</body> 
25.</html>
3. Simpan dengan nama css.html
4. Lalu jalankan pada browser, hasilnya akan terlihat seperti gambar 1.8
Gambar 1.8: Contoh penggunaan CSS
Dapat anda lihat bahwa tag yang kita deklarasikan pada CSS secara otomatis style tag tersebut
mengikuti aturan CSS yang kita buat. Dengan demikian kita dapat dengan mudah memodifikasi
banyak elemen sekaligus hanya dari sebuah baris CSS.
1.9.1 CSS Class dan ID
Jika anda cukup kreatif, saya harap memang demikian :) maka anda mungkin berfikir kalau
penggunaan cara seperti pembahasan sebelumnya tidak sepenuhnya baik. Mengapa? Bayangkan jika
pada beberapa bagian pada halaman, anda tidak ingin mengaplikasikan style tersebut. Lalu apa yang
anda lakukan? Merubahnya secara manual lewat inline style? Itu memang dapat dilakukan tapi tidak
efisien.
Cara yang paling efektif dan efisien adalah dengan menggunakan class dalam CSS. Dengan
menggunakan class kita dapat menentukan letak bagian yang harus kita aplikasikan suatu style.
Penggunakan class diawali dengan tanda titik “.”. Lihat contoh berikut:
.tebal­miring { font­weight: bold; font­style: italic }
div.error { color: red; font­weight: bold }
© 2008-2010 Rio Astamal – Hal. 12
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Baris pertama merupakan general class karena semua tag dapat menggunakannya. Sedangkan pada
baris kedua adalah regular class karena class tersebut hanya berlaku pada tag div saja. Untuk
mengaplikasikan style yang ada pada class kita harus memasukkan nama class tersebut pada attribut
class.
Cara lain adalah dengan menggunakan nilai dari attribut id pada setiap tag. Nilai dari attribut id
antara tag yang satu dengan tag yang lain tidak boleh ada yang sama. Tanda yang digunakan bukan
titik melainkan tanda pagar “#”.
#main { border: 1px solid #000000 }
div#header { padding: 4px }
OK, mari kita buat sebuah file untuk lebih memahaminya.
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>CSS Class &amp; ID</title> 
7. <style type="text/css">
8. body { font­family: Verdana, Serif; font­size: 11px }
9. #main {
10. border: 1px solid #cccccc;
11. padding: 4px
12. }
13. div.box {
14. border: 1px solid orange;
15. background­color: #FFF8B9;
16. padding: 6px 3px;
17. color: #c60000;
18. width: 200px
19. }
20. .green­force {
21. font­weight: bold;
22. color: green
23. } 
24. </style>    
25.</head> 
26.<body> 
27. <div id="main">
28. <div class="box">
29. I'm the WalRUS...!!<br />GOO GOO G'JOOB!!!
30. </div>
31. <span class="green­force">Class green­force pada tag span</span>
32. <p class="green­force">Class green­force pada tag p</p>
33. </div>
34.</body> 
35.</html>
3. Simpan dengan nama css-class.html
4. Hasilnya akan tampak seperti gambar 1.9 jika anda jalankan pada browser
© 2008-2010 Rio Astamal – Hal. 13
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Gambar 1.9
1.9.2 Hyperlink Pseudoclass
Jika anda pernah mengunjungi suatu website dan anda menggerakkan mouse anda ke arah sebuah
link lalu link tersebut berubah warna dan menjadi bergaris bawah atau sebaliknya. Apa yang anda
lihat tersebut adalah hasil dari hyperlink pseudoclass-nya CSS.
Seperti yang sudah dibawas sebelumnya untuk membuat link kita menggunakan tag <a></a>. Oleh
karena itu tag iniliah yang akan kita manipulasi. Format penulisan hyperlink pseudoclass adalah
a:nama_aksi, dimana nama_aksi dapat berupa:
• link: Tampilan link ketika tidak dipilih oleh user (biasanya tidak perlu ditulis)
• visited: Tampilan link setelah diklik
• active:Tampilan ketika link diklik
• hover: Tampilan ketika mouse melewati link (lebih sering digunakan daripada active)
Penasaran? langsung saja buat file untuk mencobanya.
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>Hyperlink Pseudoclass</title> 
7. <style type="text/css">
8. body { font­family: Verdana, Serif; font­size: 14px }
9. a:link { 
10. color: green; 
11. text­decoration: underline 
12. }
13. a:visited { 
14. color: green; 
15. text­decoration: underline 
16. }      
17. a:active {
18. font­weight: bold;
19. text­decoration: none;
20. color: #c60000
21. }
22. a:hover {
23. font­style: italic;
© 2008-2010 Rio Astamal – Hal. 14
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
24. font­weight: bold;
25. color: #c60000;
26. text­decoration: none
27. }      
28. </style>
29.</head> 
30.<body> 
31. <div>
32. <a href="#">Link 1</a><br />
33. <a href="#">Link 2</a><br />
34. <a href="#">Link 3</a>
35. </div>
36.</body> 
37.</html>
3. Simpan dengan nama pseudoclass.html
4. Buka browser anda lalu buka file tersebut
Gambar: 1.10: Penggunaan pseudoclass link
1.9.3 External CSS
Sampai saat ini anda sudah tahu bagaimana mudahnya memodifikasi style dengan menggunakan
CSS. Agar dalam pembuatan website kita lebih efisien maka sebaiknya kita meletakkan file CSS
kita pada suatu file tersendiri. Sehingga kita dapat meload-nya pada halaman yang membutuhkan
style yang ada pada file CSS tersebut.
File CSS yang akan kita load tidak harus berada satu komputer dengan file HTML kita. File CSS
tersebut dapat berada pada website lain, ini dimungkinkan karena kita dapat menggunakan URL
pada saat pemanggilan file.
Ada dua metode untuk memanggil file CSS, yang pertama adalah dengan menggunakan tag <link>
dan yang kedua adalah menggunakan statement @import didalam CSS. Cara yang lebih sering
digunakan adalah menggunakan tag <link>. Tidak ada yang lebih jelas daripada learning by doing,
karena itu langsung saja kita praktikkan.
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. body { font­family: Verdana, Serif; font­size: 14px }
2. #main {
3. border: 1px solid #cccccc;
4. padding: 4px
5. }
6. div.error {
© 2008-2010 Rio Astamal – Hal. 15
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
7. border: 1px solid #c60000;
8. border­left: 5px solid #c60000;
9. color: #c60000;
10. font­size: 14px;
11. padding: 4px 6px;
12. font­weight: bold;
13. width: 350px;
14.}
3. Simpan dengan nama my.css
4. Buat file baru lagi, kemudian ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>External Stylesheet</title> 
7. <link rel="stylesheet" type="text/css" href="my.css" />
8. </head> 
9. <body> 
10. <div id="main">
11. <h2>External Stylesheet/CSS</h2>
12. <div class="error">
13. WARNING!, memory otak anda sudah 90% penuh silahkan kosongkan pikiran­
14. pikiran kotor yang tidak diperlukan...!!!
15. </div>
16. </div>
17.</body> 
18.</html>
5. Simpan dengan nama external-css.html
6. Jalankan pada browser, hasilnya akan terlihat seperti gambar 1.11
Gambar 1.11: External stylesheet
1.10 Membuat Layout dengan DIV
Seperti yang sudah disinggung pada pembahasan tentang tabel, kalau pembuatan design website
yang menggunakan tabel dapat dikatakan sudah tidak relevan lagi. Sebagai pengganti dari tabel
adalah tag div. Tag div memang dikhususkan untuk membagi halaman kedalam beberapa segmen.
Jika kita gabungkan dengan penggunakan attribut id dan class, maka div dapat kita gunakan untuk
layout sebuah halaman.
© 2008-2010 Rio Astamal – Hal. 16
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Secara kasar setiap halaman yang “baik” pasti memiliki beberapa bagian, misalnya halaman tersebut
terdiri dari header, kemudian beberapa kolom untuk content utama, dan sebagainya. Semua itu
terserah pada designernya.
Pada contoh kasus yang akan kita buat nantinya, kita akan membuat sebuah layout halaman yang
terdiri dari:
1. Header utama halaman
2. 2 Kolom
3. 1 untuk content utama
4. 1 untuk berita atau lainnya
5. lebar halaman tidak lebih dari 800px (untuk berjaga-jaga, karena masih banyak user yang
resolusi monitornya 800x600)
6. Footer halaman
Design halaman yang akan dibuat tidak melibatkan penggunaan gambar, karena prioritas kita disini
hanyalah bagaimana cara mengatur tata letak komponen menggunakan tag div. OK, langsung saja
tanpa banyak “mendrible bola”, lho kok?
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. * { padding: 0; margin: 0 }
2. body { 
3. font­family: Verdana, Arial, Serif; 
4. font­size: 11px;
5. color: #333;
6. background: #fafafa;
7. }
8. /* pembatas utama */
9. #container {
10. margin: 6px auto;
11. text­align: left;
12. clear: both;
13. background: #fff;
14. border:2px solid #666;
15. width:778px;
16. padding:0;
17.}
18.#header {
19. clear:both;
20. margin: 2px;
21. background: #FFEA8C;
22. border: 1px solid orange;
23. height: 95px;
24.}
25.#header h1 {
26. font­size: 2em;
27. font­family: Arial;
28. color: #c60000;
29. margin: 14px 6px 4px 8px;         
30.}
31.#menu {
32. clear: both;
33. padding: 0; margin: 0 0 25px 2px;
34.}
© 2008-2010 Rio Astamal – Hal. 17
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
35.#menu ul {
36. float:left;
37. border: none;
38. list­style: none;
39. font: bold 14px Arial;
40.}
41.#menu ul li {
42. display: inline;
43.}
44.#menu ul li a {
45. padding­right: 16px;
46. border­bottom: 4px solid orange;
47.}
48.#menu ul li a:hover {      
49. border­bottom: 4px solid #c60000;
50.}
51.#menu ul li a.aktif {
52. border­bottom: 4px solid #c60000;
53.}
54.#footer {
55. position: relative;
56. clear:both;
57. height: 40px;
58. border: none;
59. background: #cfcfcf;
60. color: #fff;
61. width: 100%;
62. text­align: center;         
63.}
64.#footer span {
65. top: 10px;
66. position: absolute;
67.}
68.#content {
69. margin: 2px 2px 8px 2px;
70. float: left;
71. width: 485px;
72. border: 1px solid #ccc;
73. padding: 6px 10px;
74.}
75.#content h1 {
76. border­bottom: 2px dashed #ccc;
77. margin­bottom: 16px;
78.}
79.#side {
80. border: 1px solid #ccc;
81. float: right;
82. margin: 2px;
83. width: 250px;
84. padding: 2px;
85.}
86.#side h1 {
87. border­bottom: 1px solid #fafafa;
88.}
89.#side h2 {
90. background: #cfcfcf;
91. padding: 3px;
92. color: #333;
93. text­align: center;
94.}
© 2008-2010 Rio Astamal – Hal. 18
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
95.#side p {
96. border: 1px solid #ccc;
97. padding: 4px;
98.}
99.a { text­decoration:none; color: #666}
100.a:visited { color: #666 }
5. Simpan dengan nama layout.css
6. Buat file baru, lanjutkan dengan mengetik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>Layout Menggunakan DIV</title> 
7. <link rel="stylesheet" type="text/css" href="layout.css" />
8. </head> 
9. <body> 
10. <div id="container">
11. <div id="header">
12. <h1>R.I.P John</h1>
13. </div>
14. <div id="menu">
15. <ul>
16. <li><a class="aktif" href="#">Home</a></li>
17. <li><a href="#">Books</a></li>
18. <li><a href="#">Search</a></li>
19. <li><a href="#">About</a></li>
20. <li><a href="#">Contact Us</a></li>
21. </ul>
22. </div>
23. <div id="content">
24. <h1>Working Class Hero</h1>
25. <p>As soon as you're born they make you feel small<br />
26.By giving you no time instead of it all<br />
27.Till the pain is so big you feel nothing at all<br />
28.A working class hero is something to be<br />
29.<br />
30.They hurt you at home and they hit you at school<br />
31.They hated your clever and despised a fool<br />
32.Till you're so fucking crazy you can't follow their rules<br />
33.A working class hero is something to be<br />
34.<br />
35.When they've tortured and scared you for twenty hard years<br />
36.Then they expect you to pick a career<br />
37.When you can't really function you're so full of fear<br />
38.A working class hero is something to be<br />
39.<br />
40.Keep you doped with religion and sex and TV<br />
41.And you think you're so clever and classless and free<br />
42.But you're still fucking peasants as far as I can see<br />
43.A working class hero is something to be<br />
44.A working class hero is something to be<br />
45.<br />
46.There's room at the top they are telling you still<br />
47.But first you must learn how to smile as you kill<br />
48.If you want to be like all the folks on the hill<br />
49.<br />
50.If you want to be a hero well just follow me </p>
© 2008-2010 Rio Astamal – Hal. 19
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
51. </div>
52. <div id="side">
53. <h2>IMAGINE...</h2>
54. <p>Imagine there's no heaven
55.It's easy if you try
56.No hell below us
57.Above us only sky
58.Imagine all the people
59.Living for today...
60.Imagine there's no countries
61.It isn't hard to do
62.Nothing to kill or die for
63.And no religion too
64.Imagine all the people
65.Living life in peace...
66.You may say I'm a dreamer
67.But I'm not the only one
68.I hope someday you'll join us
69.And the world will be as one
70.Imagine no possessions
71.I wonder if you can
72.No need for greed or hunger
73.A brotherhood of man
74.Imagine all the people
75.Sharing all the world...
76.You may say I'm a dreamer
77.But I'm not the only one
78.I hope someday you'll join us
79.And the world will live as one...</p>
80. </div>
81. <div id="footer">
82. <span>1940 ­ 1980</span>
83. </div>
84. </div>
85.</body> 
86.</html>
© 2008-2010 Rio Astamal – Hal. 20
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Gambar 1.12
1.11 Javascript
Javascript adalah sebuah bahasa pemrograman yang khusus dirancang untuk website. Javascript
hanya berjalan disisi klien, artinya penggunaan javascript hanya terbatas pada web-browser anda
saja, ia tidak bisa melakukan manipulasi data pada sisi server. Saat ini javascript merupakan salah
satu element terpenting dari teknologi web terkini. AJAX adalah salah satu contoh penggunakan
javascript yang saat ini banyak digunakan oleh website agar lebih berasa Web 2.0 :).
Namun pada buku ini saya hanya membahas javascript sepintas saja, untuk tahu lebih jauh tentang
javascript anda dapat mencari lewat google atau tunggu buku saya berikutnya hehehe...
1.11.1 Menggunakan Javascript
Secara sederhana sebuah script javascript diapit oleh tag <script></script>, namun untuk lebih
memperjelas penggunaan javascript biasanya ditambahkan attribut language atau type, contoh
seperti berikut:
<script language=”javascript”>
© 2008-2010 Rio Astamal – Hal. 21
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
  // javascript kode disini...
</script>
atau
<script type=”text/javascript”>
  // javascript kode disini...
</script>
Kenapa demikian? Karena jika anda pengguna browser IE maka ia memiliki satu bahasa lagi selain
javascript yaitu vbscript. Namun pada kenyataannya hampir tidak ada situs yang menggunakan
vbscript, jadi secara default pun jika anda hanya menggunakan tag <script></script> maka IE akan
menganggap script tersebut adalah javascript.
Tag <script> dapat anda letakkan pada level global yaitu pada tag <head></head> atau secara lokal
dimana pun dalam tag <body></body>. OK langsung saja kita coba “script é wong jowo” ini.
1. Buka gedit / Notepad++
2. Ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>Menggunakan Javascript</title> 
7. <script language="javascript">
8. var nama = prompt("Masukkan nama: ", "nama anda");
9. var tanya = confirm(nama+", apakah anda laki­laki?");
10. if (tanya == true) {
11. alert("Halo "+nama+" kamu adalah laki­laki!");
12. } else {
13. alert("Halooo "+nama+"... kamu cewek ya...? atau jangan­jangan...?");
14. }
15. </script>
16.</head> 
17.<body>
18.</body>
19.</html>
3. Simpan dengan nama javascript.html
4. Jalankan pada browser untuk melihat hasilnya.
Gambar 1.13: Javascript prompt
© 2008-2010 Rio Astamal – Hal. 22
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Pada contoh diatas kita meletakkan javascript pada level global dengan meletakkannya pada tag
<head></head>. prompt, confirm, dan alert adalah fungsi-fungsi built in javascript yang dapat kita
gunakan untuk berinteraksi dengan user.
Jika anda familiar dengan bahasa seperti Java, C++, C, atau anak cucunya maka anda tidak akan
terlalu berlama-lama menyesuaikan diri dengan syntax javascript. Hal itu karena syntax javascript
sangat mirip dengan ketiga bahasa yang telah disebutkan diatas. Untuk mendeklarasikan variabel
pada javascript kita dapat menggunakan keyword var.
1.11.2 Manipulasi DOM
Salah satu fungsi utama javascript adalah kemampuannya untuk memanipulasi DOM(Document
Object Model). DOM sendiri adalah suatu struktur didalam dokumen HTML yang berbentuk seperti
tree yang komponen-komponennya adalah elemen HTML seperti tag. Karena kemampuan inilah
maka dengan javascript kita dapat menciptakan DHTML Effect (Dynamic HTML Effect).
Salah satu contoh pengaplikasian DHTML Effect adalah hide and show suatu elemen HTML.
Misal, jika suatu tombol diklik maka tampilan hilang atau tampil. Semua ini dimungkinkan karena
javascript dapat melakukan modifikasi style CSS pada elemen secara langsung atau para geeky
lebih suka menyebutnya: on the fly :).
Untuk lebih memahaminya sebaiknya kita langsung saja mencobanya lewat contoh.
1. Buka gedit/Notepad++
2. Ketik kode berikut:
1. <?xml version="1.0" encoding="UTF­8" ?> 
2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
4. <html xmlns="http://www.w3.org/TR/xhtml1"> 
5. <head> 
6. <title>Manipulasi DOM</title> 
7. <script language="javascript">
8. function beriWarna() {
9. var kotak = document.getElementById('kotak');
10. var warna = document.getElementById('warna');
11. // ganti CSS on the fly
12. kotak.style.backgroundColor = '#' + warna.value;
13. }
14. function hideShow() {
15. var kotak = document.getElementById('kotak');
16. var status = kotak.style.display;
17. // set CSS display ke block atau none
18. if (status == 'block') {
19. kotak.style.display = 'none';
20. } else {
21. kotak.style.display = 'block';
22. }
23. }
© 2008-2010 Rio Astamal – Hal. 23
Javascript versi terbaru sudah mendukung penggunaan tipe data dalam
pendeklarasian variabel seperti int, string, dll. Namun untuk menjaga kompatibilitas
sebaiknya tetap gunakan keyword var.
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
24. </script>
25. <style type="text/css">
26. #kotak {
27. border:3px solid #000;
28. padding: 4px;
29. background­color: #ccc;
30. font­size: 18px;
31. font­weight: bold;
32. width: 300px; height: 200px;
33. }
34. </style>
35.</head> 
36.<body>
37. <form>
38. <label>Warna</label>
39. #<input type="text" id="warna" name="warna" size="5" value="ccc" />&nbsp;
40. <input type="button" onclick="beriWarna()" value="Ganti Warna" />&nbsp;
41. <input type="button" onclick="hideShow()" value="Hide or Show" />
42. </form>
43. <br />
44. <div id="kotak" style="display:block">
45. SAYA BUKAN DUKUN, PESULAP ATAU BAHKAN BUNGLON TAPI SAYA BISA BERUBAH
46.      WARNA DAN MENGHILANG. HEBATKAH SAYA? TENTU TIDAK. YANG HEBAT ADALAH
47.      YANG MENULIS SAYA BUKAN BEGITU? :p
48. </div>
49.</body>
50.</html>
3. Simpan dengan nama dom.html
4. Buka file menggunakan browser untuk melihat hasilnya.
Hasilnya kurang lebih akan sama dengan gambar 1.14.
Penjalasan Singkat File dom.html
Banyak hal baru menyangkut penggunaan javascript, seperti penggunaan keyword function dan
metode getElementById. Jika tidak mengerti untuk sementara telan saja :p karena buku ini memang
tidak mengharuskan anda menguasai javascript.
Fungsi pada javascript ditandai dengan keyword function. Fungsi merupakan pengemlompokkan
sejumlah perintah untuk dieksekusi pada satu waktu ketika fungsi itu dipanggil. Pada contoh kita
membuat dua fungsi yaitu beriWarna() dan hideShow(). Object yang akan kita modifikasi stylenya
adalah object dengan elemen id bernama “kotak” dalam hal ini elemen tersebut adalah sebuah div.
<div id="kotak" style="display:block">
Agar object div tersebut dapat kita manipulasi maka kita perlu membuatkan sebuah wadah untuk
menampung object tersebut dalam javascript. Untuk itu digunakanlah salah satu fungsi DOM yaitu
getElementById. Setelah kita mendapatkan object tersebut maka kita bebas untuk memodifikasinya.
Contoh sederhana adalah mengubah stylesheet dari object tersebut. Setiap tag yang dapat
dimanipulasi dengan CSS memiliki atribut style. Bedanya jika pada CSS format penulisannya: jika
terdiri dari dua kata maka dipisah dengan tanda “-” contoh: background-color, font-family, font-size,
dan sebagainya. Tapi pada javascript digunakan model Capitalis, contoh: backgroundColor,
fontFamily, fontSize dan sebagainya.
© 2008-2010 Rio Astamal – Hal. 24
LUG STIKOM Surabaya Bab I – HTML dan World Wide Web
Warna yang digunakan pada contoh adalah menggunakan hexadecimal. Contoh-contoh warna yang
dapat anda gunakan sebagai bahan ujicoba adalah: 90EE90, FFFF00, FFC0CB, dan masih banyak
lagi.
Gambar 1.14: Manipulasi DOM
© 2008-2010 Rio Astamal – Hal. 25
LUG STIKOM Surabaya Bab II – Pengenalan PHP
Bab II
Pengenalan PHP
2.1 Apa Itu PHP?
PHP(akronim dari PHP: Hypertext Preprocessor) adalah bahasa server-side scripting yang didesain
khusus untuk web. Pada halaman HTML anda dapat menempelkan(embed) kode PHP. Kode PHP
dieksekusi di sisi server bukan di komputer klien. Dan hasil yang ditampilkan adalah kode HTML
murni.
PHP merupakan hasil kerja seorang bernama Rasmus Lerdorf pada awal 1995. Namun kemudian
PHP berkembang dan tidak hanya merupakan proyek pribadi Rasmus. PHP ditulis ulang dan dengan
banyak menambahkan fungsi-fungsi baru oleh Zeev Suraski dan Andi Gutmants (disingkat Zend)
dan lahirlah PHP 3 pada 1998.
PHP masih terus dikembangkan, pada tahun 2002 PHP hadir dengan versi ke 4. PHP 4 dilengkapi
dengan Zend Engine dan mengalami banyak peningkatan performa. Dan yang paling akhir pada
tahun 2005 PHP 5 hadir dengan dukungan Zend Engine 2. Banyak fitur baru khususnya pada
OOP(Object Oriented Programming) dan XML
Berbeda dengan dengan PHP 4, adopsi PHP 5 dikalangan industri sangat lambat. Bahkan hingga
sekarang masih cukup banyak hosting yang belum menyediakan PHP 5. Hal ini dikarenakan
beberapa faktor, diantanranya kompatibilitas dengan versi PHP 4.
Pada saat buku ini ditulis versi terakhir dari PHP adalah versi 5.2.8 untuk PHP 5 dan versi 4.4.9
untuk PHP 4. PHP 6 juga sudah dikembangkan meskipun dalam tahap alpha.
2.2 Cara Kerja PHP
Cara kerja PHP yang akan kita bahas pada buku ini adalah PHP sebagai bahasa pemrograman untuk
mengembangan aplikasi berbasis web. Karena selain untuk web-programming PHP juga dapat
digunakan untuk mengembangan aplikasi berbasis desktop dan CLI (Command Line Interface).
Gambar 2.1: Cara kerja PHP
Secara sederhana cara kerja PHP dapat dilihat pada gambar 2.1 diatas. Jika diurut maka proses
tersebut terdiri dari:
1. User meminta sebuah halaman PHP
2. Browser mengirim HTTP Request kepada WebServer, misal Apache
3. WebServer mengirim permintaan file PHP tersebut ke PHP processor. PHP processor dapat
© 2008-2010 Rio Astamal – Hal. 26
Browser Web
Server
PHP
Request PHP File
HTTP Request PHP Request
HTML Response
HTTP ResponseHTML Response
Untuk instalasi PHP silahkan baca halaman pendahuluan.
LUG STIKOM Surabaya Bab II – Pengenalan PHP
berupa modul(bagian dari web-server) atau terpisah(sebagai CGI/Fast-CGI)
4. Permintaan diproses oleh PHP processor kemudian hasilnya dikirim kembali ke web-server
5. Web server memaket kembali hasil tersebut dengan menambahkan HTTP header dan
dikirim kembali ke browser.
6. Browser memproses HTTP packet dan menampilkannya sebagai HTML kepada user.
2.3 Variabel pada PHP
Variabel merupakan elemen yang sangat penting dalam bahasa pemrograman. Hampir setiap
bahasa pemrograman mengenal apa itu yang namanya variabel. Variabel sendiri merupakan
suatu bentuk penyimpanan data sementara pada memori komputer yang akan diolah lebih
lanjut. Contoh variabel pada PHP antaran lain:
$nama = 'LUG STIKOM Surabaya';
$angka_1 = 1;
$angka_2 = 2;
$hasil = $angka_1 + $angka_2;
Ketentuan-ketentuan dalam membuat variabel:
• Variabel dapat terdiri dari huruf, angka dan underscore( _ ) dan tentu saja tanda dollar $.
• Variabel tidak dapat diawali dengan angka.
• Variabel bersifat case sensitive artinya membedakan huruf kecil dan huruf besar.
• Variabel $nama tidak sama dengan $NaMa. Untuk itu hati-hati dalam penulisan nama
variabel.
Pada variabel anda dapat mengubah nilainya, contoh $angka_1 = 1 dapat anda ubah menjadi
$angka_1 = 2 saat suatu script dijalankan. Ini berbeda dengan konstanta(akan dibahas berikutnya).
2.3.1 Tipe Variabel
Pada PHP kita tidak perlu mendeklarasikan tipe variabel secara eksplisit, istilah kerennya dynamic
typing. Karena PHP secara otomatis dapat menentukan tipe variabel berdasarkan nilai yang ada
pada variabel tersebut. Berikut ini adalah beberapa tipe data yang dikudung oleh PHP.
Tabel 2.1: Macam-macam Tipe Data
TipeData Keterangan
Integer Digunakan untuk semua angka
String Digunakan untuk semua huruf, angka, spasi, dan simbol
Double Digunakan untuk bilangan real
Boolean Digunakan untuk nilai True atau False
Array Digunakan untuk menampung beberapa data sekaligus
Object Digunakan untuk class
2.3.2 Konstanta
Hampir sama dengan variabel, konstanta juga digunakan untuk penyimpanan nilai sementara.
Namun perbedaan konstanta dengan variabel adalah pada konstanta anda tidak dapat mengubah
© 2008-2010 Rio Astamal – Hal. 27
LUG STIKOM Surabaya Bab II – Pengenalan PHP
nilainya jika sudah dideklarasikan. Cara pendeklarasiannya pun berbeda dengan variabel. Pada
konstanta digunakan keyword define untuk mendeklarasikan variabel. Konstanta juga tidak
diawali dengan tanda $ (dollar).
define('HARGA', 1500);
define('NAMA', 'LUG STIKOM Surabaya');
Dapat dilihat pada kode diatas bahwa kita selalu gunakan huruf KAPITAL untuk konstanta. Hal ini
tidak harus dilakukan namun semacam peraturan tidak tertulis jika konstanta maka sebaiknya
gunakan huruf kapital.
2.3.3 Penerapan Teori Variabel dan Konstanta
1. Jika belum silahkan buat folder bab2 didalam folder htdocs/webpro.
2. Pastikan Apache sudah berjalan.
3. Buka gedit (Linux)/Notepad++ (Windows)
4. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head> 
5. <title>Variabel dan Konstanta</title> 
6. </head> 
7. <body>
8. <?php
9. $menu = 'Menu: Nasi Pecel';
10. define('HARGA', 2500);
11.
12. $menu = 'Menu: Nasi Rawon';
13. define('HARGA', 5000);
14.
15. echo $menu . '<br />';
16. echo HARGA;
17.?>
18.</body>
19.</html>
5. Simpan dengan nama variabel.php pada folder bab2
6. Arahkan browser anda ke alamat http://localhost/webpro/bab2/variabel.html
7. Output dari file tersebut adalah
Klik kanan browser anda lalu klik View Source (untuk Firefox) untuk melihat kode HTML dari
halaman tersebut. Perhatikan bahwa tag <?php dan ?> yang ada hanyalah kode HTML murni.
Penjelasan Script variabel.php
Jika anda perhatikan, sama seperti pada bab sebelumnya kita hanya menulis sebuah file html biasa.
© 2008-2010 Rio Astamal – Hal. 28
Menu: Nasi Rawon
2500
LUG STIKOM Surabaya Bab II – Pengenalan PHP
Namun ada sedikit perbedaan, dimana pada file variabel.php terdapat sebuah tag baru yaitu <?php
dan ?>. Script dalam tag inilah yang akan diproses oleh PHP processor. Semua tulisan diluar tag <?
php dan ?> akan diabaikan oleh PHP.
Cara seperti yang kita lakukan pada file variabel.php adalah menempelkan PHP pada HTML. Jika
kumpulan mp3 anda adalah western song mungkin anda lebih suka mendengarnya dengan sebutan
embedding PHP inside HTML :).
Jika anda masih ingat teori sebelumnya tentang variabel, dapat dilihat bahwa variabel $menu kita
deklarasi ulang dan nilainya diubah menjadi 'Menu: Nasi Rawon' (Baris: 12). Namun hal tersebut
tidak berlaku pada konstanta, pada baris 13 kita deklarasikan ulang konstanta HARGA. Nilai dari
konstanta tersebut tidak berubah.
Hal itu ditunjukkan ketika kita mencetak nilai dari $menu dan HARGA. $menu berubah menjadi
'Nasi Rawon' dan konstanta tetap 2500.
Pada PHP untuk mencetak sesuatu dapat digunakan perintah echo. Contoh penggunaan dapat dilihat
pada baris 15 dan 16. Pada konstanta tidak perlu diberi tanda $.
TIPS:
Selain perintah echo anda juga dapat menggunakan perintah print untuk mencetak
output.
2.4 Komentar
Komentar pada script bertujuan untuk memberitahu pembacanya, baik orang lain ataupun anda
sendiri. Biasanya komentar digunakan untuk menjelaskan tujuan dituliskannya script tersebut, siapa
penulisnya, kapan ditulis dan sebagainya. Komentar juga berguna bagi anda sendiri ketika suatu
waktu anda lupa mengapa anda menulis file ini, fungsi-fungsinya untuk apa dan banyak lainnya.
PHP akan mengabaikan semua text didalam komentar. Jadi tidak akan berpengaruh pada jalannya
suatu script.
PHP mengenal tiga jenis gaya komentar. Pertama model bahasa C (banyak baris/multi line),
biasanya dapat diletakkan pada bagian atas script. Lihatlah script dibawah ini.
1. <?php
2.
3. /*
4. Filename : db.php
5. Author   : Rio Astamal
6. Created  : 20­02­2009 18:22
7. Updated  : 22­05­2009 16:11
8. Desc     : File yang menyimpan konfigurasi untuk koneksi ke MySQL Database
9. */
10.
11.?>
Yang kedua adalah model C++, seperti yang ditunjukkan dibawah ini.
echo $nama;    // cetak nama
© 2008-2010 Rio Astamal – Hal. 29
LUG STIKOM Surabaya Bab II – Pengenalan PHP
Yang ketiga adalah model shell script.
echo HARGA;    # cetak harga
Sekarang coba modifikasi file variabel.php tersebut dengan menambahkan komentar lalu lihat
hasilnya. Apakah masih sama atau tidak.
2.5 Operator
Operator merupakan simbol yang dapat digunakan untuk memanipulasi nilai dan variabel. Pada
bagian sebelumnya kita sudah menggunakan beberapa operator diantaranya =, ==, <, ., +, * dan
lainnya. Selanjutnya kita kan membahas operator-oprator ini dan operator lainnya lebih detil lagi .
2.5.1 Operator Aritmatik
Pasti anda sudah banyak mengenal berbagai macam operator aritmatik. Jika anda pernhah
mengenyam pendidikan yang bernama Sekolah Dasar atau SD pasti anda sering menulis operator-
operator ini pada buku anda :).
Tabel 2.2: Operator Aritmatik
Operator Nama Contoh
+ Penambahan $a + $b 
­ Pengurangan $a ­ $b 
* Perkalian $a * $b 
/ Pembagian $a / $b 
% Modulus $a % $b 
Yang mungkin bapak atau Ibu guru SD kita lupa mengajarkan adalah tentang modulus. Modulus
merupakan sisa pembagian dari dua bilangan. Lihat contoh berikut untuk lebih jelas.
1. <?php
2.
3. $bil1 = 10;
4. $bil2 = 5;
5. $bil3 = 3;
6.
7. echo $bil1 % $bil2;  // output 0
8. echo $bil1 % $bil3;  // output 1
9. echo $bil2 % $bil3;  // output 2
10.
11.?>
2.5.2 Operator Kombinasi
Saya sendiri bingung menjelaskan operator ini, saya takut kata-kata saya menyesatkan pikiran
anda :). Jadi lebih baik kita langsung lihat contoh saja biar lebih jelas.
Tabel 2.3: Operator Kombinasi
Operator Penggunaan Sama dengan
+= $a += $b $a = $a + $b 
­=  $a ­= $b $a = $a ­ $b 
© 2008-2010 Rio Astamal – Hal. 30
LUG STIKOM Surabaya Bab II – Pengenalan PHP
*= $a *= $b $a = $a * $b 
/= $a /= $b $a = $a / $b 
%= $a %= $b $a = $a % $b 
Penggunaan operator kombinasi memang favorit para programmer karena memang mereka ini
orang-orang yang cenderung malas. Waduh, saya juga termasuk kelihatannya :).
2.5.3 Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan dua nilai. Penggunaan ekspressi ini
juga akan menghasilkan nilai true atau false terganting dari perbandingan.
Tabel 2.4: Operator perbandingan
Operator Nama Penggunaaan
== sama dengan $a == $b
=== identik (harus bertipe sama) $a === $b
!= tidak sama dengan $a != $b
<> tidak sama dengan $a <> $b
< kurang dari $a < $b
> lebih dari $a > $b
<= kurang dari atau sama dengan $a <= $b
>= lebih dari atau sama dengan $a >= $b
Operator perbandingan biasanya digunakan pada struktur kontrol seperti percabangan dan
perulangan.
2.5.4 Operator Logika
Operator logika digunakan untuk melakukan tes terhadap sebuah kondisi logika dari dua atau lebih
perbandingan. Sebagai contoh, kita mungkin menemukan kasus nilai dari variabel $a berada
diantara 0 sampai 10. Untuk mengetes kondisi $a >= 0 dan $a <= 10, kita gunakan operator AND.
Tabel 2.5: Operator Logika
Operator Nama Penggunaaan Keterangan
! NOT !$a TRUE jika $a adalah FALSE, berlaku 
sebaliknya
|| OR $a || $b TRUE jika $a atau $b bernilai TRUE atau 
keduanya bernilai TRUE
&& AND $a && $b TRUE jika $a dan $b bernilai TRUE
xor XOR $a xor $b  TRUE jika $a atau $b bernilai TRUE, 
tapi tidak keduanya
2.5.5 Operator Increment/Decrement
Operator increment/decrement digunakan untuk menambah/mengurangai nilai dari suatu variabel
dengan satu. Increment memiliki simbol ++ (double plus) sedangkan decrement -- (double minus).
© 2008-2010 Rio Astamal – Hal. 31
LUG STIKOM Surabaya Bab II – Pengenalan PHP
Tabel 2.5: Operator Increment/Decrement
Nama Contoh Keterangan
Pre­Increment ++$a Tambah $a dengan satu, lalu kembalikan nilainya
Post­Increment $a++ Kembalikan nilai $a, lalu tambah $a dengan satu
Pre­Decrement ­­$a Kurangi $a dengan satu, lalu kembalikan nilainya
Post­Decrement $a­­ Kembalikan nilai $a, lalu kurangi $a dengan satu
Mungkin akan lebih jelas jika anda melihat contoh dibawah ini.
1. <?php
2.
3. echo "<h3>Post­increment</h3>";
4. $a = 5;
5. echo "Seharusnya 5: " . $a++ . "<br />";
6. echo "Seharusnya 6: " . $a . "<br />";
7.
8. echo "<h3>Pre­increment</h3>";
9. $a = 5;
10.echo "Seharusnya 6: " . ++$a . "<br />";
11.echo "Seharusnya 6: " . $a . "<br />";
12.
13.echo "<h3>Post­decrement</h3>";
14.$a = 5;
15.echo "Seharusnya 5: " . $a­­ . "<br />";
16.echo "Seharusnya 4: " . $a . "<br />";
17.
18.echo "<h3>Pre­decrement</h3>";
19.$a = 5;
20.echo "Seharusnya 4: " . ­­$a . "<br />";
21.echo "Seharusnya 4: " . $a . "<br />";
22.
23.?>
2.5.6 Operator String
Sebenarnya pada contoh-contoh sebelumnya operator string ini sudah sering kita gunakan. Operator
string yang dimaksud adalah tanda “.” (titik). Tanda titik ini dapat digunakan untuk menggabung
string.
1. <?php
2.
3. $a = 'LUG';
4. $b = 'STIKOM';
5. $c = $a . ' ' . $b;  // hasil: LUG STIKOM
6.
7. // atau dengan kombinasi
8. $a .= ' STIKOM';  // hasil: LUG STIKOM
9.
10.?>
2.6 Escape Character
Pada saat menulis kode anda akan sangat sering menjumpai suatu kondisi dimana kita harus
mencetak tanda petik baik petik satu maupun petik dua. Permasalahannya tanda tersebut sudah
© 2008-2010 Rio Astamal – Hal. 32
LUG STIKOM Surabaya Bab II – Pengenalan PHP
digunakan sebagai penanda untuk mencetak string. Lalu, bagaimana pemecahannya? Ada beberapa
solusi untuk mencetak petik didalam petik itu sendiri:
1. Gunakan petik satu (') sebagai penutup string jika ingin mencetak petik dua (“) dan
sebaliknya.
2. Menggunakan Escape Character  (backslash)
Berikut ini adalah contoh penyelesaian dari kedua solusi diatas.
<?php
/*
SOLUSI No. 1
============
­ Jika ingin mencetak petik satu gunakan petik dua sebagai penutup string
­ Jika ingin mencetak petik dua gunakan petik satu sebagai penutup string
*/
$a = 'John Says: "My dear, I Love You."<br />';
$b = "The Girl Says: 'Go to Hell...!!!'<br />";
echo $a . $b . '<br />';
/*
SOLUSI No. 2
============
­ Gunakan escape character  (backslash)
*/
$a = "John Says: "My dear, I Love You."<br />";
$b = 'The Girl Says: 'Go to Hell...!!!'<br />';
echo $a . $b;
?>
2.7 Special Character
Pembahasan ini sebenarnya tidak begitu krusial jika dihubungkan dengan pembuatan tampilan web.
Namun akan sangat berguna dalam proses pencarian kesalahan ketika kita mendesain suatu halaman
website. Bingung? Sama saya juga bingung dengan apa yang saya tulis :p.
Pada intinya HTML mengabaikan semua karakter whitespace (spasi, tab, baris baru) dan
menggantinya hanya dengan satu spasi ketika ditampilkan. Special character disni mencakup
• Baris baru (n)
• Tab (t)
Sebenarnya masih banyak karakter spesial lainnya seperti r, 0, b dan lain-lain. Untuk lebih
jelasnya cobalah contoh berikut.
1. <?php
2.
3. echo "INIttBANYAKttSPASI<br />";
4. echo "INI BARIS SATU<br />";
5. echo "INI BARIS DUA<br />";
6. echo "INI BARIS TIGA<br />";
7.
8. echo "nn<br />nn";
9. echo "INI BARIS SATU<br />nINI BARIS DUA<br />nINI BARIS TIGA";
© 2008-2010 Rio Astamal – Hal. 33
LUG STIKOM Surabaya Bab II – Pengenalan PHP
10.
11.?>
Output dari kode diatas kurang lebih seperti berikut:
Jika dilihat dari browser tidak ada yang berbeda dari group 1 dan group 2 yang ada pada kode
diatas. Tapi jika anda melihat source HTML dengan cara klik kanan → View Source (Firefox) akan
terlihat perbedaannya.
TIPS:
Untuk mencetak special character seperti n, t, r dan sebagainya harus menggunakan
petik dua sebagai penutup string.
© 2008-2010 Rio Astamal – Hal. 34
INI BANYAK SPASI
INI BARIS SATU
INI BARIS DUA
INI BARIS TIGA
INI BARIS SATU
INI BARIS DUA
INI BARIS TIGA
LUG STIKOM Surabaya Bab III – Struktur Kontrol
Bab III
Struktur Kontrol
Struktur Kontrol merupakan sebuah struktur dalam bahasa pemrograman yang membolehkan
kita untuk mengontrol alur dari eksekusi suatu program atau script. Struktur kontrol
mencakup struktur kondisi dan struktur pengulangan atau looping. Struktur kondisi terdiri dari
beberapa statement yaitu:
• if...
• if...else...
• if...elseif...else...
• switch...case...break...
Sedangkan struktur perulangan terdiri dari:
• for...
• while...
• do...while...
• foreach...
3.1 Struktur Kondisi
3.1.1 Statement if...
Kita dapat menggunakan statemen if untuk membuat sebuah keputusan. Anda harus memberi if
sebuah kondisi untuk membuat keputusan. Jika kondisi bernilai true maka blok if akan dieksekusi.
Statemen if dikelilingi oleh tanda { } (kurung kurawal). Syntax dasar penulisan statemen if adalah:
if (kondisi) {
   // kode yang dieksekusi
}
Jika kondisi bernilai TRUE maka perintah yang ada blok pada { } akan dieksekusi. Perhatikan
contoh dibawah.
1. <?php
2.
3. $nama = 'LUG STIKOM';
4. if ($nama == 'LUG STIKOM') {
5.    echo 'OK, anda boleh masuk.';
6. }
7.
8. ?>
Pada contoh diatas kita menggunakan variabel nama sebagai kondisi, dimana jika nilai variabel
$nama sama dengan LUG STIKOM maka blok perintah akan dieksekusi. Ingat, bahwa operator
perbandingan untuk sama dengan adalah == bukan =.
Contoh lain jika kita menggunakan angka untuk perbandingan adalah:
1. <?php
2.
© 2008-2010 Rio Astamal – Hal. 35
LUG STIKOM Surabaya Bab III – Struktur Kontrol
3. $usia = 21;
4. $black_list = FALSE;
5. if ($usia >= 21 && $black_list == FALSE) {
6.    echo 'OK, anda sudah dewasa. Silahkan masuk.';
7. }
8.
9. ?>
Pada contoh ke dua ini, blok if hanya akan dieksekusi jika nilai dari usia lebih dari atau sama
dengan 21 DAN nilai dari black_list sama dengan false.
TIPS:
Anda dapat meletakkan if di dalam if (if bersarang). Ini juga berlaku terhadap semua
struktur kontrol lain.
3.1.2 Statement if...else...
Statement ini hampir sama dengan if hanya saja pada if else kita diberikan opsi alternatif untuk
menentukan aksi yang dilakukan jika kondisi bernilai false. Statement ini akan sangat sering anda
gunakan dibanding penggunakan if saja. Syntax penulisan statement if...else... adalah sebagai
berikut:
if (kondisi) {
   // kode yang dieksekusi jika kondisi true
} else {
   // kode yang dieksekusi jika kondisi false
}
Contoh statement if...else... sederhana dapat anda lihat berikut ini.
1. <?php
2.
3. $peghasilan = 5000000;
4. if ($penghasilan >= 3000000) {
5.    echo 'Pak Toyib: "Nak john, kamu boleh menikahi putri saya :)"';
6. } else {
7.    echo 'Pak Toyib: "Mau kamu kasih makan apa putri saya nanti!!!"';
8. }
9.
10.?>
Alur dari script diatas sudah jelas, dimana jika nilai dari $penghasilan lebih dari 3.000.000 maka
john diperbolehkan nikah dengan putrinya Pak Toyib :). Namun jika kurang dari 3.000.000 alamat
kena marah Pak Toyib :(.
3.1.3 Statemen if...elseif...else...
Jika statemen if...else... hanya dapat menggunakan satu alternatif jika kondisi awal bernilai false.
Statemen if...elseif... memberi lebih dari satu aksi alternatif. Hal ini memungkinkan kita untuk
memilih aksi dari banyak kemungkinan kondisi. Syntax dasar penulisan if...elseif... adalah sebagai
berikut:
if (kondisi_1) {
© 2008-2010 Rio Astamal – Hal. 36
LUG STIKOM Surabaya Bab III – Struktur Kontrol
  // kode yang dieksekusi
} elseif (kondisi_2) {
  // kode yang dieksekusi
} elseif (kondisi_3) {
  // kode yang dieksekusi
} else if (kondisi_4) {
  // kode yang dieksekusi
} else {
  // kode yang dieksekusi
}
Anda dapat menulis statement elseif dengan spasi, yaitu else if. Keduanya sama-sama dianggap
valid oleh PHP.
3.1.4 Penerapan Teori if...elseif...else...
Hal yang paling sering dilakukan oleh PHP sebagai bahasa server-side scripting adalah memproses
HTML Form. Pada contoh ini adalah inti awal anda memahami tugas PHP sebagai pemroses HTML
Form. Kita akan membuat dua file yang pertama adalah file HTML murni sebagai input data bagi
user(HTML Form). Dan file yang kedua adalah file PHP yang bertugas memproses data yang
dikirim oleh file HTML .
1. Jika belum silahkan buat folder bab3 pada folder htdocs/webpro
2. Pastikan Apache sudah berjalan
3. Buka gedit / Notepad++
4. Simpan file tersebut dengan nama form-toko.html
5. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5.    <title>Pembelian Online</title>
6. </head>
7. <body>
8.    <h3>LUG ONLINE STORE</h3><hr />
9.    <form action="form­proses.php" method="post">
10.      <label>Sticker Linux (Rp7.500,­)</label><br />
11.      <label>Jumlah: </label>
12.      <input type="text" name="sticker" value="0" size="4" /><br /><br />
13.
14.      <label>Kaos Linux (Rp35.000,­)</label><br />
15.      <label>Jumlah: </label>
16.      <input type="text" name="kaos" value="0" size="4" /><br /><br />
17.
18.      <label>Jacket Linux (Rp35.000,­)</label><br />
19.      <label>Jumlah: </label>
20.      <input type="text" name="jacket" value="0" size="4" /><br /><br />
21.
22.      <input type="submit" value="P r o s e s" />
23.   </form>
24.</body>
25.</html>
6. Save kembali file tersebut
7. Sekarang buat file baru
8. Simpan dengan nama form-proses.php masih difolder yang sama.
© 2008-2010 Rio Astamal – Hal. 37
LUG STIKOM Surabaya Bab III – Struktur Kontrol
9. Ketik kode berikut:
1. <?php
2.
3. // buat variabel untuk menampung data dari file form­toko.html
4. $sticker = $_POST['sticker']; // data sticker
5. $kaos = $_POST['kaos']; // data kaos
6. $jacket = $_POST['jacket']; // data jacket
7.
8. // harga dari masing­masing produk
9. define('HARGA_STCIKER', 7500);
10.define('HARGA_KAOS', 35000);
11.define('HARGA_JACKET', 55000);
12.
13.// total harga
14.$total = (HARGA_STICKER * $sticker) + (HARGA_KAOS * $kaos) + 
15.         (HARGA_JACKET * $jacket);
16.
17.$diskon = 0;
18.$pesan_diskon = '0%';
19.
20.// cek total untuk menentukan diskon
21.if ($total >= 50000 && $total < 75000) { 
22.   $diskon = 0.05;   // diskon 5%
23.   $pesan_diskon = '5%';
24.} elseif ($total >= 75000 && $total < 100000) {
25.   $diskon = 0.1;    // diskon 10%
26.   $pesan_diskon = '10%';
27.} elseif ($total >= 100000) {
28.   $diskon = 0.15;   // diskon 15%
29.   $pesan_diskon = '15%';
30.}
31.$subtotal = $total ­ ($total * $diskon);
32.
33.?>
34.<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
35.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
36.<html xmlns="http://www.w3.org/TR/xhtml1"> 
37.<head>
38.   <title>Pembelian Online</title>
39.   <style type="text/css">
40.      .tanda { background­color: #cfcfcf; }
41.   </style>
42.</head>
43.<body>
44.   <strong>LUG ONLINE STORE ­ DATA PEMBELIAN</strong><hr />
45.   <table border="1">
46.      <tr class="tanda">
47.         <th>Barang</th><th>Jumlah</th><th>Total</th>
48.      </tr>
49.      <tr>
50.         <td>Sticker</td>
51.         <td><?php echo $sticker;?></td>
52.         <td><?php echo ($sticker * HARGA_STCIKER);?>
53.      </tr>
54.      <tr>
55.         <td>Kaos</td>
56.         <td><?php echo $kaos;?></td>
57.         <td><?php echo ($kaos * HARGA_KAOS);?>
58.      </tr>
59.      <tr>
60.         <td>Jacket</td>
© 2008-2010 Rio Astamal – Hal. 38
LUG STIKOM Surabaya Bab III – Struktur Kontrol
61.         <td><?php echo $jacket;?></td>
62.         <td><?php echo ($jacket * HARGA_JACKET);?>
63.      </tr>
64.      <tr class="tanda">
65.         <td colspan="2">TOTAL</td>
66.         <td><?php echo $total;?></td>
67.      </tr>
68.      <tr class="tanda">
69.         <td colspan="2">Diskon</td>
70.         <td><?php echo $pesan_diskon;?></td>
71.      </tr>
72.      <tr class="tanda">
73.         <td colspan="2">SUB­TOTAL</td>
74.         <td><?php echo $subtotal;?></td>
75.      </tr>
76.   </table>
77.</body>
78.</html>
10. Simpan kembali file tersebut
11. Buka browser anda dan arahkan ke http://localhost/webpro/bab3/form-toko.html
12. Hasilnya terlihat seperti gambar 3.1 dan 3.2
Gambar 3.1 Gambar 3.2
Penjelasan singkat form-toko.html dan form-proses.php
Kita mulai dari file form-toko.html terlebih dulu. Pada file ini yang perlu diperhatikan adalah data
yang terletak pada <form> dan </form>. Perhatikan cuplikan script form berikut:
<form action="form­proses.php" method="post">
Perhatikan nilai dari action, file yang diberi “kehormatan” untuk menjalankan tugas memproses
data yang dikirim oleh form adalah file form-proses.php. Letak file tersebut satu folder dengan
form-toko.html. Metode yang digunakan adalah POST bukan GET.
© 2008-2010 Rio Astamal – Hal. 39
LUG STIKOM Surabaya Bab III – Struktur Kontrol
<input type="text" name="sticker" value="0" size="4" />
Arti dari kode diatas adalah data yang akan kita kirimkan ke file form-proses.php bernama sticker.
Jadi pada file form-proses.php kita mengambilnya dengan cara:
$sticker = $_POST['sticker']; // data sticker
Kode diatas berarti kita menangkap data yang dikirim dengan metode post dan data tersebut
bernama sticker. Isi dari $_POST harus sama dengan isi dari name pada form. Nama variabel
penampung tidak harus sama akan tetapi lebih mudah jika sama dengan data yang di-post.
TIPS:
PHP tidak memperdulikan tata letak kode anda. Jadi desainlah kode anda senyaman
mungkin untuk dibaca.
3.1.5 Statement switch...case...break
Sebenarnya statement switch...case...break sama dengan if...elseif... dimana kita dapat memilih lebih
dari dua kondisi atau lebih. Selain itu pada switch kita dapat memilih kondisi tidak hanya pada nilai
true atau false saja tetapi kita juga dapat memilih dari berbagai tipe lain seperti integer, boolean,
string dan lain-lain. Syntax penulisan statement switch adalah sebagai berikut.
switch ($kondisi) {
  case kondisi_1:
    // kode yang dieksekusi
  break;
  case kondisi_2:
    // kode yang dieksekusi
  break;
  case kondisi_3:
   // kode yang dieksekusi
  break;
  default:
    // kode yang dieksekusi jika tidak ada yang memenuhi
  break;
}
Block default pada switch sama dengan else pada statement if...elseif...else.... Yaitu blok yang akan
dieksekusi jika semua kondisi tidak terpenuhi. Sebagai contoh anda dapat mengganti kode pada
form-proses.php baris 21 – 30 dengan kode berikut:
21.switch ($total) {
22.   case $total >= 50000 && $total < 75000:
23.      $diskon = 0.05;   // diskon 5%
24.      $pesan_diskon = '5%';
25.   break;
26.   case $total >= 75000 && $total < 100000:
27.      $diskon = 0.05;   // diskon 5%
28.      $pesan_diskon = '5%';
29.   break;
30.   case $total >= 100000;
31.      $diskon = 0.05;   // diskon 5%
32.      $pesan_diskon = '5%';
© 2008-2010 Rio Astamal – Hal. 40
LUG STIKOM Surabaya Bab III – Struktur Kontrol
33.   break;
34.}
3.2 Struktur Perulangan (Looping)
Salah satu kelebihan komputer adalah melakukan pekerjaan selama berulang-ulang tanpa rasa bosan
sedikit pun. Berbeda dengan manusia, tidak dapat dibayangkan jika komputer tiba-tiba bosan ketika
menjalankan perintah :D. Dalam pemrograman perulangan atau looping adalah eksekusi suatu blok
kode selama suatu kondisi looping masih terpenuhi. Ini berbeda dengan struktur kontrol yang hanya
mengeksekusi blok kode satu kali saja.
Agar pengertian looping mudah dicerna, seperti makanan saja dicerna :p, kita akan membuat sebuah
file HTML static yang kemudian akan kita buat duplikatnya tetapi menggunakan loop.
1. Buka gedit / Notepad++
2. Buat file baru
3. Simpan dengan nama bensin.html letakkan pada folder htdocs/webpro/bab3
4. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5.    <title>Bensin Static</title>
6. </head>
7. <body>
8.    <table cellpadding="4">
9.       <tr style="background­color:#cfcfcf">
10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th>
11.      </tr>
12.      <tr>
13.         <td>5</td><td>22500</td>
14.      </tr>
15.      <tr>
16.         <td>10</td><td>45000</td>
17.      </tr>
18.      <tr>
19.         <td>15</td><td>67500</td>
20.      </tr>
21.      <tr>
22.         <td>20</td><td>90000</td>
23.      </tr>
24.      <tr>
25.         <td>25</td><td>112500</td>
26.      </tr>
27.   </table>
28.</body>
29.</html>
6. Save kembali file bensin.html
7. Buka file tersebut pada browser, http://localhost/webpro/bab3/bensin.html
8. Hasilnya akan terlihat seperti gambar 3.3
© 2008-2010 Rio Astamal – Hal. 41
LUG STIKOM Surabaya Bab III – Struktur Kontrol
Gambar 3.3
3.2.1 Statement for...
Bentuk perulangan pertama yang akan kita bahas adalah perulangan dengan for. Bentuk penulisan
looping for adalah sebagai berikut.
for (ekspresi1; kondisi; ekspresi2) {
   // kode yang akan dieksekusi
}
Keterangan:
• ekspresi1: dieksekusi satu kali saat loop mulai dieksekusi, biasanya untuk inisialisasi
variabel counter
• kondisi: dicek setiap loop apakah kondisi masih true, jika ya maka blok kode tetap
dieksekusi, berlaku sebaliknya jika false
• ekspresi2: dieksekusi setiap akhir loop, disini biasanya digunakan untuk mengubah nilai
variabel counter
3.2.2 Penerapan Teori for...
Seperti yang pernah disinggung sebelumnya, bahwa kita akan kan menduplikasi file bensin.html
tetapi dengan menggunakan perulangan, dalam hal ini kita gunakan for.
1. Buka gedit/Notepad++
2. Buat file baru
3. Simpan dengan nama bensin_for.php pada folder htdocs/webpro/bab3
4. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5.    <title>Bensin For</title>
6. </head>
7. <body>
8.    <table cellpadding="4">
9.       <tr style="background­color:#cfcfcf">
© 2008-2010 Rio Astamal – Hal. 42
LUG STIKOM Surabaya Bab III – Struktur Kontrol
10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th>
11.      </tr>
12.      <?php
13.         $harga = 4500;    // semoga tidak naik lagi :p
14.
15.         // lakukan loop dengan kelipatan 5 sampai dengan 25
16.         for ($liter = 5; $liter <= 25; $liter += 5) {
17.            echo "<tr>n";
18.            echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n";
19.            echo "</tr>n";
20.         }
21.      ?>
22.   </table>
23.</body>
24.</html>
6. Simpan kembali file bensin_for.php
7. Arahkan browser anda ke http://localhost/webpro/bab3/bensin_for.php
8. Hasilnya akan sama persis seperti gambar 3.3
Penjelasan Singkat File bensin_for.php
Nilai variabel $liter awal kita set 5, kondisi yang ingin cek adalah jika $liter <= 25. Selama masih
terpenuhi(kondisi true) maka blok kode akan tetap dieksekusi. Setiap selesai eksekusi nilai dari
variabel counter yaitu $liter kita tambah dengan 5.
Looping akan berhenti jika sudah mencapai step 6. Karena pada saat itu nilai $liter sudah mencapai
30 dan itu tidak memenuhi syarat kondisi dimana $liter <= 25.
3.2.3 Statement while...
Berbeda dengan for pada while kita tidak bisa meletakkan inisialisasi variabel, kondisi, dan counter
pada satu baris saja. Syntax penulisan while adalah sebagai berikut.
while (kondisi) {
   // blok kode yang dieksekusi
}
Jadi selama kondisi masih true maka blok kode akan terus dieksekusi. While biasa digunakan jika
kita tidak tahu batas akhir kapan suatu perulangan harus dihentikan.
3.2.4 Penerapan Teori while...
Kita masih tetap menggunakan file bensin.html sebagai acuan output yang akan diselesaikan
menggunakan while.
1. Buka gedit / Notepad++
2. Buat file baru
3. Simpan dengan nama bensin_while.php pada folder htdocs/webpro/bab3
4. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
© 2008-2010 Rio Astamal – Hal. 43
LUG STIKOM Surabaya Bab III – Struktur Kontrol
4. <head>
5.    <title>Bensin While</title>
6. </head>
7. <body>
8.    <table cellpadding="4">
9.       <tr style="background­color:#cfcfcf">
10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th>
11.      </tr>
12.      <?php
13.         $harga = 4500;    // semoga tidak naik lagi :p
14.         $liter = 5;       // inisialisasi $liter diluar loop
15.
16.         // lakukan loop dengan kelipatan 5 sampai dengan 25
17.         while ($liter <= 25) {
18.            echo "<tr>n";
19.            echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n";
20.            echo "</tr>n";
21.            $liter += 5;   // tambah counter
22.         }
23.      ?>
24.   </table>
25.</body>
26.</html>
5. Simpan kembali file tersebut
6. Coba lihat hasilnya, http://localhost/webpro/bab3/bensin_while.php
7. Hasilnya akan terlihat seperti gambar 3.3 sebelumnya
3.2.5 Statement do...while
Berbede dengan dua loop sebelumnya, dimana pada for dan while pengecekan kondisi dilakukan
pada awal sebelum blok kode dieksekusi. Pada do...while pengecekan dilakukan diakhir eksekusi
kode. Jadi setidak-tidaknya blok kode do...while pasti dieksekusi minimal satu kali. Syntax dasar
dari do...while adalah sebagai berikut.
do { 
   // kode yang dieksekusi
} while (kondisi)
Blok kode do akan dieksekusi selama kondisi while masih bernilai true.
3.2.6 Penerapan Teori do...while
1. Buka gedit / Notepad++
2. Buat file baru
3. Simpan dengan nama bensin_do_while.php pada folder htdocs/webpro/bab3
4. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5. <title>Bensin Do While</title>
6. </head>
7. <body>
8. <table cellpadding="4">
© 2008-2010 Rio Astamal – Hal. 44
LUG STIKOM Surabaya Bab III – Struktur Kontrol
9. <tr style="background­color:#cfcfcf">
10. <th>Bensin (Liter)</th><th>Harga (Rp)</th>
11. </tr>
12. <?php
13. $harga = 4500;    // semoga tidak naik lagi :p
14. $liter = 5;       // inisialisasi $liter diluar loop
15.
16. // lakukan loop dengan kelipatan 5 sampai dengan 25
17. do { 
18. echo "<tr>n";
19. echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n";
20. echo "</tr>n";
21. $liter += 5;   // tambah counter
22. } while ($liter <= 25)
23. ?>
24. </table>
25.</body>
26.</html>
5. Simpan kembali file tersebut
6. Arahkan browser ke http://localhost/webpro/bab3/bensin_while.php untuk melihat hasilnya
Jika anda masih penasaran dengan kata-kata “minimal dieksekusi satu kali” coba ganti nilai $liter
dari 5 menjadi 30 saat inisialisasi. Kode pasti akan dieksekusi satu kali kemudian selesai. Hal ini
tidak berlaku untuk for dan while.
Jika ditanya kapan kita menggunakan do...while, susah juga jawabnya. Yang jelas secara naluri nanti
anda akan menggunakannya tanpa disuruh-suruh orang lain :p.
TIPS:
Looping for biasa digunakan jika kita telah mengetahui batas awal dan akhir dari suatu
perulangan.
Untuk sementara kita tidak menbahas dulu foreach karena loop ini didesain khusus untuk
penggunaan didalam array. Jadi pembahasan foreach akan kita lakukan saat membahas tentang
array.
© 2008-2010 Rio Astamal – Hal. 45
LUG STIKOM Surabaya Bab IV – File dan Array
Bab IV
File dan Array
4.1 Berinteraksi dengan File
File merupakan salah satu aspek penting dalam sebuah aplikasi. Seringkali sebuah file dibuat untuk
berbagai tujuan misalnya, menyimpan konfigurasi, temporary file, cache dan masih banyak lagi.
Interaksi PHP dengan file sangat mirip dengan bahasa C. Proses umum yang dilakukan adalah:
• Membuat resource dengan perintah fopen()
• Menulis(fwrite())/membaca file
• Menutup file fclose()
4.1.1 Menyimpan File
Dibanding dengan penyimpanan pada database penyimpanan pada file relatif sederhana. Namun
memiliki banyak kekurangan terutama jika menyangkut masalah keamanan dan kecepatan akses
data. Pada PHP langkah-langkah untuk menyimpan sebuah file adalah:
• Membuka file dengan fopen()
• Menulis file dengan fwrite()
• Menutup file dengan fclose()
fopen() minimal memerlukan dua parameter yaitu 1) string nama file dan 2) string mode. Yang perlu
diperhatikan disini adalah mode dari file. Syntax yang digunakan adalah:
fopen( “string_nama_file”, “string_mode” );
Mode yang dapat digunakan pada fopen adalah:
Mode Deskripsi
'r' Buka file hanya untuk baca saja; pointer file diletakkan diawal file.
'r+' Buka file untuk baca dan tulis; ponter file diletakkan diawal file.
'w' Buka file untuk tulis saja; pointer diletakkan diawal file lalu truncate(overwrite); jika
file tidak ada, buat file tersebut.
'w+' Buka file untuk baca dan tulis; pointer diletakkan diawal file lalu truncate(overwrite);
jika file tidak ada, buat file tersebut.
'a' Buka file untuk tulis saja; pointer diletakkan diakhir file(append); jika file tidak ada,
buat file tersebut.
'a+' Buka file untuk baca dan tulis; pointer diletakkan diakhir file(append); jika file tidak
ada, buat file tersebut.
© 2008-2010 Rio Astamal – Hal. 46
Parameter 1
Parameter 2
LUG STIKOM Surabaya Bab IV – File dan Array
TIPS:
Agar kompatibel antar sistem operasi yang memiliki “ending line” yang berbeda Linux
(n), MacOS(r), dan Windows(rn) tambahkan opsi 'b', misal 'wb'. (b = binary mode)
Kita akan menggunakan contoh form-toko.html yang terdapat pada bab 3. Format penyimpanan
yang kita gunakan adalah:
jml_kaos Sticker -#- harga_kaos -#- jml_kaos Kaos-#- harga_kaos -#- jml_jacket Jacket -#-
harga_jacket -#- total -#- diskon -#- sub-total
OK, langsung aja kita coba untuk menulis file.
4.1.3 Penerapan Teori Penyimpanan File
Sebelum memulai pastikan anda sudah membuat folder baru di direktori htdocs/webpro anda
dengan nama bab4. Kita akan menyimpan file tersebut didalam folder bab4 dengan nama faktur.txt.
Ikuti langkah-langkah berikut:
1. Copy file form-toko.html dan form-proses dari folder bab3 ke bab4
2. Modifikasi file form-proses.php(pada bab4) agar menampilkan link ke halaman faktur.
1. <?php
2. // buat variabel untuk menampung data dari file form­toko.html
3. $sticker = $_POST['sticker']; // data sticker
4. $kaos = $_POST['kaos']; // data kaos
5. $jacket = $_POST['jacket']; // data jacket
6. // harga dari masing­masing produk
7. define('HARGA_STICKER', 7500);
8. define('HARGA_KAOS', 35000);
9. define('HARGA_JACKET', 55000);
10. // total harga
11. $total = (HARGA_STICKER * $sticker) + (HARGA_KAOS * $kaos) + 
12.          (HARGA_JACKET * $jacket);
13. $diskon = 0;
14. $pesan_diskon = '0%';
15. // cek total untuk menentukan diskon
16. if ($total >= 50000 && $total < 75000) { 
17.    $diskon = 0.05;   // diskon 5%
18.    $pesan_diskon = '5%';
19. } elseif ($total >= 75000 && $total < 100000) {
20.    $diskon = 0.1;    // diskon 10%
21.    $pesan_diskon = '10%';
22. } elseif ($total >= 100000) {
23.    $diskon = 0.15;   // diskon 15%
24.    $pesan_diskon = '15%';
25. }
26. $subtotal = $total ­ ($total * $diskon);
27. // tulis ke file, mode yang digunakan adalah 'a' => append
28. // file faktur.txt akan dibuat otomatis jika belum ada
29. $fp = fopen('faktur.txt', 'a');
30. $isi_file = "$sticker Sticker ­#­ " . (HARGA_STICKER * $sticker) . " ­#­ " .
31.             "$kaos Kaos ­#­ " . (HARGA_KAOS * $kaos) . " ­#­ " .
32.             "$jacket Jacket ­#­ " . (HARGA_JACKET * $jacket) . " ­#­ " .
33.             "$total ­#­ $pesan_diskon ­#­ $subtotaln";
34. fwrite($fp, $isi_file);
35. fclose($fp);
© 2008-2010 Rio Astamal – Hal. 47
LUG STIKOM Surabaya Bab IV – File dan Array
36. ?>
37. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
38.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
39. <html xmlns="http://www.w3.org/TR/xhtml1"> 
40. <head>
41.    <title>Pembelian Online</title>
42.    <style type="text/css">
43.       .tanda { background­color: #cfcfcf; }
44.    </style>
45. </head>
46. <body>
47.    <strong>LUG ONLINE STORE ­ DATA PEMBELIAN</strong><hr />
48.    <table border="1">
49.       <tr class="tanda">
50.          <th>Barang</th><th>Jumlah</th><th>Total</th>
51.       </tr>
52.       <tr>
53.          <td>Sticker</td>
54.          <td><?php echo $sticker;?></td>
55.          <td><?php echo ($sticker * HARGA_STCIKER);?>
56.       </tr>
57.       <tr>
58.          <td>Kaos</td>
59.          <td><?php echo $kaos;?></td>
60.          <td><?php echo ($kaos * HARGA_KAOS);?>
61.       </tr>
62.       <tr>
63.          <td>Jacket</td>
64.          <td><?php echo $jacket;?></td>
65.          <td><?php echo ($jacket * HARGA_JACKET);?>
66.       </tr>
67.       <tr class="tanda">
68.          <td colspan="2">TOTAL</td>
69.          <td><?php echo $total;?></td>
70.       </tr>
71.       <tr class="tanda">
72.          <td colspan="2">Diskon</td>
73.          <td><?php echo $pesan_diskon;?></td>
74.       </tr>
75.       <tr class="tanda">
76.          <td colspan="2">SUB­TOTAL</td>
77.          <td><?php echo $subtotal;?></td>
78.       </tr>
79.    </table>
80.    <p><a href="faktur.php">Lihat Faktur</a></p>
81. </body>
82. </html>
3. Simpan kembali file form-proses.php
4. Buat sebuah dokumen baru dengan nama faktur.php
5. Isi dari file faktur.php adalah:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5.    <title>Pembelian Online</title>
6. </head>
7. <body>
8.    <h2>Data Faktur Pembelian</h2>
9.    <pre>
© 2008-2010 Rio Astamal – Hal. 48
LUG STIKOM Surabaya Bab IV – File dan Array
10.    <?php 
11.       // baca seluruh isi file
12.       readfile('faktur.txt');
13.    ?>
14.    </pre>
15.    <a href="form­toko.html">Kembali ke Form</a>
16. </body>
17. </html>
6. Simpan kembali file faktur.php
7. Buka alamat http://localhost/webpro/bab4/form-toko.html untuk melihat proses
penyimpanan file.
Gambar 4.1: Tambahan link Lihat Faktur
Gambar 4.2: Data beberapa faktur transaksi yang tercatat
4.1.4 Penjelasan Singkat Penerapan Teori Penyimpanan File
© 2008-2010 Rio Astamal – Hal. 49
LUG STIKOM Surabaya Bab IV – File dan Array
Pada file form-proses.php modifikasi yang dilakukan dapat dilihat mulai dari baris 27 – 35 dan juga
baris ke-80. Pada baris 27 – 35 yang kita lakukan adalah melakukan penulisan sebuah file dengan
nama faktur.txt. Karena kita tidak menyertakan path untuk direktori file maka diasumsikan file
faktur.txt akan ditulis pada direktori yang sama.
Mode file yang kita gunakan adalah 'a', agar data faktur-faktur sebelumnya yang sudah tertulis tidak
tertimpa/overwrite melainkan kita tambahkan diakhir(append). Separator yang digunakan untuk
setiap item adalah “-#-”. Format ini akan tetap kita gunakan, karena pada pembahasan array kita
akan mengextract setiap item berdasarkan separator tersebut.
Pada file faktur.php pembacaan file dilakukan dengan memanggil fungsi readfile(). Fungsi readfile
akan membaca sebuah file dan langsung menampilkannya ke output. Karena setiap baris dipasahkan
dengan karakter “n” maka kita perlu tag preformatted text <pre> agar file ditampilkan apa adanya.
4.1.5 Fungsi-fungsi Lain
Beberapa fungsi lain yang dapat digunakan untuk manajemen file diantarnya baca dan hapus antara
lain fungsi file_get_contents(), fread(), dan unlink().
a. file_get_contents()
Fungsi file_get_contents() digunakan untuk membaca sebuah file dan menyimpannya sebagai
string. Sebagai contoh kita dapat mengganti fungsi dari readfile() pada file faktur.php dengan
perintah berikut:
$data = file_get_contents('faktur.txt');
echo $data;
b. fread()
Pada fungsi fread() terdapat dua parameter yang harus disertakan yaitu pointer/resource yang dibuka
dengan fopen dan panjang bytes dari data yang akan dibaca. Contoh pengganti readfile() pada file
faktur.php adalah sebagai berikut:
$fp = fopen('faktur.txt', 'r');
$ukuran = filesize('faktur.txt');
$data = fread($fp, $ukuran);
echo $data;
fclose($fp);
atau
$fp = fopen('faktur.txt', 'r');
$data = '';
while (!feof($fp)) {
   $data .= fread($fp, 2048);
}
fclose($fp);
echo $data;
Fungsi filesize() digunakan untuk mengetahui ukuran sebuah file dalam bytes. Sedangkan fungsi
feof() digunakan untuk megecek apakah akhir sebuah file sudah tercapai EOF(End of File). Pada
contoh diatas kita membaca sebanyak 2048 bytes atau 2kb setiap loop.
© 2008-2010 Rio Astamal – Hal. 50
LUG STIKOM Surabaya Bab IV – File dan Array
c. fgets()
Penggunaan fungsi fgets() hampir sama dengan fread() pada metode yang kedua.
$fp = fopen('faktur.txt', 'r');
$data = '';
while (!feof($fp)) {
   $data .= fgets($fp, 2048);
}
fclose($fp);
echo $data;
d. unlink()
Berbeda dengan beberapa fungsi sebelumnya, fungsi unlink() digunakan untuk menghapus sebuah
file. Contoh penggunaan unlink adalah sebagai berikut:
if (unlink('faktur.txt'))
  echo “File faktur.txt berhasil dihapus”;
else
  echo “File faktur.txt gagal dihapus”;
Fungsi unlink() akan mengembalikan nilai boolean mengenai status penghapusan dari sebuah file.
TRUE jika file berhasil dihapus dan FALSE jika gagal dihapus.
TIPS:
Masalah yang sering muncul jika menyangkut pembuatan dan penghapusan file adalah
masalah permission(hak akses). Hal ini umum terjadi pada sistem operasi berbasis
UNIX. Jadi perhatikan permission dari direktori/file yang menjadi objek.
4.2 Array pada PHP
Array merupakan salah satu aspek terpenting dalam bahasa pemrograman. Sebenarnya apa sih array
itu? Secara sederhana array merupakan suatu variabel yang dapat menyimpan beberapa nilai
sekaligus. Berbeda dengan variabel biasa yang hanya dapat menampung sebuah nilai saja. Array
juga dapat berisi array lainnya (array didalam array), array seperti ini sering disebut array multi-
dimensi.
Pada PHP dikenal dua tipe array berdasarkan cara pengaksesannya yaitu array index numerik dan
array index string (associative array). Bingung? Yes akhirnya saya bisa membuat anda bingung :p.
OK, biar anda tidak stress langsung saja kita bahas yang pertama dulu yaitu arrai index numerik.
4.2.1 Array dengan Index Numerik
Kita akan tetap menggunakan contoh produk pada baba sebelumnya yaitu sticker, kaos, dan jacket
dalam pembahsan contoh. Sebuah array dengan index numerik diberi index mulai dari 0,1,2,3,... dan
seterusnya. Untuk membuat sebuah array dengan index numeric terdapat beberapa cara diantaranya:
→ Cara 1
$produk = array('sticker', 'kaos', 'jacket');
© 2008-2010 Rio Astamal – Hal. 51
LUG STIKOM Surabaya Bab IV – File dan Array
Perintah diatas berarti kita membuat sebuah array dengan nama $produk dengan tiga buah elemen
didalamnya. Index akan diberikan otomatis dimulai dari 0 yaitu sticker, 1 adalah kaos dan 2 adalah
jacket.
→ Cara 2
$produk[0] = 'sticker';
$produk[1] = 'kaos';
$produk[2] = 'jacket';
Cara diatas adalah sebuah cara manual yaitu dengan memberi index langsung pada array.
→ Cara 3
$produk[] = 'sticker';
$produk[] = 'kaos';
$produk[] = 'jacket';
Cara ketiga hampir sama dengan yang pertama, hanya berbeda cara penulisan saja. Cara ini sangat
berguna saat kita akan memberi sebuah nilai pada array saat looping dimana index akan bertambah
secara otomatis.
4.2.3 Mengakses Isi Array
Untuk mengakses sebuah array hal yang diperlukan adalah nama array tersebut dan index-nya.
Dimana penulisan index diapit oleh tanda kurung siku [ ]. Perhatikan contoh berikut:
echo $produk[0] . ' ' . $produk[1] . ' ' . $produk[2];
Output dari perintah diatas adalah:
Output 1
Untuk array dengan jumlah yang “bisa” dihitung dengan jari pengaksesan secara manual mungkin
tidak masalah. Namun jika jumlah array mencapai puluhan bahkan ratusan? Solusinya ya pakai
looping.
4.2.4 Looping Array Index Numerik
Pada bab-bab awal kita sudah membahas penggunaan looping. Looping sangat berguna untuk
mengakses array dalam jumlah besar. Pada bagian ini kita juga akan membahas foreach() satu-
satunya perintah looping yang belum dibahas. Output dari perintah-perintah looping berikut akan
mengacu pada output 1. Hal ini ditujukan agar memudahkan anda memahami cara kerja array dan
looping itu sendiri.
a. Looping Array dengan for()
// set variabel index ke 0
© 2008-2010 Rio Astamal – Hal. 52
sticker kaos jacket
LUG STIKOM Surabaya Bab IV – File dan Array
for ($i=0; $i<3; $i++) {
  echo “$produk[$i] ”;
}
Hasil yang ditampilkan akan sama dengan output 1.
b. Looping Array dengan while()
// set variabel index ke 0
$i = 0;
while ($i < 3) {
   echo “$produk[$i] “;
   $i++;   // increment $i
}
c. Looping Array dengan foreach()
Nah, inilah saat yang tepat kita berkenalan dengan si foreach(). Looping ini memang khusus
dirancang untuk digunakan dengan array. Jadi jika memungkinkan sebaiknya gunakan loop tipe ini
dibanding yang lain jika mengakses array.
Syntax dasar dari foreach adalah:
foreach (ekspresi1 as [eskpresi2 => ] ekspresi3) {
   // kode yang akan dieksekusi
}
dimana:
• ekspresi1: variabel array yang akan dimanipulasi
• ekpsresi2(opsional): variabel baru tempat menyimpan index array
• ekspresi3: variabel baru penampung nilai dari elemen array
Untuk menghasilkan output seperti output 1, maka penulisan foreach yang digunakan adalah:
foreach ($produk as $prd) {
  echo “$prd “;
}
Pada contoh diatas kita hanya menuliskan ekspresi1 dan ekspresi3. Penggunaan ekspresi2 dapat
anda lihat pada contoh berikut:
foreach ($produk as $index => $prd) {
   echo “$index : $prd<br />”;
}
Output yang ditampilkan adalah:
4.2.5 Penerapan Teori Array Index Numerik
Untuk contoh kali ini kita akan coba menampilkan isi dari faktur.txt tapi dengan tampilan yang lebih
© 2008-2010 Rio Astamal – Hal. 53
0 : sticker
1 : kaos
2 : jacket
LUG STIKOM Surabaya Bab IV – File dan Array
baik. Tidak hanya sekedar isinya secara langsung. Ikuti langkah-langkag berikut:
1. Buka gedit(Linux) / Notepad++ (Windows)
2. Buat file baru didalam direktori htdocs/bab4 dengan nama faktur2.php
3. Ketik kode berikut:
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5. <title>Pembelian Online</title>
6. </head>
7. <body>
8. <h2>Data Faktur Pembelian</h2>
9. <table border="1" cellpadding="4">
10. <tr style="background:#ccc">
11. <th>No.</th>
12. <th>Jml Sticker</th>
13. <th>Total Sticker</th>
14. <th>Jml Kaos</th>
15. <th>Total Kaos</th>
16. <th>Jml Jacket</th>
17. <th>Total Jacket</th>
18. <th>Total</th>
19. <th>Diskon</th>
20. <th>Sub­Total</th>
21. </tr>
22. <?php
23. // pecah setiap baris menjadi array dengan fungsi file()
24. $baris = file('faktur.txt');
25. 
26. // baca array
27. $jumlah = count($baris);   // panjang array (baris)
28. for ($nomor=0; $nomor<$jumlah; $nomor++) {
29. echo "<tr>n";
30. echo "<td>". ($nomor + 1) . "</td>n"; // karena dimulai dari 0
31. 
32. // extract data pada setiap baris dengan separator '­#­'
33. $data = explode('­#­', $baris[$nomor]);
34. $jcolom = count($data);   // panjang array (kolom)
35. for ($kolom=0; $kolom<$jcolom; $kolom++) {
36. echo "<td>" . $data[$kolom] . "</td>n";
37. }
38. echo "</tr>n";
39. }
40. ?>
41. </table>
42. </body>
43. </html>
4. Simpan kembali file faktur2.php
5. Arahkan browser anda pada alamat http://localhost/webpro/bab4/faktur2.php
6. Hasilnya akan terlihat seperti gambar 4.3.
© 2008-2010 Rio Astamal – Hal. 54
LUG STIKOM Surabaya Bab IV – File dan Array
TIPS:
Anda dapat bereksperimen dengan perintah explode(), misalnya tidak menggunakan
fungsi file untuk memecah baris melainkan dengan explode() dengan separator n.
Gambar 4.3: Tampilan data faktur lebih baik dari sebelumnya
4.2.6 Array dengan Index String (Associative Array)
Pada kasus tertentu penggunaan associative array lebih baik dibandingkan dengan array index
numerik. Pada associative array, pengaksesan bukan dengan index angka melainkan string sesuai
dengan keinginan kita. Sebagai contoh kita akan membuat sebuah array $produk seperti sebelumnya
namun dengan associative array.
→ Cara 1
$produk = array( 'stc' => 'sticker', 'ks' => 'kaos', 'jkt' => 'jacket');
Pada contoh diatas kita memberi index pada sticker dengan stc, kaos dengan ks dan jacket dengan
jkt.
→ Cara 2
$produk = array('stc' => 'sticker');
$produk = array('ks' => 'kaos');
$produk = array('jkt' => 'jacket');
→ Cara 3
$produk['stc'] = 'sticker';
$produk['ks'] = 'kaos';
$produk['jkt'] = 'jacket';
4.2.7 Mengakses Associative Array
Sebenarnya pengaksesan associative array sama dengan array index numerik. Hal yang diperlukan
tentu nama dari array dan nama index yang akan diakses. Perhatikan contoh berikut, output
tampilan dibawah akan sama dengan output 1 pada bahasan sebelumnya.
© 2008-2010 Rio Astamal – Hal. 55
LUG STIKOM Surabaya Bab IV – File dan Array
echo $produk['stc'] . ' ' . $produk['ks'] . ' ' . $produk['jkt'];
atau
echo “{$produk['stc']} {$produk['ks'} {$produk['jkt']}”;
Jika akan mencetak associative array dalam suatu string maka gunakan tanda { } (kurung kurawal)
sebagai pembungkus array.
4.2.8 Looping pada Associative Array
Karena pada associative array tidak menggunakan angka sebagai index, maka kita tidak dapat
menggunakan looping for pada array tipe ini.
a. Looping dengan foreach()
Associative array memang sangat cocok digunakan dengan loop foreach. Kesederhanaan syntax
foreach membuat lebih mudah dibaca.
foreach ($produk as $index => $prd) {
   echo “$index :: $prd<br />”;
}
Output dari script diatas adalah sebagai berikut:
Setelah keyword “as” index dari array bersifat optional artinya tidak perlu diikutkan juga tidak apa-
apa. Lihat contoh berikut.
foreach ($produk as $prd) {
   echo “$prd<br />”;
}
Output dari potongan script kedua adalah:
4.3 Array Multidimensi
Jangan langsung menganggap kata-kata “multidimensi” menyeramkan, anggap saja ini mainan saja
biar otak kita gampang menerimanya. Secara sederhana array multidimensi dapat dianggap sebagai
sebuah matriks yang memiliki baris dan kolom. Oleh karena itu kita dapat membuat array dengan
ukuran 2-dimensi, 3-dimensi, sampai n-dimensi.
4.3.1 Array 2-Dimensi
Bentuk array dua dimensi mirip dengan matriks atau pun suatu koordinat karena diperlukan dua
inputan dalam mengakses isi array yaitu baris dan kolomnya. Kita akan tetap menggunakan contoh
array sebelumnya dalam ilustrasi berikut ini.
© 2008-2010 Rio Astamal – Hal. 56
stc :: sticker
ks :: kaos
jkt :: jacket
sticker
kaos
jacket
LUG STIKOM Surabaya Bab IV – File dan Array
Kode Nama Barang Harga
STC Sticker 7500
KOS Kaos 35000
JKT Jaket 55000
Jika kita konversi dalam bentuk array dua dimensi maka salah satu bentuk array tersebut akan
seperti ini:
$produk = array(
                array('STC', 'Sticker', 7500),
                array('KOS', 'Kaos', 35000),
                array('JKT', 'Jaket', 55000)
          );
Untuk mengakses array 2-dimensi juga tidak berbeda dengan array berdimensi satu. Hanya saja kita
perlu mensupai tambahan yaitu kolom mana yang ingin diakses. Baris paling awal indexnya adalah
0 dan kolom paling kiri indexnya adalah 0. Untuk mengakses array tersebut secara manual dapat
dilakukan seperti berikut.
echo $produk[0][0].'#'.$produk[0][1].'#'.$produk[0][2].'#<br/>';
echo $produk[1][0].'#'.$produk[1][1].'#'.$produk[1][2].'#<br/>';
echo $produk[2][0].'#'.$produk[2][1].'#'.$produk[2][2].'#<br/>';
Output dari kode diatas adalah:
Atau menggunakan looping seperti berikut:
for ($i=0; $i<3; $i++) {
  for ($j=0; $j<3; $j++) {
    echo $produk[$i][$j] . '#';
  }
  echo '<br/>';
}
Pada contoh diatas kita berasumsi bahwa banyak array dari $produk bersifat statik yaiu 3. Jadi kita
melakukan loop sebanyak 3 kali dimulai dengan index 0, 1, dan 2. Alternatif yang menurut penulis
lebih baik adalah penggunaan associative array pada array $produk diatas. Lihat contoh dibawah.
$produk = array(array('kode' => 'STC',
     'nama_barang' => 'Sticker',
     'harga' => 7500),
    array('kode' => 'KOS',
     'nama_barang' => 'Kaos',
     'harga' => 35000),
    array('kode' => 'JKT',
     'nama_barang' => 'Jaket',
     'harga' => 55000),
© 2008-2010 Rio Astamal – Hal. 57
PRODUK
ATRIBUT PRODUK
STC#Sticker#7500#
KOS#Kaos#35000#
JKT#Jaket#55000#
LUG STIKOM Surabaya Bab IV – File dan Array
);
Untuk mengakses array diatas sama dengan cara mengakses array pada index numerik. Contoh,
untuk menampilkan harga dari Sticker maka penulisannya $produk[0]['harga']. Berikut ini
contoh pengaksesan menggunakan foreach untuk mendapatkan output yang sama seperti
sebelumnya.
foreach ($produk as $p) {
  echo $produk['kode'].'#'.$produk['nama_barang'].$produk['harga'].'#<br/>';
}
TIPS:
Penggunaan tipe array index numerik atau string (associative array) sangat bergantung
pada situasi. Namun associative relatif lebih mudah digunakan dibanding index
numerik.
4.3.2 Array 3-Dimensi
Jika pada contoh array 2-dimensi diatas array $produk terdiri dari produk dan attributnya pada array
3-dimensi kita dapat tambahkan sebuah layer tambahan. Untuk memperjelas lihat ilustrasi di bawah
ini.
Bentuk array dari ilustrasi diatas dapat kita tulis sebagai berikut:
$produk = array( 'small' =>
array(array('kode' => 'STC01',
'nama_barang' => 'Sticker',
'harga' => 7500),
  array('kode' => 'KOS01',
  'nama_barang' => 'Kaos',
  'harga' => 35000),
  array('kode' => 'JKT01',
  'nama_barang' => 'Jaket',
  'harga' => 55000)
),
'medium' =>
array(array('kode' => 'STC02',
'nama_barang' => 'Sticker',
'harga' => 8000),
  array('kode' => 'KOS02',
  'nama_barang' => 'Kaos',
  'harga' => 40000),
© 2008-2010 Rio Astamal – Hal. 58
KODE Nama Barang Harga
STC01
KOS01
JKT01
LARGE
Stiker
Kaos
Kaos
7500
35000
55000
KODE Nama Barang Harga
STC01
KOS01
JKT01
MEDIUM
Stiker
Kaos
Kaos
7500
35000
55000
KODE Nama Barang Harga
STC01
KOS01
JKT01
SMALL
Stiker
Kaos
Kaos
7500
35000
55000
LUG STIKOM Surabaya Bab IV – File dan Array
  array('kode' => 'JKT02',
  'nama_barang' => 'Jaket',
  'harga' => 60000)
),
'large' =>
array(array('kode' => 'STC03',
'nama_barang' => 'Sticker',
'harga' => 8500),
  array('kode' => 'KOS03',
  'nama_barang' => 'Kaos',
  'harga' => 45000),
  array('kode' => 'JKT03',
  'nama_barang' => 'Jaket',
  'harga' => 65000)
)
);
foreach ($produk as $kategori => $prod) {
  echo "Kategori: $kategori";
  echo "<br/>===============================<br/>";
  foreach ($prod as $item) {
    echo $item['kode'].'#'.$item['nama_barang'].'#'.$item['harga'].'<br/>';
    echo '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<br/>';
  }
  echo '<br/>';
}
Output dari kode diatas adalah sebagai berikut:
Kategori: small
===============================
STC01#Sticker#7500
-----------------------------------
KOS01#Kaos#35000
-----------------------------------
JKT01#Jaket#55000
-----------------------------------
Kategori: medium
===============================
STC02#Sticker#8000
-----------------------------------
KOS02#Kaos#40000
-----------------------------------
JKT02#Jaket#60000
-----------------------------------
Kategori: large
===============================
STC03#Sticker#8500
-----------------------------------
KOS03#Kaos#45000
-----------------------------------
JKT03#Jaket#65000
-----------------------------------
Dari ilustrasi diatas dapat dilihat bahwa sesungguhnya pembuatan array tidak terbatas pada 3-
dimensi saja melainkan sampai n-dimensi. Namun pada banyak kasus jumlah dimensi 3 sudah
cukup menyelesaikan permasalahan yang dihadapi.
© 2008-2010 Rio Astamal – Hal. 59
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
Bab V
Contoh-contoh Aplikasi
Pada bab ini kita akan mencoba untuk membuat beberapa aplikasi sederhana sesuai dengan materi
yang telah ada pada bab-bab sebelumnya. Aplikasi-aplikasi yang akan kita buat antara lain:
• Simple Contact Form
• Simple Guestbook
• Simple Poll
5.1 Pre-Requirements
Sebelum memulai project pastikan anda sudah membuat sebuah folder bab5 pada folder
htdocs/webpro/. Didalam folder bab5 buat tiga folder diantaranya: simple-contact-form, simple-
guest-book, dan simple-poll. Sehingga susunan akhir dari folder yang ada pada htdocs/webpro/bab5
terlihat seperti berikut:
• htdocs/webpro/bab5/simple-contact-form
• htdocs/webpro/bab5/simple-guestbook
• htdocs/webpro/bab5/simple-poll
Bagi yang menggunakan sistem operasi Linux/*NIX chmod folder-folder tersebut ke 0777 untuk
menghindari masalah permission.
5.2 Simple Contact Form
Simple Contact Form adalah sebuah aplikasi sederhana dimana fungsi utamanya adalah untuk
mengirimkan email kepada admin dari sebuah form kontak yang tersedia. File-file yang akan kita
buat adalah:
Direktori: htdocs/webpro/bab5/simple-contact-form
Nama File Fungsi
form.html Antar muka form kontak berupa HTML murni
process.php Memproses form kontak dan mengirimkan email ke admin.
OK, langsung saja kita mulai project ini.
1. Buka teks editor favorit anda
2. Buat file baru lalu Save dengan nama form.html
3. Lanjutkan dengan menyalin kode berikut
1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
3. <html xmlns="http://www.w3.org/TR/xhtml1"> 
4. <head>
5. <title>Simple Contact Form</title>
6. </head>
7. <body>
8. <h3>Simple Contact Form</h3><hr />
© 2008-2010 Rio Astamal – Hal. 60
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
9. <form action="process.php" method="post">
10. <label>Nama Lengkap</label><br/>
11. <input type="text" name="nama" size="20" /><br/>
12. <label>Email</label><br/>
13. <input type="text" name="email" size="20" /><br/>
14. <label>Pesan<label><br/>
15. <textarea name="pesan" cols="60" rows="10"></textarea><br/>
16. <input type="submit" name="submit" value="PROSES" />
17. </form>
18. </body>
19. </html>
4. Simpan kembali file tersebut.
5. Buat file baru lali Save dengan nama process.php
6. Salin kode dibawah ini. (Ganti contact@localhost.org sesuai dengan account pada mail
server local anda)
1. <?php
2.
3. // ambil data dari form
4. $nama = $_POST['nama'];
5. $email = $_POST['email'];
6. $pesan = $_POST['pesan'];
7.
8. // check apakah semua fieald terisi
9. if (empty($nama) || empty($email) || empty($pesan)) {
10. exit('ERROR: Mohon isi semua field.');
11. }
12.
13. // check format email
14. // (ini hanya pengecekan sederhana tidak menjamin 100% email valid)
15.
16. // apakah terdapat karakter '@' ?
17. if (strpos($email, '@') === FALSE) {
18. // kita menggunakan operator === karena ada kemungkinan
19. // strpos mengembalikan nilai 0 dan itu berarti karakter ada
20. exit ('Error: Format email tidak valid.');
21. }
22.
23. // apakah terdapat karakter '.' ?
24. if (strpos($email, '.') === FALSE) {
25. exit ('Error: Format email tidak valid.');
26. }
27.
28. // check apakah pesan terlalu pendek ? kurang dari 30 karakter
29. if (strlen($pesan) < 30) {
30. exit ('Error: Sepertinya pesan anda terlalu pendek.');
31. }
32.
33. // jika sampai disini semua OK, maka kirim email ke admin
34. $admin_email = 'contact@localhost.org';
35. $subject = 'Pesan dari Contact Form';
36. // header tambahan untuk mail server
37. $from = "From: $nama<$email>";
38.
39. mail($admin_email, $subject, $pesan, $from);
40.
41. echo ("$nama,<br/><br/>Pesan telah terkirim ke admin. Terima Kasih");
42.
43. ?>
© 2008-2010 Rio Astamal – Hal. 61
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
7. Simpan kembali file process.php
8. Buka browser anda dan arahkan ke http://localhost/webpro/bab5/simple-contact-
form/form.html
9. Coba masukkan nama, email, dan pesan anda lalu tekan “PROSES”
10. Buka email client anda (Outlook Express, Claws Mail, atau yang lain) untuk mengetahui
apakah email sudah masuk di inbox atau belum.
Gambar 5.1: Form Kontak
Gambar 5.2: Pesan masuk ke inbox admin
5.2.1 Penjelasan Script Simple Contact Form
Pada script process.php ada beberapa fungsi baru yang kita gunakan. Berikut ini adalah penjelasan
singkat dari fungsi-fungsi tersebut.
© 2008-2010 Rio Astamal – Hal. 62
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
Fungsi strlen(string)
Fungsi ini untuk menghitung jumlah karakter yang ada pada suatu string. Pada script process.php
kita gunakan fungsi ini untuk menghitung julah karakter pada variabel $pesan.
Fungsi strpos(string_subject, string_dicari [, integer offset])
Fungsi strpos akan mengembalikan nilai boolean TRUE/FALSE jika string yang dicari ada pada
string subject. Mengapa pada script kita menggunakan operator === bukan == ? Karena ada
kemungkinan string yang kita cari berada pada offset/index ke 0. Sedangkan pada PHP 0 juga
dianggap sebagai FALSE. Jadi perbandingan yang kita lakukan harus identik (===) benar-benar
bertipe boolean.
Fungsi mail(string_tujuan, string_subject, string_body [, string_header])
Fungsi mail() digunakan untuk mengirim email ke suatu alamat email tertentu. Pada contoh
sebelumnya kita mengirimkan email ke contact@localhost.org dimana itu merupakan email dari
admin. Parameter ke-empat berupa header tambahan yang akan ditambahkan oleh mail server kita
email kita dikirim. Kita menambahkan header From: untuk memudahkan admin dalam mereply
secara langsung email yang masuk ke-inboxnya.
5.3 Simple Guestbook
Simple Guestbook adalah sebuah aplikasi sederhana dimana user dapat meninggalkan komentar
pada halaman website yang kita buat. Beberapa fitur yang akan digunakan pada guestbook ini
diantarnya:
• User dapat memberikan komentar dengan memasukkan nama, email, website, dan
komentarnya.
• Daftar komenter disusun secara descending berdasarkan waktu, jadi komentar terakhir akan
berada paling atas.
File-file yang akan kita buat adalah sebagai berikut.
Direktori: htdocs/webpro/bab5/simple-guestbook
Nama File Fungsi
guestbook.php Antar muka form serta menampilkan daftar komentar yang telah ada.
process-gb.php Memproses form guestbook.
functions.php Berisi fungsi-fungsi yang digunakan dalam memproses data.
Saatnya untuk memulai ritual coding.
1. Buka text editor lalu buat dokumen baru
2. Save dengan nama guestbook.php
3. Salin code berikut ini.
1. <?php
2.
3. // panggil file functions.php
4. include_once('functions.php');
5. $total_comment = total_comment();
© 2008-2010 Rio Astamal – Hal. 63
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
6.
7. ?><!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
8. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
9. <html xmlns="http://www.w3.org/TR/xhtml1"> 
10. <head>
11. <title>Simple Guestbook</title>
12. <style type="text/css">
13. body {
14. padding: 0;
15. margin: 0 0 0 4px;
16. font­family: Verdana, Arial, Monospace;
17. font­size: 11px;
18. }
19. div.comment {
20. margin­bottom: 6px;
21. width: 98%;
22. border: 1px solid #ccc;
23. border­top: none;
24. }
25. div.comment span.title {
26. padding: 4px;
27. border­bottom: 1px solid #ccc;
28. border­top: 1px solid #ccc;
29. text­align:right;
30. display:block;
31. background: #f1f1f1;
32. }
33. div.comment p {
34. padding: 4px 4px 8px 10px;
35. margin: 0;
36. }
37. h4 {
38. margin: 0;
39. }
40. </style>
41. </head>
42. <body>
43. <h3>Simple Guestbook</h3>
44. <form action="process­gb.php" method="post">
45. <table border="0">
46. <tr>
47. <td>Nama*</td>
48. <td><input type="text" name="nama" size="20" /></td>
49. </tr>
50. <tr>
51. <td>Email*</td>
52. <td><input type="text" name="email" size="20" /></td>
53. </tr>
54. <tr>
55. <td>Website</td>
56. <td><input type="text" name="website" size="20" /></td>
57. </tr>
58. <tr>
59. <td style="vertical­align:top">Pesan*</td>
60. <td><textarea name="pesan" cols="50" rows="4"></textarea>
61. </tr>
62. </table>
63. <input type="submit" name="submit" value="PROSES" />
64. </form>
© 2008-2010 Rio Astamal – Hal. 64
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
65. <hr/>
66. <h4>Total Komentar: <?php echo ($total_comment); ?></h4>
67. <?php
68. if ($total_comment > 0) {
69. $content = file('gb.txt');   // baca file sebagai array of lines
70. foreach ($content as $baris) {
71. // split setiap field sesuai separator
72. $field = explode("#@#", $baris);
73.
74. $nama = display_name($field[1], $field[2], $field[3]);
75. $date = display_date($field[0]);
76. $pesan = display_mesg($field[4]);
77.
78. echo('<div class="comment">');
79. echo('  <span class="title">');
80. echo('    Written by ' . $nama . ' on ' . $date);
81. echo('  </span>');
82. echo('  <p>' . $pesan . '</p>');
83. echo("</div>n");
84. }
85. }
86. ?>
87. </body>
88. </html>
4. Save kembali file tersebut.
5. Buat dokumen baru lalu save dengan nama process-gb.php
6. Kemudian salin code berikut.
1. <?php
2.
3. // ambil data dari form
4. $nama = trim($_POST['nama']);
5. $email = trim($_POST['email']);
6. $website = trim($_POST['website']);
7. $pesan = trim($_POST['pesan']);
8.
9. // ubah setiap baris baru menjadi '<br/>'
10. // agar setiap data baru tetap pada satu baris
11. $pesan = str_replace("rn", "<br/>", $pesan);
12. $now = time();   // waktu sekarang dalam UNIX Timestamp
13.
14. // separator untuk setiap field
15. $sep = '#@#';
16. // nama file untuk menyimpan daftar komentar guestbook
17. $target = 'gb.txt';
18.
19. // check apakah field yang diperlukan terisi
20. if (empty($nama) || empty($email) || empty($pesan)) {
21. exit('ERROR: Mohon isi field nama, email dan pesan.');
22. }
23.
24. // susun format yang akan ditulis pada file
25. $content = $now.$sep.$nama.$sep.$email.$sep.$website.$sep.$pesan;
26.
27. // baca isi file lama
28. // tanda @ digunakan untuk menyembunyikan warning dari PHP karena pada waktu
29. // pertama kali file tersebut belum ada
30. $old_content = trim( @file_get_contents($target) );
31.
© 2008-2010 Rio Astamal – Hal. 65
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
32. // tempatkan komentar terbaru pada baris paling atas
33. $content = $content . "n" . $old_content;
34.
35. // tulis file
36. file_put_contents($target, $content);
37.
38. // kembalikan ke halaman guestbook.php
39. header('Location: guestbook.php');
40. ?>
7. Simpan kembali file process-gb.php
8. Lanjutkan dengan membuat file baru lalu save dengan nama functions.php
9. Salin code dibawah ini.
1. <?php
2.
3. /*
4. * Fungsi untuk menampilkan nama dari penulis komentar di guestbook.
5. * Format akhir yang diinginkan adalah:
6. * => Nama Penulis (alamat@email.nya)
7. * dimana Nama Penulis akan berupa link jika alamat web diisi.
8. * 
9. * @param $nama ­ String nama penulis
10. * @param $email String email penulis
11. * @param $web ­ String alamat website penulis
12. * @return String
13. */
14. function display_name($nama, $email, $web) {
15. if (empty($web)) {
16. return "$nama ($email)";
17. }
18.
19. // apakah website diawali http:// ?
20. if (substr($web, 0, 7) != 'http://') {
21. $web = 'http://' . $web;   // tambahkan jika belum ada
22. }
23.
24. $link = '<a href="' . $web . '">' . $nama . '</a>';
25. return "$link ($email)";
26. }
27.
28. /*
29. * Fungsi untuk menampilkan tanggal yang berformat dd Mon, YYY HH:mm
30. * dari sebuah unix timestamp
31. * 
32. * @param $timestamp ­ Integer UNIX Timestamp
33. * @return String
34. */
35. function display_date($timestamp) {
36. return date('d M, Y H:i', $timestamp);
37. }
38.
39. /*
40. * Fungsi untuk menampilkan pesan yang ditulis, dimana fungsi ini akan 
41. * mengubah simbol­simbol html agar tidak langsung dicetak melainkan
42. * menggantinya dengan special character.
43. * 
44. * @param $pesan ­ String pesan
45. * @return String
© 2008-2010 Rio Astamal – Hal. 66
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
46. */
47. function display_mesg($pesan) {
48. // ubah kembali <br/> ke "n" agar nantinya tidak ikut di convert ke 
49. // special karakter
50. $pesan = str_replace("<br/>", "n", $pesan);
51.
52. // konvert HTML karakter seperti (<, >, ", etc) ke bentuk lain
53. $pesan = htmlentities($pesan);
54.
55. // convert balik "n";
56. $pesan = nl2br($pesan);
57.
58. return $pesan;
59. }
60.
61. /* 
62. * Fungsi untuk menghitung total komentar yang ada di guestbook.
63. * 
64. * @param $file (Optional) ­ String nama file, default value: gb.txt
65. * @return integer
66. */
67. function total_comment($file='gb.txt') {
68. // 1 baris = 1 komentar jadi kita hanya perlu menghitung jumlah baris
69. // fungsi file() membuka file sebagai array of lines
70. $baris = @file($file);
71.
72. if ($baris) {
73. return count($baris);
74. }
75. return 0;
76. }
77.
78. ?>
10. Simpan file tersebut.
11. Saatnya melakukan tes, arahkan browser anda ke alamat
http://localhost/webpro/bab5/simple-guestbook/guestbook.php
12. Hasilnya akan terlihat seperti gambar 5.3
5.3.1 Penjelasan Script Simple Guestbook
Cukup banyak yang harus dijelaskan karena banyak hal baru yang diterapkan pada aplikasi simple
guestbook ini. Saran saya cukup sediakan beberapa butir aspirin jika kepala mulai terasa pusing :).
Pada script telah banyak saya beri komentar jadi disini saya hanya menjelaskan sesuatu yang
menurut saya penting.
Fungsi file_get_contents(), file_put_contents(), dan file()
Jika pada bab sebelumnya kita menulis atau membaca file menggunakan fungsi fopen maka disini
sedikit berbeda. Untuk menulis file kita gunakan file_put_contents() sedangkan untuk
membaca file digunakan fungsi file_get_contents() dan file(). Penggunaan fungsi-fungsi
tersebut hanya untuk memudahkan kita saja dalam memanipulasi file.
Pembuatan Sebuah Fungsi
Hal yang paling menarik dari aplikasi ini adalah terletak pada file functions.php karena pada file ini
kita membuat fungsi sendiri. Jika selama ini kita hanya menggunakan fungsi-fungsi bawaan PHP
© 2008-2010 Rio Astamal – Hal. 67
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
seperti strlen(), trim(), dll maka disini kita membuat sebuah fungsi sesuai dengan kebutuhan pada
aplikasi kita.
Gambar 5.3: Tampilan simple guestbook
Pada PHP sebuah fungsi dapat mengembalikan sebuah nilai atau hanya mengeksekusi beberapa
rutin perintah saja. Jika sebuah fungsi mengembalikan nilai itu ditandai dengan adanya keyword
return pada body fungsi tersebut. Fungsi-fungsi yang kita buat sebelumnya, semuanya
mengembalikan nilai baik itu berupa string atau integer.
5.3.2 Improvisasi Simple Guestbook
Improvisasi yang dapat dilakukan pada aplikasi simple guestbook diantarnya:
• Fasilitas filter bad words (Petunjuk: str_replace dan array)
• Fasilitas block alamat IP (Petunjuk: IP didapatkan dari $_SERVER['REMOTE_ADDR'])
• Fasilitas hapus komentar (Petunjuk: Admin perlu memasukkan password, gunakan file()
hilangkan baris yang akan dihapus dari array, lalu tulis ulang)
5.4 Simple Poll
Aplikasi terakhir yang akan kita buat adalah sebuah polling sangat sederhana. User dapat memilih
salah satu kandidat yang tersedia pada polling atau melihat hasil sementara. Disini tidak ada batasan
apakah user sudah pernah memilih atau tidak, namanya juga “sangat sederhana” :). Langsung saja
ke file-file yang akan dibuat.
© 2008-2010 Rio Astamal – Hal. 68
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
Direktori: htdocs/webpro/bab5/simple-poll
Nama File Fungsi
poll.php Halaman untuk memilih dan menampilkan daftar polling
config.php Berisi konfigurasi dan beberapa fungsi
Seperti biasa “untaian-untaian” code menanti untuk diketik :).
1. Buka teks edit dan buat dokumen baru
2. Simpa dengan nama poll.php lalu salin kode berikut.
1. <?php
2.
3. $action = @$_GET['action'];
4. include_once('config.php');
5.
6. // jika parameter action pada URL kosong maka set ke new_poll
7. if (!$action) {
8. $action = 'new_poll';
9. }
10.
11. if ($action == 'choose') {
12. $pilihan = $_GET['pilihan'];
13.
14. // tambah nilai kandidat + 1 jika $pilihan sama dengan nama index array
15. foreach ($kandidat as $nama => $data) {
16. if ($pilihan == $nama) {
17. $kandidat[$nama]['suara'] += 1;
18. }
19. }
20.
21. // tulis ulang hasil polling
22. tulis_poll($kandidat);
23.
24. // kembalikan ke halaman polling
25. header('Location: poll.php?action=view');
26. exit(); // keluar agar kode dibawah tidak dieksekusi
27. }
28.
29. ?><!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN" 
30. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 
31. <html xmlns="http://www.w3.org/TR/xhtml1"> 
32. <head>
33. <title>Simple Poll</title>
34. <style type="text/css">
35. body {
36. margin: 0 0 0 10px;
37. padding:0;
38. font­family: Verdana, Arial, Monospace;
39. font­size: 11px;
40. }
41. #poll­wrapper {
42. width: 600px;
43. border: 1px solid #ccc;
44. padding: 4px;
45. }
46. #poll­wrapper div.bar {
© 2008-2010 Rio Astamal – Hal. 69
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
47. height: 20px;
48. display: block;
49. background: #9CE89C;
50. }
51. #poll­wrapper div.bar span {
52. position:relative;
53. top: 2px;
54. margin­left: 5px;
55. font­weight: bold;
56. }
57. </style>
58. </head>
59. <body>
60. <?php if ($action == 'new_poll'): ?>
61. <h2>Pemilihan Lurah Kedung Baruk</h2>
62. <?php foreach ($kandidat as $nama => $suara) : ?>
63. <p><?php echo ($nama); ?> 
64. <a href="poll.php?action=choose&pilihan=<?php echo($nama);?>">Pilih
65. </a>
66. </p>
67. <?php endforeach; ?>
68.
69. <p><a href="poll.php?action=view">Lihat Hasil Sementara</a></p>
70.
71. <?php elseif ($action == 'view'): ?>
72.
73. <h2>Hasil Polling</h2>
74. <div id="poll­wrapper">
75. <?php foreach ($kandidat as $nama => $data) : 
76. $persen = persen($data['suara'], $total_suara);
77. ?>
78. <div class="bar" style="width:<?php echo ($persen);?>%;background:<?
php echo ($data['warna']);?>">
79. <span><?php echo ("$persen");?>%</span>
80. </div>
81. <span><?php echo ("$nama ({$data['suara']} Suara)");?></span>
82. <?php endforeach; ?>
83. </div>
84. <p><strong>Total Suara: <?php echo ($total_suara);?></strong></p>
85. <p><a href="poll.php">Kembali ke Polling</a></p>
86. <?php endif; ?>
87. </body>
88. </html>
3. Simpan kembali file poll.php
4. Buat dokumen baru, lalu simpan dengan nama config.php
5. Salin code dibawah ini.
1. <?php
2.
3. // setting default daftar kandidat untuk peserta polling
4. $kandidat['Pak Kartimen'] = array('suara' => 0, 'warna' => '#90EE90');
5. $kandidat['Pak Paijo'] = array('suara' => 0, 'warna' => '#FF8197');
6. $kandidat['Pak Supeno'] = array('suara' => 0, 'warna' => '#ADD8E6');
7.
8. // cek apakah file data­poll.txt ada atau tidak, jika tidak maka
9. // buat baru dengan default nilai 0 untuk setiap kandidat
10. $target = 'data­poll.txt';
11. if (!file_exists($target)) {
© 2008-2010 Rio Astamal – Hal. 70
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
12. tulis_poll($kandidat);
13. } else {
14. // jika sudah ada maka update nilai dari array $kandidat
15. $content = file($target);
16. foreach ($content as $baris) {
17. // split kandidat dan suaranya
18. $data = explode('|', $baris);
19. // update nilai
20. $kandidat[$data[0]] = array(
21. 'suara' => (int)$data[1],
22. 'warna' => trim($data[2])
23. );
24. }
25. }
26.
27. // menghitung total suara
28. $total_suara = 0;
29. foreach ($kandidat as $data) {
30. $total_suara += $data['suara'];
31. }
32.
33. /*
34. * Fungsi untuk menulis data polling ke file
35. * 
36. * @param $poll ­ Array data polling
37. * @param $file (optional) ­ String nama file target
38. * @return void
39. */
40. function tulis_poll($poll, $file='data­poll.txt') {
41. // file tidak ada maka buat baru
42. $content = '';
43. foreach ($poll as $nama => $data) {
44. $content .= "$nama|{$data['suara']}|{$data['warna']}n";
45. }
46. $content = trim($content); // strip whitespace di awal dan akhir
47. file_put_contents($file, $content);
48. }
49.
50. /*
51. * Fungsi untuk menentukan jumlah persen yang diperoleh dari setiap data yang
52. * di­poll
53. * 
54. * @param $suara_didapat ­ Integer banyaknya suara yang didapat oleh suatu 
item
55. * @param $total_suara ­ Integer total suara dalam polling
56. * @return integer
57. */
58. function persen($suara_didapat, $total_suara) {
59. if ($total_suara == 0) {
60. return 0;
61. }
62. return round( ($suara_didapat / $total_suara) * 100 );
63. }
64.
65. ?>
6. Simpan kembali file tersebut.
7. Arahkan browser anda alamat http://localhost/webpro/bab5/simple-poll
8. Pilih salah satu kandidat yang ingin anda pilih
© 2008-2010 Rio Astamal – Hal. 71
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
9. Ulangi beberapa kali untuk melihat hasil yang lebih nyata.
10. Output dari aplikasi ini akan terlihat kurang lebih seperti gambar 5.4 dan 5.5
Gambar 5.4: Pemilihan Kandidat
Gambar 5.5: Hasil Polling
5.4.1 Penjelasan Script Simple Poll
Hal baru yang kita dapatkan pada aplikasi simple poll adalah penggunaan global variabel $_GET.
Jika sebelumnya anda hanya mengenal variabel global $_POST maka pada aplikasi ini kita
memanfaatkan $_GET untuk membuat multiview file (satu file banyak tampilan). Nilai dari
variabel $_GET adalah array dari query string pada URL. Lihat contoh dibawah.
http://localhost/webpro/bab5/simple-poll/poll.php?action=choose&pilihan=X
Untuk mengambil nilai dari parameter action dan pilihan kita dapat menggunakan variabel $_GET
sebagai berikut:
© 2008-2010 Rio Astamal – Hal. 72
LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi
$action = $_GET['action'];
$pilihan = $_GET['pilihan'];
Jadi dapat disimpulkan bahwa passing parameter yang tidak terlalu kompleks dan sensitif antar
halaman akan lebih mudah menggunakan global variabel $_GET dibandingkan dengan $_POST.
© 2008-2010 Rio Astamal – Hal. 73
LUG STIKOM Surabaya Daftar Pustaka
Daftar Pustaka
Achour, Mehdi., Contributors. (2010). PHP Manual. USA: The PHP Documentation Group.
Welling, Luke., Thomson, Laura. (2005). PHP and MySQL Web Development Third Edition.
Indianapolis: Sams Publishing.
© 2008-2010 Rio Astamal – Hal. 74
LUG STIKOM Surabaya
Hall of Fame 2010
AZWAR ZAINURI MIRZA EKA
ARIEF WICAKSONO IRIANTO BUNGA
MITFAH FARIDL EKO KURNIAWAN
RIO ASTAMAL ELVIN ALMUTTAKIN
SEMOGA SELALU KOMPAK!

More Related Content

DOCX
Modul network programming
PDF
Php indonesia e magazine edisi female team no 1
PDF
15. modul bahasa pemrograman (java)
PDF
Modul Web Programming dengan PHP dan MySQL
PPTX
Kelompok iv
PDF
Ebook PHP - menyelam dan menaklukan samudra php
ODP
Python - Telegram
PDF
Menjadi web master dalam 30 hari
Modul network programming
Php indonesia e magazine edisi female team no 1
15. modul bahasa pemrograman (java)
Modul Web Programming dengan PHP dan MySQL
Kelompok iv
Ebook PHP - menyelam dan menaklukan samudra php
Python - Telegram
Menjadi web master dalam 30 hari

Similar to Modul training-php-rc1-u3 (20)

PDF
Menyelam dan menaklukan samudra php
PDF
Ebook php menyelam dan menaklukan samudra php
PDF
Pemrograman web dengan php my sql
PDF
PDF
Ci indonesia
PDF
Ci indonesia
DOC
Php mysq l - siapa - takut
PDF
Arifadli membuat buku-tamu
PDF
Membuat buku-tamu dengan Php
PDF
Tug as ii
PDF
1705552010_socmedparalelA_tugas akhir
PDF
Pemrograman web dengan php my sql
PDF
Pemrograman Web with PHP MySQL
PDF
Pemrograman web dengan_php_my_sql
PDF
Pemrograman web dengan php my sql
PDF
Tugas afi
PDF
Tug as
PDF
MODUL / MATERI-MATERI PEMBELAJARAN PHP.pdf
PDF
5302411231 lms self hosted omeka
PDF
Pemrograman web dengan_php_my_sql
Menyelam dan menaklukan samudra php
Ebook php menyelam dan menaklukan samudra php
Pemrograman web dengan php my sql
Ci indonesia
Ci indonesia
Php mysq l - siapa - takut
Arifadli membuat buku-tamu
Membuat buku-tamu dengan Php
Tug as ii
1705552010_socmedparalelA_tugas akhir
Pemrograman web dengan php my sql
Pemrograman Web with PHP MySQL
Pemrograman web dengan_php_my_sql
Pemrograman web dengan php my sql
Tugas afi
Tug as
MODUL / MATERI-MATERI PEMBELAJARAN PHP.pdf
5302411231 lms self hosted omeka
Pemrograman web dengan_php_my_sql
Ad

More from Jamil Jamil (20)

PPT
Tonyfortunatoiperfquickstart 1212633021928769-8
PDF
Skripsi perancangan-sistem-informasi-pendataan-biodata-mahasiswa-pada-fakulta...
PDF
Skripsi perancangan-sistem-informasi-pendataan-biodata-mahasiswa-pada-fakulta...
PDF
Skripsi universitas paramadina_jakarta_fitriyani_kepemimpinan_perempuan_dalam...
PDF
Silabus disain pemrogramanberorientasiobjek_iki10830
PDF
Publikasi 09.22.1115
PDF
Publikasi 08.12.3175 2
PDF
Publikasi 08.12.3175
PDF
Prak 1
PDF
Paper ta
PDF
Naskah publikasi 09.11.2727
PDF
Modul 2
PDF
Modul pbo
PDF
M odul 5 komponen dasar visual basic 2
PDF
M odul 5 komponen dasar visual basic
PDF
Membuat laporan berbentuk khs 2
PDF
Membuat laporan berbentuk khs
PDF
Makalah seminar
PDF
Jurnaltoninetti
PPT
Junipermplsbestpractice part1-100717041724-phpapp02
Tonyfortunatoiperfquickstart 1212633021928769-8
Skripsi perancangan-sistem-informasi-pendataan-biodata-mahasiswa-pada-fakulta...
Skripsi perancangan-sistem-informasi-pendataan-biodata-mahasiswa-pada-fakulta...
Skripsi universitas paramadina_jakarta_fitriyani_kepemimpinan_perempuan_dalam...
Silabus disain pemrogramanberorientasiobjek_iki10830
Publikasi 09.22.1115
Publikasi 08.12.3175 2
Publikasi 08.12.3175
Prak 1
Paper ta
Naskah publikasi 09.11.2727
Modul 2
Modul pbo
M odul 5 komponen dasar visual basic 2
M odul 5 komponen dasar visual basic
Membuat laporan berbentuk khs 2
Membuat laporan berbentuk khs
Makalah seminar
Jurnaltoninetti
Junipermplsbestpractice part1-100717041724-phpapp02
Ad

Modul training-php-rc1-u3

  • 1. rio astamalrio astamal MODULMODUL PEMROGRAMAN PHPPEMROGRAMAN PHP Lisensi dibawah: Creative Commons Attribution-Share Alike 3.0 http://creativecommons.org Level - PemulaLevel - Pemula Versi - 1.0Versi - 1.0 http://lug.stikom.edu/http://lug.stikom.edu/http://ossc.stikom.edu/http://ossc.stikom.edu/ OSSC LOGO
  • 2. LUG STIKOM Surabaya Software Open Source yang Digunakan dalam Pembuatan Modul ini adalah: OpenOffice.org Linux XAMPP Apache httpd Server PHP Ubuntu Geany PDFSam Firefox dan beberapa software lain yang mungkin lupa disebutkan. © 2008-2010 Rio Astamal – Hal. ii
  • 3. LUG STIKOM Surabaya Kata Pengantar Modul Pemrograman PHP ini adalah sebuah modul yang berisikan tutorial dasar-dasar pemrograman web menggunakan bahasa pemrograman PHP. Seperti yang telah diketahui PHP saat ini merupakan bahasa pemrograman untuk web yang terpopuler. Facebook, Yahoo, Digg dan masih banyak website populer lainnya menggunakan PHP. Belum lagi jumlah CMS yang bebasiskan PHP beberapa yang terpopuler diantaranya: Joomla, Wordpress, Drupal, ModxCMS, dan masih banyak lagi. Dengan menguasasi PHP sudah dapat dibayangkan bukan banyak kelebihan yang akan anda dapat. Pada modul ini penulis coba untuk menjelaskan secara step-by-step bagaimana membuat sebuah halaman website yang lengkap dengan mengetahui terlebih dahulu dasar-dasar web. Hal tersebut meliputi dasar-dasar WWW, HTML, CSS dan pengetahuan dasar tentang website yang menurut penulis perlu diketahui. Baru setelah itu penulis masuk ke bahasan utama yaitu PHP. Pada akhir modul ini penulisan sertakan beberapa contoh aplikasi sederhana yang mungkin akan sangat membantu pemahaman pembaca mengenai PHP. Penulis sampaikan terima kasih kepada seluruh pihak yang mendukung dan membantu hingga modul ini selesai terutama rekan-rekan di LUG STIKOM Surabaya dan pihak Open Source Software Center (OSSC) STIKOM. Semoga modul ini dapat berguna bagi semua pembaca. Kritik dan saran untuk modul ini dapat disampaikan pada email penulis di rio@lug.stikom.edu. Terima Kasih. Surabaya, Maret 2010 Penulis © 2008-2010 Rio Astamal – Hal. iii
  • 4. LUG STIKOM Surabaya Daftar Isi Kata Pengantar.................................................................................................................................iii Daftar Isi............................................................................................................................................iv Pendahuluan......................................................................................................................................vi BAB I HTML & World Wide Web....................................................................................................1 Cara Kerja WWW................................................................................................................................1 HTML..................................................................................................................................................2 Manipulasi Font...................................................................................................................................3 Hyperlink.............................................................................................................................................4 Membuat Tabel....................................................................................................................................5 HTML Form........................................................................................................................................6 Macam-macam Input......................................................................................................................7 Menampilkan Gambar.........................................................................................................................9 XHTML & DOCTYPE......................................................................................................................10 CSS.....................................................................................................................................................11 CSS Class dan ID..........................................................................................................................12 Hyperlink Pseudoclass...................................................................................................................14 External CSS.................................................................................................................................15 Membuat Layout dengan DIV............................................................................................................16 Javascript...........................................................................................................................................21 Menggunakan Javascript...............................................................................................................21 Manipulasi DOM..........................................................................................................................23 BAB II Pengenalan PHP..................................................................................................................26 Apa itu PHP?....................................................................................................................................26 Cara Kerja PHP.................................................................................................................................26 Variabel pada PHP.............................................................................................................................27 Tipe Variabel.................................................................................................................................27 Konstanta......................................................................................................................................27 Komentar...........................................................................................................................................29 Operator.............................................................................................................................................30 Operator Aritmatik.......................................................................................................................30 Operator Kombinasi.....................................................................................................................30 Operator Perbandingan.................................................................................................................31 Operator Logika............................................................................................................................31 Operator Increment/Decrement....................................................................................................31 Operator String.............................................................................................................................32 Escape Character...............................................................................................................................32 Special Character..............................................................................................................................33 BAB III Struktur Kontrol................................................................................................................35 Struktur Kondisi................................................................................................................................35 Statement if...................................................................................................................................35 Statement if...else..........................................................................................................................36 Statement if...elseif...else..............................................................................................................36 Statement switch...case...break.....................................................................................................40 Struktur Perulangan (Looping)..........................................................................................................41 © 2008-2010 Rio Astamal – Hal. iv
  • 5. LUG STIKOM Surabaya Statement for.................................................................................................................................41 Statement while.............................................................................................................................43 Statement do...while......................................................................................................................44 BAB IV File dan Array....................................................................................................................46 Berinteraksi dengan File...................................................................................................................46 Menyimpan File...........................................................................................................................46 Fungsi-fungsi Lain.......................................................................................................................50 Array pada PHP.................................................................................................................................51 Mengakses Isi Array.....................................................................................................................52 Looping Array Index Numerik.....................................................................................................52 Array dengan Index String (Associative Array)...........................................................................55 Mengakses Associative Array.......................................................................................................55 Looping pada Associative Array...................................................................................................56 Array Multidimensi...........................................................................................................................56 Array 2-Dimensi............................................................................................................................56 Array 3-Dimensi............................................................................................................................58 BAB V Contoh-contoh Aplikasi......................................................................................................60 Pre-Requirements..............................................................................................................................60 Simple Contact Form........................................................................................................................60 Penjelasan Script Simple Concat Form........................................................................................62 Simple Guestbook.............................................................................................................................63 Penjelasan Script Simple Guestbook............................................................................................67 Improvisasi Simple Guestbook.....................................................................................................68 Simple Poll........................................................................................................................................68 Penjelasan Script Simple Poll.......................................................................................................72 Daftar Pustaka..................................................................................................................................74 © 2008-2010 Rio Astamal – Hal. v
  • 6. LUG STIKOM Surabaya Pendahuluan A. Linux Konfigurasi dan software-software yang digunakan penulis test menggunakan distro Ubuntu, namun dapat dipastikan tidak terlalu berbeda jika diterapkan pada distro Linux lainnya. Software-software yang diperlukan: • XAMPP for Linux • Text Editor (vi, gedit, emacs, geany atau yang lain) • Postfix Mail Server • Email Client (Evolution, Claws Mail, Thunderbird atau yang lain) • Web Browser (Firefox, Chrome, atau yang lain) 1. Instalasi XAMPP for Linux Download file XAMPP for Linux dari situs http://www.apachefriends.org/. Asumsi yang saya berikan adalah: • File xampp-linux-x.y.z (x.y.z versi xampp) anda letakkan pada home direktori. • Username pada sistem yang digunakan adalah lug (Sesuaikan dengan username anda). • XAMPP akan diinstall pada direktori /opt sesuai standard defaultnya. Langkah-langkahnya: 1. Buka Terminal (Application → Accecories → Terminal) 2. Extract file xampp ke direktori /opt $ sudo ­zxvf xampp­linux­x.y.z ­C /opt 3. Ubah permission /opt/lampp/htdocs ke user lug $ sudo chown ­R lug /opt/lampp/htdocs 4. Buat direktori webpro pada direktori /opt/lampp/htdocs $ mkdir /opt/lampp/htdocs/webpro 5. Sekarang coba jalankan XAMPP $ sudo /opt/lampp/lampp startapache 6. Jika semuanya benar maka jika anda mengarahkan alamat web browser anda ke http://localhost/ akan muncul tampilan XAMPP for Linux. 2. Instalasi Postfix Mail Server Tujuan kita menginstall postfix adalah karena ada contoh aplikasi yang kita buat melibatkan proses pengiriman email. Jadi otomatis kita memerlukan sebuah SMTP server. Untuk instalasi postfix langkahnya cukup sederhana namun pastikan repository anda sudah terkonfigurasi dengan bebar. Langkah-langkah instalasi dan konfigurasi postfix: 1. Buka Terminal (Application → Accecories → Terminal) 2. Install dengan menggunakan apt-get $ sudo apt­get install postfix 3. Tambahkan domain localhost.org, localhost.com, localhost.net ke dalam mydestination postfix. © 2008-2010 Rio Astamal – Hal. vi
  • 7. LUG STIKOM Surabaya $ sudo gedit /etc/postfix/main.cf 4. Cari baris mydestination dan tambahkan entry yang baru, setiap entry dipisahkan koma dan tetap satu baris. Sehingga hasil akhir dari isi mydestination kurang lebih akan terlihat seperti berikut: mydestination = lug­laptop, localhost.localdomain, localhost,  localhost.com, localhost.org, localhost.net 5. Restart postfix $ sudo /etc/init.d/postfix restart 3. Konfigurasi Email Client Pada contoh konfigurasi ini saya menggunakan email client Claws Mail. Namun konsep konfigurasinya sama saja untuk setiap email client yang menggunakan local mailbox. Berikut- langkah-langkahnya. 1. Install Claws Mail $ sudo apt­get claws­mail 2. Kirim email lewat terminal untuk mengetes (ganti lug sesusai username anda) $ mail lug Subject: HELLO INI ADALAH TES UNTUK LOCAL MAILBOX 3. Tekan ENTER lalu CTRL-D untuk mengakhiri penulisan pesan. Jika muncul pertanyaan cc: tekan ENTER saja. 4. Buka claws mail (Applications → Internet → Claws Mail) 5. Klik Configuration → Create new Account 6. Kemudian isikan seperti dibawah ini (ganti lug sesuai username anda) 7. Klik Apply 8. Untuk mengecek email baru klik Icon “Get Mail” pada pojok kiri atas. 9. Jika ada email masuk maka akan tampil di Inbox 10. Email yang kita kirimkan lewat terminal akan masuk ke inbox kita, hasilnya dapat dilihat pada gambar berikut. © 2008-2010 Rio Astamal – Hal. vii
  • 8. LUG STIKOM Surabaya B. Instalasi pada Windows Instalasi software dan konfigurasi penulis lakukan pada sistem operasi Windows XP. Bagi anda yang menggunakan Windows Vista/7 silahkan menyesuaikan. Software-software yang akan kita gunakan diantaranya: • XAMPP for Windows • Text Editor (Notepad++) • Mercury untuk mail server (sudah include dengan XAMPP) • Email Client (Outlook Express, Thunderbird, atau yang lain) • Web Browser (Firefox, Opera, Chrome, atau yang lain. IE tidak dianjurkan) 1. Instalasi XAMPP for Windows Download file XAMPP for Windows dari situs http://www.apachefriends.org/. Asumsi yang saya berikan adalah: • File xampp-win32-x.y.z.exe (x.y.z versi xampp) • XAMPP yang anda download adalah XAMPP versi installer. • Target instalasi adalah C:xampp Langkah-langkahnya: 1. Double klik file xampp-win32-x.y.z.exe 2. Pada pilihan bahasa pilih saja English lalu OK 3. Pada Destination Folder pilih saja defaultnya yaitu c:xampp 4. Klik Next > Install 5. Setelah selesai coba jalankan XAMPP Control panel melalui Start → Programs → Apache Friends → XAMPP → XAMPP Control Panel 6. Klik tombol “Start” disebelah kanan Apache 7. Coba buka browser anda pada alamat http://localhost/ jika semuanya OK maka akan muncul tampilan XAMPP for Windows © 2008-2010 Rio Astamal – Hal. viii
  • 9. LUG STIKOM Surabaya 2. Konfigurasi Mercury Mail Server Mercury Server adalah sebuah aplikasi mail server yang mendukung protokol SMTP, POP3, dan IMAP. Mercury sudah dimasukkan dalam XAMPP jadi anda tidak perlu mendownload. Berikut ini adalah cara konfigurasi mercury. Langkah-langkah membuat account baru: 1. Jalankan XAMPP Control Panel 2. Klik tombol Start sebelah kanan Mercury untuk men-start mercury server. 3. Klik tombol Admin untuk membuka window konfigurasi 4. Klik Menu Configuration → Manage local user... 5. Klik tombol Add untuk menambahkan user baru. Pada contoh saya memasukkan Username: lug Personal name: LUG STIKOM Password: lugstikom 6. Klik tombol OK → Close 7. Langkah selanjutnya adalah mempersingkat waktu poll untuk email baru agar proses send/receive email terjadi secara realtime. Klik menu Configuration → Mercury core module... 8. Pada isian Poll for new mail every ganti dengan 3. 9. Klik OK 10. Tahap berikutnya adalah pengetesan account. Klik menu File → Send mail message Isikan To: lug@localhost.org Subject: HELLO Body: INI TEST ACCOUNT 11. Klik Send Tahap berikutnya adalah melakukan konfigurasi email client. Dalam contoh ini saya menggunakan email client bawaan Windows Outlook Express. Saya rasa langkah-langkahnya hampir sama untuk semua email client. 1. Pertama jalankan aplikasi Outlook Express 2. Jika tidak muncul window untuk membuat account klik menu Tools → Accounts... 3. Pindah ke tab Mail lalu klik tombol add → Mail... Display Name: LUG STIKOM Email Address: lug@localhost.org Incoming Mail: localhost Outgoing Mail: localhost Account Name: lug Password: lugstikom (sesuai dengan di mercury) 4. Klik Next → Finish → Close 5. Klik tombol Send/Receive untuk mengecek inbox 6. Jika semuanya benar maka seharunya ada email baru di inbox anda. Email tersebut adalah email yang anda kirim lewat mercury. © 2008-2010 Rio Astamal – Hal. ix Penting! Menutup window Mercury berarti sama saja mematikan mail server. Oleh karena itu cukup minimize saja jangan ditutup.
  • 10. LUG STIKOM Surabaya C. Konvensi Letak Direktori Pada modul ini anda akan sering menemui perintah untuk menyimpan file ke suatu direktori. Karena sistem pengalamatan direktori pada sistem operasi berbasis Linux/*NIX berbeda dengan windows maka pada modul dibuat konvensi sebagai berikut. Jika disebutkan alamat direktori sebagai berikut htdocs/ maka: Untuk linux berarti: /opt/lampp/htdocs/ Untuk Windows berarti: c:xampphtdocs Modul ini terdiri dari lima bab, untuk itu penulis menyarankan untuk membuat direktori baru bernama webpro didalam htdocs/. Setelah itu berturut-turut buatlah direktori dengan nama bab1, bab2, bab3, bab4, dan bab5. Sehingga struktur direktori akhir akan terlihat seperti tabel dibawah. Linux Windows /opt/lampp/htdocs/webpro/bab1 C:xampphtdocswebprobab1 /opt/lampp/htdocs/webpro/bab2 C:xampphtdocswebprobab2 /opt/lampp/htdocs/webpro/bab3 C:xampphtdocswebprobab3 /opt/lampp/htdocs/webpro/bab4 C:xampphtdocswebprobab4 /opt/lampp/htdocs/webpro/bab5 C:xampphtdocswebprobab5 Jadi setiap project yang anda kerjakan pada modul ini simpan sesuai dengan babnya masing-masing untuk lebih mempermudah organisasi. Mungkin anda bingung dengan perbedaan istilah direktori dan folder. Anggap saja itu sama, tidak usah dipusingkan. Folder ya direktori, direktori ya folder. © 2008-2010 Rio Astamal – Hal. x
  • 11. LUG STIKOM Surabaya Halaman ini sengaja dikosongkan © 2008-2010 Rio Astamal – Hal. xi
  • 12. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web BAB I HTML dan World Wide Web 1.1 Cara Kerja WWW Ketika kita mengunjungi sebuah situs katakanlah, google.com, ada sebuah proses “dibalik layar” yang tidak anda ketahui. Proses tersebut cukup kompleks namun, jika digambarkan dalam sebuah diagram sederhana kurang lebih akan seperti berikut: Gambar 1.1: Cara kerja WWW Secara kronologis urutan proses pada diagram diatas adalah: 1. User membuka alamat website pada browser 2. Browser mengirim HTTP-Request ke server 3. Server merespon HTTP-Request dari browser 4. Server mengirim HTTP-Response ke browser 5. Browser menampilkan halaman website kepada user 1.2 HTML HTML/XHTML merupakan format tampilan yang digunakan untuk menampilkan halaman website. HTML terdiri dari simbol-simbol tertentu yang sering disebut dengan tag. Sebuah halaman website yang valid selalu diapit tag <html></html>. File HTML umumnya memiliki akhiran *.htm atau *.html. Tag-tag pada HTML selalu diawali dengan <x>...</x>, dimana x tag HTML seperti <strong>, <p>, <div>, dan lain-lain. Dibawah ini adalah tabel beberapa tag HTML yang sering digunakan. Tag HTML Keterangan <html></html> Tag untuk mengapit halaman HTML <head></head> Tag yang berisi informasi umum dari halaman <title></title> Judul Halaman * <body></body> Akan ditampilkan di browser <style></style> Untuk CSS * <strong></strong> Untuk menebalkan teks <div></div> Untuk membuat layer <a></a> Untuk membuat hyperlink © 2008-2010 Rio Astamal – Hal. 1 Web Server Browser INTERNET User REQUEST RESPONSE
  • 13. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web <p></p> Untuk membuat paragraf <hn></hn> Untuk membuat header ** <span></span> Untuk inline style (manipulasi teks) <!-- --> Komentar * Tag tersebut harus berada didalam tag <head>...</head> ** n dapat berupa angka dari 1 – 5, contoh <h1>...</h1> Penerapan Teori HTML 1. Buka editor anda (gedit(Linux), Notepad++(Windows), dsb)) 2. Ketik kode berikut: 1. <html> 2. <head> 3. <title>Website Pertamaku</title> 4. </head> 5. <body> 6. <h1>Hello World!!</h1> 7. </body> 8. </html> 3. Simpan dengan nama hello-world.html 4. Buka browser anda(Firefox, IE, dsb) dan buka file yang baru saja anda buat. 5. Hasilnya akan seperti gambar 1.1 Gambar 1.1: hello-world.html 1.3 Manipulasi Font Untuk memanipulasi font kita akan menggunakan inline style/CSS (akan dibahas dibagian berikutnya). Kita tidak akan menggunakan tag <font> karena tag ini sudah “kuno” alias deprecated. W3C sebagai pengembang HTML sudah tidak menyarankan untuk menggunakan tag font lagi. Sebagai gantinya digunakan tag <span> dan inline style. Inline style adalah attribut style yang diberikan pada sebuah tag HTML. Contoh, untuk membuat tampilan teks tebal gunakan cara berikut: <span style=”font­weight:bold”>Aku adalah teks tebal</span> Output: © 2008-2010 Rio Astamal – Hal. 2
  • 14. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Aku adalah teks tebal Pada contoh diatas kita memberikan attribut style, yang berisi “font-weight:bold”. Maksudnya adalah kita akan mengaplikasikan style bold pada teks yang diapit oleh tag <span></span>. Pemberian style tidak hanya terbatas pada satu bagian saja. anda dapat memberikan beberapa style sekaligus dengan memberi tanda pemisah berupa “;” untuk setiap style. <span style=”font­weight:bold;text­decoration:underline;font­style:italic”>Aku  adalah teks tebal, bergaris bawah dan miring</span> Output Aku adalah teks tebal, bergaris bawah, dan miring Pada contoh diatas kita menerapkan tiga style pada tag span. Dapat dilihat kalau setiap style dipisahkan oleh titik koma. Intinya kita dapat memberikan banyak style sekaligus pada suatu tag. Penerapan Teori Manipulasi Teks 1. Buka gedit/Notepad++ 2. Ketik kode HTML berikut ini 1. <html> 2. <head> 3. <title>Manipulasi Teks</title> 4. </head> 5. <body> 6. <h1 style="color:red;text­decoration:underline">PENGUMUMAN!</h1> 7. <span style="color:#FF0000"> 8. Barang siapa yang menemukan dompet saya, akan saya beri  9. <span style="font­weight:bold;font­style:italic">ISTRI, MOBIL, RUMAH dan  10. Segala SERTIFIKAT TANAH SAYA</span> DIJAMIN!!!.</span> 11.</body> 12.</html> 3. Simpan dengan nama manipulasi-teks.html 4. Buka dengan browser anda 5. Hasilnya akan seperti gambar 1.2 1.4 Hyperlink Anda tentu sering melngklik gambar atau tulisan yang mengarah ke halaman lain atau website lainnya. Yang anda klik itu adalah hyperlink atau lebih dikenal dengan istilah link saja. Untuk membuat link kita dapat menggunakan tag <a></a>. Dua attribut yang paling sering digunakan pada tag <a> adalah href dan target. href digunakan untuk menentukan lokasi tujuan dari link. Dapat berupa relatif URL atau absolut URL. © 2008-2010 Rio Astamal – Hal. 3 Attribut style tidak terbatas pada tag span saja, hampir semua tag yang digunakan untuk presentasi teks dapat kita sisipi tag style.
  • 15. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Gambar 1.2: Manipulasi font menggunakan atribut style target digunakan untuk menentukan apakah halaman akan dibuka pada jendela/window baru atau tidak. Defaultnya adalah self dimana link tidak dibuka pada window baru. Jika ingin membuka pada window baru gunakan nilai _blank. Untuk lebih memahami cara kerja link, kita akan membuat dua file yaitu profilku.html dan daftar- situs.html. 1. Buka gedit/Notepad++ 2. Ketik kode berikut: 1. <html> 2. <head> 3. <title>Profil JSL</title> 4. </head> 5. <body> 6. <h2>ProfilKu</h2> 7. <ul> 8. <li><strong>Nama Lengkap:</strong> John Septian Lennon</li> 9. <li><strong>Tempat/Tgl. Lahir: </strong>Lipermboh, 14 September 1940</li> 10. <li><strong>Pekerjaan:</strong> Rocker Jalanan</li> 11. <li><strong>Wafat: </strong> Tewas tertembak oleh penggemar di depan  12. kandang sapi pada 1980</li> 13. </ul> 14. <p>Ingin lihat daftar situs favorit saya? <a href="daftar­situs.html"> 15. klik disini</a>.</p> 16.</body> 17.</html> 3. Simpan dengan nama profilku.html 4. Buat file baru lagi, kemudian ketik kode berikut: 1. <html> 2. <head> 3. <title>Daftar situs favorit JSL</title> 4. </head> 5. <body> 6. <h2>Daftar Situs favoritku</h2> 7. <ol> 8. <li><a target="_blank" href="http://www.google.com/">Om Google</a></li> 9. <li><a target="_blank" href="http://www.milw0rm.com"> 10. Cacing Underground</a></li> © 2008-2010 Rio Astamal – Hal. 4
  • 16. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 11. </ol> 12. <p><a href="profilku.html">Lihat profil lengkap</a></p> 13.</body> 14.</html> 5. Simpan dilokasi yang sama dengan profilku.html dan beri nama daftar-situs.html 6. Buka file profilku.html dengan browser anda, dan coba klik link yang ada untuk memahami cara kerjanya Gambar 1.3 1.5 Membuat Tabel Untuk membuat tabel kita dapat menggunakan tag <table></table>. Dalam beberapa tahun terakhir, penggunaan tabel sebagai layout website sudah tidak relevan lagi, dan digantikan oleh tag DIV. Saat ini penggunaan tabel dikhususkan hanya untuk menampilkan data secara tabular saja tidak untuk design halaman. Beberapa tag yang sering digunakan saat membuat tabel adalah: Tag Keterangan <tr></tr> Digunakan untuk membuat baris baru <th></th>* Digunakan untuk membuat header tabel <td></td>* Digunakan untuk membuat kolom * Tag tersebut selalu berada didalam tag <tr>...</tr> Seperti halnya tag lain yang digunakan untuk presentasi teks, seperti <span>, anda dapat menggunakan attribut style untuk memformat tampilan tabel. Berikut ini adalah contoh pembuatan tabel menggunakan HTML. 1. Buka teks editor (gedit/Notepad++) 2. Ketik kode berikut: 1. <html> 2. <head> 3. <title>TABEL IPS/IPK</title> 4. </head> 5. <body> 6. <h2>Tabel IP Sampai semester 4:</h2> 7. <table style="width:600px;" border="1"> © 2008-2010 Rio Astamal – Hal. 5
  • 17. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 8. <tr style="background­color:#cfcfcf"> 9. <th>SEMESTER</th> 10. <th>IPS</th> 11. </tr> 12. <tr> 13. <td>SEMESTER 1</td><td style="text­align:right">4.0</td> 14. </tr> 15. <tr> 16. <td>SEMESTER 2</td><td style="text­align:right">4.0</td> 17. </tr> 18. <tr> 19. <td>SEMESTER 3</td><td style="text­align:right">4.0</td> 20. </tr> 21. <tr> 22. <td>SEMESTER 4</td><td style="text­align:right">4.0</td> 23. </tr> 24. <tr style="text­align:right;background­color:#FFCB68;font­weight:bold"> 25. <td style="text­align:center;">NILAI IPK &gt;&gt;&gt;</td> 26. <td style="text­align:inherit;">4.0</td> 27. </tr> 28. </table> 29.</body> 30.</html> 3. Simpan denan nama tabel.html 4. Buka dengan browser anda, hasilnya akan nampak seperti gambar 1.4 Gambar 1.4: Penggunaan Tabel 1.6 HTML Form HTML Form sering digunakan untuk meminta inputan dari user yang kemudian diproses oleh server side scripting seperti PHP, JSP, dan sebagainya. Form HTML diapit oleh tag <form></form>. Dua attribut yang paling sering digunakan dalam penggunaan form adalah: – Action: Nilai dari attribut ini menunjukkan lokasi dari file pemroses dari form. Dapat berupa relatif URI, contoh “folderX/file.php” atau absolut URI, contoh “http://contoh.com/file.php”. © 2008-2010 Rio Astamal – Hal. 6 &gt; merupakan special character untuk tanda “>”. Dalam HTML special character diawali tanda ampersand “&” dan diakhiri “;”. Contoh lain adalah &lt; untuk “<”, &copy; untuk “©”
  • 18. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web – Method: Nilai dari attribut menentukan metode data yang dikirimkan ke file pemroses, apakah melalui metode “GET” atau “POST”. Contoh penggunaan tag form sebagai berikut: <form action=”file.php” method=”POST”> ... </form> Tag form tidak banyak berguna tanpa adanya tag input lain. Tag form berfungsi hanya sebagai wrapper yang mengelompokkan data yang akan dikirim. Tag yang digunakan bersama tag form adalah tag <input>. 1.6.1 Macam-macam input Untuk menampilkan textbox, checkbox, radio button, dan lainnya hanya diperlukan tag <input>. Yang membedakan output dari masing-masing tampilan adalah nilai dari attribut type. Contoh berikut merupakan penggunaan tag input untuk menampilkan textbox: <input type=”text” size=”16” maxlength=”16”> Berikut ini daftar nilai yang dapat digunakan pada attribut type: Nilai type Keterangan text Untuk menampilkan textbox password Untuk menampilkan password field file Untuk menampilkan proses upload file (mirip seperti textbox namun dengan tombol Browse) checkbox Untuk menampilkan tombol checkbox (lebih dari satu pilihan) radio Untuk menampilkan tombol radio/option (hanya satu pilihan) submit Tombol untuk men-submit form (default button untuk submit) button sama dengan submit hanya saja bukan default button reset Untuk membersihkan tampilkan form hidden Input tidak ditampilkan dibrowser. Selain tag <input> masih ada tag lain yang biasa digunakan dalam form yaitu tag <select> dan <textarea>. PENERARAN TEORI HTML FORM 1. Buka gedit / Notedpad++ 2. Ketik kode berikut: 1. <html> 2. <head> 3. <title>Registrasi</title> 4. </head> 5. <body> © 2008-2010 Rio Astamal – Hal. 7
  • 19. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 6. <h2>Form Registrasi</h2> 7. <form action="" method="POST"> 8. <label>Nama: </label> 9. <input type="text" size="30" name="nama"><br> 10. <label>Username: </label> 11. <input type="text" size="16" name="uname" maxlength="16"><br> 12. <label>Password: </label> 13. <input type="password" size="16" name="pass" maxlength="16"><br> 14. <label>Jenis Kelamin: </label> 15. <input type="radio" name="jk" value="pria" checked><span> Pria</span> 16. <input type="radio" name="jk" value="wanita"><span> Wanita</span> 17. <br> 18. <label>Hoby: </label><br> 19. <input type="checkbox" name="hob" value="spkbola"><span> Sepak Bola</span> 20. <input type="checkbox" name="hob" value="game"><span> Game</span> 21. <input type="checkbox" name="hob" value="tidur"><span> Tidur</span><br> 22. <label>Deskripsikan diri anda: <label><br> 23. <textarea style="height:100px;width:400px" name="desc"></textarea> 24. <hr><br> 25. <label>Darimana anda mendengar kami?</label><br> 26. <select name="dengar"> 27. <option value="kuburan">Dari dalam kubur</option> 28. <option value="google">Google</option> 29. <option value="mimpi">Mimpi</option> 30. </select><br> 31. <input type="submit" value="DAFTAR">  32. <input type="reset" value="RESET"> 33. </form> 34.</body> 35.</html> 3. Simpan dengan nama form.html 4. Buka dengan browser file tersebut. Hasilnya memang tidak begitu bagus karena kita tidak melakukan styling pada form. Gambar 1.6: Contoh HTML Form Sederhana Dalam kasus real world nilai yang ada pada attribut name dan value-lah yang akan dikirim ke file © 2008-2010 Rio Astamal – Hal. 8
  • 20. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web pemroses. 1.7 Menampilkan Gambar Untuk menampilkan gambar pada halaman HTML dapat digunakan tag <img>. Beberapa attribut yang sering digunakan adalah src, height, dan width. Attribut src digunakan untuk menentukan alamat dari gambar yang akan ditampilkan, dapat berupa relatif URI atau absolut URI. Attribut height digunakan untuk menentukan tinggi, sedangkan width untuk menentukan lebar. Secara default nilai yang ada pada height dan width adalah dalam pixel, kecuali anda menambahkan tanda “%”. Maka lebar atau tinggi diukur menggunakan persen. Jika anda tidak menyertakan attribut height dan width, maka gambar tersebut akan ditampilkan sesuai dengan ukuran aslinya. Untuk lebih memahaminya ikuti langkah berikut: 1. Siapkan dua buah gambar dalam folder yang sama dengan file html 2. Dalam contoh ini saya menggunakan (1)stikom.jpg dan (2)join-revolution.jpg 3. Buka gedit/Notepad++ 4. Ketik kode berikut: 1. <html> 2. <head> 3. <title>Join The Revolution</title> 4. </head> 5. <body> 6. <img src="stikom.jpg" align="left"> 7. <strong style="color:red">SHOULD</strong> 8. <img src="join­revolution.jpg" align="center"> 9. </body> 10.</html> 5. Simpan dengan nama gambar.html Gambar 1.7: Menampilkan gambar dengan img 1.8 XHTML dan DOCTYPE © 2008-2010 Rio Astamal – Hal. 9
  • 21. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Apakah XHTML itu? apakah ia berbeda dengan HTML? Sebenarnya XHTML adalah HTML hanya saja XHTML mengikuti format XML sebagai standar penulisannya. Jadi setiap tag harus memiliki penutup. Anda tentu pernah mengetik tag-tag tanpa penutup seperti <br>, <img>, dan <input> pada pembahasan sebelumnya. Pada XHTML semua tag harus memiliki penutup, jika tidak maka halaman yang anda buat tidak sesuai dengan standar yang telah ditentukan dan dianggap tidak valid/compliant dengan standar W3C. Berikut ini adalah beberapa contoh penulisan yang valid di HTML tapi tidak di XHTML. SALAH BENAR <strong><span>Hello  World</strong></span> <strong><span>Hello  World</span></strong> <input type=”radio” checked> <input type=”radio” checked=”checked” /> <br> <br /> atau <br></br> <img border=1> <img border=”1” /> <input type=”button” value=”GO >>>”> <input type=”button”  value=”GO &gt;&gt;&gt;” /> <STRONG>Hello</strong> <strong>Hello</strong> Mungkin anda bertanya, lalu bagaimana saya memberitahu browser bahwa halaman saya adalah XHTML? Semua itu terletak pada DOCTYPE halaman anda. DOCTYPE adalah pententu tipe document yang ingin anda gunakan apakah HTML 4.01, XHTML 1.0 Transitional, XHTML 1.0 Strict dan lainnya. DOCTYPE juga sering disebut DTD (Document Type Definition). Berikut ini adalah contoh penggunaan tipe dokumen HTML 4.01, <!DOCTYPE HTML PUBLIC "­//W3C/DTD HTML 4.01//EN"  "http://www.w3c.org/TR/html4/strict.dtd">  Jika anda tidak menyebutkan DTD yang anda gunakan asumsi dari satu browser dengan browser yang lain mungkin berbeda-beda. Jadi jika memang anda ingin menggunakan HTML murni bukan XHTML gunakanlah DTD 4.01. Deklarasi DOCTYPE harus diletakkan paling awal sebelum tag <html>. Untuk XHTML beberapa DTD yang sering digunakan adalah 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1­strict.dtd"> 2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 3. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Frameset//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1­frameset.dtd"> Perbedaan Transitional dan Strict terdapat pada toleransi kesalahan. Pada transitional jika masih ada kesalahan standar penulisan masih diberikan toleransi, sedangkan Strict tidak memberikan toleransi sama sekali. Contoh halaman XHTML yang valid adalah sebagai berikut: © 2008-2010 Rio Astamal – Hal. 10
  • 22. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web <?xml version="1.0" encoding="UTF­8"?>  <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  <html xmlns="http://www.w3.org/TR/xhtml1">    <head>      <title>Every document must have a title</title>    </head>    <body>  <span>Hello World</span>   </body>  </html> Dalam pembahasan selanjutnya kita akan selalu menggunakan XHTML bukan lagi HTML. 1.9 CSS (Cascading Style Sheets) CSS merupakan suatu teknologi yang digunakan untuk mempermudah pembuatan sebuah website. Dengan CSS kita dapat dengan cepat mengaplikasikan suatu style pada tag tertentu. Bahkan kita dapat meletakkan CSS pada suatu file sehingga dapat digunakan oleh banyak halaman sekaligus. Itu merupakan salah satu kelebihan CSS. CSS diapit oleh tag <style></style> dan berada diantara tag <head></head>. Kelebihan lainnya adalah anda dapat menyisipkan komentar pada CSS, hal ini cukup penting jika jumlah CSS anda sangat banyak. Komentar pada CSS diapit oleh karakter /*  */. Pada pembahasan-pembahasan sebelumnya kita sering menggunakan attribut style untuk memformat tampilan atau sering disebut inline style. Apa yang ada pada attribut style tersebut sebenarnya adalah CSS yang valid, hanya saja letaknya didalam tag. Hampir semua tag dapat dimanipulasi menggunakan CSS seperti <body>, <span>, <div>, <table>, <p>, dan masih banyak lagi. Berikut ini adalah contoh sederhana penggunaan CSS pada tag body. body {font­face: Verdana; font­size: 11px } Pada contoh diatas kita memformat semua teks yang ada pada tag body menjadi berjenis huruf Verdana dengan ukuran 11 pixel. Tag body pada contoh disebut selector sedangkan attribut style didalamnya disebut declaration. Declaration ditandai dengan adanya kurung kurawal {...}. Penerapan Teori CSS 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>CSS ­ Cascading Style Sheets</title>  © 2008-2010 Rio Astamal – Hal. 11 Deklarasi versi XML pada awal halaman tidak harus ditulis namun sangat dianjurkan untuk ditulis. Attribut “xmlns” harus ditulis untuk menentukan namespace yang digunakan.
  • 23. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 7. <style type="text/css"> 8. body { font­family: Verdana, Serif; font­size: 11px } 9. div { 10. border: 2px solid #cccccc; 11. padding: 4px 12. } 13. h2 {  14. text­decoration: underline;  15. font­style: italic; 16. font­size: 18px 17. } 18. </style> 19.</head>  20.<body>  21. <div> 22. <h2>Ini adalah contoh sederhana penggunaan CSS</h2> 23. </div> 24.</body>  25.</html> 3. Simpan dengan nama css.html 4. Lalu jalankan pada browser, hasilnya akan terlihat seperti gambar 1.8 Gambar 1.8: Contoh penggunaan CSS Dapat anda lihat bahwa tag yang kita deklarasikan pada CSS secara otomatis style tag tersebut mengikuti aturan CSS yang kita buat. Dengan demikian kita dapat dengan mudah memodifikasi banyak elemen sekaligus hanya dari sebuah baris CSS. 1.9.1 CSS Class dan ID Jika anda cukup kreatif, saya harap memang demikian :) maka anda mungkin berfikir kalau penggunaan cara seperti pembahasan sebelumnya tidak sepenuhnya baik. Mengapa? Bayangkan jika pada beberapa bagian pada halaman, anda tidak ingin mengaplikasikan style tersebut. Lalu apa yang anda lakukan? Merubahnya secara manual lewat inline style? Itu memang dapat dilakukan tapi tidak efisien. Cara yang paling efektif dan efisien adalah dengan menggunakan class dalam CSS. Dengan menggunakan class kita dapat menentukan letak bagian yang harus kita aplikasikan suatu style. Penggunakan class diawali dengan tanda titik “.”. Lihat contoh berikut: .tebal­miring { font­weight: bold; font­style: italic } div.error { color: red; font­weight: bold } © 2008-2010 Rio Astamal – Hal. 12
  • 24. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Baris pertama merupakan general class karena semua tag dapat menggunakannya. Sedangkan pada baris kedua adalah regular class karena class tersebut hanya berlaku pada tag div saja. Untuk mengaplikasikan style yang ada pada class kita harus memasukkan nama class tersebut pada attribut class. Cara lain adalah dengan menggunakan nilai dari attribut id pada setiap tag. Nilai dari attribut id antara tag yang satu dengan tag yang lain tidak boleh ada yang sama. Tanda yang digunakan bukan titik melainkan tanda pagar “#”. #main { border: 1px solid #000000 } div#header { padding: 4px } OK, mari kita buat sebuah file untuk lebih memahaminya. 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>CSS Class &amp; ID</title>  7. <style type="text/css"> 8. body { font­family: Verdana, Serif; font­size: 11px } 9. #main { 10. border: 1px solid #cccccc; 11. padding: 4px 12. } 13. div.box { 14. border: 1px solid orange; 15. background­color: #FFF8B9; 16. padding: 6px 3px; 17. color: #c60000; 18. width: 200px 19. } 20. .green­force { 21. font­weight: bold; 22. color: green 23. }  24. </style>     25.</head>  26.<body>  27. <div id="main"> 28. <div class="box"> 29. I'm the WalRUS...!!<br />GOO GOO G'JOOB!!! 30. </div> 31. <span class="green­force">Class green­force pada tag span</span> 32. <p class="green­force">Class green­force pada tag p</p> 33. </div> 34.</body>  35.</html> 3. Simpan dengan nama css-class.html 4. Hasilnya akan tampak seperti gambar 1.9 jika anda jalankan pada browser © 2008-2010 Rio Astamal – Hal. 13
  • 25. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Gambar 1.9 1.9.2 Hyperlink Pseudoclass Jika anda pernah mengunjungi suatu website dan anda menggerakkan mouse anda ke arah sebuah link lalu link tersebut berubah warna dan menjadi bergaris bawah atau sebaliknya. Apa yang anda lihat tersebut adalah hasil dari hyperlink pseudoclass-nya CSS. Seperti yang sudah dibawas sebelumnya untuk membuat link kita menggunakan tag <a></a>. Oleh karena itu tag iniliah yang akan kita manipulasi. Format penulisan hyperlink pseudoclass adalah a:nama_aksi, dimana nama_aksi dapat berupa: • link: Tampilan link ketika tidak dipilih oleh user (biasanya tidak perlu ditulis) • visited: Tampilan link setelah diklik • active:Tampilan ketika link diklik • hover: Tampilan ketika mouse melewati link (lebih sering digunakan daripada active) Penasaran? langsung saja buat file untuk mencobanya. 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>Hyperlink Pseudoclass</title>  7. <style type="text/css"> 8. body { font­family: Verdana, Serif; font­size: 14px } 9. a:link {  10. color: green;  11. text­decoration: underline  12. } 13. a:visited {  14. color: green;  15. text­decoration: underline  16. }       17. a:active { 18. font­weight: bold; 19. text­decoration: none; 20. color: #c60000 21. } 22. a:hover { 23. font­style: italic; © 2008-2010 Rio Astamal – Hal. 14
  • 26. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 24. font­weight: bold; 25. color: #c60000; 26. text­decoration: none 27. }       28. </style> 29.</head>  30.<body>  31. <div> 32. <a href="#">Link 1</a><br /> 33. <a href="#">Link 2</a><br /> 34. <a href="#">Link 3</a> 35. </div> 36.</body>  37.</html> 3. Simpan dengan nama pseudoclass.html 4. Buka browser anda lalu buka file tersebut Gambar: 1.10: Penggunaan pseudoclass link 1.9.3 External CSS Sampai saat ini anda sudah tahu bagaimana mudahnya memodifikasi style dengan menggunakan CSS. Agar dalam pembuatan website kita lebih efisien maka sebaiknya kita meletakkan file CSS kita pada suatu file tersendiri. Sehingga kita dapat meload-nya pada halaman yang membutuhkan style yang ada pada file CSS tersebut. File CSS yang akan kita load tidak harus berada satu komputer dengan file HTML kita. File CSS tersebut dapat berada pada website lain, ini dimungkinkan karena kita dapat menggunakan URL pada saat pemanggilan file. Ada dua metode untuk memanggil file CSS, yang pertama adalah dengan menggunakan tag <link> dan yang kedua adalah menggunakan statement @import didalam CSS. Cara yang lebih sering digunakan adalah menggunakan tag <link>. Tidak ada yang lebih jelas daripada learning by doing, karena itu langsung saja kita praktikkan. 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. body { font­family: Verdana, Serif; font­size: 14px } 2. #main { 3. border: 1px solid #cccccc; 4. padding: 4px 5. } 6. div.error { © 2008-2010 Rio Astamal – Hal. 15
  • 27. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 7. border: 1px solid #c60000; 8. border­left: 5px solid #c60000; 9. color: #c60000; 10. font­size: 14px; 11. padding: 4px 6px; 12. font­weight: bold; 13. width: 350px; 14.} 3. Simpan dengan nama my.css 4. Buat file baru lagi, kemudian ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>External Stylesheet</title>  7. <link rel="stylesheet" type="text/css" href="my.css" /> 8. </head>  9. <body>  10. <div id="main"> 11. <h2>External Stylesheet/CSS</h2> 12. <div class="error"> 13. WARNING!, memory otak anda sudah 90% penuh silahkan kosongkan pikiran­ 14. pikiran kotor yang tidak diperlukan...!!! 15. </div> 16. </div> 17.</body>  18.</html> 5. Simpan dengan nama external-css.html 6. Jalankan pada browser, hasilnya akan terlihat seperti gambar 1.11 Gambar 1.11: External stylesheet 1.10 Membuat Layout dengan DIV Seperti yang sudah disinggung pada pembahasan tentang tabel, kalau pembuatan design website yang menggunakan tabel dapat dikatakan sudah tidak relevan lagi. Sebagai pengganti dari tabel adalah tag div. Tag div memang dikhususkan untuk membagi halaman kedalam beberapa segmen. Jika kita gabungkan dengan penggunakan attribut id dan class, maka div dapat kita gunakan untuk layout sebuah halaman. © 2008-2010 Rio Astamal – Hal. 16
  • 28. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Secara kasar setiap halaman yang “baik” pasti memiliki beberapa bagian, misalnya halaman tersebut terdiri dari header, kemudian beberapa kolom untuk content utama, dan sebagainya. Semua itu terserah pada designernya. Pada contoh kasus yang akan kita buat nantinya, kita akan membuat sebuah layout halaman yang terdiri dari: 1. Header utama halaman 2. 2 Kolom 3. 1 untuk content utama 4. 1 untuk berita atau lainnya 5. lebar halaman tidak lebih dari 800px (untuk berjaga-jaga, karena masih banyak user yang resolusi monitornya 800x600) 6. Footer halaman Design halaman yang akan dibuat tidak melibatkan penggunaan gambar, karena prioritas kita disini hanyalah bagaimana cara mengatur tata letak komponen menggunakan tag div. OK, langsung saja tanpa banyak “mendrible bola”, lho kok? 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. * { padding: 0; margin: 0 } 2. body {  3. font­family: Verdana, Arial, Serif;  4. font­size: 11px; 5. color: #333; 6. background: #fafafa; 7. } 8. /* pembatas utama */ 9. #container { 10. margin: 6px auto; 11. text­align: left; 12. clear: both; 13. background: #fff; 14. border:2px solid #666; 15. width:778px; 16. padding:0; 17.} 18.#header { 19. clear:both; 20. margin: 2px; 21. background: #FFEA8C; 22. border: 1px solid orange; 23. height: 95px; 24.} 25.#header h1 { 26. font­size: 2em; 27. font­family: Arial; 28. color: #c60000; 29. margin: 14px 6px 4px 8px;          30.} 31.#menu { 32. clear: both; 33. padding: 0; margin: 0 0 25px 2px; 34.} © 2008-2010 Rio Astamal – Hal. 17
  • 29. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 35.#menu ul { 36. float:left; 37. border: none; 38. list­style: none; 39. font: bold 14px Arial; 40.} 41.#menu ul li { 42. display: inline; 43.} 44.#menu ul li a { 45. padding­right: 16px; 46. border­bottom: 4px solid orange; 47.} 48.#menu ul li a:hover {       49. border­bottom: 4px solid #c60000; 50.} 51.#menu ul li a.aktif { 52. border­bottom: 4px solid #c60000; 53.} 54.#footer { 55. position: relative; 56. clear:both; 57. height: 40px; 58. border: none; 59. background: #cfcfcf; 60. color: #fff; 61. width: 100%; 62. text­align: center;          63.} 64.#footer span { 65. top: 10px; 66. position: absolute; 67.} 68.#content { 69. margin: 2px 2px 8px 2px; 70. float: left; 71. width: 485px; 72. border: 1px solid #ccc; 73. padding: 6px 10px; 74.} 75.#content h1 { 76. border­bottom: 2px dashed #ccc; 77. margin­bottom: 16px; 78.} 79.#side { 80. border: 1px solid #ccc; 81. float: right; 82. margin: 2px; 83. width: 250px; 84. padding: 2px; 85.} 86.#side h1 { 87. border­bottom: 1px solid #fafafa; 88.} 89.#side h2 { 90. background: #cfcfcf; 91. padding: 3px; 92. color: #333; 93. text­align: center; 94.} © 2008-2010 Rio Astamal – Hal. 18
  • 30. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 95.#side p { 96. border: 1px solid #ccc; 97. padding: 4px; 98.} 99.a { text­decoration:none; color: #666} 100.a:visited { color: #666 } 5. Simpan dengan nama layout.css 6. Buat file baru, lanjutkan dengan mengetik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>Layout Menggunakan DIV</title>  7. <link rel="stylesheet" type="text/css" href="layout.css" /> 8. </head>  9. <body>  10. <div id="container"> 11. <div id="header"> 12. <h1>R.I.P John</h1> 13. </div> 14. <div id="menu"> 15. <ul> 16. <li><a class="aktif" href="#">Home</a></li> 17. <li><a href="#">Books</a></li> 18. <li><a href="#">Search</a></li> 19. <li><a href="#">About</a></li> 20. <li><a href="#">Contact Us</a></li> 21. </ul> 22. </div> 23. <div id="content"> 24. <h1>Working Class Hero</h1> 25. <p>As soon as you're born they make you feel small<br /> 26.By giving you no time instead of it all<br /> 27.Till the pain is so big you feel nothing at all<br /> 28.A working class hero is something to be<br /> 29.<br /> 30.They hurt you at home and they hit you at school<br /> 31.They hated your clever and despised a fool<br /> 32.Till you're so fucking crazy you can't follow their rules<br /> 33.A working class hero is something to be<br /> 34.<br /> 35.When they've tortured and scared you for twenty hard years<br /> 36.Then they expect you to pick a career<br /> 37.When you can't really function you're so full of fear<br /> 38.A working class hero is something to be<br /> 39.<br /> 40.Keep you doped with religion and sex and TV<br /> 41.And you think you're so clever and classless and free<br /> 42.But you're still fucking peasants as far as I can see<br /> 43.A working class hero is something to be<br /> 44.A working class hero is something to be<br /> 45.<br /> 46.There's room at the top they are telling you still<br /> 47.But first you must learn how to smile as you kill<br /> 48.If you want to be like all the folks on the hill<br /> 49.<br /> 50.If you want to be a hero well just follow me </p> © 2008-2010 Rio Astamal – Hal. 19
  • 31. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 51. </div> 52. <div id="side"> 53. <h2>IMAGINE...</h2> 54. <p>Imagine there's no heaven 55.It's easy if you try 56.No hell below us 57.Above us only sky 58.Imagine all the people 59.Living for today... 60.Imagine there's no countries 61.It isn't hard to do 62.Nothing to kill or die for 63.And no religion too 64.Imagine all the people 65.Living life in peace... 66.You may say I'm a dreamer 67.But I'm not the only one 68.I hope someday you'll join us 69.And the world will be as one 70.Imagine no possessions 71.I wonder if you can 72.No need for greed or hunger 73.A brotherhood of man 74.Imagine all the people 75.Sharing all the world... 76.You may say I'm a dreamer 77.But I'm not the only one 78.I hope someday you'll join us 79.And the world will live as one...</p> 80. </div> 81. <div id="footer"> 82. <span>1940 ­ 1980</span> 83. </div> 84. </div> 85.</body>  86.</html> © 2008-2010 Rio Astamal – Hal. 20
  • 32. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Gambar 1.12 1.11 Javascript Javascript adalah sebuah bahasa pemrograman yang khusus dirancang untuk website. Javascript hanya berjalan disisi klien, artinya penggunaan javascript hanya terbatas pada web-browser anda saja, ia tidak bisa melakukan manipulasi data pada sisi server. Saat ini javascript merupakan salah satu element terpenting dari teknologi web terkini. AJAX adalah salah satu contoh penggunakan javascript yang saat ini banyak digunakan oleh website agar lebih berasa Web 2.0 :). Namun pada buku ini saya hanya membahas javascript sepintas saja, untuk tahu lebih jauh tentang javascript anda dapat mencari lewat google atau tunggu buku saya berikutnya hehehe... 1.11.1 Menggunakan Javascript Secara sederhana sebuah script javascript diapit oleh tag <script></script>, namun untuk lebih memperjelas penggunaan javascript biasanya ditambahkan attribut language atau type, contoh seperti berikut: <script language=”javascript”> © 2008-2010 Rio Astamal – Hal. 21
  • 33. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web   // javascript kode disini... </script> atau <script type=”text/javascript”>   // javascript kode disini... </script> Kenapa demikian? Karena jika anda pengguna browser IE maka ia memiliki satu bahasa lagi selain javascript yaitu vbscript. Namun pada kenyataannya hampir tidak ada situs yang menggunakan vbscript, jadi secara default pun jika anda hanya menggunakan tag <script></script> maka IE akan menganggap script tersebut adalah javascript. Tag <script> dapat anda letakkan pada level global yaitu pada tag <head></head> atau secara lokal dimana pun dalam tag <body></body>. OK langsung saja kita coba “script é wong jowo” ini. 1. Buka gedit / Notepad++ 2. Ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>Menggunakan Javascript</title>  7. <script language="javascript"> 8. var nama = prompt("Masukkan nama: ", "nama anda"); 9. var tanya = confirm(nama+", apakah anda laki­laki?"); 10. if (tanya == true) { 11. alert("Halo "+nama+" kamu adalah laki­laki!"); 12. } else { 13. alert("Halooo "+nama+"... kamu cewek ya...? atau jangan­jangan...?"); 14. } 15. </script> 16.</head>  17.<body> 18.</body> 19.</html> 3. Simpan dengan nama javascript.html 4. Jalankan pada browser untuk melihat hasilnya. Gambar 1.13: Javascript prompt © 2008-2010 Rio Astamal – Hal. 22
  • 34. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Pada contoh diatas kita meletakkan javascript pada level global dengan meletakkannya pada tag <head></head>. prompt, confirm, dan alert adalah fungsi-fungsi built in javascript yang dapat kita gunakan untuk berinteraksi dengan user. Jika anda familiar dengan bahasa seperti Java, C++, C, atau anak cucunya maka anda tidak akan terlalu berlama-lama menyesuaikan diri dengan syntax javascript. Hal itu karena syntax javascript sangat mirip dengan ketiga bahasa yang telah disebutkan diatas. Untuk mendeklarasikan variabel pada javascript kita dapat menggunakan keyword var. 1.11.2 Manipulasi DOM Salah satu fungsi utama javascript adalah kemampuannya untuk memanipulasi DOM(Document Object Model). DOM sendiri adalah suatu struktur didalam dokumen HTML yang berbentuk seperti tree yang komponen-komponennya adalah elemen HTML seperti tag. Karena kemampuan inilah maka dengan javascript kita dapat menciptakan DHTML Effect (Dynamic HTML Effect). Salah satu contoh pengaplikasian DHTML Effect adalah hide and show suatu elemen HTML. Misal, jika suatu tombol diklik maka tampilan hilang atau tampil. Semua ini dimungkinkan karena javascript dapat melakukan modifikasi style CSS pada elemen secara langsung atau para geeky lebih suka menyebutnya: on the fly :). Untuk lebih memahaminya sebaiknya kita langsung saja mencobanya lewat contoh. 1. Buka gedit/Notepad++ 2. Ketik kode berikut: 1. <?xml version="1.0" encoding="UTF­8" ?>  2. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  4. <html xmlns="http://www.w3.org/TR/xhtml1">  5. <head>  6. <title>Manipulasi DOM</title>  7. <script language="javascript"> 8. function beriWarna() { 9. var kotak = document.getElementById('kotak'); 10. var warna = document.getElementById('warna'); 11. // ganti CSS on the fly 12. kotak.style.backgroundColor = '#' + warna.value; 13. } 14. function hideShow() { 15. var kotak = document.getElementById('kotak'); 16. var status = kotak.style.display; 17. // set CSS display ke block atau none 18. if (status == 'block') { 19. kotak.style.display = 'none'; 20. } else { 21. kotak.style.display = 'block'; 22. } 23. } © 2008-2010 Rio Astamal – Hal. 23 Javascript versi terbaru sudah mendukung penggunaan tipe data dalam pendeklarasian variabel seperti int, string, dll. Namun untuk menjaga kompatibilitas sebaiknya tetap gunakan keyword var.
  • 35. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web 24. </script> 25. <style type="text/css"> 26. #kotak { 27. border:3px solid #000; 28. padding: 4px; 29. background­color: #ccc; 30. font­size: 18px; 31. font­weight: bold; 32. width: 300px; height: 200px; 33. } 34. </style> 35.</head>  36.<body> 37. <form> 38. <label>Warna</label> 39. #<input type="text" id="warna" name="warna" size="5" value="ccc" />&nbsp; 40. <input type="button" onclick="beriWarna()" value="Ganti Warna" />&nbsp; 41. <input type="button" onclick="hideShow()" value="Hide or Show" /> 42. </form> 43. <br /> 44. <div id="kotak" style="display:block"> 45. SAYA BUKAN DUKUN, PESULAP ATAU BAHKAN BUNGLON TAPI SAYA BISA BERUBAH 46.      WARNA DAN MENGHILANG. HEBATKAH SAYA? TENTU TIDAK. YANG HEBAT ADALAH 47.      YANG MENULIS SAYA BUKAN BEGITU? :p 48. </div> 49.</body> 50.</html> 3. Simpan dengan nama dom.html 4. Buka file menggunakan browser untuk melihat hasilnya. Hasilnya kurang lebih akan sama dengan gambar 1.14. Penjalasan Singkat File dom.html Banyak hal baru menyangkut penggunaan javascript, seperti penggunaan keyword function dan metode getElementById. Jika tidak mengerti untuk sementara telan saja :p karena buku ini memang tidak mengharuskan anda menguasai javascript. Fungsi pada javascript ditandai dengan keyword function. Fungsi merupakan pengemlompokkan sejumlah perintah untuk dieksekusi pada satu waktu ketika fungsi itu dipanggil. Pada contoh kita membuat dua fungsi yaitu beriWarna() dan hideShow(). Object yang akan kita modifikasi stylenya adalah object dengan elemen id bernama “kotak” dalam hal ini elemen tersebut adalah sebuah div. <div id="kotak" style="display:block"> Agar object div tersebut dapat kita manipulasi maka kita perlu membuatkan sebuah wadah untuk menampung object tersebut dalam javascript. Untuk itu digunakanlah salah satu fungsi DOM yaitu getElementById. Setelah kita mendapatkan object tersebut maka kita bebas untuk memodifikasinya. Contoh sederhana adalah mengubah stylesheet dari object tersebut. Setiap tag yang dapat dimanipulasi dengan CSS memiliki atribut style. Bedanya jika pada CSS format penulisannya: jika terdiri dari dua kata maka dipisah dengan tanda “-” contoh: background-color, font-family, font-size, dan sebagainya. Tapi pada javascript digunakan model Capitalis, contoh: backgroundColor, fontFamily, fontSize dan sebagainya. © 2008-2010 Rio Astamal – Hal. 24
  • 36. LUG STIKOM Surabaya Bab I – HTML dan World Wide Web Warna yang digunakan pada contoh adalah menggunakan hexadecimal. Contoh-contoh warna yang dapat anda gunakan sebagai bahan ujicoba adalah: 90EE90, FFFF00, FFC0CB, dan masih banyak lagi. Gambar 1.14: Manipulasi DOM © 2008-2010 Rio Astamal – Hal. 25
  • 37. LUG STIKOM Surabaya Bab II – Pengenalan PHP Bab II Pengenalan PHP 2.1 Apa Itu PHP? PHP(akronim dari PHP: Hypertext Preprocessor) adalah bahasa server-side scripting yang didesain khusus untuk web. Pada halaman HTML anda dapat menempelkan(embed) kode PHP. Kode PHP dieksekusi di sisi server bukan di komputer klien. Dan hasil yang ditampilkan adalah kode HTML murni. PHP merupakan hasil kerja seorang bernama Rasmus Lerdorf pada awal 1995. Namun kemudian PHP berkembang dan tidak hanya merupakan proyek pribadi Rasmus. PHP ditulis ulang dan dengan banyak menambahkan fungsi-fungsi baru oleh Zeev Suraski dan Andi Gutmants (disingkat Zend) dan lahirlah PHP 3 pada 1998. PHP masih terus dikembangkan, pada tahun 2002 PHP hadir dengan versi ke 4. PHP 4 dilengkapi dengan Zend Engine dan mengalami banyak peningkatan performa. Dan yang paling akhir pada tahun 2005 PHP 5 hadir dengan dukungan Zend Engine 2. Banyak fitur baru khususnya pada OOP(Object Oriented Programming) dan XML Berbeda dengan dengan PHP 4, adopsi PHP 5 dikalangan industri sangat lambat. Bahkan hingga sekarang masih cukup banyak hosting yang belum menyediakan PHP 5. Hal ini dikarenakan beberapa faktor, diantanranya kompatibilitas dengan versi PHP 4. Pada saat buku ini ditulis versi terakhir dari PHP adalah versi 5.2.8 untuk PHP 5 dan versi 4.4.9 untuk PHP 4. PHP 6 juga sudah dikembangkan meskipun dalam tahap alpha. 2.2 Cara Kerja PHP Cara kerja PHP yang akan kita bahas pada buku ini adalah PHP sebagai bahasa pemrograman untuk mengembangan aplikasi berbasis web. Karena selain untuk web-programming PHP juga dapat digunakan untuk mengembangan aplikasi berbasis desktop dan CLI (Command Line Interface). Gambar 2.1: Cara kerja PHP Secara sederhana cara kerja PHP dapat dilihat pada gambar 2.1 diatas. Jika diurut maka proses tersebut terdiri dari: 1. User meminta sebuah halaman PHP 2. Browser mengirim HTTP Request kepada WebServer, misal Apache 3. WebServer mengirim permintaan file PHP tersebut ke PHP processor. PHP processor dapat © 2008-2010 Rio Astamal – Hal. 26 Browser Web Server PHP Request PHP File HTTP Request PHP Request HTML Response HTTP ResponseHTML Response Untuk instalasi PHP silahkan baca halaman pendahuluan.
  • 38. LUG STIKOM Surabaya Bab II – Pengenalan PHP berupa modul(bagian dari web-server) atau terpisah(sebagai CGI/Fast-CGI) 4. Permintaan diproses oleh PHP processor kemudian hasilnya dikirim kembali ke web-server 5. Web server memaket kembali hasil tersebut dengan menambahkan HTTP header dan dikirim kembali ke browser. 6. Browser memproses HTTP packet dan menampilkannya sebagai HTML kepada user. 2.3 Variabel pada PHP Variabel merupakan elemen yang sangat penting dalam bahasa pemrograman. Hampir setiap bahasa pemrograman mengenal apa itu yang namanya variabel. Variabel sendiri merupakan suatu bentuk penyimpanan data sementara pada memori komputer yang akan diolah lebih lanjut. Contoh variabel pada PHP antaran lain: $nama = 'LUG STIKOM Surabaya'; $angka_1 = 1; $angka_2 = 2; $hasil = $angka_1 + $angka_2; Ketentuan-ketentuan dalam membuat variabel: • Variabel dapat terdiri dari huruf, angka dan underscore( _ ) dan tentu saja tanda dollar $. • Variabel tidak dapat diawali dengan angka. • Variabel bersifat case sensitive artinya membedakan huruf kecil dan huruf besar. • Variabel $nama tidak sama dengan $NaMa. Untuk itu hati-hati dalam penulisan nama variabel. Pada variabel anda dapat mengubah nilainya, contoh $angka_1 = 1 dapat anda ubah menjadi $angka_1 = 2 saat suatu script dijalankan. Ini berbeda dengan konstanta(akan dibahas berikutnya). 2.3.1 Tipe Variabel Pada PHP kita tidak perlu mendeklarasikan tipe variabel secara eksplisit, istilah kerennya dynamic typing. Karena PHP secara otomatis dapat menentukan tipe variabel berdasarkan nilai yang ada pada variabel tersebut. Berikut ini adalah beberapa tipe data yang dikudung oleh PHP. Tabel 2.1: Macam-macam Tipe Data TipeData Keterangan Integer Digunakan untuk semua angka String Digunakan untuk semua huruf, angka, spasi, dan simbol Double Digunakan untuk bilangan real Boolean Digunakan untuk nilai True atau False Array Digunakan untuk menampung beberapa data sekaligus Object Digunakan untuk class 2.3.2 Konstanta Hampir sama dengan variabel, konstanta juga digunakan untuk penyimpanan nilai sementara. Namun perbedaan konstanta dengan variabel adalah pada konstanta anda tidak dapat mengubah © 2008-2010 Rio Astamal – Hal. 27
  • 39. LUG STIKOM Surabaya Bab II – Pengenalan PHP nilainya jika sudah dideklarasikan. Cara pendeklarasiannya pun berbeda dengan variabel. Pada konstanta digunakan keyword define untuk mendeklarasikan variabel. Konstanta juga tidak diawali dengan tanda $ (dollar). define('HARGA', 1500); define('NAMA', 'LUG STIKOM Surabaya'); Dapat dilihat pada kode diatas bahwa kita selalu gunakan huruf KAPITAL untuk konstanta. Hal ini tidak harus dilakukan namun semacam peraturan tidak tertulis jika konstanta maka sebaiknya gunakan huruf kapital. 2.3.3 Penerapan Teori Variabel dan Konstanta 1. Jika belum silahkan buat folder bab2 didalam folder htdocs/webpro. 2. Pastikan Apache sudah berjalan. 3. Buka gedit (Linux)/Notepad++ (Windows) 4. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd"> 3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head>  5. <title>Variabel dan Konstanta</title>  6. </head>  7. <body> 8. <?php 9. $menu = 'Menu: Nasi Pecel'; 10. define('HARGA', 2500); 11. 12. $menu = 'Menu: Nasi Rawon'; 13. define('HARGA', 5000); 14. 15. echo $menu . '<br />'; 16. echo HARGA; 17.?> 18.</body> 19.</html> 5. Simpan dengan nama variabel.php pada folder bab2 6. Arahkan browser anda ke alamat http://localhost/webpro/bab2/variabel.html 7. Output dari file tersebut adalah Klik kanan browser anda lalu klik View Source (untuk Firefox) untuk melihat kode HTML dari halaman tersebut. Perhatikan bahwa tag <?php dan ?> yang ada hanyalah kode HTML murni. Penjelasan Script variabel.php Jika anda perhatikan, sama seperti pada bab sebelumnya kita hanya menulis sebuah file html biasa. © 2008-2010 Rio Astamal – Hal. 28 Menu: Nasi Rawon 2500
  • 40. LUG STIKOM Surabaya Bab II – Pengenalan PHP Namun ada sedikit perbedaan, dimana pada file variabel.php terdapat sebuah tag baru yaitu <?php dan ?>. Script dalam tag inilah yang akan diproses oleh PHP processor. Semua tulisan diluar tag <? php dan ?> akan diabaikan oleh PHP. Cara seperti yang kita lakukan pada file variabel.php adalah menempelkan PHP pada HTML. Jika kumpulan mp3 anda adalah western song mungkin anda lebih suka mendengarnya dengan sebutan embedding PHP inside HTML :). Jika anda masih ingat teori sebelumnya tentang variabel, dapat dilihat bahwa variabel $menu kita deklarasi ulang dan nilainya diubah menjadi 'Menu: Nasi Rawon' (Baris: 12). Namun hal tersebut tidak berlaku pada konstanta, pada baris 13 kita deklarasikan ulang konstanta HARGA. Nilai dari konstanta tersebut tidak berubah. Hal itu ditunjukkan ketika kita mencetak nilai dari $menu dan HARGA. $menu berubah menjadi 'Nasi Rawon' dan konstanta tetap 2500. Pada PHP untuk mencetak sesuatu dapat digunakan perintah echo. Contoh penggunaan dapat dilihat pada baris 15 dan 16. Pada konstanta tidak perlu diberi tanda $. TIPS: Selain perintah echo anda juga dapat menggunakan perintah print untuk mencetak output. 2.4 Komentar Komentar pada script bertujuan untuk memberitahu pembacanya, baik orang lain ataupun anda sendiri. Biasanya komentar digunakan untuk menjelaskan tujuan dituliskannya script tersebut, siapa penulisnya, kapan ditulis dan sebagainya. Komentar juga berguna bagi anda sendiri ketika suatu waktu anda lupa mengapa anda menulis file ini, fungsi-fungsinya untuk apa dan banyak lainnya. PHP akan mengabaikan semua text didalam komentar. Jadi tidak akan berpengaruh pada jalannya suatu script. PHP mengenal tiga jenis gaya komentar. Pertama model bahasa C (banyak baris/multi line), biasanya dapat diletakkan pada bagian atas script. Lihatlah script dibawah ini. 1. <?php 2. 3. /* 4. Filename : db.php 5. Author   : Rio Astamal 6. Created  : 20­02­2009 18:22 7. Updated  : 22­05­2009 16:11 8. Desc     : File yang menyimpan konfigurasi untuk koneksi ke MySQL Database 9. */ 10. 11.?> Yang kedua adalah model C++, seperti yang ditunjukkan dibawah ini. echo $nama;    // cetak nama © 2008-2010 Rio Astamal – Hal. 29
  • 41. LUG STIKOM Surabaya Bab II – Pengenalan PHP Yang ketiga adalah model shell script. echo HARGA;    # cetak harga Sekarang coba modifikasi file variabel.php tersebut dengan menambahkan komentar lalu lihat hasilnya. Apakah masih sama atau tidak. 2.5 Operator Operator merupakan simbol yang dapat digunakan untuk memanipulasi nilai dan variabel. Pada bagian sebelumnya kita sudah menggunakan beberapa operator diantaranya =, ==, <, ., +, * dan lainnya. Selanjutnya kita kan membahas operator-oprator ini dan operator lainnya lebih detil lagi . 2.5.1 Operator Aritmatik Pasti anda sudah banyak mengenal berbagai macam operator aritmatik. Jika anda pernhah mengenyam pendidikan yang bernama Sekolah Dasar atau SD pasti anda sering menulis operator- operator ini pada buku anda :). Tabel 2.2: Operator Aritmatik Operator Nama Contoh + Penambahan $a + $b  ­ Pengurangan $a ­ $b  * Perkalian $a * $b  / Pembagian $a / $b  % Modulus $a % $b  Yang mungkin bapak atau Ibu guru SD kita lupa mengajarkan adalah tentang modulus. Modulus merupakan sisa pembagian dari dua bilangan. Lihat contoh berikut untuk lebih jelas. 1. <?php 2. 3. $bil1 = 10; 4. $bil2 = 5; 5. $bil3 = 3; 6. 7. echo $bil1 % $bil2;  // output 0 8. echo $bil1 % $bil3;  // output 1 9. echo $bil2 % $bil3;  // output 2 10. 11.?> 2.5.2 Operator Kombinasi Saya sendiri bingung menjelaskan operator ini, saya takut kata-kata saya menyesatkan pikiran anda :). Jadi lebih baik kita langsung lihat contoh saja biar lebih jelas. Tabel 2.3: Operator Kombinasi Operator Penggunaan Sama dengan += $a += $b $a = $a + $b  ­=  $a ­= $b $a = $a ­ $b  © 2008-2010 Rio Astamal – Hal. 30
  • 42. LUG STIKOM Surabaya Bab II – Pengenalan PHP *= $a *= $b $a = $a * $b  /= $a /= $b $a = $a / $b  %= $a %= $b $a = $a % $b  Penggunaan operator kombinasi memang favorit para programmer karena memang mereka ini orang-orang yang cenderung malas. Waduh, saya juga termasuk kelihatannya :). 2.5.3 Operator Perbandingan Operator perbandingan digunakan untuk membandingkan dua nilai. Penggunaan ekspressi ini juga akan menghasilkan nilai true atau false terganting dari perbandingan. Tabel 2.4: Operator perbandingan Operator Nama Penggunaaan == sama dengan $a == $b === identik (harus bertipe sama) $a === $b != tidak sama dengan $a != $b <> tidak sama dengan $a <> $b < kurang dari $a < $b > lebih dari $a > $b <= kurang dari atau sama dengan $a <= $b >= lebih dari atau sama dengan $a >= $b Operator perbandingan biasanya digunakan pada struktur kontrol seperti percabangan dan perulangan. 2.5.4 Operator Logika Operator logika digunakan untuk melakukan tes terhadap sebuah kondisi logika dari dua atau lebih perbandingan. Sebagai contoh, kita mungkin menemukan kasus nilai dari variabel $a berada diantara 0 sampai 10. Untuk mengetes kondisi $a >= 0 dan $a <= 10, kita gunakan operator AND. Tabel 2.5: Operator Logika Operator Nama Penggunaaan Keterangan ! NOT !$a TRUE jika $a adalah FALSE, berlaku  sebaliknya || OR $a || $b TRUE jika $a atau $b bernilai TRUE atau  keduanya bernilai TRUE && AND $a && $b TRUE jika $a dan $b bernilai TRUE xor XOR $a xor $b  TRUE jika $a atau $b bernilai TRUE,  tapi tidak keduanya 2.5.5 Operator Increment/Decrement Operator increment/decrement digunakan untuk menambah/mengurangai nilai dari suatu variabel dengan satu. Increment memiliki simbol ++ (double plus) sedangkan decrement -- (double minus). © 2008-2010 Rio Astamal – Hal. 31
  • 43. LUG STIKOM Surabaya Bab II – Pengenalan PHP Tabel 2.5: Operator Increment/Decrement Nama Contoh Keterangan Pre­Increment ++$a Tambah $a dengan satu, lalu kembalikan nilainya Post­Increment $a++ Kembalikan nilai $a, lalu tambah $a dengan satu Pre­Decrement ­­$a Kurangi $a dengan satu, lalu kembalikan nilainya Post­Decrement $a­­ Kembalikan nilai $a, lalu kurangi $a dengan satu Mungkin akan lebih jelas jika anda melihat contoh dibawah ini. 1. <?php 2. 3. echo "<h3>Post­increment</h3>"; 4. $a = 5; 5. echo "Seharusnya 5: " . $a++ . "<br />"; 6. echo "Seharusnya 6: " . $a . "<br />"; 7. 8. echo "<h3>Pre­increment</h3>"; 9. $a = 5; 10.echo "Seharusnya 6: " . ++$a . "<br />"; 11.echo "Seharusnya 6: " . $a . "<br />"; 12. 13.echo "<h3>Post­decrement</h3>"; 14.$a = 5; 15.echo "Seharusnya 5: " . $a­­ . "<br />"; 16.echo "Seharusnya 4: " . $a . "<br />"; 17. 18.echo "<h3>Pre­decrement</h3>"; 19.$a = 5; 20.echo "Seharusnya 4: " . ­­$a . "<br />"; 21.echo "Seharusnya 4: " . $a . "<br />"; 22. 23.?> 2.5.6 Operator String Sebenarnya pada contoh-contoh sebelumnya operator string ini sudah sering kita gunakan. Operator string yang dimaksud adalah tanda “.” (titik). Tanda titik ini dapat digunakan untuk menggabung string. 1. <?php 2. 3. $a = 'LUG'; 4. $b = 'STIKOM'; 5. $c = $a . ' ' . $b;  // hasil: LUG STIKOM 6. 7. // atau dengan kombinasi 8. $a .= ' STIKOM';  // hasil: LUG STIKOM 9. 10.?> 2.6 Escape Character Pada saat menulis kode anda akan sangat sering menjumpai suatu kondisi dimana kita harus mencetak tanda petik baik petik satu maupun petik dua. Permasalahannya tanda tersebut sudah © 2008-2010 Rio Astamal – Hal. 32
  • 44. LUG STIKOM Surabaya Bab II – Pengenalan PHP digunakan sebagai penanda untuk mencetak string. Lalu, bagaimana pemecahannya? Ada beberapa solusi untuk mencetak petik didalam petik itu sendiri: 1. Gunakan petik satu (') sebagai penutup string jika ingin mencetak petik dua (“) dan sebaliknya. 2. Menggunakan Escape Character (backslash) Berikut ini adalah contoh penyelesaian dari kedua solusi diatas. <?php /* SOLUSI No. 1 ============ ­ Jika ingin mencetak petik satu gunakan petik dua sebagai penutup string ­ Jika ingin mencetak petik dua gunakan petik satu sebagai penutup string */ $a = 'John Says: "My dear, I Love You."<br />'; $b = "The Girl Says: 'Go to Hell...!!!'<br />"; echo $a . $b . '<br />'; /* SOLUSI No. 2 ============ ­ Gunakan escape character  (backslash) */ $a = "John Says: "My dear, I Love You."<br />"; $b = 'The Girl Says: 'Go to Hell...!!!'<br />'; echo $a . $b; ?> 2.7 Special Character Pembahasan ini sebenarnya tidak begitu krusial jika dihubungkan dengan pembuatan tampilan web. Namun akan sangat berguna dalam proses pencarian kesalahan ketika kita mendesain suatu halaman website. Bingung? Sama saya juga bingung dengan apa yang saya tulis :p. Pada intinya HTML mengabaikan semua karakter whitespace (spasi, tab, baris baru) dan menggantinya hanya dengan satu spasi ketika ditampilkan. Special character disni mencakup • Baris baru (n) • Tab (t) Sebenarnya masih banyak karakter spesial lainnya seperti r, 0, b dan lain-lain. Untuk lebih jelasnya cobalah contoh berikut. 1. <?php 2. 3. echo "INIttBANYAKttSPASI<br />"; 4. echo "INI BARIS SATU<br />"; 5. echo "INI BARIS DUA<br />"; 6. echo "INI BARIS TIGA<br />"; 7. 8. echo "nn<br />nn"; 9. echo "INI BARIS SATU<br />nINI BARIS DUA<br />nINI BARIS TIGA"; © 2008-2010 Rio Astamal – Hal. 33
  • 45. LUG STIKOM Surabaya Bab II – Pengenalan PHP 10. 11.?> Output dari kode diatas kurang lebih seperti berikut: Jika dilihat dari browser tidak ada yang berbeda dari group 1 dan group 2 yang ada pada kode diatas. Tapi jika anda melihat source HTML dengan cara klik kanan → View Source (Firefox) akan terlihat perbedaannya. TIPS: Untuk mencetak special character seperti n, t, r dan sebagainya harus menggunakan petik dua sebagai penutup string. © 2008-2010 Rio Astamal – Hal. 34 INI BANYAK SPASI INI BARIS SATU INI BARIS DUA INI BARIS TIGA INI BARIS SATU INI BARIS DUA INI BARIS TIGA
  • 46. LUG STIKOM Surabaya Bab III – Struktur Kontrol Bab III Struktur Kontrol Struktur Kontrol merupakan sebuah struktur dalam bahasa pemrograman yang membolehkan kita untuk mengontrol alur dari eksekusi suatu program atau script. Struktur kontrol mencakup struktur kondisi dan struktur pengulangan atau looping. Struktur kondisi terdiri dari beberapa statement yaitu: • if... • if...else... • if...elseif...else... • switch...case...break... Sedangkan struktur perulangan terdiri dari: • for... • while... • do...while... • foreach... 3.1 Struktur Kondisi 3.1.1 Statement if... Kita dapat menggunakan statemen if untuk membuat sebuah keputusan. Anda harus memberi if sebuah kondisi untuk membuat keputusan. Jika kondisi bernilai true maka blok if akan dieksekusi. Statemen if dikelilingi oleh tanda { } (kurung kurawal). Syntax dasar penulisan statemen if adalah: if (kondisi) {    // kode yang dieksekusi } Jika kondisi bernilai TRUE maka perintah yang ada blok pada { } akan dieksekusi. Perhatikan contoh dibawah. 1. <?php 2. 3. $nama = 'LUG STIKOM'; 4. if ($nama == 'LUG STIKOM') { 5.    echo 'OK, anda boleh masuk.'; 6. } 7. 8. ?> Pada contoh diatas kita menggunakan variabel nama sebagai kondisi, dimana jika nilai variabel $nama sama dengan LUG STIKOM maka blok perintah akan dieksekusi. Ingat, bahwa operator perbandingan untuk sama dengan adalah == bukan =. Contoh lain jika kita menggunakan angka untuk perbandingan adalah: 1. <?php 2. © 2008-2010 Rio Astamal – Hal. 35
  • 47. LUG STIKOM Surabaya Bab III – Struktur Kontrol 3. $usia = 21; 4. $black_list = FALSE; 5. if ($usia >= 21 && $black_list == FALSE) { 6.    echo 'OK, anda sudah dewasa. Silahkan masuk.'; 7. } 8. 9. ?> Pada contoh ke dua ini, blok if hanya akan dieksekusi jika nilai dari usia lebih dari atau sama dengan 21 DAN nilai dari black_list sama dengan false. TIPS: Anda dapat meletakkan if di dalam if (if bersarang). Ini juga berlaku terhadap semua struktur kontrol lain. 3.1.2 Statement if...else... Statement ini hampir sama dengan if hanya saja pada if else kita diberikan opsi alternatif untuk menentukan aksi yang dilakukan jika kondisi bernilai false. Statement ini akan sangat sering anda gunakan dibanding penggunakan if saja. Syntax penulisan statement if...else... adalah sebagai berikut: if (kondisi) {    // kode yang dieksekusi jika kondisi true } else {    // kode yang dieksekusi jika kondisi false } Contoh statement if...else... sederhana dapat anda lihat berikut ini. 1. <?php 2. 3. $peghasilan = 5000000; 4. if ($penghasilan >= 3000000) { 5.    echo 'Pak Toyib: "Nak john, kamu boleh menikahi putri saya :)"'; 6. } else { 7.    echo 'Pak Toyib: "Mau kamu kasih makan apa putri saya nanti!!!"'; 8. } 9. 10.?> Alur dari script diatas sudah jelas, dimana jika nilai dari $penghasilan lebih dari 3.000.000 maka john diperbolehkan nikah dengan putrinya Pak Toyib :). Namun jika kurang dari 3.000.000 alamat kena marah Pak Toyib :(. 3.1.3 Statemen if...elseif...else... Jika statemen if...else... hanya dapat menggunakan satu alternatif jika kondisi awal bernilai false. Statemen if...elseif... memberi lebih dari satu aksi alternatif. Hal ini memungkinkan kita untuk memilih aksi dari banyak kemungkinan kondisi. Syntax dasar penulisan if...elseif... adalah sebagai berikut: if (kondisi_1) { © 2008-2010 Rio Astamal – Hal. 36
  • 48. LUG STIKOM Surabaya Bab III – Struktur Kontrol   // kode yang dieksekusi } elseif (kondisi_2) {   // kode yang dieksekusi } elseif (kondisi_3) {   // kode yang dieksekusi } else if (kondisi_4) {   // kode yang dieksekusi } else {   // kode yang dieksekusi } Anda dapat menulis statement elseif dengan spasi, yaitu else if. Keduanya sama-sama dianggap valid oleh PHP. 3.1.4 Penerapan Teori if...elseif...else... Hal yang paling sering dilakukan oleh PHP sebagai bahasa server-side scripting adalah memproses HTML Form. Pada contoh ini adalah inti awal anda memahami tugas PHP sebagai pemroses HTML Form. Kita akan membuat dua file yang pertama adalah file HTML murni sebagai input data bagi user(HTML Form). Dan file yang kedua adalah file PHP yang bertugas memproses data yang dikirim oleh file HTML . 1. Jika belum silahkan buat folder bab3 pada folder htdocs/webpro 2. Pastikan Apache sudah berjalan 3. Buka gedit / Notepad++ 4. Simpan file tersebut dengan nama form-toko.html 5. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5.    <title>Pembelian Online</title> 6. </head> 7. <body> 8.    <h3>LUG ONLINE STORE</h3><hr /> 9.    <form action="form­proses.php" method="post"> 10.      <label>Sticker Linux (Rp7.500,­)</label><br /> 11.      <label>Jumlah: </label> 12.      <input type="text" name="sticker" value="0" size="4" /><br /><br /> 13. 14.      <label>Kaos Linux (Rp35.000,­)</label><br /> 15.      <label>Jumlah: </label> 16.      <input type="text" name="kaos" value="0" size="4" /><br /><br /> 17. 18.      <label>Jacket Linux (Rp35.000,­)</label><br /> 19.      <label>Jumlah: </label> 20.      <input type="text" name="jacket" value="0" size="4" /><br /><br /> 21. 22.      <input type="submit" value="P r o s e s" /> 23.   </form> 24.</body> 25.</html> 6. Save kembali file tersebut 7. Sekarang buat file baru 8. Simpan dengan nama form-proses.php masih difolder yang sama. © 2008-2010 Rio Astamal – Hal. 37
  • 49. LUG STIKOM Surabaya Bab III – Struktur Kontrol 9. Ketik kode berikut: 1. <?php 2. 3. // buat variabel untuk menampung data dari file form­toko.html 4. $sticker = $_POST['sticker']; // data sticker 5. $kaos = $_POST['kaos']; // data kaos 6. $jacket = $_POST['jacket']; // data jacket 7. 8. // harga dari masing­masing produk 9. define('HARGA_STCIKER', 7500); 10.define('HARGA_KAOS', 35000); 11.define('HARGA_JACKET', 55000); 12. 13.// total harga 14.$total = (HARGA_STICKER * $sticker) + (HARGA_KAOS * $kaos) +  15.         (HARGA_JACKET * $jacket); 16. 17.$diskon = 0; 18.$pesan_diskon = '0%'; 19. 20.// cek total untuk menentukan diskon 21.if ($total >= 50000 && $total < 75000) {  22.   $diskon = 0.05;   // diskon 5% 23.   $pesan_diskon = '5%'; 24.} elseif ($total >= 75000 && $total < 100000) { 25.   $diskon = 0.1;    // diskon 10% 26.   $pesan_diskon = '10%'; 27.} elseif ($total >= 100000) { 28.   $diskon = 0.15;   // diskon 15% 29.   $pesan_diskon = '15%'; 30.} 31.$subtotal = $total ­ ($total * $diskon); 32. 33.?> 34.<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  35.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  36.<html xmlns="http://www.w3.org/TR/xhtml1">  37.<head> 38.   <title>Pembelian Online</title> 39.   <style type="text/css"> 40.      .tanda { background­color: #cfcfcf; } 41.   </style> 42.</head> 43.<body> 44.   <strong>LUG ONLINE STORE ­ DATA PEMBELIAN</strong><hr /> 45.   <table border="1"> 46.      <tr class="tanda"> 47.         <th>Barang</th><th>Jumlah</th><th>Total</th> 48.      </tr> 49.      <tr> 50.         <td>Sticker</td> 51.         <td><?php echo $sticker;?></td> 52.         <td><?php echo ($sticker * HARGA_STCIKER);?> 53.      </tr> 54.      <tr> 55.         <td>Kaos</td> 56.         <td><?php echo $kaos;?></td> 57.         <td><?php echo ($kaos * HARGA_KAOS);?> 58.      </tr> 59.      <tr> 60.         <td>Jacket</td> © 2008-2010 Rio Astamal – Hal. 38
  • 50. LUG STIKOM Surabaya Bab III – Struktur Kontrol 61.         <td><?php echo $jacket;?></td> 62.         <td><?php echo ($jacket * HARGA_JACKET);?> 63.      </tr> 64.      <tr class="tanda"> 65.         <td colspan="2">TOTAL</td> 66.         <td><?php echo $total;?></td> 67.      </tr> 68.      <tr class="tanda"> 69.         <td colspan="2">Diskon</td> 70.         <td><?php echo $pesan_diskon;?></td> 71.      </tr> 72.      <tr class="tanda"> 73.         <td colspan="2">SUB­TOTAL</td> 74.         <td><?php echo $subtotal;?></td> 75.      </tr> 76.   </table> 77.</body> 78.</html> 10. Simpan kembali file tersebut 11. Buka browser anda dan arahkan ke http://localhost/webpro/bab3/form-toko.html 12. Hasilnya terlihat seperti gambar 3.1 dan 3.2 Gambar 3.1 Gambar 3.2 Penjelasan singkat form-toko.html dan form-proses.php Kita mulai dari file form-toko.html terlebih dulu. Pada file ini yang perlu diperhatikan adalah data yang terletak pada <form> dan </form>. Perhatikan cuplikan script form berikut: <form action="form­proses.php" method="post"> Perhatikan nilai dari action, file yang diberi “kehormatan” untuk menjalankan tugas memproses data yang dikirim oleh form adalah file form-proses.php. Letak file tersebut satu folder dengan form-toko.html. Metode yang digunakan adalah POST bukan GET. © 2008-2010 Rio Astamal – Hal. 39
  • 51. LUG STIKOM Surabaya Bab III – Struktur Kontrol <input type="text" name="sticker" value="0" size="4" /> Arti dari kode diatas adalah data yang akan kita kirimkan ke file form-proses.php bernama sticker. Jadi pada file form-proses.php kita mengambilnya dengan cara: $sticker = $_POST['sticker']; // data sticker Kode diatas berarti kita menangkap data yang dikirim dengan metode post dan data tersebut bernama sticker. Isi dari $_POST harus sama dengan isi dari name pada form. Nama variabel penampung tidak harus sama akan tetapi lebih mudah jika sama dengan data yang di-post. TIPS: PHP tidak memperdulikan tata letak kode anda. Jadi desainlah kode anda senyaman mungkin untuk dibaca. 3.1.5 Statement switch...case...break Sebenarnya statement switch...case...break sama dengan if...elseif... dimana kita dapat memilih lebih dari dua kondisi atau lebih. Selain itu pada switch kita dapat memilih kondisi tidak hanya pada nilai true atau false saja tetapi kita juga dapat memilih dari berbagai tipe lain seperti integer, boolean, string dan lain-lain. Syntax penulisan statement switch adalah sebagai berikut. switch ($kondisi) {   case kondisi_1:     // kode yang dieksekusi   break;   case kondisi_2:     // kode yang dieksekusi   break;   case kondisi_3:    // kode yang dieksekusi   break;   default:     // kode yang dieksekusi jika tidak ada yang memenuhi   break; } Block default pada switch sama dengan else pada statement if...elseif...else.... Yaitu blok yang akan dieksekusi jika semua kondisi tidak terpenuhi. Sebagai contoh anda dapat mengganti kode pada form-proses.php baris 21 – 30 dengan kode berikut: 21.switch ($total) { 22.   case $total >= 50000 && $total < 75000: 23.      $diskon = 0.05;   // diskon 5% 24.      $pesan_diskon = '5%'; 25.   break; 26.   case $total >= 75000 && $total < 100000: 27.      $diskon = 0.05;   // diskon 5% 28.      $pesan_diskon = '5%'; 29.   break; 30.   case $total >= 100000; 31.      $diskon = 0.05;   // diskon 5% 32.      $pesan_diskon = '5%'; © 2008-2010 Rio Astamal – Hal. 40
  • 52. LUG STIKOM Surabaya Bab III – Struktur Kontrol 33.   break; 34.} 3.2 Struktur Perulangan (Looping) Salah satu kelebihan komputer adalah melakukan pekerjaan selama berulang-ulang tanpa rasa bosan sedikit pun. Berbeda dengan manusia, tidak dapat dibayangkan jika komputer tiba-tiba bosan ketika menjalankan perintah :D. Dalam pemrograman perulangan atau looping adalah eksekusi suatu blok kode selama suatu kondisi looping masih terpenuhi. Ini berbeda dengan struktur kontrol yang hanya mengeksekusi blok kode satu kali saja. Agar pengertian looping mudah dicerna, seperti makanan saja dicerna :p, kita akan membuat sebuah file HTML static yang kemudian akan kita buat duplikatnya tetapi menggunakan loop. 1. Buka gedit / Notepad++ 2. Buat file baru 3. Simpan dengan nama bensin.html letakkan pada folder htdocs/webpro/bab3 4. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5.    <title>Bensin Static</title> 6. </head> 7. <body> 8.    <table cellpadding="4"> 9.       <tr style="background­color:#cfcfcf"> 10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th> 11.      </tr> 12.      <tr> 13.         <td>5</td><td>22500</td> 14.      </tr> 15.      <tr> 16.         <td>10</td><td>45000</td> 17.      </tr> 18.      <tr> 19.         <td>15</td><td>67500</td> 20.      </tr> 21.      <tr> 22.         <td>20</td><td>90000</td> 23.      </tr> 24.      <tr> 25.         <td>25</td><td>112500</td> 26.      </tr> 27.   </table> 28.</body> 29.</html> 6. Save kembali file bensin.html 7. Buka file tersebut pada browser, http://localhost/webpro/bab3/bensin.html 8. Hasilnya akan terlihat seperti gambar 3.3 © 2008-2010 Rio Astamal – Hal. 41
  • 53. LUG STIKOM Surabaya Bab III – Struktur Kontrol Gambar 3.3 3.2.1 Statement for... Bentuk perulangan pertama yang akan kita bahas adalah perulangan dengan for. Bentuk penulisan looping for adalah sebagai berikut. for (ekspresi1; kondisi; ekspresi2) {    // kode yang akan dieksekusi } Keterangan: • ekspresi1: dieksekusi satu kali saat loop mulai dieksekusi, biasanya untuk inisialisasi variabel counter • kondisi: dicek setiap loop apakah kondisi masih true, jika ya maka blok kode tetap dieksekusi, berlaku sebaliknya jika false • ekspresi2: dieksekusi setiap akhir loop, disini biasanya digunakan untuk mengubah nilai variabel counter 3.2.2 Penerapan Teori for... Seperti yang pernah disinggung sebelumnya, bahwa kita akan kan menduplikasi file bensin.html tetapi dengan menggunakan perulangan, dalam hal ini kita gunakan for. 1. Buka gedit/Notepad++ 2. Buat file baru 3. Simpan dengan nama bensin_for.php pada folder htdocs/webpro/bab3 4. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5.    <title>Bensin For</title> 6. </head> 7. <body> 8.    <table cellpadding="4"> 9.       <tr style="background­color:#cfcfcf"> © 2008-2010 Rio Astamal – Hal. 42
  • 54. LUG STIKOM Surabaya Bab III – Struktur Kontrol 10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th> 11.      </tr> 12.      <?php 13.         $harga = 4500;    // semoga tidak naik lagi :p 14. 15.         // lakukan loop dengan kelipatan 5 sampai dengan 25 16.         for ($liter = 5; $liter <= 25; $liter += 5) { 17.            echo "<tr>n"; 18.            echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n"; 19.            echo "</tr>n"; 20.         } 21.      ?> 22.   </table> 23.</body> 24.</html> 6. Simpan kembali file bensin_for.php 7. Arahkan browser anda ke http://localhost/webpro/bab3/bensin_for.php 8. Hasilnya akan sama persis seperti gambar 3.3 Penjelasan Singkat File bensin_for.php Nilai variabel $liter awal kita set 5, kondisi yang ingin cek adalah jika $liter <= 25. Selama masih terpenuhi(kondisi true) maka blok kode akan tetap dieksekusi. Setiap selesai eksekusi nilai dari variabel counter yaitu $liter kita tambah dengan 5. Looping akan berhenti jika sudah mencapai step 6. Karena pada saat itu nilai $liter sudah mencapai 30 dan itu tidak memenuhi syarat kondisi dimana $liter <= 25. 3.2.3 Statement while... Berbeda dengan for pada while kita tidak bisa meletakkan inisialisasi variabel, kondisi, dan counter pada satu baris saja. Syntax penulisan while adalah sebagai berikut. while (kondisi) {    // blok kode yang dieksekusi } Jadi selama kondisi masih true maka blok kode akan terus dieksekusi. While biasa digunakan jika kita tidak tahu batas akhir kapan suatu perulangan harus dihentikan. 3.2.4 Penerapan Teori while... Kita masih tetap menggunakan file bensin.html sebagai acuan output yang akan diselesaikan menggunakan while. 1. Buka gedit / Notepad++ 2. Buat file baru 3. Simpan dengan nama bensin_while.php pada folder htdocs/webpro/bab3 4. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  © 2008-2010 Rio Astamal – Hal. 43
  • 55. LUG STIKOM Surabaya Bab III – Struktur Kontrol 4. <head> 5.    <title>Bensin While</title> 6. </head> 7. <body> 8.    <table cellpadding="4"> 9.       <tr style="background­color:#cfcfcf"> 10.         <th>Bensin (Liter)</th><th>Harga (Rp)</th> 11.      </tr> 12.      <?php 13.         $harga = 4500;    // semoga tidak naik lagi :p 14.         $liter = 5;       // inisialisasi $liter diluar loop 15. 16.         // lakukan loop dengan kelipatan 5 sampai dengan 25 17.         while ($liter <= 25) { 18.            echo "<tr>n"; 19.            echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n"; 20.            echo "</tr>n"; 21.            $liter += 5;   // tambah counter 22.         } 23.      ?> 24.   </table> 25.</body> 26.</html> 5. Simpan kembali file tersebut 6. Coba lihat hasilnya, http://localhost/webpro/bab3/bensin_while.php 7. Hasilnya akan terlihat seperti gambar 3.3 sebelumnya 3.2.5 Statement do...while Berbede dengan dua loop sebelumnya, dimana pada for dan while pengecekan kondisi dilakukan pada awal sebelum blok kode dieksekusi. Pada do...while pengecekan dilakukan diakhir eksekusi kode. Jadi setidak-tidaknya blok kode do...while pasti dieksekusi minimal satu kali. Syntax dasar dari do...while adalah sebagai berikut. do {     // kode yang dieksekusi } while (kondisi) Blok kode do akan dieksekusi selama kondisi while masih bernilai true. 3.2.6 Penerapan Teori do...while 1. Buka gedit / Notepad++ 2. Buat file baru 3. Simpan dengan nama bensin_do_while.php pada folder htdocs/webpro/bab3 4. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5. <title>Bensin Do While</title> 6. </head> 7. <body> 8. <table cellpadding="4"> © 2008-2010 Rio Astamal – Hal. 44
  • 56. LUG STIKOM Surabaya Bab III – Struktur Kontrol 9. <tr style="background­color:#cfcfcf"> 10. <th>Bensin (Liter)</th><th>Harga (Rp)</th> 11. </tr> 12. <?php 13. $harga = 4500;    // semoga tidak naik lagi :p 14. $liter = 5;       // inisialisasi $liter diluar loop 15. 16. // lakukan loop dengan kelipatan 5 sampai dengan 25 17. do {  18. echo "<tr>n"; 19. echo "<td>$liter</td><td>" . ($harga * $liter) . "</td>n"; 20. echo "</tr>n"; 21. $liter += 5;   // tambah counter 22. } while ($liter <= 25) 23. ?> 24. </table> 25.</body> 26.</html> 5. Simpan kembali file tersebut 6. Arahkan browser ke http://localhost/webpro/bab3/bensin_while.php untuk melihat hasilnya Jika anda masih penasaran dengan kata-kata “minimal dieksekusi satu kali” coba ganti nilai $liter dari 5 menjadi 30 saat inisialisasi. Kode pasti akan dieksekusi satu kali kemudian selesai. Hal ini tidak berlaku untuk for dan while. Jika ditanya kapan kita menggunakan do...while, susah juga jawabnya. Yang jelas secara naluri nanti anda akan menggunakannya tanpa disuruh-suruh orang lain :p. TIPS: Looping for biasa digunakan jika kita telah mengetahui batas awal dan akhir dari suatu perulangan. Untuk sementara kita tidak menbahas dulu foreach karena loop ini didesain khusus untuk penggunaan didalam array. Jadi pembahasan foreach akan kita lakukan saat membahas tentang array. © 2008-2010 Rio Astamal – Hal. 45
  • 57. LUG STIKOM Surabaya Bab IV – File dan Array Bab IV File dan Array 4.1 Berinteraksi dengan File File merupakan salah satu aspek penting dalam sebuah aplikasi. Seringkali sebuah file dibuat untuk berbagai tujuan misalnya, menyimpan konfigurasi, temporary file, cache dan masih banyak lagi. Interaksi PHP dengan file sangat mirip dengan bahasa C. Proses umum yang dilakukan adalah: • Membuat resource dengan perintah fopen() • Menulis(fwrite())/membaca file • Menutup file fclose() 4.1.1 Menyimpan File Dibanding dengan penyimpanan pada database penyimpanan pada file relatif sederhana. Namun memiliki banyak kekurangan terutama jika menyangkut masalah keamanan dan kecepatan akses data. Pada PHP langkah-langkah untuk menyimpan sebuah file adalah: • Membuka file dengan fopen() • Menulis file dengan fwrite() • Menutup file dengan fclose() fopen() minimal memerlukan dua parameter yaitu 1) string nama file dan 2) string mode. Yang perlu diperhatikan disini adalah mode dari file. Syntax yang digunakan adalah: fopen( “string_nama_file”, “string_mode” ); Mode yang dapat digunakan pada fopen adalah: Mode Deskripsi 'r' Buka file hanya untuk baca saja; pointer file diletakkan diawal file. 'r+' Buka file untuk baca dan tulis; ponter file diletakkan diawal file. 'w' Buka file untuk tulis saja; pointer diletakkan diawal file lalu truncate(overwrite); jika file tidak ada, buat file tersebut. 'w+' Buka file untuk baca dan tulis; pointer diletakkan diawal file lalu truncate(overwrite); jika file tidak ada, buat file tersebut. 'a' Buka file untuk tulis saja; pointer diletakkan diakhir file(append); jika file tidak ada, buat file tersebut. 'a+' Buka file untuk baca dan tulis; pointer diletakkan diakhir file(append); jika file tidak ada, buat file tersebut. © 2008-2010 Rio Astamal – Hal. 46 Parameter 1 Parameter 2
  • 58. LUG STIKOM Surabaya Bab IV – File dan Array TIPS: Agar kompatibel antar sistem operasi yang memiliki “ending line” yang berbeda Linux (n), MacOS(r), dan Windows(rn) tambahkan opsi 'b', misal 'wb'. (b = binary mode) Kita akan menggunakan contoh form-toko.html yang terdapat pada bab 3. Format penyimpanan yang kita gunakan adalah: jml_kaos Sticker -#- harga_kaos -#- jml_kaos Kaos-#- harga_kaos -#- jml_jacket Jacket -#- harga_jacket -#- total -#- diskon -#- sub-total OK, langsung aja kita coba untuk menulis file. 4.1.3 Penerapan Teori Penyimpanan File Sebelum memulai pastikan anda sudah membuat folder baru di direktori htdocs/webpro anda dengan nama bab4. Kita akan menyimpan file tersebut didalam folder bab4 dengan nama faktur.txt. Ikuti langkah-langkah berikut: 1. Copy file form-toko.html dan form-proses dari folder bab3 ke bab4 2. Modifikasi file form-proses.php(pada bab4) agar menampilkan link ke halaman faktur. 1. <?php 2. // buat variabel untuk menampung data dari file form­toko.html 3. $sticker = $_POST['sticker']; // data sticker 4. $kaos = $_POST['kaos']; // data kaos 5. $jacket = $_POST['jacket']; // data jacket 6. // harga dari masing­masing produk 7. define('HARGA_STICKER', 7500); 8. define('HARGA_KAOS', 35000); 9. define('HARGA_JACKET', 55000); 10. // total harga 11. $total = (HARGA_STICKER * $sticker) + (HARGA_KAOS * $kaos) +  12.          (HARGA_JACKET * $jacket); 13. $diskon = 0; 14. $pesan_diskon = '0%'; 15. // cek total untuk menentukan diskon 16. if ($total >= 50000 && $total < 75000) {  17.    $diskon = 0.05;   // diskon 5% 18.    $pesan_diskon = '5%'; 19. } elseif ($total >= 75000 && $total < 100000) { 20.    $diskon = 0.1;    // diskon 10% 21.    $pesan_diskon = '10%'; 22. } elseif ($total >= 100000) { 23.    $diskon = 0.15;   // diskon 15% 24.    $pesan_diskon = '15%'; 25. } 26. $subtotal = $total ­ ($total * $diskon); 27. // tulis ke file, mode yang digunakan adalah 'a' => append 28. // file faktur.txt akan dibuat otomatis jika belum ada 29. $fp = fopen('faktur.txt', 'a'); 30. $isi_file = "$sticker Sticker ­#­ " . (HARGA_STICKER * $sticker) . " ­#­ " . 31.             "$kaos Kaos ­#­ " . (HARGA_KAOS * $kaos) . " ­#­ " . 32.             "$jacket Jacket ­#­ " . (HARGA_JACKET * $jacket) . " ­#­ " . 33.             "$total ­#­ $pesan_diskon ­#­ $subtotaln"; 34. fwrite($fp, $isi_file); 35. fclose($fp); © 2008-2010 Rio Astamal – Hal. 47
  • 59. LUG STIKOM Surabaya Bab IV – File dan Array 36. ?> 37. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  38.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  39. <html xmlns="http://www.w3.org/TR/xhtml1">  40. <head> 41.    <title>Pembelian Online</title> 42.    <style type="text/css"> 43.       .tanda { background­color: #cfcfcf; } 44.    </style> 45. </head> 46. <body> 47.    <strong>LUG ONLINE STORE ­ DATA PEMBELIAN</strong><hr /> 48.    <table border="1"> 49.       <tr class="tanda"> 50.          <th>Barang</th><th>Jumlah</th><th>Total</th> 51.       </tr> 52.       <tr> 53.          <td>Sticker</td> 54.          <td><?php echo $sticker;?></td> 55.          <td><?php echo ($sticker * HARGA_STCIKER);?> 56.       </tr> 57.       <tr> 58.          <td>Kaos</td> 59.          <td><?php echo $kaos;?></td> 60.          <td><?php echo ($kaos * HARGA_KAOS);?> 61.       </tr> 62.       <tr> 63.          <td>Jacket</td> 64.          <td><?php echo $jacket;?></td> 65.          <td><?php echo ($jacket * HARGA_JACKET);?> 66.       </tr> 67.       <tr class="tanda"> 68.          <td colspan="2">TOTAL</td> 69.          <td><?php echo $total;?></td> 70.       </tr> 71.       <tr class="tanda"> 72.          <td colspan="2">Diskon</td> 73.          <td><?php echo $pesan_diskon;?></td> 74.       </tr> 75.       <tr class="tanda"> 76.          <td colspan="2">SUB­TOTAL</td> 77.          <td><?php echo $subtotal;?></td> 78.       </tr> 79.    </table> 80.    <p><a href="faktur.php">Lihat Faktur</a></p> 81. </body> 82. </html> 3. Simpan kembali file form-proses.php 4. Buat sebuah dokumen baru dengan nama faktur.php 5. Isi dari file faktur.php adalah: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5.    <title>Pembelian Online</title> 6. </head> 7. <body> 8.    <h2>Data Faktur Pembelian</h2> 9.    <pre> © 2008-2010 Rio Astamal – Hal. 48
  • 60. LUG STIKOM Surabaya Bab IV – File dan Array 10.    <?php  11.       // baca seluruh isi file 12.       readfile('faktur.txt'); 13.    ?> 14.    </pre> 15.    <a href="form­toko.html">Kembali ke Form</a> 16. </body> 17. </html> 6. Simpan kembali file faktur.php 7. Buka alamat http://localhost/webpro/bab4/form-toko.html untuk melihat proses penyimpanan file. Gambar 4.1: Tambahan link Lihat Faktur Gambar 4.2: Data beberapa faktur transaksi yang tercatat 4.1.4 Penjelasan Singkat Penerapan Teori Penyimpanan File © 2008-2010 Rio Astamal – Hal. 49
  • 61. LUG STIKOM Surabaya Bab IV – File dan Array Pada file form-proses.php modifikasi yang dilakukan dapat dilihat mulai dari baris 27 – 35 dan juga baris ke-80. Pada baris 27 – 35 yang kita lakukan adalah melakukan penulisan sebuah file dengan nama faktur.txt. Karena kita tidak menyertakan path untuk direktori file maka diasumsikan file faktur.txt akan ditulis pada direktori yang sama. Mode file yang kita gunakan adalah 'a', agar data faktur-faktur sebelumnya yang sudah tertulis tidak tertimpa/overwrite melainkan kita tambahkan diakhir(append). Separator yang digunakan untuk setiap item adalah “-#-”. Format ini akan tetap kita gunakan, karena pada pembahasan array kita akan mengextract setiap item berdasarkan separator tersebut. Pada file faktur.php pembacaan file dilakukan dengan memanggil fungsi readfile(). Fungsi readfile akan membaca sebuah file dan langsung menampilkannya ke output. Karena setiap baris dipasahkan dengan karakter “n” maka kita perlu tag preformatted text <pre> agar file ditampilkan apa adanya. 4.1.5 Fungsi-fungsi Lain Beberapa fungsi lain yang dapat digunakan untuk manajemen file diantarnya baca dan hapus antara lain fungsi file_get_contents(), fread(), dan unlink(). a. file_get_contents() Fungsi file_get_contents() digunakan untuk membaca sebuah file dan menyimpannya sebagai string. Sebagai contoh kita dapat mengganti fungsi dari readfile() pada file faktur.php dengan perintah berikut: $data = file_get_contents('faktur.txt'); echo $data; b. fread() Pada fungsi fread() terdapat dua parameter yang harus disertakan yaitu pointer/resource yang dibuka dengan fopen dan panjang bytes dari data yang akan dibaca. Contoh pengganti readfile() pada file faktur.php adalah sebagai berikut: $fp = fopen('faktur.txt', 'r'); $ukuran = filesize('faktur.txt'); $data = fread($fp, $ukuran); echo $data; fclose($fp); atau $fp = fopen('faktur.txt', 'r'); $data = ''; while (!feof($fp)) {    $data .= fread($fp, 2048); } fclose($fp); echo $data; Fungsi filesize() digunakan untuk mengetahui ukuran sebuah file dalam bytes. Sedangkan fungsi feof() digunakan untuk megecek apakah akhir sebuah file sudah tercapai EOF(End of File). Pada contoh diatas kita membaca sebanyak 2048 bytes atau 2kb setiap loop. © 2008-2010 Rio Astamal – Hal. 50
  • 62. LUG STIKOM Surabaya Bab IV – File dan Array c. fgets() Penggunaan fungsi fgets() hampir sama dengan fread() pada metode yang kedua. $fp = fopen('faktur.txt', 'r'); $data = ''; while (!feof($fp)) {    $data .= fgets($fp, 2048); } fclose($fp); echo $data; d. unlink() Berbeda dengan beberapa fungsi sebelumnya, fungsi unlink() digunakan untuk menghapus sebuah file. Contoh penggunaan unlink adalah sebagai berikut: if (unlink('faktur.txt'))   echo “File faktur.txt berhasil dihapus”; else   echo “File faktur.txt gagal dihapus”; Fungsi unlink() akan mengembalikan nilai boolean mengenai status penghapusan dari sebuah file. TRUE jika file berhasil dihapus dan FALSE jika gagal dihapus. TIPS: Masalah yang sering muncul jika menyangkut pembuatan dan penghapusan file adalah masalah permission(hak akses). Hal ini umum terjadi pada sistem operasi berbasis UNIX. Jadi perhatikan permission dari direktori/file yang menjadi objek. 4.2 Array pada PHP Array merupakan salah satu aspek terpenting dalam bahasa pemrograman. Sebenarnya apa sih array itu? Secara sederhana array merupakan suatu variabel yang dapat menyimpan beberapa nilai sekaligus. Berbeda dengan variabel biasa yang hanya dapat menampung sebuah nilai saja. Array juga dapat berisi array lainnya (array didalam array), array seperti ini sering disebut array multi- dimensi. Pada PHP dikenal dua tipe array berdasarkan cara pengaksesannya yaitu array index numerik dan array index string (associative array). Bingung? Yes akhirnya saya bisa membuat anda bingung :p. OK, biar anda tidak stress langsung saja kita bahas yang pertama dulu yaitu arrai index numerik. 4.2.1 Array dengan Index Numerik Kita akan tetap menggunakan contoh produk pada baba sebelumnya yaitu sticker, kaos, dan jacket dalam pembahsan contoh. Sebuah array dengan index numerik diberi index mulai dari 0,1,2,3,... dan seterusnya. Untuk membuat sebuah array dengan index numeric terdapat beberapa cara diantaranya: → Cara 1 $produk = array('sticker', 'kaos', 'jacket'); © 2008-2010 Rio Astamal – Hal. 51
  • 63. LUG STIKOM Surabaya Bab IV – File dan Array Perintah diatas berarti kita membuat sebuah array dengan nama $produk dengan tiga buah elemen didalamnya. Index akan diberikan otomatis dimulai dari 0 yaitu sticker, 1 adalah kaos dan 2 adalah jacket. → Cara 2 $produk[0] = 'sticker'; $produk[1] = 'kaos'; $produk[2] = 'jacket'; Cara diatas adalah sebuah cara manual yaitu dengan memberi index langsung pada array. → Cara 3 $produk[] = 'sticker'; $produk[] = 'kaos'; $produk[] = 'jacket'; Cara ketiga hampir sama dengan yang pertama, hanya berbeda cara penulisan saja. Cara ini sangat berguna saat kita akan memberi sebuah nilai pada array saat looping dimana index akan bertambah secara otomatis. 4.2.3 Mengakses Isi Array Untuk mengakses sebuah array hal yang diperlukan adalah nama array tersebut dan index-nya. Dimana penulisan index diapit oleh tanda kurung siku [ ]. Perhatikan contoh berikut: echo $produk[0] . ' ' . $produk[1] . ' ' . $produk[2]; Output dari perintah diatas adalah: Output 1 Untuk array dengan jumlah yang “bisa” dihitung dengan jari pengaksesan secara manual mungkin tidak masalah. Namun jika jumlah array mencapai puluhan bahkan ratusan? Solusinya ya pakai looping. 4.2.4 Looping Array Index Numerik Pada bab-bab awal kita sudah membahas penggunaan looping. Looping sangat berguna untuk mengakses array dalam jumlah besar. Pada bagian ini kita juga akan membahas foreach() satu- satunya perintah looping yang belum dibahas. Output dari perintah-perintah looping berikut akan mengacu pada output 1. Hal ini ditujukan agar memudahkan anda memahami cara kerja array dan looping itu sendiri. a. Looping Array dengan for() // set variabel index ke 0 © 2008-2010 Rio Astamal – Hal. 52 sticker kaos jacket
  • 64. LUG STIKOM Surabaya Bab IV – File dan Array for ($i=0; $i<3; $i++) {   echo “$produk[$i] ”; } Hasil yang ditampilkan akan sama dengan output 1. b. Looping Array dengan while() // set variabel index ke 0 $i = 0; while ($i < 3) {    echo “$produk[$i] “;    $i++;   // increment $i } c. Looping Array dengan foreach() Nah, inilah saat yang tepat kita berkenalan dengan si foreach(). Looping ini memang khusus dirancang untuk digunakan dengan array. Jadi jika memungkinkan sebaiknya gunakan loop tipe ini dibanding yang lain jika mengakses array. Syntax dasar dari foreach adalah: foreach (ekspresi1 as [eskpresi2 => ] ekspresi3) {    // kode yang akan dieksekusi } dimana: • ekspresi1: variabel array yang akan dimanipulasi • ekpsresi2(opsional): variabel baru tempat menyimpan index array • ekspresi3: variabel baru penampung nilai dari elemen array Untuk menghasilkan output seperti output 1, maka penulisan foreach yang digunakan adalah: foreach ($produk as $prd) {   echo “$prd “; } Pada contoh diatas kita hanya menuliskan ekspresi1 dan ekspresi3. Penggunaan ekspresi2 dapat anda lihat pada contoh berikut: foreach ($produk as $index => $prd) {    echo “$index : $prd<br />”; } Output yang ditampilkan adalah: 4.2.5 Penerapan Teori Array Index Numerik Untuk contoh kali ini kita akan coba menampilkan isi dari faktur.txt tapi dengan tampilan yang lebih © 2008-2010 Rio Astamal – Hal. 53 0 : sticker 1 : kaos 2 : jacket
  • 65. LUG STIKOM Surabaya Bab IV – File dan Array baik. Tidak hanya sekedar isinya secara langsung. Ikuti langkah-langkag berikut: 1. Buka gedit(Linux) / Notepad++ (Windows) 2. Buat file baru didalam direktori htdocs/bab4 dengan nama faktur2.php 3. Ketik kode berikut: 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5. <title>Pembelian Online</title> 6. </head> 7. <body> 8. <h2>Data Faktur Pembelian</h2> 9. <table border="1" cellpadding="4"> 10. <tr style="background:#ccc"> 11. <th>No.</th> 12. <th>Jml Sticker</th> 13. <th>Total Sticker</th> 14. <th>Jml Kaos</th> 15. <th>Total Kaos</th> 16. <th>Jml Jacket</th> 17. <th>Total Jacket</th> 18. <th>Total</th> 19. <th>Diskon</th> 20. <th>Sub­Total</th> 21. </tr> 22. <?php 23. // pecah setiap baris menjadi array dengan fungsi file() 24. $baris = file('faktur.txt'); 25.  26. // baca array 27. $jumlah = count($baris);   // panjang array (baris) 28. for ($nomor=0; $nomor<$jumlah; $nomor++) { 29. echo "<tr>n"; 30. echo "<td>". ($nomor + 1) . "</td>n"; // karena dimulai dari 0 31.  32. // extract data pada setiap baris dengan separator '­#­' 33. $data = explode('­#­', $baris[$nomor]); 34. $jcolom = count($data);   // panjang array (kolom) 35. for ($kolom=0; $kolom<$jcolom; $kolom++) { 36. echo "<td>" . $data[$kolom] . "</td>n"; 37. } 38. echo "</tr>n"; 39. } 40. ?> 41. </table> 42. </body> 43. </html> 4. Simpan kembali file faktur2.php 5. Arahkan browser anda pada alamat http://localhost/webpro/bab4/faktur2.php 6. Hasilnya akan terlihat seperti gambar 4.3. © 2008-2010 Rio Astamal – Hal. 54
  • 66. LUG STIKOM Surabaya Bab IV – File dan Array TIPS: Anda dapat bereksperimen dengan perintah explode(), misalnya tidak menggunakan fungsi file untuk memecah baris melainkan dengan explode() dengan separator n. Gambar 4.3: Tampilan data faktur lebih baik dari sebelumnya 4.2.6 Array dengan Index String (Associative Array) Pada kasus tertentu penggunaan associative array lebih baik dibandingkan dengan array index numerik. Pada associative array, pengaksesan bukan dengan index angka melainkan string sesuai dengan keinginan kita. Sebagai contoh kita akan membuat sebuah array $produk seperti sebelumnya namun dengan associative array. → Cara 1 $produk = array( 'stc' => 'sticker', 'ks' => 'kaos', 'jkt' => 'jacket'); Pada contoh diatas kita memberi index pada sticker dengan stc, kaos dengan ks dan jacket dengan jkt. → Cara 2 $produk = array('stc' => 'sticker'); $produk = array('ks' => 'kaos'); $produk = array('jkt' => 'jacket'); → Cara 3 $produk['stc'] = 'sticker'; $produk['ks'] = 'kaos'; $produk['jkt'] = 'jacket'; 4.2.7 Mengakses Associative Array Sebenarnya pengaksesan associative array sama dengan array index numerik. Hal yang diperlukan tentu nama dari array dan nama index yang akan diakses. Perhatikan contoh berikut, output tampilan dibawah akan sama dengan output 1 pada bahasan sebelumnya. © 2008-2010 Rio Astamal – Hal. 55
  • 67. LUG STIKOM Surabaya Bab IV – File dan Array echo $produk['stc'] . ' ' . $produk['ks'] . ' ' . $produk['jkt']; atau echo “{$produk['stc']} {$produk['ks'} {$produk['jkt']}”; Jika akan mencetak associative array dalam suatu string maka gunakan tanda { } (kurung kurawal) sebagai pembungkus array. 4.2.8 Looping pada Associative Array Karena pada associative array tidak menggunakan angka sebagai index, maka kita tidak dapat menggunakan looping for pada array tipe ini. a. Looping dengan foreach() Associative array memang sangat cocok digunakan dengan loop foreach. Kesederhanaan syntax foreach membuat lebih mudah dibaca. foreach ($produk as $index => $prd) {    echo “$index :: $prd<br />”; } Output dari script diatas adalah sebagai berikut: Setelah keyword “as” index dari array bersifat optional artinya tidak perlu diikutkan juga tidak apa- apa. Lihat contoh berikut. foreach ($produk as $prd) {    echo “$prd<br />”; } Output dari potongan script kedua adalah: 4.3 Array Multidimensi Jangan langsung menganggap kata-kata “multidimensi” menyeramkan, anggap saja ini mainan saja biar otak kita gampang menerimanya. Secara sederhana array multidimensi dapat dianggap sebagai sebuah matriks yang memiliki baris dan kolom. Oleh karena itu kita dapat membuat array dengan ukuran 2-dimensi, 3-dimensi, sampai n-dimensi. 4.3.1 Array 2-Dimensi Bentuk array dua dimensi mirip dengan matriks atau pun suatu koordinat karena diperlukan dua inputan dalam mengakses isi array yaitu baris dan kolomnya. Kita akan tetap menggunakan contoh array sebelumnya dalam ilustrasi berikut ini. © 2008-2010 Rio Astamal – Hal. 56 stc :: sticker ks :: kaos jkt :: jacket sticker kaos jacket
  • 68. LUG STIKOM Surabaya Bab IV – File dan Array Kode Nama Barang Harga STC Sticker 7500 KOS Kaos 35000 JKT Jaket 55000 Jika kita konversi dalam bentuk array dua dimensi maka salah satu bentuk array tersebut akan seperti ini: $produk = array(                 array('STC', 'Sticker', 7500),                 array('KOS', 'Kaos', 35000),                 array('JKT', 'Jaket', 55000)           ); Untuk mengakses array 2-dimensi juga tidak berbeda dengan array berdimensi satu. Hanya saja kita perlu mensupai tambahan yaitu kolom mana yang ingin diakses. Baris paling awal indexnya adalah 0 dan kolom paling kiri indexnya adalah 0. Untuk mengakses array tersebut secara manual dapat dilakukan seperti berikut. echo $produk[0][0].'#'.$produk[0][1].'#'.$produk[0][2].'#<br/>'; echo $produk[1][0].'#'.$produk[1][1].'#'.$produk[1][2].'#<br/>'; echo $produk[2][0].'#'.$produk[2][1].'#'.$produk[2][2].'#<br/>'; Output dari kode diatas adalah: Atau menggunakan looping seperti berikut: for ($i=0; $i<3; $i++) {   for ($j=0; $j<3; $j++) {     echo $produk[$i][$j] . '#';   }   echo '<br/>'; } Pada contoh diatas kita berasumsi bahwa banyak array dari $produk bersifat statik yaiu 3. Jadi kita melakukan loop sebanyak 3 kali dimulai dengan index 0, 1, dan 2. Alternatif yang menurut penulis lebih baik adalah penggunaan associative array pada array $produk diatas. Lihat contoh dibawah. $produk = array(array('kode' => 'STC',      'nama_barang' => 'Sticker',      'harga' => 7500),     array('kode' => 'KOS',      'nama_barang' => 'Kaos',      'harga' => 35000),     array('kode' => 'JKT',      'nama_barang' => 'Jaket',      'harga' => 55000), © 2008-2010 Rio Astamal – Hal. 57 PRODUK ATRIBUT PRODUK STC#Sticker#7500# KOS#Kaos#35000# JKT#Jaket#55000#
  • 69. LUG STIKOM Surabaya Bab IV – File dan Array ); Untuk mengakses array diatas sama dengan cara mengakses array pada index numerik. Contoh, untuk menampilkan harga dari Sticker maka penulisannya $produk[0]['harga']. Berikut ini contoh pengaksesan menggunakan foreach untuk mendapatkan output yang sama seperti sebelumnya. foreach ($produk as $p) {   echo $produk['kode'].'#'.$produk['nama_barang'].$produk['harga'].'#<br/>'; } TIPS: Penggunaan tipe array index numerik atau string (associative array) sangat bergantung pada situasi. Namun associative relatif lebih mudah digunakan dibanding index numerik. 4.3.2 Array 3-Dimensi Jika pada contoh array 2-dimensi diatas array $produk terdiri dari produk dan attributnya pada array 3-dimensi kita dapat tambahkan sebuah layer tambahan. Untuk memperjelas lihat ilustrasi di bawah ini. Bentuk array dari ilustrasi diatas dapat kita tulis sebagai berikut: $produk = array( 'small' => array(array('kode' => 'STC01', 'nama_barang' => 'Sticker', 'harga' => 7500),   array('kode' => 'KOS01',   'nama_barang' => 'Kaos',   'harga' => 35000),   array('kode' => 'JKT01',   'nama_barang' => 'Jaket',   'harga' => 55000) ), 'medium' => array(array('kode' => 'STC02', 'nama_barang' => 'Sticker', 'harga' => 8000),   array('kode' => 'KOS02',   'nama_barang' => 'Kaos',   'harga' => 40000), © 2008-2010 Rio Astamal – Hal. 58 KODE Nama Barang Harga STC01 KOS01 JKT01 LARGE Stiker Kaos Kaos 7500 35000 55000 KODE Nama Barang Harga STC01 KOS01 JKT01 MEDIUM Stiker Kaos Kaos 7500 35000 55000 KODE Nama Barang Harga STC01 KOS01 JKT01 SMALL Stiker Kaos Kaos 7500 35000 55000
  • 70. LUG STIKOM Surabaya Bab IV – File dan Array   array('kode' => 'JKT02',   'nama_barang' => 'Jaket',   'harga' => 60000) ), 'large' => array(array('kode' => 'STC03', 'nama_barang' => 'Sticker', 'harga' => 8500),   array('kode' => 'KOS03',   'nama_barang' => 'Kaos',   'harga' => 45000),   array('kode' => 'JKT03',   'nama_barang' => 'Jaket',   'harga' => 65000) ) ); foreach ($produk as $kategori => $prod) {   echo "Kategori: $kategori";   echo "<br/>===============================<br/>";   foreach ($prod as $item) {     echo $item['kode'].'#'.$item['nama_barang'].'#'.$item['harga'].'<br/>';     echo '­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<br/>';   }   echo '<br/>'; } Output dari kode diatas adalah sebagai berikut: Kategori: small =============================== STC01#Sticker#7500 ----------------------------------- KOS01#Kaos#35000 ----------------------------------- JKT01#Jaket#55000 ----------------------------------- Kategori: medium =============================== STC02#Sticker#8000 ----------------------------------- KOS02#Kaos#40000 ----------------------------------- JKT02#Jaket#60000 ----------------------------------- Kategori: large =============================== STC03#Sticker#8500 ----------------------------------- KOS03#Kaos#45000 ----------------------------------- JKT03#Jaket#65000 ----------------------------------- Dari ilustrasi diatas dapat dilihat bahwa sesungguhnya pembuatan array tidak terbatas pada 3- dimensi saja melainkan sampai n-dimensi. Namun pada banyak kasus jumlah dimensi 3 sudah cukup menyelesaikan permasalahan yang dihadapi. © 2008-2010 Rio Astamal – Hal. 59
  • 71. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi Bab V Contoh-contoh Aplikasi Pada bab ini kita akan mencoba untuk membuat beberapa aplikasi sederhana sesuai dengan materi yang telah ada pada bab-bab sebelumnya. Aplikasi-aplikasi yang akan kita buat antara lain: • Simple Contact Form • Simple Guestbook • Simple Poll 5.1 Pre-Requirements Sebelum memulai project pastikan anda sudah membuat sebuah folder bab5 pada folder htdocs/webpro/. Didalam folder bab5 buat tiga folder diantaranya: simple-contact-form, simple- guest-book, dan simple-poll. Sehingga susunan akhir dari folder yang ada pada htdocs/webpro/bab5 terlihat seperti berikut: • htdocs/webpro/bab5/simple-contact-form • htdocs/webpro/bab5/simple-guestbook • htdocs/webpro/bab5/simple-poll Bagi yang menggunakan sistem operasi Linux/*NIX chmod folder-folder tersebut ke 0777 untuk menghindari masalah permission. 5.2 Simple Contact Form Simple Contact Form adalah sebuah aplikasi sederhana dimana fungsi utamanya adalah untuk mengirimkan email kepada admin dari sebuah form kontak yang tersedia. File-file yang akan kita buat adalah: Direktori: htdocs/webpro/bab5/simple-contact-form Nama File Fungsi form.html Antar muka form kontak berupa HTML murni process.php Memproses form kontak dan mengirimkan email ke admin. OK, langsung saja kita mulai project ini. 1. Buka teks editor favorit anda 2. Buat file baru lalu Save dengan nama form.html 3. Lanjutkan dengan menyalin kode berikut 1. <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  3. <html xmlns="http://www.w3.org/TR/xhtml1">  4. <head> 5. <title>Simple Contact Form</title> 6. </head> 7. <body> 8. <h3>Simple Contact Form</h3><hr /> © 2008-2010 Rio Astamal – Hal. 60
  • 72. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 9. <form action="process.php" method="post"> 10. <label>Nama Lengkap</label><br/> 11. <input type="text" name="nama" size="20" /><br/> 12. <label>Email</label><br/> 13. <input type="text" name="email" size="20" /><br/> 14. <label>Pesan<label><br/> 15. <textarea name="pesan" cols="60" rows="10"></textarea><br/> 16. <input type="submit" name="submit" value="PROSES" /> 17. </form> 18. </body> 19. </html> 4. Simpan kembali file tersebut. 5. Buat file baru lali Save dengan nama process.php 6. Salin kode dibawah ini. (Ganti contact@localhost.org sesuai dengan account pada mail server local anda) 1. <?php 2. 3. // ambil data dari form 4. $nama = $_POST['nama']; 5. $email = $_POST['email']; 6. $pesan = $_POST['pesan']; 7. 8. // check apakah semua fieald terisi 9. if (empty($nama) || empty($email) || empty($pesan)) { 10. exit('ERROR: Mohon isi semua field.'); 11. } 12. 13. // check format email 14. // (ini hanya pengecekan sederhana tidak menjamin 100% email valid) 15. 16. // apakah terdapat karakter '@' ? 17. if (strpos($email, '@') === FALSE) { 18. // kita menggunakan operator === karena ada kemungkinan 19. // strpos mengembalikan nilai 0 dan itu berarti karakter ada 20. exit ('Error: Format email tidak valid.'); 21. } 22. 23. // apakah terdapat karakter '.' ? 24. if (strpos($email, '.') === FALSE) { 25. exit ('Error: Format email tidak valid.'); 26. } 27. 28. // check apakah pesan terlalu pendek ? kurang dari 30 karakter 29. if (strlen($pesan) < 30) { 30. exit ('Error: Sepertinya pesan anda terlalu pendek.'); 31. } 32. 33. // jika sampai disini semua OK, maka kirim email ke admin 34. $admin_email = 'contact@localhost.org'; 35. $subject = 'Pesan dari Contact Form'; 36. // header tambahan untuk mail server 37. $from = "From: $nama<$email>"; 38. 39. mail($admin_email, $subject, $pesan, $from); 40. 41. echo ("$nama,<br/><br/>Pesan telah terkirim ke admin. Terima Kasih"); 42. 43. ?> © 2008-2010 Rio Astamal – Hal. 61
  • 73. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 7. Simpan kembali file process.php 8. Buka browser anda dan arahkan ke http://localhost/webpro/bab5/simple-contact- form/form.html 9. Coba masukkan nama, email, dan pesan anda lalu tekan “PROSES” 10. Buka email client anda (Outlook Express, Claws Mail, atau yang lain) untuk mengetahui apakah email sudah masuk di inbox atau belum. Gambar 5.1: Form Kontak Gambar 5.2: Pesan masuk ke inbox admin 5.2.1 Penjelasan Script Simple Contact Form Pada script process.php ada beberapa fungsi baru yang kita gunakan. Berikut ini adalah penjelasan singkat dari fungsi-fungsi tersebut. © 2008-2010 Rio Astamal – Hal. 62
  • 74. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi Fungsi strlen(string) Fungsi ini untuk menghitung jumlah karakter yang ada pada suatu string. Pada script process.php kita gunakan fungsi ini untuk menghitung julah karakter pada variabel $pesan. Fungsi strpos(string_subject, string_dicari [, integer offset]) Fungsi strpos akan mengembalikan nilai boolean TRUE/FALSE jika string yang dicari ada pada string subject. Mengapa pada script kita menggunakan operator === bukan == ? Karena ada kemungkinan string yang kita cari berada pada offset/index ke 0. Sedangkan pada PHP 0 juga dianggap sebagai FALSE. Jadi perbandingan yang kita lakukan harus identik (===) benar-benar bertipe boolean. Fungsi mail(string_tujuan, string_subject, string_body [, string_header]) Fungsi mail() digunakan untuk mengirim email ke suatu alamat email tertentu. Pada contoh sebelumnya kita mengirimkan email ke contact@localhost.org dimana itu merupakan email dari admin. Parameter ke-empat berupa header tambahan yang akan ditambahkan oleh mail server kita email kita dikirim. Kita menambahkan header From: untuk memudahkan admin dalam mereply secara langsung email yang masuk ke-inboxnya. 5.3 Simple Guestbook Simple Guestbook adalah sebuah aplikasi sederhana dimana user dapat meninggalkan komentar pada halaman website yang kita buat. Beberapa fitur yang akan digunakan pada guestbook ini diantarnya: • User dapat memberikan komentar dengan memasukkan nama, email, website, dan komentarnya. • Daftar komenter disusun secara descending berdasarkan waktu, jadi komentar terakhir akan berada paling atas. File-file yang akan kita buat adalah sebagai berikut. Direktori: htdocs/webpro/bab5/simple-guestbook Nama File Fungsi guestbook.php Antar muka form serta menampilkan daftar komentar yang telah ada. process-gb.php Memproses form guestbook. functions.php Berisi fungsi-fungsi yang digunakan dalam memproses data. Saatnya untuk memulai ritual coding. 1. Buka text editor lalu buat dokumen baru 2. Save dengan nama guestbook.php 3. Salin code berikut ini. 1. <?php 2. 3. // panggil file functions.php 4. include_once('functions.php'); 5. $total_comment = total_comment(); © 2008-2010 Rio Astamal – Hal. 63
  • 75. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 6. 7. ?><!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  8. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  9. <html xmlns="http://www.w3.org/TR/xhtml1">  10. <head> 11. <title>Simple Guestbook</title> 12. <style type="text/css"> 13. body { 14. padding: 0; 15. margin: 0 0 0 4px; 16. font­family: Verdana, Arial, Monospace; 17. font­size: 11px; 18. } 19. div.comment { 20. margin­bottom: 6px; 21. width: 98%; 22. border: 1px solid #ccc; 23. border­top: none; 24. } 25. div.comment span.title { 26. padding: 4px; 27. border­bottom: 1px solid #ccc; 28. border­top: 1px solid #ccc; 29. text­align:right; 30. display:block; 31. background: #f1f1f1; 32. } 33. div.comment p { 34. padding: 4px 4px 8px 10px; 35. margin: 0; 36. } 37. h4 { 38. margin: 0; 39. } 40. </style> 41. </head> 42. <body> 43. <h3>Simple Guestbook</h3> 44. <form action="process­gb.php" method="post"> 45. <table border="0"> 46. <tr> 47. <td>Nama*</td> 48. <td><input type="text" name="nama" size="20" /></td> 49. </tr> 50. <tr> 51. <td>Email*</td> 52. <td><input type="text" name="email" size="20" /></td> 53. </tr> 54. <tr> 55. <td>Website</td> 56. <td><input type="text" name="website" size="20" /></td> 57. </tr> 58. <tr> 59. <td style="vertical­align:top">Pesan*</td> 60. <td><textarea name="pesan" cols="50" rows="4"></textarea> 61. </tr> 62. </table> 63. <input type="submit" name="submit" value="PROSES" /> 64. </form> © 2008-2010 Rio Astamal – Hal. 64
  • 76. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 65. <hr/> 66. <h4>Total Komentar: <?php echo ($total_comment); ?></h4> 67. <?php 68. if ($total_comment > 0) { 69. $content = file('gb.txt');   // baca file sebagai array of lines 70. foreach ($content as $baris) { 71. // split setiap field sesuai separator 72. $field = explode("#@#", $baris); 73. 74. $nama = display_name($field[1], $field[2], $field[3]); 75. $date = display_date($field[0]); 76. $pesan = display_mesg($field[4]); 77. 78. echo('<div class="comment">'); 79. echo('  <span class="title">'); 80. echo('    Written by ' . $nama . ' on ' . $date); 81. echo('  </span>'); 82. echo('  <p>' . $pesan . '</p>'); 83. echo("</div>n"); 84. } 85. } 86. ?> 87. </body> 88. </html> 4. Save kembali file tersebut. 5. Buat dokumen baru lalu save dengan nama process-gb.php 6. Kemudian salin code berikut. 1. <?php 2. 3. // ambil data dari form 4. $nama = trim($_POST['nama']); 5. $email = trim($_POST['email']); 6. $website = trim($_POST['website']); 7. $pesan = trim($_POST['pesan']); 8. 9. // ubah setiap baris baru menjadi '<br/>' 10. // agar setiap data baru tetap pada satu baris 11. $pesan = str_replace("rn", "<br/>", $pesan); 12. $now = time();   // waktu sekarang dalam UNIX Timestamp 13. 14. // separator untuk setiap field 15. $sep = '#@#'; 16. // nama file untuk menyimpan daftar komentar guestbook 17. $target = 'gb.txt'; 18. 19. // check apakah field yang diperlukan terisi 20. if (empty($nama) || empty($email) || empty($pesan)) { 21. exit('ERROR: Mohon isi field nama, email dan pesan.'); 22. } 23. 24. // susun format yang akan ditulis pada file 25. $content = $now.$sep.$nama.$sep.$email.$sep.$website.$sep.$pesan; 26. 27. // baca isi file lama 28. // tanda @ digunakan untuk menyembunyikan warning dari PHP karena pada waktu 29. // pertama kali file tersebut belum ada 30. $old_content = trim( @file_get_contents($target) ); 31. © 2008-2010 Rio Astamal – Hal. 65
  • 77. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 32. // tempatkan komentar terbaru pada baris paling atas 33. $content = $content . "n" . $old_content; 34. 35. // tulis file 36. file_put_contents($target, $content); 37. 38. // kembalikan ke halaman guestbook.php 39. header('Location: guestbook.php'); 40. ?> 7. Simpan kembali file process-gb.php 8. Lanjutkan dengan membuat file baru lalu save dengan nama functions.php 9. Salin code dibawah ini. 1. <?php 2. 3. /* 4. * Fungsi untuk menampilkan nama dari penulis komentar di guestbook. 5. * Format akhir yang diinginkan adalah: 6. * => Nama Penulis (alamat@email.nya) 7. * dimana Nama Penulis akan berupa link jika alamat web diisi. 8. *  9. * @param $nama ­ String nama penulis 10. * @param $email String email penulis 11. * @param $web ­ String alamat website penulis 12. * @return String 13. */ 14. function display_name($nama, $email, $web) { 15. if (empty($web)) { 16. return "$nama ($email)"; 17. } 18. 19. // apakah website diawali http:// ? 20. if (substr($web, 0, 7) != 'http://') { 21. $web = 'http://' . $web;   // tambahkan jika belum ada 22. } 23. 24. $link = '<a href="' . $web . '">' . $nama . '</a>'; 25. return "$link ($email)"; 26. } 27. 28. /* 29. * Fungsi untuk menampilkan tanggal yang berformat dd Mon, YYY HH:mm 30. * dari sebuah unix timestamp 31. *  32. * @param $timestamp ­ Integer UNIX Timestamp 33. * @return String 34. */ 35. function display_date($timestamp) { 36. return date('d M, Y H:i', $timestamp); 37. } 38. 39. /* 40. * Fungsi untuk menampilkan pesan yang ditulis, dimana fungsi ini akan  41. * mengubah simbol­simbol html agar tidak langsung dicetak melainkan 42. * menggantinya dengan special character. 43. *  44. * @param $pesan ­ String pesan 45. * @return String © 2008-2010 Rio Astamal – Hal. 66
  • 78. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 46. */ 47. function display_mesg($pesan) { 48. // ubah kembali <br/> ke "n" agar nantinya tidak ikut di convert ke  49. // special karakter 50. $pesan = str_replace("<br/>", "n", $pesan); 51. 52. // konvert HTML karakter seperti (<, >, ", etc) ke bentuk lain 53. $pesan = htmlentities($pesan); 54. 55. // convert balik "n"; 56. $pesan = nl2br($pesan); 57. 58. return $pesan; 59. } 60. 61. /*  62. * Fungsi untuk menghitung total komentar yang ada di guestbook. 63. *  64. * @param $file (Optional) ­ String nama file, default value: gb.txt 65. * @return integer 66. */ 67. function total_comment($file='gb.txt') { 68. // 1 baris = 1 komentar jadi kita hanya perlu menghitung jumlah baris 69. // fungsi file() membuka file sebagai array of lines 70. $baris = @file($file); 71. 72. if ($baris) { 73. return count($baris); 74. } 75. return 0; 76. } 77. 78. ?> 10. Simpan file tersebut. 11. Saatnya melakukan tes, arahkan browser anda ke alamat http://localhost/webpro/bab5/simple-guestbook/guestbook.php 12. Hasilnya akan terlihat seperti gambar 5.3 5.3.1 Penjelasan Script Simple Guestbook Cukup banyak yang harus dijelaskan karena banyak hal baru yang diterapkan pada aplikasi simple guestbook ini. Saran saya cukup sediakan beberapa butir aspirin jika kepala mulai terasa pusing :). Pada script telah banyak saya beri komentar jadi disini saya hanya menjelaskan sesuatu yang menurut saya penting. Fungsi file_get_contents(), file_put_contents(), dan file() Jika pada bab sebelumnya kita menulis atau membaca file menggunakan fungsi fopen maka disini sedikit berbeda. Untuk menulis file kita gunakan file_put_contents() sedangkan untuk membaca file digunakan fungsi file_get_contents() dan file(). Penggunaan fungsi-fungsi tersebut hanya untuk memudahkan kita saja dalam memanipulasi file. Pembuatan Sebuah Fungsi Hal yang paling menarik dari aplikasi ini adalah terletak pada file functions.php karena pada file ini kita membuat fungsi sendiri. Jika selama ini kita hanya menggunakan fungsi-fungsi bawaan PHP © 2008-2010 Rio Astamal – Hal. 67
  • 79. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi seperti strlen(), trim(), dll maka disini kita membuat sebuah fungsi sesuai dengan kebutuhan pada aplikasi kita. Gambar 5.3: Tampilan simple guestbook Pada PHP sebuah fungsi dapat mengembalikan sebuah nilai atau hanya mengeksekusi beberapa rutin perintah saja. Jika sebuah fungsi mengembalikan nilai itu ditandai dengan adanya keyword return pada body fungsi tersebut. Fungsi-fungsi yang kita buat sebelumnya, semuanya mengembalikan nilai baik itu berupa string atau integer. 5.3.2 Improvisasi Simple Guestbook Improvisasi yang dapat dilakukan pada aplikasi simple guestbook diantarnya: • Fasilitas filter bad words (Petunjuk: str_replace dan array) • Fasilitas block alamat IP (Petunjuk: IP didapatkan dari $_SERVER['REMOTE_ADDR']) • Fasilitas hapus komentar (Petunjuk: Admin perlu memasukkan password, gunakan file() hilangkan baris yang akan dihapus dari array, lalu tulis ulang) 5.4 Simple Poll Aplikasi terakhir yang akan kita buat adalah sebuah polling sangat sederhana. User dapat memilih salah satu kandidat yang tersedia pada polling atau melihat hasil sementara. Disini tidak ada batasan apakah user sudah pernah memilih atau tidak, namanya juga “sangat sederhana” :). Langsung saja ke file-file yang akan dibuat. © 2008-2010 Rio Astamal – Hal. 68
  • 80. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi Direktori: htdocs/webpro/bab5/simple-poll Nama File Fungsi poll.php Halaman untuk memilih dan menampilkan daftar polling config.php Berisi konfigurasi dan beberapa fungsi Seperti biasa “untaian-untaian” code menanti untuk diketik :). 1. Buka teks edit dan buat dokumen baru 2. Simpa dengan nama poll.php lalu salin kode berikut. 1. <?php 2. 3. $action = @$_GET['action']; 4. include_once('config.php'); 5. 6. // jika parameter action pada URL kosong maka set ke new_poll 7. if (!$action) { 8. $action = 'new_poll'; 9. } 10. 11. if ($action == 'choose') { 12. $pilihan = $_GET['pilihan']; 13. 14. // tambah nilai kandidat + 1 jika $pilihan sama dengan nama index array 15. foreach ($kandidat as $nama => $data) { 16. if ($pilihan == $nama) { 17. $kandidat[$nama]['suara'] += 1; 18. } 19. } 20. 21. // tulis ulang hasil polling 22. tulis_poll($kandidat); 23. 24. // kembalikan ke halaman polling 25. header('Location: poll.php?action=view'); 26. exit(); // keluar agar kode dibawah tidak dieksekusi 27. } 28. 29. ?><!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Transitional//EN"  30. "http://www.w3.org/TR/xhtml1/DTD/xhtml1­transitional.dtd">  31. <html xmlns="http://www.w3.org/TR/xhtml1">  32. <head> 33. <title>Simple Poll</title> 34. <style type="text/css"> 35. body { 36. margin: 0 0 0 10px; 37. padding:0; 38. font­family: Verdana, Arial, Monospace; 39. font­size: 11px; 40. } 41. #poll­wrapper { 42. width: 600px; 43. border: 1px solid #ccc; 44. padding: 4px; 45. } 46. #poll­wrapper div.bar { © 2008-2010 Rio Astamal – Hal. 69
  • 81. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 47. height: 20px; 48. display: block; 49. background: #9CE89C; 50. } 51. #poll­wrapper div.bar span { 52. position:relative; 53. top: 2px; 54. margin­left: 5px; 55. font­weight: bold; 56. } 57. </style> 58. </head> 59. <body> 60. <?php if ($action == 'new_poll'): ?> 61. <h2>Pemilihan Lurah Kedung Baruk</h2> 62. <?php foreach ($kandidat as $nama => $suara) : ?> 63. <p><?php echo ($nama); ?>  64. <a href="poll.php?action=choose&pilihan=<?php echo($nama);?>">Pilih 65. </a> 66. </p> 67. <?php endforeach; ?> 68. 69. <p><a href="poll.php?action=view">Lihat Hasil Sementara</a></p> 70. 71. <?php elseif ($action == 'view'): ?> 72. 73. <h2>Hasil Polling</h2> 74. <div id="poll­wrapper"> 75. <?php foreach ($kandidat as $nama => $data) :  76. $persen = persen($data['suara'], $total_suara); 77. ?> 78. <div class="bar" style="width:<?php echo ($persen);?>%;background:<? php echo ($data['warna']);?>"> 79. <span><?php echo ("$persen");?>%</span> 80. </div> 81. <span><?php echo ("$nama ({$data['suara']} Suara)");?></span> 82. <?php endforeach; ?> 83. </div> 84. <p><strong>Total Suara: <?php echo ($total_suara);?></strong></p> 85. <p><a href="poll.php">Kembali ke Polling</a></p> 86. <?php endif; ?> 87. </body> 88. </html> 3. Simpan kembali file poll.php 4. Buat dokumen baru, lalu simpan dengan nama config.php 5. Salin code dibawah ini. 1. <?php 2. 3. // setting default daftar kandidat untuk peserta polling 4. $kandidat['Pak Kartimen'] = array('suara' => 0, 'warna' => '#90EE90'); 5. $kandidat['Pak Paijo'] = array('suara' => 0, 'warna' => '#FF8197'); 6. $kandidat['Pak Supeno'] = array('suara' => 0, 'warna' => '#ADD8E6'); 7. 8. // cek apakah file data­poll.txt ada atau tidak, jika tidak maka 9. // buat baru dengan default nilai 0 untuk setiap kandidat 10. $target = 'data­poll.txt'; 11. if (!file_exists($target)) { © 2008-2010 Rio Astamal – Hal. 70
  • 82. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 12. tulis_poll($kandidat); 13. } else { 14. // jika sudah ada maka update nilai dari array $kandidat 15. $content = file($target); 16. foreach ($content as $baris) { 17. // split kandidat dan suaranya 18. $data = explode('|', $baris); 19. // update nilai 20. $kandidat[$data[0]] = array( 21. 'suara' => (int)$data[1], 22. 'warna' => trim($data[2]) 23. ); 24. } 25. } 26. 27. // menghitung total suara 28. $total_suara = 0; 29. foreach ($kandidat as $data) { 30. $total_suara += $data['suara']; 31. } 32. 33. /* 34. * Fungsi untuk menulis data polling ke file 35. *  36. * @param $poll ­ Array data polling 37. * @param $file (optional) ­ String nama file target 38. * @return void 39. */ 40. function tulis_poll($poll, $file='data­poll.txt') { 41. // file tidak ada maka buat baru 42. $content = ''; 43. foreach ($poll as $nama => $data) { 44. $content .= "$nama|{$data['suara']}|{$data['warna']}n"; 45. } 46. $content = trim($content); // strip whitespace di awal dan akhir 47. file_put_contents($file, $content); 48. } 49. 50. /* 51. * Fungsi untuk menentukan jumlah persen yang diperoleh dari setiap data yang 52. * di­poll 53. *  54. * @param $suara_didapat ­ Integer banyaknya suara yang didapat oleh suatu  item 55. * @param $total_suara ­ Integer total suara dalam polling 56. * @return integer 57. */ 58. function persen($suara_didapat, $total_suara) { 59. if ($total_suara == 0) { 60. return 0; 61. } 62. return round( ($suara_didapat / $total_suara) * 100 ); 63. } 64. 65. ?> 6. Simpan kembali file tersebut. 7. Arahkan browser anda alamat http://localhost/webpro/bab5/simple-poll 8. Pilih salah satu kandidat yang ingin anda pilih © 2008-2010 Rio Astamal – Hal. 71
  • 83. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi 9. Ulangi beberapa kali untuk melihat hasil yang lebih nyata. 10. Output dari aplikasi ini akan terlihat kurang lebih seperti gambar 5.4 dan 5.5 Gambar 5.4: Pemilihan Kandidat Gambar 5.5: Hasil Polling 5.4.1 Penjelasan Script Simple Poll Hal baru yang kita dapatkan pada aplikasi simple poll adalah penggunaan global variabel $_GET. Jika sebelumnya anda hanya mengenal variabel global $_POST maka pada aplikasi ini kita memanfaatkan $_GET untuk membuat multiview file (satu file banyak tampilan). Nilai dari variabel $_GET adalah array dari query string pada URL. Lihat contoh dibawah. http://localhost/webpro/bab5/simple-poll/poll.php?action=choose&pilihan=X Untuk mengambil nilai dari parameter action dan pilihan kita dapat menggunakan variabel $_GET sebagai berikut: © 2008-2010 Rio Astamal – Hal. 72
  • 84. LUG STIKOM Surabaya Bab V – Contoh-contoh Aplikasi $action = $_GET['action']; $pilihan = $_GET['pilihan']; Jadi dapat disimpulkan bahwa passing parameter yang tidak terlalu kompleks dan sensitif antar halaman akan lebih mudah menggunakan global variabel $_GET dibandingkan dengan $_POST. © 2008-2010 Rio Astamal – Hal. 73
  • 85. LUG STIKOM Surabaya Daftar Pustaka Daftar Pustaka Achour, Mehdi., Contributors. (2010). PHP Manual. USA: The PHP Documentation Group. Welling, Luke., Thomson, Laura. (2005). PHP and MySQL Web Development Third Edition. Indianapolis: Sams Publishing. © 2008-2010 Rio Astamal – Hal. 74
  • 86. LUG STIKOM Surabaya Hall of Fame 2010 AZWAR ZAINURI MIRZA EKA ARIEF WICAKSONO IRIANTO BUNGA MITFAH FARIDL EKO KURNIAWAN RIO ASTAMAL ELVIN ALMUTTAKIN SEMOGA SELALU KOMPAK!