MODULI
PENGANTARWEBPROGRAMMING
Perkembangan teknologi Informasi (IT) demikian pesat, sehingga terjadi konvergensi antara
Teknologi Telekomunikasi dan Teknologi Komputer. Sehingga terjadi pergeseran fungsi dan
perluasanaplikasiberbasisKomputer.Padaawalnyaaplikasiyangdibangunbersifatstandalone
pada sebuah komputer. Dengan adanya Jaringan Komputer maka muncul aplikasi berbasis
Jaringan.Sehinggadimungkinkansatuaplikasidapatdiaksesolehbanyakkomputer.Olehsebab
itu,perkembanganselanjutnyaterdapataplikasiMultiTier,dimanaterdapatsatuServeryang
melayanipermintaanbanyakclient.Sehinggaterdapataplikasi Serverside danAplikasi Client
Side. Terdapatperbedaankebutuhanantarakeduanya,sehinggadalampenerapannyaperlu
adanya pertimbangan antara kebutuhan sistem dengan ketersediaan perangkat. Dalam hal
tertentu dapat dipilih aplikasi Clientside jika Komputer Client mendukung untuk itu, dan
sebaliknyadalamkondisiyanglaindimanahanyaterdapatsatukomputerdenganspesifikasi
yanglebihbaik,makaServerSidebisajadipilihan.
A.KonsepMultiTierApplication
Aplikasiinternetberbasisweb,yangakankitakembangkandalam pelatihanini,adalahsalah
satupenerapanmultitierapplication.Multitierapplicationadalahaplikasiyangdibagimenjadi
beberapabagianyangmenjalankanfungsimasingmasing.Secaraumum,adatigabagianutama
darimultitierapplication:
Clientsidepresentation
Serversidebusinesslogic
Backendstorage
ClientSidePresentation
Clientsidepresentationmengaturbagaimanaaplikasiberinteraksidenganuser.Yangdimaksud
denganinteraksiantaralainadalah:bagaimanadataditampilkan,bagaimanafungsidanfitur
aplikasiditampilkan.Dalamaplikasiberbasisweb,clientsidepresentationdibuatdenganbahasa
HTML,CSS,FlashdanJavaScript.Beberapatoolyangdigunakanuntukmembuatclientside
presentationdiantaranyaMicrosoftFrontpage,MacromediaDreamweaver,dansebagainyayang
Author:SuyatnoBudiharjoHalaman:1Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
disebutdengantoolWYSIWYG<WhatYouSeeIsWhatYouGet>karenaterdapatkesamaan
antara apa yang kita lihat dengan apa yang kita dapat. Hanya saja, karena program akan
dieksekusipadakomputerclientatauuser,makahasilnyaakanberbedaantarausersatudengan
useryanglainuntukkonfigurasiyangberbeda(Javascriptenable,flashplugin)
ServerSideBusinessLogic
Serversidebusinesslogic,seringdisebutjugamiddletier,adalahbagianyangbertanggung
jawabatascarakerjaaplikasi.Didalamnyakitamengaturbagaimanafungsidanfituraplikasi
dapatbekerjadenganbaik.Dalamaplikasiberbasisweb,adabeberapaalternatifyangdapat
digunakan,ditentukanolehjenisplatiformyangdigunakan.Alternatifiniakandijelaskanlebih
detailpadabagianselanjutnya.DalamaplikasiServersidediperlukanWebserveryangakan
melayanipermintaanakseswebolehclient,mengeksekusiprogramdiServerdanmengirimkan
hasilnyadalambentuk*.html.KelebihanaplikasiserversidetidaktergantungkondisiKomputer
Client
BackEndStorage
Bagianinimengaturcarapenyimpanandata.Penyimpanandatamerupakanmateriyangcukup
kompleks dalam pembangunan aplikasi. Karena kecepatan, keutuhan, dan keamanan data
merupakanfaktorkritisdalamaplikasi.Adabanyaksolusidatabaseyangtersediadipasaran.
Padaumumnya,databaseyangdigunakanbertiperelasional(RelationalDatabaseManagement
System RDBMS). Manajemen data dilakukan dengan bahasa SQL (Structured Query
Language).DenganManajemenDataSQL,dimungkinkanuntukmelakukanbackupdatasecara
otomatisdanberkala.
B.PerbedaanWebBasedProgrammingdenganDesktopSystemProgramming
Pembuatan aplikasi berbasis web berbeda dengan pembuatan aplikasi berbasis windows
(Disktop programming), misalnya Visual Basic, Delphi, atau KDevelop. Dalam visual
programming, kita meningkatkan kecepatan dan kinerja aplikasi dengan mengoptimasi
penggunaan memori, manajemen proses, dan pengaturan InputOutput. Pada pemrograman
berbasisweb,faktoryangmenentukankinerjaaplikasiadalahkecepatanaksesdatabasedan
kecepatanaksesjaringandaninternet.Perbedaankedua,adalahcaraaplikasiberjalan.Pada
aplikasi visual, aplikasi dibangun dengan menggunakan tool tertentu, kemudian dikompilasi.
Hasilnya dapat langsung digunakan dalam komputer. Aplikasi berbasis web tidak dapat
Author:SuyatnoBudiharjoHalaman:2Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
dijalankanlangsungdikomputer.Untukmenjalankannya,dibutuhkanenginetertentu,dalamhal
iniwebserver.
C.TeknologiAlternatif
TeknologiserversideyangakankitapelajaripadamoduliniadalahPHP.Walaupundemikian,
perludiketahuiteknologialternatifyangdapatmenjadibahanpertimbangan.
CGI(CommonGatewayInsterface)Script
CGIScriptdapatdibuatdenganberbagaibahasapemrograman,misalnyaPerlatauPhyton.
Teknologiinipernahsangatpopulerdimasaawalberkembangnyawebbasedapplication.Tetapi
saatinibanyakditinggalkanorangkarenatidakefisien,tidakfleksibel,dankeamanannyarendah.
ProprietaryAPI
Teknologiiniadalahbahasapemrogramanyangdisediakanmasingmasingwebserver,misalnya
ISAPIatauNSAPI.Teknologiinimemilikikelemahan,yaituhanyadapatberjalandiwebserver
tertentu,sehinggamengurangiportabilitasdanfleksibilitas.
ASP<ActiveServerPage>
MerupakansolusiserversideprogrammingdariMicrosoft.Teknologiinibanyakdigunakanoleh
paraprogrammeryangberlatarbelakangVisualBasic.DatabasepasangannyaadalahMSSQL
Server. Operating system pasangannya adalah Window 2000 Server yang menjalankan
webserverMicrosoftIIS.
JavaServlet/JSP
Teknologi server side Java. Mempunyai banyak keunggulan dan kemudahan pemrograman.
Tetapikarenamurniberorientasiobjek,banyakprogrammerpemulakesulitanmenggunakannya.
Selain itu, Java juga adalah bahasa pemrograman yang relatif rumit bagi pemula.
Keunggulannya,sangatportabel.DapatdipindahkandenganmudahdariWindowskeUnixdan
sebaliknya.
ColdFusion
BahasapemrogramaninimiripdenganHTML,menggunakantaguntukmembentukblokblok
programnya.
Author:SuyatnoBudiharjoHalaman:3Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
PHP
BanyakdigunakanolehprogrammerberlatarbelakangC/C++karenakemiripansyntaxnya.Open
source, karenanya gratis dan bebas. Database pasangannya biasanya MySQL, dijalankan
bersamawebserverApachediatasoperatingsystemLinux.Semuanyagratisdanbebas.
WebStatisdanDinamis
DenganadanyasekianbanyakpilihanbahasapemrogramanWeb,makaterdapatbeberapajenis
web,yangdikelompokkanberdasarkansifatWebyaituWebStatisdanWebDinamis.
Webstatiskarenasifathalamanwebyangrelatftetap,tidakadadinamikaperubahanyang
mendasar,danuntukmengubahnyadilakukandenganmengubahscriptprogramdidalamnya
sertatidakterhubungdengandatabase.
Sedangkan Web dinamis, karena terdapat perubahanperubahan sesuai dengan perubahan
database, karena Web jenis ini terkoneksi dengan database, sehingga untuk melakukan
perubahantampilantidakperlumerubahscriptprogram,cukupdenganmelakukanperubahanisi
database.
Dari sekian banyak bahasa pemrograman Web, PHP dapat melakukan koneksi dengan
database,yangtidakdapatdilakukandenganbahasapemrogramanwebsepertiHTML.
TextEditor
Dalam hal tertentu programer akan lebih suka menggunakan editor teks ketimbang
menggunakantoolWYSIWYG.Karenatoolprogrammingvisualtersebutcenderungborosdan
tidakrapidalamscript.DenganEditorTeksandaakanlebihfokus,lebihrapidenganlebihsedikit
script.Terdapatsekian banyakEditor tekssepertiNotepad,Wordpad,PHPEdit,Kedit,Kate,
Emacdansebagainya.
InstalasiSoftware
Sebagaimana telah diketahui bahwa pemrograman Web, memerlukan wadah untuk dapat
dieksekusiolehClient.OlehsebabitudiperlukanuntukprosesinstalasiSoftwaresoftwareyang
terkaitdenganaplikasiWeb,yaitu:
Author:SuyatnoBudiharjoHalaman:4Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
1. WebServer:Apache,Xitami,Wamp
2. DatabaseServer:MySQL
3. Modulmodul:PHP,PHPMySQL
UntukOSWindows:
Instalasi PHP dapat dilakukan dengan cara terpisah, dengan aplikasi yang lain atau dapat
dilakukansecarabersamaandenganpaketaplikasiyanglainsepertiyangadapadaPHPTriad
dimanaPHPTriadmenggabungkanpaketaplikasiWebServerdalamhaliniApache,ModulPHP,
danDatabaseServer(MySQL)dalamsatupaket.Sehinggaprosesinstalasinyacukupmudah
denganklikgandainstallerPHPTriad.
UntukInstalasisecaraterpisah,makadilakukaninstalasiperpaketsepertiyangadapadasaat
InstalasidenganWebServerXitami,makalangkahinstalasinya:
1. InstalasiPaketPHP
2. InstalasiPaketMySQL
3. InstalasiXitami
Instalasi ketiga paket di atas, dapat dilakukan dengan mudah, karena cukup klik ganda file
installer dengan ekstensi *.exe dan selanjutnya tinggal mengikuti prosesnya. Cukup mudah
sepanjangkitacukupfamiliardenganbahasaInggris.
KonfigurasiWeb:
Untuk paketpaket Web server telah tersedia didalam CD Installernya, sehingga kita tinggal
memilihpaketpakettersebutpadasaatInstalasiOS.Kalaupunbelumterinstalasi,makakitapun
dapatmenambahkansendiribaikdalammodeteksmaupunmodegrafis.
UntukmodeteksdapatdilakukandenganmenggunakanConsole,Shell,atauterminalpadaOS
Author:SuyatnoBudiharjoHalaman:5Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Linuxtentumenggunakanuserrootuntukdapatmelakukaninstalasidimanapaketpaketyang
maudiinstalasidalamformat*.rpm(RedhatPacketManager)sepertiberikut:
[root@www~]#rpmivhhttpd2.0.529.ent.i386.rpm
root@www~]#rpmivhphp4.3.93.1i386.rpm
root@www~]#rpmivhphpmysql4.3.93.1i386.rpm
[root@www~]#rpmivhmysql*.rpm
Paketpaketdiatas,barupaketutamanya,danmasihdiperlukanbeberapapaketyanglainnya.
Untuk melihat paketpaket mysql selengkapnya yang telah diinstal dapat menggunakan
perintahsebagaiberikut:
[root@www~]#rpmqa|grepmysql
mysqlclient103.23.584.RHEL4.1
mysqlserver4.1.74.RHEL4.1
phpmysql4.3.93.1
Catatan:
Paket untuk Redhat Enterprise Linux (RHEL), dan akan berbeda untuk distro Linux yang
lainnya.Danaplikasinyacukupbanyaktentuagakmenyulitkanbagipemula,sehinggaalangkah
baiknyajikamenggunakanmodegrafisuntukinstalasipakettersebut.
Untukmodegrafisdapatdilakukandengancarasebagaiberikut:
Author:SuyatnoBudiharjoHalaman:6Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Langkahpertama,sorotmenuAdd/RemoveApplicationsepertigambarpertamadiatas,anda
akanmasukkehalamansepertiyangditunjukkangambarkedua,kemudianpilihbagianserver,
kemudianklikServerWeb,sehinggadiperolehhalamansepertigambar3.Untukselanjutnya
andatinggalmemilihpaketaplikaiyangakandiinstalasi.
KonfigurasiWeb
SetelahmengikutiModulini,pesertadiharapkanmampumenyiapkankebutuhansistemuntuk
menjalankan Web Server agar program Web yang telah dan akan dibuat dapat dijalankan,
sehinggadapatdilihathasilnya.
Mengetahuikonfigurasiuntukmeletakkanhalamanwebdandatapadadatabase.
Author:SuyatnoBudiharjoHalaman:7Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
MODULII
PEMROGRAMANWEBDENGANHTML
SebagaitahapawalbelajarpemrogramanWeb,tidakadasalahnyaandamempelajarihalhal
mendasar,sepertiscriptHTML,cukupmudahdansederhanatetapiinisangatmembantudalam
membuatprogramWebtahapselanjutnya.DalamhaliniscriptHTMLyangseringdigunakan
dalam pemrograman selanjutnya adalah format text, tabel, select, hyperlink, dan form. Jadi
meskipunadasekianbanyakscriptHTML,kitahanyafokuspadapembahasanitu,karenauntuk
scriptscriptyanglain,sifatnyahanyaasesorisataupemaniswebsajayangmungkinandadapat
pelajarisendirijikadiperlukan.
ApaituFileHTML?
HTMLsingkatandariHyperTextMarkupLanguage.SebuahfileHTMLadalahsebuahteksyang
berisi sejumlah kecil markup tags. Markup tags memberitahukan Browser Web bagaimana
menampilkanhalaman.FileHTMLharusmempunyaiekstensifile*.htmatau*.html.Sebuahfile
HTMLdapatdibuatmenggunakansebuaheditortekssederhana.
AndaInginMulaiMencobanya?
JikaandamenggunakanWindows,mulaidenganNotepad.JikaandamempunyaiMsFrontPage,
MacromediaDreamweaver,silakangunakan.
JikaandaberadadiUnix/Linux,gunakanKwrite/Kate/viatauQuanta.Ketiktekssebagai
berikut:
<html>
<head>
<title>Juduldarihalaman</title>
</head>
<body>
Iniadalahhalamanrumahsaya<br><b>Teksiniadalahhuruftebal</b>
</body>
</html>
Author:SuyatnoBudiharjoHalaman:8Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Simpanfilesebagaihalaman.html
Bukabrowserinternetanda:InternetExplorer,Mozilla,Opera,Netscape,Konqueror,danmasih
banyakyanglainnya.Pilih Open(atauOpen Page) dalam menu Filedaribrowser anda.
Sebuahkotakdialogakanmuncul,PilihBrowse(atauChooseFile)danlokasikanpadafile
HTMLyangandabuathalaman.htmlpilihfiletersebutdanklikOpen.Sekaranganda
seharusnya melihat alamat dalam kotak dialog, untuk contoh : /home/suy/Mata Kuliah/Mata
Kuliah/hmtl_programming/program/halaman.html. Jika tidak berarti anda menggunakan
Komputer yang berbeda dengan pada saat ditulis modul ini. Klik OK dan browser akan
menampilkanhalamanini.Tentupilihaniniakanberbedauntukbrowseryangberbeda,pada
prinsipnyaidentik.Sehinggaandaakanmendapatihasilsepertiberikut:
PenjelasanContoh
TagpertamadalamdokumenHTMLandaadalah<html>.Taginimemberitahukanbrowseranda
bahwainiadalahpermulaandaridokumenHTML.Tagterakhirdalamdokumenandaadalah
</html>.TaginimemberitahukanbrowserandabahwainiadalahakhirdaridokumenHTML.
Teks antara tag <head> dan tag </head> adalah informasi header. Informasi Header tidak
ditampilkandalamjendelabrowser.Berbedadengantag<title>Juduldarihalaman</title>yang
akanditampilkanpadapojokkiriatasjendelabrowser.
Teksantaratag<body>yangberartibadandariweb,dimanasemuainformasiakanditampilkan
disini.adakahteksyangakanditampilkandalambrowseranda.
Author:SuyatnoBudiharjoHalaman:9Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Teksantaratag<b>dan</b>akanditampilkandalamhuruftebal.
EkstensiHTMatauHTML?
KetikaandamenyimpanfileHTML,andadapatmenggunakanekstensi*.htmatau*.html.Penulis
telahmenggunakan*.htmdalamcontoh.Inimungkinkasusyangjelekketikabeberapasoftware
yangdigunakanbersamahanyamengijinkanekstensitigahuruf.Dengansoftwareyanglebih
barupenulisberpikirbahwainiakansecarasempurnaamanuntukmenggunakan*.html
CatatanpadaEditorHTML
AndadapatsecaramudahmengeditfileHTMLmenggunakaneditorWYSIWYG(WhatYouSee
IsWhatYouGet)sepertiFrontPage,dibandingkanpenulisantagmarkupandadalamfileteks
sederhana.
Tetapi jika anda ingin menjadi pengembang Web yang mahir, penulis sangat menyarankan
bahwa anda menggunakan editor teks sederhana untuk belajar HMTL utama. Seperti yang
penulisgunakanuntukmembuatfilesederhanadengangeditberikut:
ElemenHTML
DokumenHTMLadalahfileteksyangmengubahelemenHTML.ElemenHTMLdidefinisikan
menggunakantagHTML.
TagHTML
TagHTMLdigunakanuntukmngubahelemenHTML.TagHTMLdispitdenganduakarakter<
dan>.Karakterpengapitdisebutdengankurungsudut.TagHTMLnormalnyadigunakandalam
Author:SuyatnoBudiharjoHalaman:10Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
bentukpasanganseperti<b>dan</b>.Tagpertamadalampasanganadalahtagmulai,dantag
yangkeduaadalahtagakhir.Teksantaratagmulaidantagakhiradalahisielemen.TagHTML
menggunakankasusyangtidaksensitif,<b>berartisamadengan<B>.
ElemenHTML
IngatcontohHTMLdarihalamansebelumnya:
<html>
<head>
<title>Juduldarihalaman</title>
</head>
<body>
Iniadalahhalamanrumahsaya<br><b>Teksiniadalahhuruftebal</b>
</body>
</html>
iniadalahsebuahelemenHTML:
<b>Teksiniadalahhuruftebal</b>
ElemenHTMLdimulaidengansebuahtagmulai:<b>
KontendariElemenHTMLadalahTeksiniadalahhuruftebal
ElemenHTMLditutupdengantagakhir:</b>
AtributTag
Tagdapatmempunyaiatribut.Atributdapatmenyediakaninformasitambahantentangelemen
HTMLpadahalamananda.TaginimendefinisikanelemenbodydarihalamHTMLanda:<body>
Denganmenambahkanatributbgcolor,andadapatmenyampaikanpadabrowserbahwawarna
latar dari halaman anda warna merah, seperti ini : <body bgcolor=red>. Dalam hal ini
penggunakanwarnadapatdituliskandenganwarnayangakanditampilkansepanjangwarna
warnastandar(red,green,blue,white,black,whitesmoke,lightbluedll).Danuntukselanjutnya
warnayangandagunakandapatdituliskandengankodewarna,dimanaterdapat6digitHeksa
kodewarnayangdiawalidengantandapagar#.
Red
Green
Blue
00
00
00
Atauwarnahitam.Sampaidengan:
Red
Green
Blue
ff
ff
ff
Author:SuyatnoBudiharjoHalaman:11Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Atauwarnaputih
Untuk membuat warna latar dengan warna merah, dapat dilakukan dengan cara : <body
bgcolor=#ff0000>.Masihterdapatsekianbanyakatributbodylainnyasepertibackground,alink,
width,align,onloaddsb.
UntukelemenHTML<table>mempunyaiatribut:background,alink,width,align,width,border,
cellspacing,cellpading,height,styledanlainnya.
Contoh:
<html>
<head><TITLE>Contoh2</TITLE></head>
<bodybgcolor="#FFFFFF">
<divalign="center">InicontohWarnadenganBgColor="#FFFFFF"</div>
<tableborder="1"width="100%">
<TR><Th>Kolom1</Th><Th>Kolom2</Th></TR>
<TR><TD>Baris1Kolom1</TD><TD>Baris1Kolom2</TD></TR>
<TR><TD>Baris2Kolom1</TD><TD>Baris2Kolom2</TD></TR>
</table>
</body>
</html>
HasilyangdiperolehdariscriptHTMLdiatasadalahsepertigambarberikut:
Contoh:
MenuHariini:
<li>NasiGoreng</li>
<li><ahref="menu_rames.html">NasiRames</a></li>
Author:SuyatnoBudiharjoHalaman:12Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
<li>NasiUduk</li>
MenuMinuman:
<selectname="minuman">
<optionvalue="1">Anggur</option>
<optionvalue="2">EsTeler</option>
<optionvalue="3">EsDawet</option>
</select><br><br><br>
Akandiperolehtampilansebagaiberikut:
ElemenForm
ElemenFormdigunakanuntukmodeinteraktifdenganuser,sehinggauserdapatmelakukan
permintaanterhadapservertentanginformasiyangdiminta.Dalamhalinidigunakanelemen:
<form>Inputan</form>
Dalamhaliniparameterinputandapatberupa:text,password,select,radiobutton,checkbox
dansebagainya.
Contoh:
<formname="form1"method="POST"action="pemesanan.html">
NamaPemesan:<inputtype="text"name="nama"><br>
PasswordPemesan:<inputtype="password"name="kunci"><br>
JenisKelamin:<inputtype="radio"value="pria">Pria<inputtype="radio"value="wanita">Wanita<br>
Status:<inputtype="checkbox"checked="true">Duda<br><br>
MenuHariini:
MenuMinuman:
<selectname="minuman">
Author:SuyatnoBudiharjoHalaman:13Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
<optionvalue="1">Anggur</option>
<optionvalue="2">EsTeler</option>
<optionvalue="3">EsDawet</option>
</select><inputtype="submit"value="submit"><br><br><br>
</form>
Tampilanyangakandiperolehadalahsepertigambarberikut:
Hasilyangingindicapai:
1. DapatmembuathalamanWeblengkapdenganvariasielemenHTML
2. Dapatmenambahkanatributdarimasingmasingelemen.
3. MembuatFormPermintaan
Author:SuyatnoBudiharjoHalaman:14Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
MODULIII
PEMROGRAMANWEBDENGANPHP
PHPadalahbahasapemrogramanWebyangdikembangkanolehRasmusLerdfordpadatahun
1994.Sejaksaatitu,PHPberkembangmenjadibahasapemrogramanyangdigunakansecara
luas. Pada awalnya PHP memiliki singkatan Personal Home Page. Namun dalam
perkembangannyaPHPdibuatdandilengkapiolehbanyakpihak,sehinggasingkatannyalebih
tepatdenganPHPHypertextPreprocessor.
Sebagai sebuah bahasa serverside, PHP tidak memerlukan client untuk diinstal software
apapun,kecualiInternetBrowserkarenaketikasemuadatadiuraikanolehserverdandikirimkan
kembalidalambentukHTML.
Sebagai bahasa pemrograman Web Serverside hanya diperlukan Web Server disisi Server
untukmelayanipermintaaandatawebdariclient,sertaModulPHPagardapatmemahamidan
mengeksekusisetiapscriptPHPyangadadidalamnya.
MekanismeKerjadariPHP:
Browser
WebServer
PHP
Database Server
SistemkonektivitasServerClient
PHPmerupakanaplikasidalamsisiserver(serverside)dengankatalainbahwabebankerjaada
diserverbukandiclient(baca:browser).PadasaatbrowsermemintadokumenPHP,webserver
Author:SuyatnoBudiharjoHalaman:15Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
langsungmenggunakanmodulPHPuntukmengolahdokumentersebut.Jikapadadokumen
terkandungfungsiyangmengaksesdatabasemakamodulPHPmenghubungiDatabaseServer
yang bersangkutan. Dokumen yang berformat PHP dikembalikan Webserver dalam format
HTML,sehinggasourcecodePHPtidaktampakdisisibrowser.
TerdapatbeberapaWebServeryangtersedia,baiksecaraopensourcemaupunproprietary.
WebServertersebutadalah:
Apache:
Apache Web Server digunakan sebagai HTTP Web Server yang paling banyak digunakan.
Apacheadalahopensource,danbebasdikembangkanmenjaditoolyangserbaguna.Inidapat
dijalankandalamcakupanyangluasdarisistemoperasibaikUnix/LinuxmaupunWindows.
IIS:
InternetInformationService,adalahcontohServerWebyanglainnya,yangdikembangkandan
dipelihara oleh Microsoft. IIS sangat mudah digunakan dan dapat diupdate secara mudah,
sepanjang menggunakan Windows OS. Dalam tutorial ini, kita akan menggunakan Apache
sebagaiServerWebkarenafree.SelainIISterdapatjugaPWS(PersonalWebServer)
Xitami:
TermasukdalamkumpulanWebServeryangberjalandiatassistemOperasiWindows.Cukup
mudah dalam instalasi dan konfigurasi, sampai banyak dipakai oleh programer yang
mengandalkanhasilakhirtanpaperluberbelitbelitdalammengkonfigurasiWebServer.
PengujianProgramPHP
Bukaeditorteksandadanbuatsebuahfileyangberisisebagaiberikutdansimpansebagai
phpinfo.phpdalamWebrootAnda.
<?phpinfo();?>
Author:SuyatnoBudiharjoHalaman:16Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
HalamaninimemberitahuandasejumlahinformasitentangPHP,apapunmodulyangtelahanda
instal,sampaidengandirektoriyangdigunakanolehPHP.
DasarPemrogramanPHP
FormatCode
CaraPHPmenguraikandanmembedakanagakberbedadenganHTML.Terdapatbeberapatag
tertentuyangmembedakanPHPdenganHTMLdankodeyanglaindalamhalamanwebanda
(sepertijavascriptmisalnya).
TagPHPadalahtagyangmenandakanbahwascriptyangadadidalamnyaadalahscriptPHP
antaralainadalah:
TagAwal
TagAkhir
1)
<?
?>
2)
<?php
?>
3)
<scriptlanguage=php>
</script>
AndaletakkankodePHPandadiantaratagdiatas.
SpasiatauBarisKosong
Catatanyangpentinglainnyaadalahbahwaandadapatmeletakkanbariskosongdidalamkode
anda.Sebagaicontoh:
Author:SuyatnoBudiharjoHalaman:17Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
<?
echo'Hello!';
?>
dan
<?
echo'Hello!';
?>
atau
<?echo'Hello';?>
ketiganyaakandieksekusidengancarayangsama.
Komentar
Komentardidalamkodeandasangatdiperlukanketikamenuliskanscriptyangcukuppanjang
atausesuatuyangmembuatandakembaliuntukmelihatkodetersebut.Terdapatbeberapacara
untukmemberikankomentarpadakodeanda:
<!Komentardisini!>
//Komentardisini
#Komentardisini
/*Komentardisini*/
AkhirPerintah:
SetiapperintahPHPharusdiakhirisecarabenarsehingapenguraiakanmengetahuikapansatu
perintahberakhirdanperintahyanglaindimulai.Perintahterminasiterdapatpadaakhirdari
penyataanperintah.Inisecaramudahdilakukandenganmemberitandatitikkoma;
echoSalah!
echoBenar!;
Tanpatandatitikkomapadaakhirperintah,scriptPHPandaakanmembangkitkanerrordan
tidak akan dijalankan. Baca dengan teliti kode anda untuk menyakinkan bahwa anda telah
mengakhirisetiapperintahdenganbenar.
Author:SuyatnoBudiharjoHalaman:18Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
PencetakanInformasi
UntukmencetakinformasikebrowseruserdalamPHPmenggunakanperintahyangdisebut
denganecho.Sintakdanperintahadalahsederhanadandiakhiridenganbenar.
Echo'Hai';
echo$variabel;
Perhatikanbagaimanperintahechoyangkeduatidakmembutuhkantandapetikdisekitardata
yangakanditampilkan.Halinikarenakitamencetaksebuahvariabel,yangakandibahaspada
diskusi selanjutnya. Anda juga dapat mencetak data/script HTML ke browser menggunakan
echo
echo<ahref='http://www.myhome.com'>Klikdisini</a>;
Perintahiniakanmencetaksebuahhyperlinkpadabrowseruser,menggunakanHTML.
Variabel
VariabeladalahbagianyangpentingdanbanyakdigunakandariPHP.Sebuahvariabeladalah
bagiandaridatayangdapatmenggantikansesuatu.Variabelmempunyaisintakyangkhasdan
harusdiakhiridenganbenar.Sebuahvariabelselaludiawalidengantanda$.
$variabel='Benewbie';
$var1=$variabel;
$var_two='Underscorebolehjuga';
Variabeldapatmenanganivariabelyanglain,teks,HTML,danperintah.Yangsemuavariabel
harusdimulaidengan$.VariabeltersebutjugaharusdinyatakandidalamtagPHP.
Konstanta
Konstantajugasangatbergunaketikaandaperlumenyatakansebuahnilaipadasesuatudengan
nilaiyangtidakberubah.Konstanta jugalebihaman,tetapianda biasanyaandatidakperlu
kawatir tentang hal ini sampai anda mulai PHP dengan SQL.Untuk mendefinisikan sebuah
konstantamenggunakanperintahberikut,iniharusdiakhiridenganbenar.
Author:SuyatnoBudiharjoHalaman:19Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
define('CONSTANTA','Letakkandataandadisini!');
Andadapatmenampilkankonstantapadabrowserdengancarayangsamadenganketikaanda
lakukanpadavariabel.
echoCONSTANTA;
Contoh:
<?
$variabel="Benewbie";
$var1=$variabel;
$var_two='Underscorebolehjuga';
define('CONSTANTA','Letakkandataandadisini!');
?>
<html>
<head><title>Latihan1</title></head>
<bodybgcolor="whitesmoke">
<?
echo"Hello!";
echo$variabel;
echo$var1;
echo$var_two;
echo"<ahref='http://www.myhome.com'>Klikdisini</a>";
echoCONSTANTA;
?>
</body>
</html>
Script PHP diatas, simpan sebagai file contoh4.php dan jalankan pada Web Browser anda,
sehinggaandaakanmemperolehtampilansebagaiberikut:
Operator
TerdapatbanyakoperatordidalamPHP.DisinibeberapaoperatorAritmatik.Operatortersebut
adalah:
Author:SuyatnoBudiharjoHalaman:20Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Simbol
Contoh
Keterangan
$a+$b;
Tambah
$a$b;
Kurang
$a*$b;
Kali
$a/$b;
Bagi
$a%$b
Sisa
OperatorLogikaatauPerbandinganjugadigunakandidalamPHP:
Simbol
Contoh
Keterangan
==
$a==$b;
Samadengan
!=
$a!=$b;
Tidaksama
>
$a>$b;
Lebihdari
<
$a<$b;
Kurangdari
>==
$a>==$b;
Lebihbesaratausamadengan
<==
$a<==$b;
Kurangdariatausamadengan
Perbandingan
PerintahPerbandingandigunakandalamPHPuntukmembandingkanataumengecekbanyak
nilaisebelummenghasilkansebuahkeluaran.PerbandinganinijugadapatmemberitahukanPHP
untuk melakukan sesuatu yang lain jika sesuatu itu tidak benar. Disini sebagai contoh dari
penggunaanperintahif():
<?
$var==2;
if($var>1){
echo<P>Variabellebihbesar1.</P>;
}
?>
Author:SuyatnoBudiharjoHalaman:21Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Ketikanilaidari$varadalah2,browserakanmenampilkanperintahecho.Sekarangkitadapat
menambahkan perintah else untuk memberitahukan PHP untuk melakukan sesuatu jika
harapanyangpertamatidakterpenuhi.
<?
$var=2;
if($var>1){
echo<P>Variabellebihbesar1.</P>;
}else{
echo<P>Variabelkurangdari1.</P>;
}
?>
Sekarang,jikaandamenjalankanperintahdiatas,iniakanmenampilkanpenyataanyangpertama
ataukeduatergantungpdanilaidari$var.
Contoh:
<html>
<body>
<?
$var="2";
if($var>1){
echo'<P>Variabellebihbesar1.</P>';
}else{
echo'<P>Variabelkurangdari1.</P>';
}
echo("HasilJumlah:$var+$var=".$var+$var);
echo"<br>";
echo("Hasilkali:$varx$var=".$var*$var);
echo"<br>";
echo("Hasilbagi:$var/$var=".$var/$var);
echo"<br>";
echo("Sisahasilbagi:$var%$var=".$var%$var);
?>
</body>
</html>
Programdiatasjikadieksekusiakanmenghasilkantampilansebagaiberikut:
Author:SuyatnoBudiharjoHalaman:22Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Hasilyangingindicapai:
PesertadapatmenggunakanberbagaimacamfungsiyangadadiPHPuntukmembuathalaman
Web. Peserta memahami konsep variabel didalam PHP mengoperasikan, dan menampilkan
padahalamanWeb.
Author:SuyatnoBudiharjoHalaman:23Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
MODULIV
AKSESDATABASE
Menyimpan data dalam file biasa memiliki banyak keterbatasan. Semakin besar ukuran file,
pencariandatamenjadilebihsulit.Filebiasajugatidakmemilikikemampuanuntukmengolah
data,misalnyamenghitungtotalnilai,ratarata,danlainsebagainya.Danyanglebihpenting,
adanyaketerbatasanuntukmengendalikanaksesterhadapdata.Kitatidakdapatmenentukan
siapayangbolehdansiapayangtidakbolehmengaksesdata.Siapayangbolehmembacadan
tidakbolehmenulis,dansebagainya.
Karenaitu,sekarangkitaakanmenggunakanmediapenyimpanandatayanglebihmutakhir,
yaitudatabase.Operasidatadalamdatabaseumumnyamengikutipolayangsama,yaitumelalui
rangkaianlangkahsebagaiberikut:
Membukasambungandengandatabaseserver
Memilihdanmembukadatabaseyangdiinginkan
Mengirimperintahuntukmengambil/mengubah/menghapusdata.
Mengakseshasilpengambilandata
Mengakhirisambungan
Kitaakanmembahasmasingmasinglangkahtersebutsatupersatu.Sebagaicontoh,kitaakan
mengaktifkan fasilitas login pada aplikasi Contact Manager. User akan diminta untuk
memasukkan username dan password. Bila data yang dimasukkan sama dengan yang ada
dalamdatabase,userakanditeruskankehalamanwelcome.Kalausalah,akanmunculpesan
error. Sebagai tambahan, kita akan membuat halaman yang memungkinkan user untuk
menggantipassword.Useryangbelumterdaftardapatmelakukanregistrasidihalamanyang
akandisediakan.
A.SekilasSQLQuery
SQL (Structured Query Language) adalah bahasa yang khusus digunakan untuk
mengoperasikan database. Untuk memudahkan pelajaran, SQL query akan dikelompokkan
menjaditiga:
Queryuntukmengeloladatabase
Queryuntukmengaksesdatadalamsatutabel
Author:SuyatnoBudiharjoHalaman:24Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Queryyangmelibatkanlebihdarisatutabel
Querypengelolaandatabase
Yangtermasukkedalamkelompokiniadalahqueryyangbertujuanuntuk:
Membuatdatabase
Menghapusdatabase
Membuattabel
Memodifikasitabel
Menghapustabel
Menambahuser
Mengaturpermission
Menghapususer
Membuatdatabasedilakukandenganperintahsebagaiberikut:
CREATEDATABASE<namadatabase>
Contohnya:
untukaplikasiContentManagement,kitaakanmembuat
databaseContentManagerdenganquerysebagaiberikut:
CREATEDATABASEContactManager
Menghapusdatabasedilakukandenganperintah:
DROPDATABASE<namadatabase>
Contoh:
DROPDATABASEContactManager
Membuattabeldilakukandenganmemberikanperintahsebagaiberikut:
CREATETABLE<namatabel>(
<namakolom><tipedata>,
<namakolom><tipedata>,
,
Author:SuyatnoBudiharjoHalaman:25Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
<namakolom><tipedata>
Contohnya:
CREATETABLEuserTable(
UserIdINT(3),
UserNameVARCHAR(50),
PasswordVARCHAR(50),
NamaLengkapVARCHAR(50)
);
Menghapustabeldilakukandenganmenggunakanquery
DROPTABLE<namatabel>;
Contoh:
DROPTABLEuserTable;
Querysatutabel
Querysatutabeldigunakanuntukmengeloladatadalamsatutabel.Beberapahalyangdapat
dilakukanpadasatutabeladalah:
Tujuan
Query
Memasukkandata
INSERT
Memodifikasidata
UPDATE
Mengambildata
SELECT
Menghapusdata
DELETE
Menghitungbanyaknyadata
COUNT
Menghitungpenjumlahandata
SUM
Menghitungnilaiminimal
MIN
Menghitungnilaimaksimal
MAX
Menghitungnilairatarata
AVG
Author:SuyatnoBudiharjoHalaman:26Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Untukmemasukkandatakedalamdatabase,kitamenggunakanperintahINSERT.
Aturanpenulisannyaadalah:
INSERTINTO<namatabel>(<namakolom1>,<namakolom
1>,..)
VALUES(<isikolom1>,<isikolom2>,..);
Contoh:
INSERTINTOuserTableVALUES(
1,
'endy',
'inipaswod',
'EndyMuhardin'
);
Untukmengubahdatadalamdatabase,digunakanperintahUPDATE,denganaturanpenulisan
sebagaiberikut:
UPDATE<namatabel>
SET<namakolom>=<isikolom>
WHERE<kriteria>
Contoh:
UPDATEuserTable
SETpassword=test
WHEREUserName=endy;
Untukmenampilkandatadalamtabel,gunakanperintahSELECT.Aturanpenulisannyaadalah
sebagaiberikut:
SELECT<namakolom>
FROM<namatabel>
WHERE<kriteria>
Contoh:
Author:SuyatnoBudiharjoHalaman:27Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
SELECT*
FROMUserTable
WHEREUserId=1;
Untukmenghapusdatadaridalamtabel,gunakanperintahDELETE.Aturanpenulisannyaadalah
:
DELETEFROM<namatabel>WHERE<kriteria>
Contoh:
DELETEFROMUserTable
WHERENamaLengkap=EndyMuhardin;
Querybanyaktabel
Querybanyaktabeldigunakanuntukmenghubungkandatadilebihdarisatudatabase.Agak
sedikitberbedadenganQuerySatutabel.UntukQuerybanyaktabel,makaperludisebutkan
tabeltabelapasajayangdigunakan.Sebagaicontoh:
SELECT*
FROMTable1,Table2
WHERETable1.UserId=1&&Table2.UserId=1;
B.Membuatkoneksikedatabase
Sebelummulai,kitaterlebihdahuluakanmembuatdatabase.Kitamembutuhkantabeluseruntuk
menyimpandatasebagaiberikut:
NamaField
TipeData
UserId
int(3)
UserName
varchar(50)
Password
varchar(50)
NamaLengkap
varchar(50)
Tabeldibuatdenganmemberikanquerysebagaiberikut:
Author:SuyatnoBudiharjoHalaman:28Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
CREATETABLEuserTable(
UserIdINT(3)AUTO_INCREMENTPRIMARYKEY,
UserNameVARCHAR(50),
PasswordVARCHAR(50),
NamaLengkapVARCHAR(50)
);
tabelsiapdigunakan.
Kitaakanmulaidenganhalamandaftar,karenakitabelumpunyauser.Fileregister.phpakan
menanganipendaftaranuserbaru.Tugasnyaadalahmemasukkandatayangdiisidalamformke
dalamdatabase.
Selanjutnya,kitaakanmelakukanlangkahlangkahsepertiyangdisebutkandiatas.
Membukasambungandengandatabaseserver
Untukmembukasambungan,kitamembutuhkanalamatserversertausernamedanpassword
untukdatabase.Setelahitu,kitamembukasambungandenganperintahsebagaiberikut:
$dbServer="localhost";
$dbUser="endy";
$dbPass="test";
$dbConn=mysql_pconnect($dbServer,$dbUser,$dbPass);
sambungandengandatabasedisimpandalamvariabel$dbConnuntukdigunakanpadalangkah
langkahselanjutnya.
Memilihdanmembukadatabaseyangdiinginkan
Selanjutnya,kitaakanmenggunakandatabasetutorial,yangsebelumnyatelahdibuatdengan
menggunakan PHPMyAdmin. Gunakan kode berikut untuk memilih dan membuka database
phpTutorial.
$dbName="phpTutorial";
mysql_select_db($dbName);
Author:SuyatnoBudiharjoHalaman:29Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
sekarangdatabasetelahsiapuntukdigunakan.Kitadapatmelangkahketahapselanjutnya,yaitu
memasukkandata.
Mengirimperintahuntukmengambil/mengubah/menghapusdata.
PerintahuntukmemasukkandatadibuatdenganmenggunakanaturanSQL,dijelaskanlebih
lengkappadabagianselanjutnya.Query(perintah)untukmemasukkandataadalah:
INSERTINTOuserTableVALUES(
1,
'endy',
'inipaswod',
'EndyMuhardin'
);
perintahtersebutdieksekusididalamscriptPHPsebagaiberikut:
$query="
INSERTINTOuserTableVALUES(
1,
'endy',
'inipaswod',
'EndyMuhardin'
);
";
$hasil=mysql_query($query);
if($hasil){
echo(mysql_affected_rows()."orangditambahkankedalam
sistem");
}
ScriptkitaharusmengambildatadariHTMLForm(register.htm)danmemasukkannyakedalam
database.Untukitu,kitaakanmembuatfileregister.phpyangberisikodesebagaiberikut:
<?
$dbServer="localhost";
$dbUser="endy";
$dbPass="test";
$dbConn=mysql_pconnect($dbServer,$dbUser,$dbPass);
Author:SuyatnoBudiharjoHalaman:30Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
$dbName="phpTutorial";
mysql_select_db($dbName);
$query="
INSERTINTOuserTable
(UserName,Password,NamaLengkap)
VALUES(
'$user',
'$pass',
'$namaLengkap'
);
";
$hasil=mysql_query($query);
if($hasil){
echo(mysql_affected_rows()."orangditambahkankedalam
sistem");
}
?>
C.Mengakseshasilquery
Setelahregister.htmdieksekusidengansukses,kitatelahmemilikisatuuserdalamdatabase.
Dengandemikian,kitadapatmengujihalamanloginyangtelahkitabuat.Untukitu,kitaperlu
mengaksesdatadalamdatabasedanmencocokkannyadenganinputyangdiberikanuser.
Langkahlangkahuntukmengaksesdatadalamdatabaseadalah:
Membuatsambungandatabase
Memilihdatabase
Membuatquery
Menjalankanquery
Mengambilhasilnya
Memproseshasil
Queryyangakandigunakanadalah:
SELECT*FROMUserTableWHEREuserName=inputdariuser
Queryiniakandimasukkankedalamscriptmenjadi:
$query=SELECT*FROMUserTableWHEREuserName=$login
Author:SuyatnoBudiharjoHalaman:31Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Dandieksekusidengankode:
$hasil=mysql_query($query);
BilauserNameyangdiinputkanusertidakadadalamdatabase,queryakanmengembalikan0
(nol)barishasil.Bilaada,queryakanmenghasilkanarrayyangberisidatapadamasingmasing
kolomdalamdatabase.
Untukmengetahuijumlahhasilyangdidapatdariquery,digunakankodesebagaiberikut:
$jumlahHasil=mysql_num_rows($hasil);
Apabilahasilnyatidaknol(berartiusernametelahterdaftardalamsistem),kitaakanmengambil
datapassword.Untukitu,kitagunakanperintah:
$data=mysql_fetch_array($hasil);
datapasswordadadalamarray,diaksesdengancara:
$passDb=$data[Password];
Dengandemikian,keseluruhanscriptlogin.phpakanmenjadi:
<?
//variabelyangdiperlukanuntukaksesdatabase
$user="endy";
$pass="test";
$db="ContentManager";
$server="localhost";
//membuatkoneksi
$koneksi=mysql_connect($server,$user,$pass);
//memeriksakoneksi
if(!$koneksi){
echo("Koneksikedatabasegagal");
exit;
}
//membukadatabase
Author:SuyatnoBudiharjoHalaman:32Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
mysql_select_db($db);
//membuatquery
$query="SELECT*FROMuserTableWHERE
userName='".$login."'";
//mengeksekusiquery
$hasil=mysql_query($query);
//mengakseshasil
$jumlahHasil=mysql_num_rows($hasil);
if($jumlahHasil<1){
}else{
echo("User$logintidakadadalamdatabase<br>");
echo("User$loginadadalamdatabase<br>");
$data=mysql_fetch_array($hasil);
$passwordAsli=$data["password"];
if($password==$passwordAsli){
echo("Passworduntukuser$loginbenar<br>");
}else{
echo("Passworduntukuser$loginsalah<br>");
}
}
?>
Hasilyangingindicapai:
Pesertapelatihanmampumembuat,mengupdate,danmenghapusdatabase,tabel,dandata
dariserverDatabase.
Mampumelakukankoneksidengandatabase,menggunakanPHPdanmenampilkanhasilkandi
halamanWeb.
MampumembuatFormLoginyangdigunakanuntukautentikasisuatuhalamanWeb.
Author:SuyatnoBudiharjoHalaman:33Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
MODULV
APLIKASIDENGANPHPDANMYSQL
Modul:WebProgrammingDate:12/22/0610:53:53PM
Tugas:
1. MembuatTampilansepertiberikut:
Catatan:
Elemenyangadadidalamnya:FasilitasSearchEngine,dengansebuahkatakunciyang
dapatmencarikesemuafielddaritabel.
Fasilitasuntukmenambah,menghapusdanmengedit,denganmenggunakancheckbox
untukmemilihdatayangdiedit/dihapus.
2. MembuatTampilansebagaiberikut:
Catatan:
ElemenHTML<select>diatas,menupilihannya(option)diambildarisebuahtabeldi
database.
3. Membuat sebuah aplikasi ujian online, dengan parameter : Soal random, dan tidak
berulang,waktuditentukan,jikamelebihiwaktuyangditetapkantidakdapatmasukke
tabelhasilujian.Sepertigambarberikut:
Author:SuyatnoBudiharjoHalaman:35Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Hasilyangingindicapai:
Pesertamampumembuatsebuahaplikasilengkapdenganmenu,querytabel,searchenginedan
tabeldata,sertaformformpendukungnya.
Author:SuyatnoBudiharjoHalaman:36Dari37
Modul:WebProgrammingDate:12/22/0610:53:53PM
Referensi:
1. PHPManual
2. MySQLManual
3. PHPProgrammingFundamentaldanMySQLFundamental
4. WebApplicationDevelopment
5. ManipulasiDatabaseMySQLdenganPHP,MuhammadSafii
6. PHP/Apache,PartI,RK[X],http://www.g33k101.com/forums
7. DasarPemrogramanPHPdanMySql,AnonKuncoro
8. TipsdanTrikMembuatWebsitedenganPHP,WellyTunggala
Author:SuyatnoBudiharjoHalaman:37Dari37