0% menganggap dokumen ini bermanfaat (0 suara)
182 tayangan

Building Web Application With PHP & MySQL (IXBWA) PDF

Diunggah oleh

Andry Hananto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
182 tayangan

Building Web Application With PHP & MySQL (IXBWA) PDF

Diunggah oleh

Andry Hananto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 136

Elemen Dasar PHP

1
Elemen Dasar PHP

Pemrograman PHP

PHP adalah bahasa pemrograman yang banyak digunakan dalam internet


dan intranet untuk membuat aplikasi berbasis web sebagai program yang
diintegrasikan ke dalam Web Server seperti Apache atau Microsoft Internet
Information Service (IIS).

Nama PHP berasal dari Personal Home Page namun diganti menjadi akronim
rekursif yaitu PHP Hypertext Preprocessor.

PHP dibuat oleh Rasmus Lerdorf pada tahun 1995 dan merupakan software
gratis dengan lisensi bernama PHP License.

Beberapa karakteristik PHP di antara lain:


 Fleksibilitas tinggi, menyamai high level programming language seperti
bahasa C.
 Mempunyai banyak fungsi built-in.
 Cross Platform atau dapat berjalan pada banyak platform seperti
Windows, Linux atau Apple iOS.
 Server Side Scripting yaitu dieksekusi terlebih dulu di server.
 Mempunyai akses melalui fungsi API (Application Programming
Interface) ke database seperti MySQL, Oracle, Microsoft SQL Server
dan lainnya.
 PHP adalah produk Open Source yang dapat didistribusikan tanpa
dikenakan biaya dan dapat diunduh gratis.
 Mendukung pemrograman orientasi objek (OOP).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-1
Elemen Dasar PHP

Kerangka Pemrograman PHP

Program PHP bekerja mirip dengan prinsip markup language HTML dan
bahasa pemrograman lainnya yaitu terdapat tag pembuka dan tag penutup.
Program PHP diawali dengan tanda <?php dan diakhiri oleh tanda ?>.
Baris perintah PHP diakhiri dengan tanda titik-koma atau semicolon (;).

Contoh sintaks dasar PHP:


<?php
instruksi1;
instruksi2;
?>

Perintah dasar yang ditandai sebagai awal mula mempelajari suatu bahasa
pemrograman adalah mencetak tulisan atau output. Pada PHP dapat
menggunakan perintah print atau echo untuk mencetak tulisan atau output.

<?php
print “Hello World”;
?>

<?php
echo “Hello Again”;
?>

Perbedaan echo dengan print adalah pada performa perintah tersebut. Echo
mempunyai performa eksekusi program yang lebih cepat dibanding print.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-2
Elemen Dasar PHP

Integrasi PHP dengan HTML

Sebuah file php mempunyai ekstension .php dan dapat berisi tidak hanya
program PHP saja namun dapat digabung dengan bahasa pemrograman lain
seperti HTML, CSS ataupun Javascript.
Oleh karena HTML, CSS dan Javascript bersifat Client Side, maka ekstension
harus tetap .php supaya semua perintah dapat dijalankan.

Contoh program gabungan HTML-PHP:

<!DOCTYPE html>
<html>
<head>
<title>Integration</title>
</head>

<body>
Full Name: <?php echo “John Smith”;?> <br>
Address: <?php echo “17th Avenue”;?> <br>
</body>
</html>

PHP juga dapat langsung menjalankan tag HTML pada sebuah perintah echo
atau print seperti contoh berikut:

<?php echo “My Name is John Smith <br>”;?>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-3
Elemen Dasar PHP

Penggunaan Single Quote dan Double Quote

Tanda kutip pada PHP digunakan untuk menandai tulisan atau string.
Terdapat dua cara untuk menggunakan kutip yaitu dengan single quote
(apostrophe ‘) atau double quote (“).
Perbedaan antara single quote dengan double quote adalah jika
menggunakan single quote tidak dapat menginterpretasikan semua simbol,
sedangkan double quote dapat menginterpretasikan semua simbol.
Single quote dapat digunakan untuk membuat penulisan skrip gabungan yang
lebih rumit misalnya menulis hyperlink HTML dengan PHP atau menulis
Javascript dengan PHP.

Berikut adalah contoh skrip dengan single dan double quote:

<?php
$a = “ABC”;
echo ‘Tulisan dari variabel a adalah $a<br>’;
echo “Tulisan dari variabel a adalah $a<br>”;
?>

Hasil:
Tulisan dari variabel a adalah $a
Tulisan dari variabel a adalah AAA

Tulisan yang dicetak pada baris pertama dengan single quote menunjukkan
bahwa simbol dollar tetap dicetak apa adanya, berbeda dengan double quote
yang dapat menginterpretasikan simbol dollar menjadi variabel. Penjelasan
mengenai variabel dijelaskan pada bagian berikutnya.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-4
Elemen Dasar PHP

Penggunaan single quote biasanya jika terdapat gabungan skrip yang rumit
pada PHP misalnya menulis hyperlink HTML pada PHP atau menulis
Javascript pada PHP seperti dicontohkan berikut ini:

<?php
echo ‘<a href=”http://www.google.com”>Click Here</a>’;
?>

<?php
echo ‘
<script type="text/javascript">
setTimeout("location.href='profile.php'",5000);
</script>
‘;
?>

Penggunaan single quote dalam penulisan skrip yang rumit bertujuan untuk
menghilangkan kesalahan penggunaan escape characters seperti tanda
sama-dengan, kutip atau titik. Contoh kesalahan penulisan escape character
dengan double quote dapat dilihat pada contoh berikut:

<?php
echo “<a href=”http://www.google.com”>Click Here</a>”;
?>

Oleh karena double quote menginterpretasikan simbol yang terdapat pada


skrip maka bagian URL dari Google yang bertuliskan tebal di atas akan tidak
terbaca oleh program sehingga akan menyebabkan error.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-5
Elemen Dasar PHP

Komentar

Komentar atau yang biasa disebut dengan remarks adalah tulisan yang tidak
dieksekusi oleh program dan biasanya digunakan sebagai petunjuk dari
sebuah blok program.

Komentar pada PHP dapat dibuat dengan menggunakan tanda // untuk


melambangkan komentar sebaris dan dapat menggunakan markup /* dan
ditutup */ untuk komentar lebih dari satu baris.

Contoh penulisan komentar:

<?php

echo “Tulisan baris pertama <br>”; //ini adalah komentar


baris pertama

echo “Building Web Applications <br>”;

/*
Blok pemrograman ini hanya contoh cara membuat komentar.
Bagian ini menggunakan komentar yang lebih dari satu
baris.
Jangan lupa untuk menutup markup komentar ini.
*/

?>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-6
Elemen Dasar PHP

Variabel

Variabel adalah satuan yang dipakai dalam program sebagai basis


penyimpanan data. Penggunaan variabel PHP dapat dilakukan tanpa harus
melakukan deklarasi tipe variabel seperti bahasa pemrograman lainnya.

Untuk deklarasi variabel menggunakan prefiks Dollar ($). Penamaan variabel


bebas menggunakan alfanumerik dan karakter khusus underscore (_).
Panjang nama variabel tidak dibatasi. Contoh nama sebuah variabel adalah
$x.

Aturan penamaan variabel pada PHP adalah sebagai berikut:


 Case sensitive, artinya $x dan $X adalah dua variabel yang berbeda.
 Tidak boleh menggunakan spasi.
 Tidak diawali dengan angka.
 Penggabungan dengan angka boleh dilakukan setelah huruf, dan
sebaiknya tidak menggunakan kata kunci atau reserved keywords
seperti $echo atau $print.

Contoh deklarasi variabel dan tipe variabel:


$nama_lengkap = “Alfred Futterkiste”; //string
$honor = 1000000; //integer
$bonus = 0.5; //float
$kondisi = true; //boolean

Penggunaan:
String : karakter, tulisan
Integer : bilangan bulat
Float : bilangan pecahan
Boolean : logika

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-7
Elemen Dasar PHP

Untuk mencetak variabel dapat menggunakan echo atau print. Berikut contoh
program untuk mencetak variabel:

<?php
//deklarasi variabel
$nama_lengkap = “Alfred Futterkiste”; //string
$honor = 1000000; //integer
$bonus = 0.5; //float
echo “Nama Lengkap: $nama_lengkap <br>”;
echo “Honor: Rp. $honor,- <br>”;
echo “Bonus: $bonus x Honor <br>”;
?>

Hasil:
Nama Lengkap: Alfred Futterkiste
Honor: Rp. 1000000,-
Bonus: 0.5 x Honor

Apabila diperhatikan, mencetak honor dari Alfred masih menggunakan format


standar. Khusus untuk integer dapat menggunakan perintah number_format()
untuk mengganti format angka sesuai yang diinginkan.

Sintaks:

number_format(namavar, jumlahdesimal, pemisahribuan, pemisahdesimal)

Contoh penulisan dengan number_format:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-8
Elemen Dasar PHP

$honor = 1000000;
$honor_format = number_format($honor, 2, “.”, “,”);
echo “Honor = Rp. $honor_format <br>”;

Hasil:
Honor = Rp. 1.000.000,00

Angka 2 melambangkan jumlah desimal di belakang koma, tanda titik untuk


pemisah ribuan (thousand separator) dan tanda koma untuk membuat
pemisah desimal (decimal separator).

Penulisan thousand separator dan decimal separator bebas sesuai selera


tanpa harus terpaku pada format bahasa dan mata uang sistem (system
language dan system currency).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1-9
Elemen Dasar PHP

Ekspresi Aritmetika

Aritmetika dapat dilakukan dengan mudah seperti bahasa pemrograman


lainnya:

$x = 4 + 5;
$y = 10 * 2;

Operator aritmetika pada PHP juga menggunakan simbol aritmatika pada


umumnya, misalnya pada Excel.

* Perkalian
/ Pembagian
+ Penjumlahan
- Pengurangan

Operasi aritmetika juga dapat dilakukan dengan menggunakan variabel:

$x = 100;
$y = 50;
$rumus1 = $x * $y;
$z = 5;
$rumus2 = ($x + $y) * $z;

Jika $rumus1 dan $rumus2 dicetak maka hasilnya adalah 5000 dan 750.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1 - 10
Elemen Dasar PHP

PHP dapat mengkonversi variabel yang bertipe tulisan (string) tapi


mengandung angka di dalamnya untuk langsung menjadi integer. Contoh
dapat dilihat pada skrip berikut:

$a = “123”;
$b = 10;
$penjumlahan = $a + $b;

Output dari $penjumlahan adalah 133. Variabel a meski bertipe string tapi
karena berisi angka semuanya maka dapat dikonversikan menjadi integer.
Tetapi jika terdapat alfabet atau bercampur alfanumerik di variabel tersebut,
PHP akan membaca nilai variabel tersebut menjadi 0.

$a = “a123”;
$b = 10;
$penjumlahan = $a + $b;

Hasil dari $penjumlahan hanya 10 karena variabel a terbaca 0 yaitu


mengandung alfanumerik.

Fungsi aritmetika lainnya yang sering digunakan misalnya untuk membuat


pangkat bilangan (power), mencari nilai pembulatan (round) dan mencari nilai
sisa pembagian (modulus). Modulus dilambangkan dengan tanda %.

pow(4, 2) //4 pangkat 2 akan menghasilkan 16


round(5.75) //menghasilkan 6
5 % 2 //sisa pembagian 5 dengan 2, menghasilkan 1

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1 - 11
Elemen Dasar PHP

Variabel Superglobal

Variabel superglobal adalah variabel yang tersedia di seluruh cakupan


program PHP dan beberapa variabel dapat berkaitan satu sama lain.
Biasanya variabel tipe ini berkaitan langsung dengan server.

Variabel superglobal pada PHP yaitu:


 $GLOBALS
 $_SERVER
 $_GET
 $_POST
 $_FILES
 $_SESSION
 $_COOKIE
 $_REQUEST
 $_ENV

Variabel $GLOBALS yaitu variabel yang menampung nilai semua variabel


yang terdaftar dalam satu file PHP dalam cakupan Array. Biasanya digunakan
untuk pemanggilan variabel di dalam sebuah fungsi supaya variabel tersebut
lebih fleksibel.

Misalkan ada sebuah var:


$nama_lengkap = “Ana Trujillo”;

Selain print atau echo untuk mencetak variabel yang bersangkutan, dapat
juga dilakukan dengan menggunakan variabel $GLOBALS dengan cara
berikut:

echo $GLOBALS[‘nama_lengkap’];

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1 - 12
Elemen Dasar PHP

Variabel $_SERVER yaitu variabel yang berisikan informasi mengenai sistem


seperti header, URL, IP address dan informasi lainnya. Contoh penggunaan
variabel ini dapat dilihat pada contoh berikut:

echo $_SERVER[‘REMOTE_ADDR’]; //mencetak IP address client

echo $_SERVER[‘SERVER_ADDR’]; //mencetak IP address server

echo $_SERVER[‘HTTP_USER_AGENT’];
//mencetak header dari browser yang sedang digunakan oleh client

Variabel $_GET berisikan informasi yang telah dikirimkan melalui parameter


URL atau melalui form HTML dengan metode pengiriman GET. Misalkan
client telah mengirimkan username miliknya melalui komponen form text field
dan ingin dicetak melalui PHP maka skrip sederhananya dapat dibuat seperti
berikut:

$username_anda = $_GET[‘namaTextField’];
echo “Username anda: $username_anda <br>”;

Variabel $_POST sama seperti GET namun perbedaannya yaitu jika


menggunakan metode POST maka informasi yang dikirim tidak dapat dilihat
pada parameter URL. Cara ini lebih aman dari serangan hack, injection dan
sebagainya.

$username_anda = $_POST[‘namaTextField’];
echo “Username anda: $username_anda <br>”;

Variabel $_FILES digunakan untuk menyimpan file hasil upload misalnya


gambar atau dokumen lainnya. Penggunaan variabel ini biasanya
berbarengan dengan perintah move_uploaded_file(). Contoh sederhana dari
penggunaan $_FILES seperti berikut:

move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1 - 13
Elemen Dasar PHP

Variabel $_COOKIE digunakan untuk menyimpan variabel yang dikirim


melalui HTTP Cookie. Cookie biasanya digunakan dalam metode otentikasi
halaman web dan umumnya berisikan informasi pemilik akun seperti
username atau e-mail.

$activeUser = $_COOKIE[‘myCookieName’];

Variabel $_SESSION bekerja mirip seperti cookie yaitu untuk menyimpan


sebuah nilai yang dikirim melalui inisialisasi sesi dan juga digunakan sebagai
salah satu metode otentikasi halaman web. Perbedaannya dengan cookie
adalah session ini tersimpan di server sedangkan cookie tersimpan pada
client. Umumnya untuk alasan keamanan, metode otentikasi dengan session
lebih aman dari serangan.

$activeSession = $_SESSION[‘mySessionName’];

Variabel $_REQUEST dapat menampung informasi yang dikirimkan melalui


POST, GET dan Cookie. Biasanya digunakan untuk aplikasi web yang
memakai teknik Parameter Passing melalui URL.

$requestCookie = $_REQUEST[‘myCookieName’];
$requestGet = $_REQUEST[‘namaTextField1’];
$requestPost = $_REQUEST[‘namaTextField2’];

Tiga variabel di atas menggunakan $_REQUEST untuk menampung nilai dari


tipe yang bersangkutan. Untuk tipe form tidak perlu diperhatikan apakah
metode form tersebut POST atau GET karena variabel $_REQUEST dapat
menyimpan nilai dari keduanya.

Variabel $_ENV sama saja seperti $_SESSION yaitu untuk mengakses


environment variables atau variabel yang berkaitan dengan lingkup sistem
atau server namun penggunaan $_ENV lebih optimal pada CLi atau
Command Line.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 1 - 14
Kendali Program

2
Kendali Program

Kendali Alur Program (Control Flow)

Alur program dapat dikendalikan dengan adanya kondisi dimana dari kondisi
tersebut menentukan langkah program berikutnya. Kondisi ini dinyatakan
dalam bentuk logika true atau false.

Sudut pandang tiap programmer berbeda-beda, misalnya seorang


programmer membuat program akan berjalan ketika kondisi true namun
programmer lain bisa saja membuat program berjalan ketika kondisi false.

Untuk membuat kondisi dapat menggunakan perintah if dan else.

Sintaks dari if-else:

if ( kondisi ) {
perintahYangAkanDijalankan;
}
else {
perintahAlternatif;
}

Umumnya dalam kondisi if-else ini menggunakan komparator, misalnya jika


nilai a lebih besar dari nilai b maka akan ada sebuah perintah yang dijalankan.

Contoh dari penggunaan if-else:

if ( $a > $b ) {
echo “Nilai a lebih besar dari nilai b <br>”;
}
else {
echo “Nilai a lebih kecil dari nilai b <br>”;
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-1
Kendali Program

Komparator aritmetika yang dapat digunakan pada if adalah sebagai berikut:

== sama dengan / equals


!= tidak sama dengan / not equal
> lebih besar dari / greater than
>= lebih besar atau sama dengan / greater than or equal to
< lebih kecil dari / less than
<= lebih kecil atau sama dengan / less than or equal to

Penggunaan == dengan = harus diperhatikan karena jika menggunakan


hanya = saja maka perintah tersebut akan merujuk ke nilai sebuah variabel,
bukan membandingkan antara kedua variabel.

Perintah if juga dapat menggunakan operator relasional logika misalnya:

and ( dapat dilambangkan juga dengan && )


or ( dapat dilambangkan juga dengan || )
xor
! ( untuk melambangkan negasi sebuah variabel )

Apabila menggunakan logika dalam if maka harus diperhatikan gerbang logika


yang berkaitan. Dapat dilihat di tabel berikut:

Boolean AND OR XOR


1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-2
Kendali Program

Contoh penggunaan if dengan gerbang logika:

$a = 10;
$b = 7;

if ( $a > 1 and $b < 10 ) {


echo “Semua kondisi benar! <br>”;
}
else {
echo “Salah satu atau semua kondisi salah <br>”;
}

Hasil dari program di atas adalah tulisan “Semua kondisi benar” karena kedua
kondisi yang diberikan menghasilkan true.

Apabila terdapat kondisi yang lebih dari dua dapat menggunakan teknik
Nested If yaitu if yang berkelanjutan dengan alur IF-ELSE IF-ELSE. Misalkan
pada contoh perintah if yang sebelumnya, jika kedua variabel bernilai sama
maka hasilnya tidak akan sesuai dengan yang diinginkan.

$a = 5;
$b = 5;
if ( $a > $b ) {
echo “Nilai a lebih besar dari nilai b <br>”;
}
else {
echo “Nilai a lebih kecil dari nilai b <br>”;
}

Hasil dari program di atas adalah Nilai a lebih kecil dari nilai b karena tidak
ditemukan kondisi lain yang lebih cocok. Program tersebut harus dimodifikasi
menggunakan teknik nested if.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-3
Kendali Program

Program setelah dimodifikasi:

<?php

$a = 5;
$b = 5;
if ( $a > $b ) {
echo “Nilai a lebih besar dari nilai b <br>”;
}
else if ( $a < $b ) {
echo “Nilai a lebih kecil dari nilai b <br>”;
}
else {
echo “Nilai a sama besar dengan nilai b <br>”;
}

?>

Hasilnya adalah Nilai a sama besar dengan nilai b karena sudah ada
kondisi yang lebih cocok. Apabila ingin menggunakan kondisi yang lebih
banyak lagi dapat memakai perintah Switch untuk penulisan yang lebih
mudah dimengerti.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-4
Kendali Program

Dalam kondisi tertentu terdapat perintah exit yang digunakan di dalam if untuk
langsung keluar dari program jika kondisi terpenuhi. Misalkan ada blok
program seperti berikut:

<?php
$a = 555;
$b = 5;
if ( $a > $b ) {
echo “Nilai a lebih besar dari nilai b <br>”;
exit;
}
else {
echo “Nilai a lebih kecil dari nilai b <br>”;
}
echo “Disini ada tulisan pada baris terakhir <br>”;
?>

Oleh karena kondisi if dari program tersebut sudah benar maka setelah
mencetak tulisan Nilai a lebih besar dari nilai b maka program akan
langsung keluar sehingga tulisan Disini ada tulisan pada baris terakhir tidak
akan dicetak.

Apabila ada output HTML setelah baris program di atas, maka tetap tidak
akan dijalankan oleh browser karena perintah exit sebelumnya.

Teknik ini biasanya digunakan untuk otentikasi supaya segera pindah


halaman (redirect) atau misalnya menjalankan query database.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-5
Kendali Program

Switch-Case

Cara kerja dari perintah switch mirip dengan if namun berbeda pada
penulisannya. Switch membutuhkan sebuah variabel untuk dijadikan acuan
untuk kondisi kemudian menyediakan jawaban-jawaban dari beberapa kondisi
yang telah dibuat.

Switch dapat dijadikan alternatif blok program jika kondisi yang dibutuhkan
lebih dari dua bahkan tiga untuk penyederhanaan penulisan.

Sintaks dari switch:

switch ($namaVariabel) {
case ekspresi1 :
instruksi1;
break;
case ekspresi2 :
instruksi2;
break;
case ekspresi3 :
instruksi3;
break;
default:
instruksiTerakhir;
}

Setiap case harus menggunakan perintah break pada akhir instruksi yang
bertujuan untuk segera keluar dari blok program switch apabila kondisi sudah
terpenuhi. Jika break tidak digunakan maka meskipun kondisi sudah terpenuhi
perintah di bawahnya tetap akan dijalankan.

Default adalah perintah terakhir apabila tidak ada kondisi yang memenuhi
syarat.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-6
Kendali Program

Penggunaan switch adalah alternatif dari if dengan banyak kondisi. Misalkan


terdapat kasus seperti berikut:

 Jika nilai siswa kurang dari 50 maka siswa dianggap tidak lulus.
 Jika nilai siswa berada antara 50 sampai 70 maka siswa akan
mengulang ujian.
 Jika nilai siswa 70 atau lebih maka siswa dianggap lulus.
 Kondisi terakhir adalah nilai belum dimasukkan (default).

Blok programnya adalah seperti berikut ini:

$nilai = 95;
switch ($nilai) {
case $nilai<50 :
echo “Gagal<br>”;
break;
case $nilai>=50 and $nilai<70 :
echo “Mengulang Ujian<br>”;
break;
case $nilai>70 :
echo “Lulus<br>”;
break;
default:
echo “Nilai belum terdaftar<br>”;
}

Pada blok program di atas menggunakan logika AND pada case kedua yaitu
menentukan apakah nilai siswa lebih besar sama dengan 50 dan lebih kecil
sama dengan 70 karena tidak adanya operator aritmetika untuk membuat
kondisi antara atau between.

Output dari blok pemrograman di atas yaitu Lulus karena nilai dari siswa
adalah 95.

Bentuk switch sebelumnya dapat disederhanakan menjadi seperti berikut:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-7
Kendali Program

$nilai = 95;
switch ($nilai) {
case $nilai<50 :
echo "Gagal<br>";
break;
case $nilai<=70 :
echo "Mengulang Ujian<br>";
break;
case $nilai>70 :
echo "Lulus<br>";
break;
default:
echo "Nilai belum terdaftar<br>";
}

Ekspresi tidak harus menggunakan logika AND atau OR namun harus


memperhatikan urutan dari ekspresinya. Ekspresi di bawah ini terdapat
kesalah urutan yaitu $nilai<=70 diletakkan lebih dulu daripada $nilai<50 maka
otomatis semua siswa meski bernilai kurang dari 50 pun akan dianggap
Mengulang Ujian.

$nilai = 95;
switch ($nilai) {
case $nilai<=70 :
echo "Mengulang Ujian<br>";
break;
case $nilai<50 :
echo "Gagal<br>";
break;
case $nilai>70 :
echo "Lulus<br>";
break;
default:
echo "Nilai belum terdaftar<br>";
}
While

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-8
Kendali Program

Perintah while digunakan untuk perulangan (loop) satu atau beberapa


instruksi selama kondisi masih memenuhi syarat. Kondisi yang terpenuhi tidak
harus selalu true namun kadangkala ada program yang terus berjalan/loop
selama kondisi false.

Sintaks:

while (kondisi) {
instruksi1;
instruksi2;
}

Contoh penggunaan perintah while berikut ini adalah mencetak angka dari 1
sampai 10:

$x = 1;
while ($x <= 10) {
echo “Angka ke-$x <br>”;
$x++;
}

Output dari perintah di atas adalah mencetak angka 1 sampai dengan 10 dan
dibutuhkan sebuah perintah untuk menambahkan nilai $x. Pada contoh di
atas menggunakan $x++ yang merupakan incremental yaitu bertambah 1
setiap kali perintah tersebut dijalankan. Artinya setiap langkah/step dari
looping akan bertambah 1.

Incremental dapat diganti dengan deklarasi nilai baru untuk variabel $x yaitu
dengan perintah:

$x = $x + 1;
Dalam setiap loop dibutuhkan minimal sebuah instruksi yang nantinya akan
menyebabkan kondisi bisa terpenuhi menjadi true atau false. Jika tidak ada
maka looping tidak akan berhenti.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2-9
Kendali Program

Do-While

Cara kerja dari loop Do-While mirip dengan While namun perbedaannya
adalah instruksi yang berada di dalam While hanya akan dijalankan apabila
kondisi terpenuhi sedangkan instruksi yang berada di dalam Do-While akan
dijalankan minimal 1 kali meski kondisi tidak sesuai. Dalam kata lain variabel
atau kondisi pada Do-While akan diperiksa belakangan setelah minimal 1 kali
eksekusi.

Sintaks:

do {
instruksi1;
instruksi2;
}
while (kondisi);

Contoh loop dengan do-while:

$x = 10;
do {
echo “Cetak angka $x <br>”;
$x--;
}
while ($x < 5);

Perintah echo untuk Cetak Angka akan dijalankan minimal satu kali meski
kondisinya sama sekali tidak sesuai.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2 - 10
Kendali Program

For

Perintah for digunakan juga untuk loop namun perbedaannya dengan while
atau do while adalah pada deklarasi variabel.

Sintaks:

for ( $nilaiAwal; kondisi; instruksiBerikut; ){


instruksi1;
instruksi2;
}

Perintah for dapat mendeklarasikan variabelnya sendiri meski sebelumnya


variabel dengan nama yang sama sudah dibuat terlebih dulu. Berikutnya nilai
variabel tersebut akan mengambil dari hasil akhir pada for. Berikut contoh dari
loop for:

$x = 100;
for($x=1; $x<=10; $x++){
echo “For Loop Angka $x <br>”;
}

Output dari program di atas adalah mencetak angka dari 1 sampai 10.
Sebelum dimulainya for, terdapat baris perintah untuk deklarasi variabel $x
yaitu 100 tetapi ketika dimulainya for, nilai dari $x langsung berubah menjadi
1. Nilai $x akhir setelah for selesai loop adalah 11 karena sudah bertambah
dari hasil incremental.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 2 - 11
Array

3
Array

Array

Array adalah kumpulan skalar atau objek yang dapat diakses melalui indeks
yang dimulai dari 0 sampai dengan jumlah total elemen dikurangi 1 (n-1).

Variabel deret atau list adalah array yang dapat berisi elemen berupa
alfanumerik dan karakter.

Contoh pembuatan array:

$kota[0]=”Jakarta”;
$kota[1]=”Bogor”;
$kota[2]=”Depok”;
$kota[3]=”Tangerang”;
$kota[4]=”Bekasi”;

Elemen dari deret ini dapat diakses secara individual melalui indeks yang
dihitung dari kiri ke kanan dan dimulai dengan angka 0. Indeks dibungkus
dengan tanda kurung besar [ ].

Untuk mencetak array dapat menggunakan perintah print atau echo berikut
indeks dari yang bersangkutan:

echo “Kota pertama = $kota[0] <br>”;


echo “Kota kedua = $kota[1] <br>”;

Kota pertama dimulai dari indeks ke-0 dan seterusnya. Untuk mengetahui
indeks nya dapat menghitung dengan n-1. Hal ini dapat dibilang kurang
familiar untuk beberapa kalangan. Terdapat metode lain untuk inisialisasi
array dengan bentuk yang lebih sederhana daripada program di atas.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-1
Array

Inisialisasi Array

Fungsi array() dapat dijadikan metode inisialisasi array dalam bentuk yang
lebih sederhana dibanding sebelumnya.

$kota = array(“Jakarta”,”Bogor”,”Depok”,”Tangerang”,”Bekasi”);

Indeks tidak perlu ditulis dan otomatis elemen pertama akan mendapatkan
indeks 0. Apabila tetap ingin menuliskan indeks dapat melakukan cara seperti
contoh berikut:

$kota = array(0=>”Jakarta”,”Bogor”,”Depok”,”Tangerang”,”Bekasi”);

Operator => adalah untuk memberikan referensi penomoran indeks kepada


sebuah elemen array. Pada contoh di atas Jakarta mendapatkan indeks ke-0
dan Bogor hingga Bekasi akan mendapatkan indeks berurutan tanpa harus
ditulis manual.

Untuk membuat indeks yang lebih mudah dimengerti dapat melakukan


penomoran yang dimulai dari 1 seperti contoh berikut:

$kota = array(1=>”Jakarta”, ”,”Bogor”,”Depok”,”Tangerang”,”Bekasi”);

Selanjutnya Bogor hingga Bekasi akan berurutan hingga 5 dan indeks ke-0
akan dianggap kosong (null). Teknik ini dapat mempermudah pencetakan
elemen array dengan loop.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-2
Array

Mencetak Elemen Array dengan Loop

Untuk menampilkan elemen array dapat dilakukan dengan memanfaatkan


loop supaya dapat tercetak seluruh elemen yang ada pada array tersebut.
Loop dapat menggunakan While atau For.

Terlebih dulu harus diketahui jumlah elemen yang ada pada array tersebut
dengan perintah count:

$kota = array(1=>”Jakarta”,”Bogor”,”Depok”,
”Tangerang”,”Bekasi”);
$jumlah = count($kota);

Contoh berikut adalah mencetak elemen array dengan for:

for ($x=1; $x<=$jumlah; $x++){


echo “Kota ke-$x: $kota[$x]”;
}

Hasil:

Kota ke-1: Jakarta


Kota ke-2: Bogor
Kota ke-3: Depok
Kota ke-4: Tangerang
Kota ke-5: Bekasi

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-3
Array

Array Asosiatif

Indeks dari array tidak harus berupa angka namun bisa juga berupa tipe lain
misalnya string. Teknik ini biasanya digunakan untuk array multidimensi.

$manajer[‘nama’] = “John Smith”;


$manajer[‘inisial’] = “JS”;
$manajer[‘divisi’] = “Teknologi Informasi”;

Jika dibuat dengan metode inisialisasi maka sintaksnya akan berubah seperti
berikut:

$manajer = array("nama"=>"John Smith","inisial"=>"JS",


"divisi"=>"Teknologi Informasi");

Untuk menampilkan isi array satu persatu dapat melakukan cara seperti biasa
ketika mencetak array dengan indeks angka:

echo “Nama Manajer Teknologi Informasi: $manajer[nama] <br>”;

Perintah loop for tidak dapat mencetak array dengan indeks selain integer
sehingga harus diganti dengan perintah lain yaitu foreach yang mampu
mencetak indeks array berupa string:

foreach($namaVariabelArray as $key => $value){


instruksi1;
instruksi2;
}

Cara kerja dari foreach adalah menjadikan indeks string tersebut sebagai key
atau kunci dari indeks dan merujuk ke value dari array tersebut.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-4
Array

Berikut adalah skrip perulangan foreach untuk mencetak seluruh elemen array
$manajer:

foreach($manajer as $key => $value){


echo "$key - $value <br>";
}

Hasilnya adalah:
nama - John Smith
inisial - JS
divisi - Teknologi Informasi

Manfaat dari foreach dapat dilihat lebih optimal ketika mencetak elemen array
multidimensi yang lebih menyerupai tabel database. Skrip berikut adalah
contoh array multidimensi dengan metode penulisan yang menggunakan tab
supaya lebih mudah dibaca:

$kantor = array(“Jakarta”=>array(“Manajer”=>”Elizabeth Andersen”,


“Alamat”=>”Permata Senayan”,
“Telp”=>”62-21-12345678”),
“Bandung”=>array(“Manajer”=>”Martin O’Donnell”,
“Alamat”=>”Cipaganti”,
“Telp”=>”62-22-987654”),
“Surabaya”=>array(“Manajer”=>”Bernard Tham”,
“Alamat”=>”Gedung Graha Pena”,
“Telp”=>”62-31-135790”)
);

Pada contoh di atas terdapat array dengan 2 dimensi. Untuk mencetak


seluruh elemen array tersebut dibutuhkan dua kali loop dengan foreach
(menyesuaikan berapa banyak dimensi array).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-5
Array

Program berikut adalah foreach untuk mencetak array dua dimensi:

$kantor = array(“Jakarta”=>array(“Manajer”=>”Elizabeth Andersen”,


“Alamat”=>”Permata Senayan”,
“Telp”=>”62-21-12345678”),
“Bandung”=>array(“Manajer”=>”Martin O’Donnell”,
“Alamat”=>”Cipaganti”,
“Telp”=>”62-22-987654”),
“Surabaya”=>array(“Manajer”=>”Bernard Tham”,
“Alamat”=>”Gedung Graha Pena”,
“Telp”=>”62-31-135790”)
);

foreach($kantor as $key1 => $val1){


echo “Lokasi: $key1 <br>”;
foreach($val1 as $key2 => $val2){
echo “$key2 - $val2 <br>”;
}
echo “<hr>”;
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-6
Array

Penerapan array dengan elemen HTML yang paling umum digunakan adalah
mencetak combo box dengan sumber data dinamis sehingga tidak perlu
mengganti tag dan value pada HTML nya.

Berikut adalah tag HTML untuk membuat combo box dengan cara statis:

<select nama=”daftarKota”>
<option value=”Jakarta”>Jakarta</option>
<option value=”Bogor”>Bogor</option>
<option value=”Depok”>Depok</option>
<option value=”Tangerang”>Tangerang</option>
<option value=”Bekasi”>Bekasi</option>
</select>

Untuk membuat combo box tersebut dengan cara dinamis yaitu cukup hanya
satu baris tag option berikut value-nya yang nantinya akan dicetak berulang
dengan menggunakan loop while atau for.

Kesulitan yang dihadapi ketika penulisan skrip gabungan antara PHP dengan
HTML atau dengan Javascript adalah escape characters seperti tanda single
quote atau double quote. Oleh karena nantinya penulisan skrip <option
value=””> akan dibuat dalam skrip PHP maka diperlukan modifikasi pada
penulisannya. Tanda \” dapat dibuat untuk mengatasi kemungkinan kesalahan
penulisan escape characters.

Contoh modifikasi penulisan skrip gabungan:

for($x=1; $x<=$jumlah; $x++){


echo "<option value=\"$kota[$x]\">$kota[$x]</option>";
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-7
Array

Berikut adalah hasil akhir penggabungan antara HTML dan PHP untuk
membuat dynamic combo box:

<!DOCTYPE html>
<html>
<head>
<title>Dynamic Combo Box</title>
</head>

<body>
<h3>Dynamic Combo Box:</h3>
<select name=”daftarKota”>
<?php
$kota = array(1=>"Jakarta","Bogor","Depok",
"Tangerang","Bekasi");
$jumlah = count($kota);
for($x=1; $x<=$jumlah; $x++) {
echo "<option value=\"$kota[$x]\">$kota[$x]</option>";
}
?>
</select>
</body>
</html>

Penulisan skrip PHP bisa dimana saja pada bagian HTML, dapat berupa
sisipan blok pemrograman atau bahkan “memasukkan” HTML ke dalam
bagian loop atau kondisi sebuah blok program pada PHP.

Meskipun perintah PHP dapat diletakkan dimana saja namun beberapa


perintah nantinya harus diletakkan bagian atas sebelum dimulainya output
pada browser.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-8
Array

Contoh membuat combo box dinamis dengan menggunakan while:

<!DOCTYPE html>
<html>
<head>
<title>Dynamic Combo Box</title>
</head>

<body>
<h3>Dynamic Combo Box:</h3>
<select name=”daftarKota”>
<?php
$kota = array(1=>"Jakarta","Bogor","Depok",
"Tangerang","Bekasi");
$x = 1;
$jumlah = count($kota);
while( $x <= $jumlah ){
echo "<option value=\"$kota[$x]\">$kota[$x]</option>";
$x++;
}
?>
</select>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3-9
Array

Data yang ingin ditampilkan pada combo box untuk misalnya daftar kota tidak
hanya berasal dari array saja namun dapat berasal dari hasil fetch data
MySQL dengan menggunakan metode yang serupa dengan diawali oleh
query terlebih dulu.

Keuntungan dari menggunakan data MySQL adalah tabelnya dapat dipakai


dimana saja tanpa harus deklarasi terlebih dulu seperti array $kota.

Oleh karena array hanya bersifat sementara dan berlaku di sebuah dokumen
saja, dibutuhkan fungsi tambahan apabila ingin menggunakan array yang
sama untuk dipakai di halaman yang berbeda. Untuk membuatnya perlu
membuat sebuah file yang khusus menyimpan array tersebut atau
membuatkan fungsi (function) pada sebuah halaman dan file tersebut dapat
“ditempelkan” dengan menggunakan perintah include atau require.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 3 - 10
Function

4
Function

Function

Function atau fungsi pada PHP adalah perintah yang dibuat sendiri oleh
programmer yang dapat berisikan perintah yang sering digunakan pada
sebuah aplikasi yang telah dibangun. Tujuannya adalah mempersingkat
perancangan kode supaya tidak perlu menulis ulang dari perintah yang
sederhana ataupun yang rumit.

Pada function dikenal istilah subroutine yaitu nama dari fungsi yang telah
dibuat dan dapat digunakan kapan saja diperlukan.

Sintaks dari function:

function namaFungsi (parameter) {


instruksi1;
instruksi2;
……….;
}

Pembuatan fungsi diawali oleh kata kunci function. Nama fungsi dapat berupa
apa saja dengan ketentuan yang mirip seperti pembuatan variabel yaitu:
 case insensitive.
 alfanumerik.
 tidak mengandung spasi (dapat diganti dengan underscore).
 tidak diawali oleh angka.
 tidak bentrok dengan reserved keywords seperti echo, print, dsb.

Berbeda dengan nama variabel, Case insensitive artinya tidak pengaruh


apakah karakter huruf kapital atau tidak.

Contoh sebuah fungsi mencetak tulisan:

function cetak(){
echo “Cetak tulisan dengan function <br>”;
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-1
Function

Subroutine yang telah dibuat dapat diaplikasikan kembali dengan menuliskan


nama fungsi yang telah dibuat dan dapat digunakan beberapa kali sesuai
keperluan:

cetak();

Contoh di atas yaitu memanggil subroutine sebanyak satu kali sehingga


output hanya akan menghasilkan tulisan “Cetak tulisan dengan function”
sebanyak satu kali saja.

cetak();
cetak();
cetak();
cetak();

Seperti yang telah dicontohkan di atas, hasil dari soubroutine tersebut adalah
mencetak tulisan yang telah dibuat pada fungsi sebanyak empat kali.

Karena fungsi dengan nama cetak tersebut hanya berisikan tulisan dan sudah
dibuatkan output dari perintah echo, maka setiap kali subroutine dipanggil
akan langsung mencetak tulisan tersebut.

Apabila pada fungsi yang berisi operator aritmetika, terdapat dua pilihan untuk
mencetak hasil perhitungan yaitu dengan menggunakan echo atau dapat
menggunakan return value.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-2
Function

Return Value

Return Value atau nilai balik adalah nilai yang diberikan oleh sebuah fungsi
yang umumnya berupa operasi aritmetika atau hitungan. Nilai balik ini dapat
dianalogikan sebagai kuitansi hasil transaksi jual-beli.

function penjumlahan(){
$x = 20;
$y = 80;
$i = $x + $y;
return($i);
}

Variabel $i menjadi nilai balik dengan return. Parameter dari return dapat
berupa ekspresi string atau integer.

Untuk mencetak hasil dari fungsi tersebut diharuskan untuk menyimpan


umpan balik tersebut ke sebuah variabel seperti contoh berikut:

$penjumlahan = penjumlahan();
echo “Variabel x = $x <br>”;
echo “Variabel y = $y <br>”;
echo “Hasil penjumlahan x+y = $penjumlahan <br>”;

Apabila fungsi aritmetika tidak mempunyai return value maka tidak dapat
dicetak meskipun subroutine sudah dipanggil. Program di atas mencoba
mencetak kedua variabel input pada fungsi dengan nama $x dan $y namun
ketika program tersebut dijalankan, output yang didapat hanyalah hasil
penjumlahan saja. Hal ini dikarenakan variabel $x dan $y masih bersifat lokal.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-3
Function

Variabel Lokal dan Global

Variabel yang telah dibuat di dalam sebuah fungsi otomatis bersifat lokal dan
tidak bisa digunakan di luar fungsi seperti contoh halaman sebelumnya. Hal
ini sebenarnya untuk proteksi variabel supaya tidak bentrok dengan variabel
lain apabila terdapat variabel dengan nama yang sama.

Jika tetap ingin menggunakan variabel tersebut di luar fungsi maka


diharuskan untuk menggunakan keyword global supaya variabel yang
dimaksud akan dapat digunakan di luar function.

function penjumlahan(){
global $x;
global $y;
$x = 20;
$y = 80;
$i = $x + $y;
return($i);
}

Dari contoh di atas, output akan mencetak seluruh tulisan, tidak seperti
halaman sebelumnya karena variabel $x dan $y sudah menjadi global.

Deklarasi variabel global harus sebelum memasukkan nilai ke variabel


tersebut. Jika deklarasi global terletak setelah input nilai maka variabel yang
dimaksud akan sama saja masih bersifat lokal.

Deklarasi global dapat disederhanakan menjadi seperti berikut:

global $x,$y;

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-4
Function

Parameter pada Subroutine

Parameter dapat digunakan sebagai nilai dinamis pada satu atau beberapa
variabel pada function. Biasanya metode ini dibuat untuk meningkatkan unsur
interaktivitas antara user dengan server.

Input nilai ke sebuah variabel dapat dilakukan di luar function dan pada saat
memanggil subroutine akan dimasukkan ke dalam parameter sesuai urutan
dari penulisan variabel yang bersangkutan.

Contoh fungsi dengan parameter dan fungsi hitung yang lebih rumit:

<?php
function hitung($x, $y, $z){
$hitung = ($x + $y) * $z;
return ($hitung);
}
//deklarasi nilai variabel di luar function
$a = 5;
$b = 3;
$c = 10;
$rumus = hitung($a, $b, $c);
echo “Nilai a = $a <br>”;
echo “Nilai b = $b <br>”;
echo “Nilai c = $c <br>”;
echo “Rumus hitung = $rumus <br>”;
?>

Hasil:

Nilai a = 5
Nilai b = 3
Nilai c = 10
Rumus hitung = 15

Call by Reference

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-5
Function

Teknik call by reference adalah penggantian nilai dari sebuah variabel yang
telah dimasukkan ke dalam parameter. Misalkan ada sebuah fungsi hitungan
dengan beberapa variabel di dalamnya, dan terdapat deklarasi variabel baru
di dalam fungsi tersebut maka hasil akhirnya adalah satu atau beberapa
variabel akan berganti nilainya tergantung variabel mana yang ditandai oleh
call by reference tersebut.

function callBy($x, &$y, $z){


$total = ($x+$y)*$z;
$x = 777;
$y = 888;
$z = 999;
return($total);
}
$a = 10;
$b = 20;
$c = 5;
//pencetakan pertama sebelum function
echo "$a - $b - $c <br>";
$callBy = callBy($a, $b, $c);
echo "Call by reference= $callBy<br>";
//pencetakan kedua setelah function
echo "$a - $b - $c <br>";

Pada program di atas dapat dilihat variabel $y yang berada di dalam


parameter menggunakan tanda ampersand (&) yang menandakan bahwa nilai
variabel tersebut dapat berubah menjadi nilai variabel yang telah
dideklarasikan di dalam fungsi tersebut.

Nilai variabel b yang tadinya 20 akan berubah menjadi 888 pada saat
pencetakan kedua karena pada fungsi tersebut terdapat deklarasi baru.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-6
Function

Include dan Require

Satu atau beberapa function dapat digunakan berkali-kali dengan memanggil


subroutine. Dengan memanfaatkan perintah Include atau Require maka
function yang telah dibuat dapat digunakan untuk file lain. Perintah include
yaitu untuk “mengikutsertakan” sebuah file ke file lain. Sedangkan untuk
require berarti sebuah file dibutuhkan untuk file lain supaya programnya dapat
berjalan.

Dari definisi tersebut, didapatkan perbedaan antara keduanya. Perintah


include yang berarti mengikutsertakan file ke file lain artinya file tersebut tidak
sepenuhnya berkaitan dengan program yang ada di file yang lain, sehingga
apabila terjadi kesalahan include maka program yang berada setelah include
tetap dapat berjalan dengan baik kecuali programnya memang membutuhkan
file yang di-include tadi.

Untuk require, artinya adalah sebuah file dibutuhkan untuk berjalannya


program pada sebuah file. Jika terjadi kesalahan require maka program di
bawahnya tidak dapat berjalan dengan baik sebelum kesalahan tersebut
diperbaiki. Kesalahan yang umum terjadi ketika menggunakan perintah
include atau require adalah kesalahan nama file, lokasi file atau kemungkinan
file tersebut memang tidak ada, terhapus atau corrupt.

Sintaks:

include “namaFile.php”;

atau

require “namaFile.php”;

File yang di-include atau require tidak harus PHP saja, namun bisa berupa
HTML. Apabila file terdapat pada direktori yang berbeda maka diperlukan
penulisan seperti contoh berikut:

include “src/functions.php”;
require “../src/php/functions.php”;

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-7
Function

Tips dalam menggunakan include atau require file yang berisi HTML, jadikan
dokumen yang akan di-include atau require hanya berisi tag yang perlu saja,
atau berisi perintah PHP yang diperlukan saja. Oleh karena prinsip kerja
include dan require itu sebenarnya adalah menempelkan file ke file lain maka
jika ada tag HTML yang bertumpuk pada sebuah file akan mengakibatkan
kemungkinan olah halaman di browser menjadi error dan kemungkinan terjadi
inkompatibilitas.

Perhatikan contoh berikut untuk latihan include dan require file:

File pertama yaitu hanya berisi PHP saja, tanpa adanya tag HTML satupun
kecuali yang benar-benar diperlukan:

<?php
//nama file ini adalah fungsi.php
function cetak(){
echo “Cetak tulisan ini dengan function<br>”;
}

function perkalian(){
$x = 10;
$y = 20;
$z = $x * $y;
return($z);
}
?>

Pada file pertama, kode yang dibuat hanya murni PHP saja meski ada tag
HTML <br> yang termasuk di dalam fungsi cetak();

Oleh karena file ini akan diikutsertakan ke file lain yang umumnya berekstensi
*.html maka tag HTML seperti head, title, body dan sebagainya tidak
diperlukan supaya menjaga jangan sampai ada tag yang bertumpukan di
dalam sebuah halaman.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-8
Function

File kedua adalah file yang akan memanggil atau menempelkan fungsi.php
yang telah dibuat sebelumnya. File ini boleh berisi PHP saja atau sekaligus
lengkap dengan tag HTML. Asumsikan file ini berada di direktori yang sama
dengan file fungsi.php:

<!DOCTYPE html>
<html>
<head>
<title>Latihan Include dan Require</title>

<body>
<h1>Latihan Include dan Require file</h1>

<?php
//include nama file lengkap dengan ekstension
include “fungsi.php”;

//panggil subroutine yang terdapat pada file sebelumnya


cetak();
$perkalian = perkalian();
echo “Hasil perkalian = $perkalian <br>”;

?>

<h3>Latihan Selesai</h3>

</body>
</html>

Hasilnya serupa dengan memanggil subroutine seperti pada latihan


sebelumnya namun diterapkan pada halaman/file yang berbeda.

Kesalahan Include

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4-9
Function

<!DOCTYPE html>
<html>
<head>
<title>Latihan Include dan Require</title>

<body>
<h1>Latihan Include dan Require file</h1>

<?php
//include nama file lengkap dengan ekstension
include “fungsion.php”;

//panggil subroutine yang terdapat pada file sebelumnya


cetak();
$perkalian = perkalian();
echo “Hasil perkalian = $perkalian <br>”;
?>
<h3>Latihan Selesai</h3>
</body>
</html>

Pada kode di atas terdapat kesalahan penulisan nama file yang semestinya
fungsi.php dan masih menggunakan include. Include adalah
mengikutsertakan sebuah file ke file lain, umumnya berkaitan terhadap
program yang terdapat pada file yang meng-include. Jika terjadi kesalahan
include maka sebenarnya program di bawahnya masih dapat berjalan namun
akan terdapat notifikasi Warning pada halaman yang bersangkutan.

Pada contoh di atas, tulisan Latihan Selesai masih akan tercetak meski
include nya mengalami kesalahan penulisan nama file.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4 - 10
Function

Kesalahan Require

<!DOCTYPE html>
<html>
<head>
<title>Latihan Include dan Require</title>

<body>
<h1>Latihan Include dan Require file</h1>

<?php
//require nama file lengkap dengan ekstension
require “fungsion.php”;
//panggil subroutine yang terdapat pada file sebelumnya
cetak();
$perkalian = perkalian();
echo “Hasil perkalian = $perkalian <br>”;
?>
<h3>Latihan Selesai</h3>
</body>
</html>

Pada kode di atas terdapat kesalahan penulisan nama file yang semestinya
fungsi.php dan sudah diganti menggunakan require. Require adalah
menempelkan file yang dibutuhkan untuk menjalani baris program
berikutnya. Jika terjadi kesalahan require maka program berikutnya tidak
dapat berjalan dan terdapat notifikasi Fatal Error pada halaman yang
bersangkutan.

Pada contoh di atas, tulisan Latihan Selesai tidak akan tercetak karena
sudah menggunakan perintah require.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 4 - 11
HTML Form

5
HTML Form

HTML Form

Form HTML digunakan sebagai media pengiriman data dari halaman ke


halaman lain atau untuk pemrograman versi lanjut, pengiriman data tidak
harus antar halaman namun dapat mengirim ke halaman yang sama jika
menggunakan metode asinkronus dalam pemrogramannya.

Form dapat menggunakan metode GET atau POST untuk pengiriman data.
Metode GET dapat dikatakan rentan terhadap hacking dikarenakan
pengiriman GET menggunakan media URL parameter sedangkan POST akan
dikirim langsung ke server tanpa melalui URL.

Berikut tag HTML untuk membuat form dengan metode POST:

<form id=”form_reg” method=”post” action=”registrasi.php”>





</form>

Form ID adalah identitas untuk form yang telah dibuat, biasanya digunakan
untuk mengatur format melalui CSS atau dapat digunakan juga dalam
pemrograman Javascript. Metode menggunakan POST untuk memastikan
keamanan informasi yang dikirim oleh user.

Action adalah sebuah file yang digunakan sebagai penampungan hasil


kiriman user misalnya nama lengkap, usia, tanggal lahir dan sebagainya.

Informasi yang telah diisi oleh user akan dikirim setelah menekan tombol
Submit. Letakkan seluruh komponen form di dalam blok tag yang dicontohkan
di atas. Apabila ada komponen yang salah letak di luar blok tag form maka
informasi di dalam komponen tersebut tidak akan terkirim.

Komponen form yang umum digunakan adalah text field, text area, combo box
dan button. Seluruh komponen form adalah tag HTML.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-1
HTML Form

Text Field

Text field adalah komponen umum berbentuk kotak isian yang digunakan
untuk mengisi informasi misalnya nama lengkap, tempat lahir atau password.
Tag untuk text field adalah single tag sehingga tidak membutuhkan pasangan
untuk tag penutup.

<input type="text" name="txtNama" size="50" />

Contoh di atas adalah pembuatan text field dengan atribut sebagia berikut:
 Nama “txtNama” digunakan sebagai identitas untuk dihubungkan
dengan variabel PHP yang menerima hasil kiriman.
 Type=”text” melambangkan komponen tersebut adalah text field.
 Size adalah ukuran kotak isian yang melambangkan berapa banyak
karakter yang dapat ditampilkan pada layar. Meskipun ukuran hanya 50
karakter tetapi pada kenyataannya karakter yang dapat dimasukkan
dapat melebihi 50 karakter/digit.

Kesalahan yang sering terjadi adalah kesalahan dari identitas komponen form
karena terdapat aturan Case Sensitive. Kesalahan nama ID akan
menyebabkan informasi tidak dapat diterima dengan baik oleh PHP.

Text field untuk pengisian password cukup merubah atribut menjadi seperti
berikut:

<input type="password" name="txtPassword" size="50" />

Atribut password berarti text field berubah menjadi isian password yaitu pada
saat pengisian, karakter tidak akan tampil sebenarnya melainkan berupa
simbol bulat atau bintang.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-2
HTML Form

Text Area

Komponen ini digunakan untuk mengisi informasi alamat, komentar atau


informasi lainnya yang membutuhkan banyak baris. Tag ini berpasangan
sehingga membutuhkan tag penutup.

<textarea name="txtAlamat" cols="50" rows="5"></textarea>

Sedikit berbeda dengan text field, terdapat atribut cols yang berfungsi sama
dengan size yaitu untuk membuat ukuran (lebar) dari komponen tersebut dan
rows untuk menentukan berapa baris yang dapat ditampilkan pada layar.
Sama seperti text field, meskipun ukuran sudah ditentukan tetapi user masih
dapat mengisi lebih dari digit yang ditentukan.

Radio Button

Komponen ini digunakan untuk pilihan ganda seperti kuis online, pemilihan
jenis kelamin atau pilihan Yes or No. Namun oleh karena metode validasi
untuk komponen ini cukup rumit maka komponen ini sudah jarang digunakan
lagi. Name pada komponen ini sama saja seperti name pada komponen
lainnya.

<input type="radio" name="jeniskelamin" value="P" />


<input type="radio" name="jeniskelamin" value="L" />

Pada radio button dapat ditambahkan atribut Checked yang menandakan


tombol mana yang sudah dipilih terlebih dulu ketika halaman web tampil.

Contoh berikut adalah dua tombol radio dengan salah satu tombol sudah
terpilih/checked terlebih dulu:

<input type="radio" name="jeniskelamin" value="P" />


<input type="radio" name="jeniskelamin" value="L"
checked=”checked” />

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-3
HTML Form

Select

Komponen ini lebih dikenal dengan sebutan dropdown atau combo box.
Komponen ini digunakan sama seperti radio yaitu untuk pilihan yang banyak
misalnya kota, provinsi, negara dan sebagainya.

<select name=”provinsi”>
<option value=”Jawa Barat”>Jawa Barat</option>
<option value=”Jawa Tengah”>Jawa Tengah</option>
<option value=”Jawa Timur”>Jawa Timur</option>
<option value=”DKI Jakarta”>DKI Jakarta</option>
</select>

Penambahan atribut Selected bertujuan sama seperti Checked pada radio


button, yaitu untuk otomatis memilih sebuah value ketika halaman web
pertama kali tampil. Pada contoh di bawah ini, provinsi yang pertama kali
tampil/terpilih adalah Jawa Barat:

<select name=”provinsi”>
<option value=”Jawa Barat” selected=”selected”>
Jawa Barat</option>
<option value=”Jawa Tengah”>Jawa Tengah</option>
<option value=”Jawa Timur”>Jawa Timur</option>
<option value=”DKI Jakarta”>DKI Jakarta</option>
</select>

Pada bab sebelumnya telah dicontohkan mengenai pembuatan combo box


dinamis untuk kota dengan array. Kekurangan dari array selain karena
bersifat lokal dan sementara yaitu juga tidak bisa mengurut tulisan/nama dari
kota. Jika menggunakan data MySQL dapat membuat query untuk mengurut
nama kota dengan Order By.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-4
HTML Form

Button

Komponen ini digunakan untuk mengaktifkan form dengan mengirim data


(submit) atau menghapus informasi yang telah diisi oleh user dengan reset.
Kadangkala button juga dapat dibuat custom untuk mengisinya dengan
Javascript atau VB Script misalnya tombol untuk mencetak halaman yang
sedang tampil (print this page). Tombol tersebut dapat menggunakan event
misalnya onClick.

Contoh tag untuk submit button:

<input type="submit" name="btn1" value="DAFTAR" />

Contoh tag untuk reset button:

<input type="reset" name="btn2" value="ULANGI" />

Contoh tag untuk button custom:

<input type="button" name="btn3" value="CLICK ME" />

Nama dari button tidak perlu diubah. Tulisan default pada tombol tipe submit
adalah Submit sedangkan default untuk reset juga adalah Reset. Apabila ingin
merubah tulisan menjadi tulisan lain maka ubahlah value dari button tersebut
seperti contoh tag di atas.

Tombol ini juga harus diletakkan di dalam blok tag form yang telah dibuat dan
jangan sampai salah letak di luar blok tag.

Mayoritas dari aplikasi web sudah tidak menggunakan tombol reset lagi
dikarenakan kurangnya kenyamanan untuk user yang karena diharuskan
untuk mengisi dari awal lagi apabila terjadi salah tekan.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-5
HTML Form

Latihan Aplikasi Form

Buatlah form dengan komponen sebagai berikut:


 Text Field dengan ID “namaLengkap”
 Select dengan nama “divisi” dan berisi:
o Keuangan
o Operasional
o Teknologi Informasi
o SDM
 Action terima.php (file tersendiri)

Kode HTML:

<!DOCTYPE html>
<html>
<head>
<title>Latihan Form</title>
</head>

<body>
<form id="latihan" method="post" action="terima.php">
Nama Lengkap:<br>
<input type="text" name="namaLengkap" size="30" /><br>
Divisi:<br>
<select name="divisi">
<option value="Keuangan">Keuangan</option>
<option value="Operasional">Operasional</option>
<option value="Teknologi Informasi">Teknologi
Informasi</option>
<option value="SDM">SDM</option>
</select>
<input type="submit" name="btn1" value="KIRIM" />
</form>
</body>
<html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-6
HTML Form

Selanjutnya buatlah file terima.php yang akan menerima hasil kiriman dari
form sebelumnya:

<!DOCTYPE html>
<html>
<head>
<title>Terima Hasil Form</title>
</head>

<body>
<?php
//terima hasil form
$namaLengkap = $_POST[namaLengkap];
$divisi = $_POST[divisi];

//cetak hasil form


echo "Nama Lengkap: $namaLengkap<br>";
echo "Divisi: $divisi<br>";
?>
</body>
</html>

Variabel superglobal yang digunakan adalah disesuaikan dengan metode


yang digunakan pada form sebelumnya. Karena form menggunakan metode
POST maka variabel superglobal yang dipakai adalah $_POST yang disimpan
ke variabel tersendiri.

Name yang dimasukkan ke $_POST dapat menggunakan single/double quote


atau tidak sama sekali. Sesuaikan namanya dengan name dari komponen
yang bersangkutan. Apabila terdapat kesalahan pengisian nama akan
berakibat data menjadi blank atau tidak dapat diterima oleh variabel PHP.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-7
HTML Form

File terima.php sebenarnya tidak harus selalu tergabung di dalam HTML


karena semua perintahnya terdapat di PHP namun untuk integrasi sebaiknya
program PHP untuk menerima dan mencetak hasil form selalu dibuat di dalam
HTML seperti dicontohkan di halaman sebelumnya.

Form dapat berbentuk file HTML ataupun PHP. Apabila form yang dibuat tidak
mempunyai fasilitas interaktif maka diperbolehkan hanya dalam bentuk file
*.html atau *.htm. Jika form dibuat dengan unsur interaktif maka diharuskan
file dalam bentuk *.php.

Untuk membuat tampilan form yang rapi dengan komponen yang lebih banyak
misalnya form registrasi member, maka buatlah dalam bentuk tabel HTML.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-8
HTML Form

Tampilan HTML Forms

Keadaan combo box pada saat user memilih item:

Kesalahan pemberian nama yang berbeda pada radio button akan


mengakibatkan radio button tidak bekerja sebagaimana mestinya:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5-9
HTML Form

Beberapa bentuk aplikasi form yang sering digunakan misalnya aplikasi Login
dan Guestbook untuk mengisi komentar di website:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 5 - 10
MySQL Database

6
MySQL

MySQL

MySQL adalah database relasional yang berjalan di multi-platform Windows,


Linux dan platform lainnya. MySQL adalah RDBMS (Relational Database
Management System) yang paling populer digunakan pada aplikasi berbasis
web. Akronim SQL adalah Structured Query Language yaitu bahasa
pemrograman yang digunakan untuk manajemen data yang digunakan pada
RDBMS. Nama “My” berasal dari putri developer MySQL yaitu Michael
Widenius.

MySQL dikembangkan oleh MySQL AB yang berdiri sejak 1995, kemudian


diakuisisi oleh Sun Microsystems pada 2008 hingga terakhir pada 2010 sudah
diakuisisi oleh Oracle Corporation.

Program mysql adalah program client yang digunakan untuk mengakses ke


server. Pasca instalasi akan otomatis mempunyai user account dengan nama
root dan belum mempunyai password. User root disini tidak berhubungan
dengan root pada Linux ataupun Administrator pada Windows.

Perintah untuk login ke server MySQL dapat dilakukan pada command prompt
Windows atau Terminal/Konsole pada Linux:

mysql -u root

Tekan Enter setelah memasukkan perintah di atas untuk masuk ke mysql


prompt. Atribut -u adalah menandakan username yang dilanjutkan dengan
root. Jika account sudah memiliki password maka ditambahkan atribut -p
seperti berikut:

mysql -u root -p

Tekan enter untuk memasukkan password dan setelah berhasil masuk ke


mysql prompt tampilan akan berganti menjadi seperti berikut:

mysql>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-1
MySQL

Tata cara login yang lengkap adalah dengan menambahkan atribut -h jika
ingin terhubung ke MySQL yang berada di server yang berbeda. Default tanpa
atribut -h maka server yang dihubungi adalah localhost.

mysql -h namaservermysql -u namauseraccount -p

Jika membutuhkan bantuan mengenai perintah yang terdapat pada mysql


atau mencari bantuan lainnya, dapat menggunakan ? untuk menampilkan
bantuan/help:

mysql> ?
For information about MySQL products and services, visit:
http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
https://shop.mysql.com/

List of all MySQL commands:


Note that all text commands must be first
? (\?) Synonym for help'.
clear (\c) Clear the current input sta
connect (\r) Reconnect to the server. Op
delimiter (\d) Set statement delimiter.
ego (\G) Send command to mysql serve
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql serve
help (\h) Display this help.
notee (\t) Don't write into outfile.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file.
status (\s) Get status information from
tee (\T) Set outfile [to_outfile]. A
use (\u) Use another database. Takes
charset (\C) Switch to another charset.
with multi-byte charsets.
warnings (\W) Show warnings after every s
nowarning (\w) Don't show warnings after e

For server side help, type 'help contents'

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-2
MySQL

File Database

MySQL menyimpan database sistem dan user dalam bentuk direktori yang
berisi database dan tabel pada direktori yang berbeda tergantung sistem
operasi yang digunakan. Untuk Linux biasanya adalah /var/lib/mysql
sedangkan untuk Windows adalah /mysql/data.

Bagi pengguna paket server XAMPP dapat mengakses direktori data MySQL
pada lokasi /xampp/mysql/data. Media penyimpanan lainnya adalah sesuai
server atau sistem operasi yang digunakan oleh admin.

Perintah untuk melihat database yang terdapat pada server adalah show
databases. Contohnya seperti berikut:

mysql> show databases;


+--------------------+
| Database |
+--------------------+
| information_schema
| cdcol
| db_cloud
| db_kelas
| latihan
| mysql
| phpmyadmin
| running
| test
+--------------------+
9 rows in set (0.07 sec)

Perintah pada MySQL adalah case insensitive sehingga tidak ada aturan
harus huruf kapital atau tidak. Keterangan 9 rows in set adalah baris yang
dihasilkan oleh perintah tadi, artinya yaitu terdapat 9 database pada server
dan perintah tadi dijalankan dengan waktu 0.07 detik (tergantung performa
sistem dan jaringan).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-3
MySQL

Setelah mengetahui database apa saja yang terdapat pada server, gunakan
perintah use untuk mengaktifkan sebuah database seperti contoh berikut:

mysql> use cdcol;

Database cdcol akan digunakan dan notifikasi database changed akan tampil
pada command prompt. Apabila ingin mengetahui database yang sedang aktif
gunakan perintah select database();

mysql> select database();


+------------+
| database() |
+------------+
| cdcol |
+------------+
1 row in set (0.00 sec)

Berikutnya adalah melihat ada berapa tabel pada database yang telah
diaktifkan sebelumnya. Gunakan perintah show tables;

mysql> show tables;


+-----------------+
| Tables_in_cdcol |
+-----------------+
| cds |
+-----------------+
1 row in set (0.06 sec)

Pada database tersebut hanya terdapat sebuah tabel dengan nama cds.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-4
MySQL

Untuk melihat struktur dari tabel yang sudah diketahui, gunakan perintah
describe:

mysql> describe cds;


+-----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+----------------+
| titel | varchar(200) | YES | | NULL | |
| interpret | varchar(200) | YES | | NULL | |
| jahr | int(11) | YES | | NULL | |
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
+-----------+---------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Perintah tersebut akan menampilkan keterangan dari tiap kolom pada tabel
cds. Tipe data yang umum digunakan pada kolom tabel yaitu char, varchar
dan int. Char dan Varchar digunakan sebagai tipe data string dan Int
digunakan untuk tipe data angka atau integer.

Tipe data

Char: alfanumerik (a-z, 0-9 dan underscore), 0-255 karakter

Varchar: alfanumerik, 0-255 karakter untuk 1 byte dan maksimum 65535


karakter jika menggunakan 2 byte.

Integer Unsigned (positif): angka 0-4294967295

Integer Signed (negatif): mulai dari -2147483648 sampai 2147483647

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-5
MySQL

Select

Select adalah query (dialog) untuk menampilkan data dari sebuah tabel. Data
yang ditampilkan dapat dimanipulasi sesuai keperluan misalnya
menggunakan kriteria, sorting atau filter.

Contoh query select:

mysql> select * from cds;


+-----------------------------------+------------------+------+----+
| titel | interpret | jahr | id |
+-----------------------------------+------------------+------+----+
| Beauty | Ryuichi Sakamoto | 1990 | 1 |
| Goodbye Country (Hello Nightclub) | Groove Armada | 2001 | 4 |
| Glee | Bran Van 3000 | 1997 | 5 |
+-----------------------------------+------------------+------+----+
3 rows in set (0.04 sec)

Atribut * artinya menampilkan semua kolom yang terdapat pada tabel cds.
Query tersebut belum mempunyai kriteria atau sorting.

mysql> select * from cds order by jahr asc;


+-----------------------------------+------------------+------+----+
| titel | interpret | jahr | id |
+-----------------------------------+------------------+------+----+
| Beauty | Ryuichi Sakamoto | 1990 | 1 |
| Glee | Bran Van 3000 | 1997 | 5 |
| Goodbye Country (Hello Nightclub) | Groove Armada | 2001 | 4 |
+-----------------------------------+------------------+------+----+
3 rows in set (0.04 sec)

Setelah ditambahkan atribut order by jahr ASC artinya tampilan tabel akan
diurut berdasarkan kolom jahr. Default order by akan memberikan tampilan
urut ascending atau urut terkecil ke terbesar.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-6
MySQL

Tanpa ditulis ASC hasil tetap akan sort ascending:


mysql> select * from cds order by jahr;
+-----------------------------------+------------------+------+----+
| titel | interpret | jahr | id |
+-----------------------------------+------------------+------+----+
| Beauty | Ryuichi Sakamoto | 1990 | 1 |
| Glee | Bran Van 3000 | 1997 | 5 |
| Goodbye Country (Hello Nightclub) | Groove Armada | 2001 | 4 |
+-----------------------------------+------------------+------+----+
3 rows in set (0.04 sec)

Jika ingin menggunakan sort descending atau terbesar ke terkecil maka harus
menggunakan atribut DESC:
mysql> select * from cds order by jahr desc;
+-----------------------------------+------------------+------+----+
| titel | interpret | jahr | id |
+-----------------------------------+------------------+------+----+
| Goodbye Country (Hello Nightclub) | Groove Armada | 2001 | 4 |
| Glee | Bran Van 3000 | 1997 | 5 |
| Beauty | Ryuichi Sakamoto | 1990 | 1 |
+-----------------------------------+------------------+------+----+
3 rows in set (0.00 sec)

Select juga mampu menampilkan hanya beberapa kolom saja sekaligus


urutan kolom yang ditampilkan tidak perlu selalu berurut:
mysql> select id,interpret from cds;
+----+------------------+
| id | interpret |
+----+------------------+
| 1 | Ryuichi Sakamoto |
| 4 | Groove Armada |
| 5 | Bran Van 3000 |
+----+------------------+
3 rows in set (0.00 sec)

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-7
MySQL

Menampilkan record spesifik dengan kriteria:

mysql> select * from cds where jahr=2001;


+-----------------------------------+---------------+------+----+
| titel | interpret | jahr | id |
+-----------------------------------+---------------+------+----+
| Goodbye Country (Hello Nightclub) | Groove Armada | 2001 | 4 |
+-----------------------------------+---------------+------+----+
1 row in set (0.06 sec)

Kriteria pada where tidak harus nilai statik tapi bisa juga menggunakan
operator aritmetik atau string seperti berikut:

mysql> select * from cds where jahr<2000;


+--------+------------------+------+----+
| titel | interpret | jahr | id |
+--------+------------------+------+----+
| Beauty | Ryuichi Sakamoto | 1990 | 1 |
| Glee | Bran Van 3000 | 1997 | 5 |
+--------+------------------+------+----+
2 rows in set (0.00 sec)

mysql> select titel,jahr from cds where titel=beauty;


+--------+------+
| titel | jahr |
+--------+------+
| Beauty | 1990 |
+--------+------+
1 row in set (0.00 sec)

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-8
MySQL

Create Database

Untuk latihan pada bab-bab berikutnya, dimulai dari membuat sebuah


database dan beberapa tabel yang akan digunakan dalam perancangan
aplikasi PHP-MySQL.

mysql> create database exercise;


Query OK, 1 row affected (0.05 sec)

Database exercise telah dibuat. Gunakan perintah use untuk mengaktifkan


database tersebut:

mysql> use exercise;


Database changed

Berikutnya adalah membuat tabel di dalam database yang telah dibuat:


 Tabel members yang nantinya berisi akun milik anggota.
 Tabel cities yang nantinya berisi nama-nama kota yang digunakan
untuk membuat combo box dinamis.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6-9
MySQL

Struktur tabel yang dibutuhkan adalah sebagai berikut:


Tabel members:
Kolom Tipe Null Key Extra
id int(11) PRI AI
nama varchar(50) INDEX
jeniskelamin char(1)
alamat varchar(50) NULL
kota varchar(50) INDEX
username varchar(20) UNIQUE
password varchar(50)

Tabel cities:
Kolom Tipe Null Key Extra
id int(11) PRI AI
namakota varchar(50) INDEX

PRI adalah Primary Key yang bermanfaat sebagai kunci dari tabel yang akan
dibuat sekaligus sebagai identitas unik dari tiap record.

AI adalah Auto Increment yaitu nomor id akan diberikan otomatis berurut


tanpa harus mengisi manual. Index digunakan sebagai mempercepat query
misalnya pencarian nama atau kota. Jika dalam sebuah tabel tidak ada kolom
yang dijadikan index maka proses eksekusi query akan memakan waktu lebih
lama.

Unique sama seperti Primary Key namun dalam sebuah tabel boleh
menggunakan lebih dari satu unique, sedangkan khusus Primary Key hanya
satu kolom saja. Pada beberapa aplikasi terdapat lebih dari satu primary key
namun umumnya akan membutuhkan proses normalisasi.

Tips dalam membuat database dan tabel:


 Berikan keterangan tambahan dalam membuat nama masing-masing
seperti: db_exercise untuk nama database dan tbl_alamat untuk nama
kolom
 Nama kolom adalah case insensitive, namun jika mengaplikasikan pada
PHP akan menjadi case sensitive.
 Nama kolom boleh menggunakan spasi namun sebaiknya dihindari.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 10
MySQL

Setelah struktur tabel telah dibuat, maka query yang diperlukan adalah
sebagai berikut:

CREATE TABLE members (


id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
nama VARCHAR( 50 ) NOT NULL ,
jeniskelamin CHAR( 1 ) NOT NULL ,
alamat VARCHAR( 50 ) NULL DEFAULT NULL ,
kota VARCHAR( 50 ) NOT NULL ,
username VARCHAR( 20 ) NOT NULL ,
password VARCHAR( 50 ) NOT NULL ,
INDEX (nama) ,
UNIQUE (username)
) ENGINE = MYISAM ;

Storage engine yang digunakan adalah MyISAM, sebuah pengembangan dari


engine ISAM (Indexed Sequential Access Method) yang terdahulu. Digunakan
untuk mempercepat akses dari data tabel.

Query membuat tabel cities:

CREATE TABLE cities (


id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
namakota VARCHAR( 50 ) NOT NULL ,
INDEX ( namakota )
) ENGINE = MYISAM ;

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 11
MySQL

Insert

Setelah tabel dibuat, langkah berikutnya adalah mengisinya dengan record


baru. Query yang digunakan untuk mengisi data tabel adalah Insert. Tabel
yang sebaiknya diisi pertama kali adalah tabel cities dimana nama kota yang
terdaftar akan digunakan di tabel members supaya tidak terjadi kesalahan.

Query berikut adalah mengisi sebuah record:

INSERT INTO cities


(id ,namakota)
VALUES ('1', 'Jakarta');

Isi dari tiap kolom boleh tidak menggunakan tanda kutip kecuali query
tersebut akan dijalankan di PHP maka sebaiknya menggunakan tanda kutip
apostrophe (single quote).

Jika ingin memasukkan data lebih dari satu maka lakukan query seperti
berikut:

INSERT INTO cities


(id ,namakota)
VALUES
(NULL , 'Bogor'),
(NULL , 'Depok'),
(NULL , 'Tangerang'),
(NULL , 'Bekasi');

Karena tipe id adalah auto increment maka untuk nomor id selanjutnya tidak
perlu diisikan. Query tersebut dapat disederhanakan menjadi:

INSERT INTO cities


(namakota)
VALUES
('Bogor'),
('Depok'),
('Tangerang'),
('Bekasi');

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 12
MySQL

Selanjutnya adalah mengisi record pada tabel members. Pastikan kota yang
didaftarkan pada kolom kota milik user sudah terdapat pada tabel cities
karena nantinya akan dibuat untuk aplikasi profil dan registrasi.

Berikut adalah query untuk mengisi record pada tabel members sebanyak 2
orang:

INSERT INTO members


(id,nama,jeniskelamin,alamat,kota,username,password)
VALUES
('1', 'Eko Lisdharyoko', 'L', 'Cilodong', 'Depok',
'cilod', MD5( 'cilod2012' )
),
(
NULL , 'Anda Suhanda', 'L', 'Kutabaru', 'Tangerang',
'anda', MD5( 'anda2012' )
);

Khusus untuk password berikan fungsi MD5 untuk enkripsi. Apabila ingin
mengisi record berikutnya, gunakan query yang lebih sederhana tanpa
menggunakan id karena id sudah menggunakan auto increment.

Perhatikan tanda koma dan tanda kurung yang digunakan sebagai pembuka
dan penutup fungsi MD5 dan penutup tiap Values. Disini seringkali terjadi
kesalahan kelebihan atau kekurangan membuat tanda kurung koma dan
penutup.

Penulisan query pada mysql prompt boleh dibuat baris perbaris dan jika
sudah selesai dan ingin dieksekusi, tutup dengan semicolon dan tekan enter.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 13
MySQL

Tampilkan record yang sudah diisikan pada tabel members dan cities dengan
query select:

mysql> select * from members;


+----+-----------------+--------------+----------+-----------+----------+----------------------------------+
| id | nama | jeniskelamin | alamat | kota | username | password |
+----+-----------------+--------------+----------+-----------+----------+----------------------------------+
| 1 | Eko Lisdharyoko | L | Cilodong | Depok | cilod | de593155eeeeabc7a7b9a912687b0096 |
| 2 | Anda Suhanda | L | Kutabaru | Tangerang | anda | 411f2af5c83edd054eea6a5e463da595 |
+----+-----------------+--------------+----------+-----------+----------+----------------------------------+

Password sudah dienkripsi dengan MD5 sehingga nilai yang tersimpan di


kolom password berupa alfanumerik random.

mysql> select * from cities;


+----+-----------+
| id | namakota |
+----+-----------+
| 1 | Jakarta |
| 2 | Bogor |
| 3 | Depok |
| 4 | Tangerang |
| 5 | Bekasi |
+----+-----------+

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 14
MySQL

Update

Update query digunakan untuk mengganti isi sebuah record misalnya terjadi
kesalahan penulisan nama dan ingin mengganti nama yang baru, alamat atau
password. Pada aplikasi umumnya id dan username tidak boleh diganti oleh
user, kecuali oleh administrator.

Pada query ini diwajibkan untuk menggunakan kriteria supaya record yang
diganti benar-benar unik dan jangan sampai justru terjadi kesalahan update
record milik user lain. Kriteria yang menggunakan where dapat mengambil
dari kolom yang biasa disebut sebagai “kandidat” sebagai kuncian. Pada tabel
cities mempunyai kolom id sebagai primary key dan pada tabel members
mempunyai dua kolom kandidat sebagai kuncian yaitu id sebagai primary key
dan username yang dijadikan unique.

Query untuk Update hanya berlaku untuk satu record, tidak berlaku kolektif
seperti menggunakan Insert.

Sintaks:

UPDATE namatabel
SET namakolom1=’nilaibaru’, namakolom2=’nilaibaru’
WHERE kolomkunci=’nilaikolomkunci’;

Contoh:

UPDATE cities
SET namakota=’Jkt’
WHERE id=1;

Kesalahan lupa memberikan kriteria dengan where adalah sangat fatal karena
dapat mengakibatkan seluruh isi tabel akan terganti dengan nilai yang baru.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 15
MySQL

Delete

Query ini digunakan untuk menghapus sebuah record dari tabel. Sama seperti
Update, query Delete juga membutuhkan kriteria yang unik misalnya id atau
username sebagai kunci.

Query ini termasuk vital sehingga sebaiknya dilakukan pembatasan hak akses
(privileges) kepada db user yang sedang login supaya menghindari kesalahan
penghapusan record atau penyalahgunaan terhadap akun milik user.
Biasanya yang dapat melakukan delete hanya db administrator saja.

Sintaks:

DELETE FROM namatabel


WHERE namakolomkunci=’nilaikunci’;

Contoh:

DELETE FROM cities


WHERE id=’1’;

Atau

DELETE FROM cities


WHERE namakota=’Jakarta’;

Query Delete hanya berlaku untuk satu record saja, tidak dapat kolektif seperti
pada Insert.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 16
MySQL

Drop

Query Drop digunakan untuk menghapus sebuah tabel atau menghapus


database. Sama seperti Delete, karena query ini termasuk vital maka harus
dibuat pembatasan hak akses db user yang login ke server.

Sintaks:

DROP namadatabase;

Atau

DROP namatabel;

Contoh:

DROP members;

Truncate Table

Query ini hanya mengosongkan isi sebuah tabel dan masih mempertahankan
struktur tabel itu sendiri.

Sintaks:

TRUNCATE TABLE namatabel;

Contoh:

TRUNCATE TABLE cities;

Building Web Applications with PHP & MySQL


Copyright © Inixindo 6 - 17
Select dan Insert

7
Aplikasi PHP- MySQL – Select dan Insert

Integrasi PHP dan MySQL

PHP akan mengakses database melalui web server yaitu Apache. Jika
database server dan web server berada pada komputer yang sama maka
koneksi akan menggunakan localhost sebagai nama komputer (hostname).
Pada beberapa aplikasi, database server dapat berasal dari komputer yang
berbeda yang dihubungkan dengan mengisi nama komputer tersebut, domain
atau bisa juga menggunakan IP dari komputer yang dituju.

Tahap pertama untuk membuat aplikasi berbasis PHP dan MySQL adalah
membangun koneksi yang membutuhkan tiga elemen yaitu hostname,
username dan password. Dalam hal ini adalah localhost dan user account
root tanpa password (blank).

Membangun koneksi dari PHP ke MySQL adalah dengan fungsi


mysql_connect();

Sintaks:

mysql_connect("localhost","root","");

Buatlah sebuah file dengan nama allfunctions.php dan berisikan kode


berikut ini:

<?php

//koneksi ke mysql server


//root belum mempunyai password
mysql_connect("localhost","root","");

?>

Apabila file tersebut dijalankan dan tidak ada output yang dihasilkan maka
koneksi sudah berhasil. Jika koneksi gagal maka akan terdapat notifikasi di
layar.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-1
Aplikasi PHP- MySQL – Select dan Insert

Untuk melengkapi perintah sebelumnya, tambahkan fungsi die() untuk


terminasi program yang dapat ditambahkan dengan tulisan yang dapat dibuat
sendiri untuk memberikan notifikasi di layar.

<?php
mysql_connect("localhost","root","")
or die("Koneksi MySQL Gagal<br>");
?>

Berikutnya adalah memilih database yang akan digunakan pada aplikasi


dengan menggunakan fungsi mysql_select_db().

Sintaks:

mysql_select_db("exercise");

Berikut adalah contoh program yang sudah lengkap dengan seleksi database
dan langsung tambahkan fungsi die seperti contoh di atas:

<?php
function koneksi(){
mysql_connect("localhost","root","")
or die("Koneksi MySQL Gagal<br>");

mysql_select_db("exercise")
or die("Database tidak ditemukan<br>");
}
?>

File ini akan dipakai pada setiap halaman/file yang membutuhkan koneksi
database dan akan ditambahkan beberapa fungsi penting lainnya. Gunakan
perintah include atau require untuk dapat menggunakan file ini di halaman lain
dan perlu diingat bahwa tidak diperlukan tag HTML pada file ini kecuali tag
HTML yang memang diperlukan seperti <br> atau <p></p> dan sebagainya.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-2
Aplikasi PHP- MySQL – Select dan Insert

MySQL Query

Setelah koneksi dan seleksi database sudah berhasil maka selanjutnya


adalah membuat MySQL query. Query dibuat dalam sebuah string dan
disimpan ke sebuah variabel PHP. Setelah dieksekusi di PHP akan langsung
dihantarkan ke MySQL server.

Hasil dari MySQL server disebut dengan resultset yang bisa terdiri dari 0
record, 1 record atau lebih.

Untuk menjalankan query pada PHP dapat menggunakan fungsi


mysql_query();

Sintaks:

mysql_query("tulis query disini");

Berikut contoh query yang juga disimpan di sebuah variabel:

$query = mysql_query("SELECT * FROM members");

Variabel $query sudah menyimpan resultset dari query yang sudah dituliskan
dan nantinya dapat digunakan untuk aplikasi yang lebih banyak lagi, misalnya
untuk menghitung berapa banyak baris atau sekaligus mencetak di layar
dengan metode fetch.

Jika pada saat mengetik dan menjalankan query pada mysql command
prompt tidak ada case sensitive, maka pada saat membuat query di PHP
harus memperhatikan case karena PHP bersifat case sensitive. Kesalahan
case pada nama kolom akan mengakibatkan record menjadi blank.

Query tidak hanya dijalankan langsung di sebuah variabel namun dapat


dibuat terpisah menjadi dua variabel. Metode ini digunakan apabila terdapat
kondisi dengan IF-ELSE yang menentukan apakah query dijalankan atau
tidak. Berikut adalah contoh query yang terpisah ke dua variabel:

$query = "SELECT * FROM members";


$execute = mysql_query($query);
Mencetak Tabel MySQL

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-3
Aplikasi PHP- MySQL – Select dan Insert

Proses mencetak record dari MySQL harus melalui metode fetch. Setelah
query sudah tersimpan di sebuah variabel PHP dan dijalankan, maka
selanjutnya adalah menjalankan salah satu perintah fetch dengan fetch
object, fetch assoc atau fetch array. Perbedaan yang paling mendasar dari
ketiga fetch tersebut adalah pada sintaks dan hasil olah datanya.

 mysql_fetch_object: mengembalikan result dari database menjadi


objek.
 mysql_fetch_assoc: mengembalikan result dari database menjadi
array asosiatif, dengan kata lain indeks adalah berupa “nama” dari
kolom yang bersangkutan.
 mysql_fetch_array: mengembalikan result dari database menjadi array
yang berupa asosiatif, numerik atau keduanya. Indeks disini dapat
berupa alfanumerik atau hanya numerik (nomor baris) saja.

Perbedaan lain yang dijadikan acuan untuk penggunaan fetch ini adalah
performa dari ketiganya. Dengan asumsi program hendak fetch tabel yang
berisi banyak record, fungsi fetch object adalah yang paling lama karena
resultset dijadikan objek satu persatu tergantung jumlah kolom pada tabel
yang terkait.

Fungsi fetch assoc dengan fetch array sebenarnya sama saja namun khusus
fetch array dapat menggunakan indeks tidak hanya tulisan nama kolom
namun dapat berupa numerik.

Performa dari assoc atau array yaitu dengan membuat penyimpanan (cache)
terlebih dulu sehingga data akan lebih cepat terpanggil/cetak ketika halaman
sudah selesai loading. Oleh karena fetch array dapat memanggil indeks
berupa asosiatif (string) dan numerik, konsekuensinya adalah performa akan
lebih lama dibanding assoc, terlebih lagi sintaks dari fetch assoc yang
notabene menggunakan array asosiatif akan lebih mudah dikenali.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-4
Aplikasi PHP- MySQL – Select dan Insert

Fetch

Untuk memulai fetch data diperlukan variabel yang telah menyimpan query
seperti contoh berikut:

$query = mysql_query("SELECT * FROM members");

Selanjutnya adalah membuat fungsi fetch dari variabel tersebut. Dapat


memilih salah satu dari ketiga fungsi fetch yang ada:

$fetch = mysql_fetch_object($query);
atau
$fetch = mysql_fetch_assoc($query);
atau
$fetch = mysql_fetch_array($query);

Setelah menentukan metode fetch mana yang digunakan, berikutnya adalah


membuat beberapa variabel PHP untuk menampung hasil ekstrak dari fetch
sebelumnya. Berikut adalah contoh ekstraksi dari fetch object:

$id = $fetch->id;
$nama = $fetch->nama;
$jeniskelamin = $fetch->jeniskelamin;
$alamat = $fetch->alamat;
$kota = $fetch->kota;
$username = $fetch->username;
$password = $fetch->password;

Kolom ID dan Password adalah data rahasia dimana yang mengetahui


hanyalah pemilik akun dan db admin saja. Hindari pencetakan/ektraksi kedua
kolom tersebut pada halaman web. Untuk memastikan kedua kolom tersebut
tidak dapat di-ekstrak, ubah query menjadi:

$query = mysql_query("
SELECT nama,jeniskelamin,alamat,kota,username
FROM members");
Berikut adalah contoh ekstrak dengan fetch assoc dan fetch array untuk
membandingkan sintaks dari ketiganya:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-5
Aplikasi PHP- MySQL – Select dan Insert

Fetch assoc:

$id = $fetch[id];
$nama = $fetch[nama];
$jeniskelamin = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kota = $fetch[kota];
$username = $fetch[username];
$password = $fetch[password];

Fetch array dapat berupa dua bentuk:

$id = $fetch[id];
$nama = $fetch[nama];
$jeniskelamin = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kota = $fetch[kota];
$username = $fetch[username];
$password = $fetch[password];

$id = $fetch[0];
$nama = $fetch[1];
$jeniskelamin = $fetch[2];
$alamat = $fetch[3];
$kota = $fetch[4];
$username = $fetch[5];
$password = $fetch[6];

Khusus untuk fetch array dapat memanggil indeks berupa nomor, misalkan
$nama = $fetch[1] artinya akan ekstrak dari kolom indeks-1 dan jika
diterjemahkan adalah mengambil dari kolom kedua mengingat prinsip indeks
adalah n-1. Kolom kedua disini bukanlah kolom kedua pada tabel sebenarnya
tapi kolom kedua dari resultset query.

Untuk performa yang lebih cepat, selanjutnya gunakan metode fetch assoc.
Setelah fetch selesai maka record dapat dicetak seperti biasa dengan print

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-6
Aplikasi PHP- MySQL – Select dan Insert

atau echo. Berikut adalah versi lengkap dari program mencetak data MySQL
dengan integrasi PHP dan HTML, buat dalam file baru:

<!DOCTYPE HTML>
<html>
<head>
<title>Fetch</title>
</head>

<body>
<?php
include "allfunctions.php";
koneksi();
$query = mysql_query("
SELECT nama,jeniskelamin,alamat,kota,username
FROM members
");

$fetch = mysql_fetch_assoc($query);
$nama = $fetch[nama];
$jeniskelamin = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kota = $fetch[kota];
$username = $fetch[username];

echo "Nama: $nama<br>";


echo "Jenis Kelamin: $jeniskelamin<br>";
echo "Alamat: $alamat<br>";
echo "Kota: $kota<br>";
echo "Username: $username<br>";
?>
</body>
</html>

Program di atas ternyata hanya mencetak satu record saja. Berikutnya jika
ingin mencetak seluruh record dengan tampilan yang lebih rapi, gunakan loop
while dan cetak record dalam bentuk tabel HTML.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-7
Aplikasi PHP- MySQL – Select dan Insert

Mencetak Record MySQL dengan Tabel HTML dan Loop

Di bawah ini adalah program lengkap untuk mencetak record hasil dari query
dan ekstraksi pada tabel HTML dan menggunakan loop while. Simpan file
dengan nama members.php.

<!DOCTYPE HTML>
<html>
<head>
<title>Fetch 2</title>
</head>

<body>
<table width="700" border="1" cellspacing="0" cellpadding="3">
<tr>
<th width="91">Nama</th>
<th width="91">Jenis Kelamin</th>
<th width="91">Alamat</th>
<th width="91">Kota</th>
<th width="94">Username</th>
</tr>
<?php
include "allfunctions.php";
koneksi();
$query = mysql_query("
SELECT nama,jeniskelamin,alamat,kota,username
FROM members");
while($fetch = mysql_fetch_assoc($query)){
$nama = $fetch[nama];
$jeniskelamin = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kota = $fetch[kota];
$username = $fetch[username];
echo "
<tr>
<td>$nama</td>
<td>$jeniskelamin</td>
<td>$alamat</td>
<td>$kota</td>
<td>$username</td>
</tr>
";
}
?>
</table>

</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-8
Aplikasi PHP- MySQL – Select dan Insert

Proses Registrasi Member

Aplikasi registrasi anggota membutuhkan dua file yang berperan sebagai form
untuk anggota baru dan action yang akan memproses query untuk insert ke
MySQL.

Buatlah file dengan nama signup.php yang berisi form registrasi dengan
kode seperti berikut:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Sign Up for a new account</title>
</head>

<body>
<form name="form1" method="post" action="src-insert.php">
<table width="600" border="0" cellspacing="5" cellpadding="0">
<tr>
<td width="168" valign="top">Nama Lengkap</td>
<td width="417" valign="top">
<input name="nama" type="text" size="30">
</td>
</tr>
<tr>
<td valign="top">Jenis Kelamin</td>
<td valign="top">
<select name="jeniskelamin">
<option value="0" selected>PILIH JENIS KELAMIN</option>
<option value="L">Laki-laki</option>
<option value="P">Perempuan</option>
</select>
</td>
</tr>
<tr>
<td valign="top">Alamat</td>
<td valign="top">
<textarea name="alamat" cols="45" rows="5"></textarea>
</td>
</tr>
<tr>
<td valign="top">Kota</td>

<td valign="top">

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7-9
Aplikasi PHP- MySQL – Select dan Insert

<select name="kota">
<option value="0" selected>PILIH KOTA</option>
<option value="Jakarta">Jakarta</option>
<option value="Bogor">Bogor</option>
<option value="Depok">Depok</option>
<option value="Tangerang">Tangerang</option>
<option value="Bekasi">Bekasi</option>
</select>
</td>
</tr>
<tr>
<td valign="top">Username</td>
<td valign="top"><input name="username" type="text" size="30"></td>
</tr>
<tr>
<td valign="top">Password</td>
<td valign="top"><input name="password" type="password"
size="30"></td>
</tr>
</table>
<p>
<input type="submit" name="button" id="button" value="Sign Up">
</p>
</form>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7 - 10
Aplikasi PHP- MySQL – Select dan Insert

Detail dari form registrasi yang telah dibuat adalah:


 Action file yang perlu dibuat adalah src-insert.php.
 Form menggunakan metode Post.
 Form menggunakan query dari tabel cities untuk membuat komponen
dynamic combo box.
 Komponen form telah dibuat dalam tabel HTML untuk menjaga
kerapihan tampilan.

Untuk membuat program insert pada file action, yang perlu diperhatikan
adalah nama dari tiap komponen form:
 Text field nama : nama
 Combo box jenis kelamin : jeniskelamin
 Text area alamat : alamat
 Combo box kota : kota
 Text field username : username (tipe text)
 Text field password : password (tipe password)

Kesalahan menulis nama pada file action dapat berakibat data yang masuk di
satu atau beberapa komponen menjadi blank sehingga akan menjadi null atau
blank record di tabel MySQL.

Perhatikan juga case tiap nama karena PHP bersifat case sensitive. Untuk
mempermudah pembuatan aplikasi, cukup dengan samakan nama komponen
form dengan nama kolom pada MySQL misalnya text field nama untuk
nantinya masuk ke kolom/field nama pada tabel members.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7 - 11
Aplikasi PHP- MySQL – Select dan Insert

Di bawah ini adalah program pada file src-insert.php yang sudah lengkap
dengan PHP dan HTML:

<?php
include "allfunctions.php";
koneksi();
$nama = $_POST["nama"];
$jeniskelamin = $_POST["jeniskelamin"];
$alamat = $_POST["alamat"];
$kota = $_POST["kota"];
$username = $_POST["username"];
$password = md5($_POST["password"]);
$query = mysql_query("
INSERT INTO members
(nama,jeniskelamin,alamat,kota,username,password)
VALUES('$nama','$jeniskelamin','$alamat','$kota','$username','$password')
");
?>
<!DOCTYPE html>
<html>
<head>
<title>Proses Registrasi</title>
</head>

<body>
<p>
<?php
if ( !$query ) {
echo "Registrasi gagal. <br> Mohon Ulangi. <br>";
$err = mysql_error();
echo $err;
echo '<a href="signup.php">Kembali ke halaman sebelumnya</a>';
}
else {
echo "Registrasi berhasil <br>";
}
?>
</p>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7 - 12
Aplikasi PHP- MySQL – Select dan Insert

Indeks pada variabel $_POST dapat menggunakan tanda kutip (single/double)


atau tidak sama sekali. Setelah registrasi berhasil, buka kembali file
members.php untuk memastikan user sudah terdaftar atau melihat di
command prompt mysql dengan query select.

Fungsi include dapat diletakkan dimana saja selama masih diletakkan


sebelum query dijalankan oleh PHP.

Kesalahan yang umum terjadi pada saat pendaftaran ini adalah kesalahan
penulisan query dan kesalahan penulisan nama text field atau komponen
lainnya. Misalkan ada kejadian salah menuliskan text field username maka
nilai yang masuk ke variabel $username adalah blank dan hasilnya akan error
karena kolom username pada tabel MySQL adalah Unique dan tidak boleh
kosong (not null).

Berhati-hati dalam menulis query karena query yang digunakan termasuk


cukup rumit dengan banyaknya tanda koma, kutip dan tanda kurung.

Fungsi md5() pada PHP adalah untuk membuat enkripsi MD5 pada sebuah
variabel. Nilai yang akan masuk ke database adalah nilai yang sudah
terenkripsi.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 7 - 13
Otentikasi

8
Aplikasi PHP-MySQL – Otentikasi

Login

Setelah aplikasi registrasi (insert) berhasil, aplikasi selanjutnya adalah login


ke halaman utama. Cara kerja dari aplikasi login adalah menerima masukan
username dan password dari user yang sudah terdaftar melalui form HTML
dan kemudian menjalankan query MySQL pada file action. Jika datanya valid
maka user mendapatkan akses ke halaman khusus.

Untuk aplikasi ini membutuhkan 3 file yaitu form login pada index.php, action
src-login.php dan halaman khusus home.php. Form login akan dipakai dua
kali yaitu di halaman index.php sebagai form login utama, dan dipakai kembali
pada file src-login.php sebagai form login cadangan apabila user salah
memasukkan username/password.

Untuk memudahkan, buatlah terlebih dulu subroutine untuk form login pada
file allfunctions.php supaya lebih mudah dipakai pada lebih dari satu
file/halaman.

Buka kembali file allfunctions.php untuk menambahkan fungsi subroutine baru


yaitu untuk membuat form HTML untuk login dengan komponen text field
username dan password. Pada subrouting tersebut tambahkan juga hyperlink
ke halaman signup.php jika user ingin membuat akun baru.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-1
Aplikasi PHP-MySQL – Otentikasi

File: allfunctions.php

<?php
function koneksi(){
mysql_connect(“localhost”, “root”, ““)
or die(“koneksi mysql gagal <br>“;

mysql_select_db(“exercise”)
or die(“database tidak ditemukan <br>“;
}

function formLogin(){
echo ‘
<form name="form1" method="post" action="src-login.php">
<p>Username:<br>
<input name="username" type="text" size="50" />
</p>
<p>Password:<br>
<input name="password" type="password" size="50" />
</p>
<p>
<input type="submit" name="Submit" value="Login" />
</p>
<p>Daftar baru <a href="signup.php">disini</a></p>
</form>
‘;
}

?>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-2
Aplikasi PHP-MySQL – Otentikasi

File: index.php

<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<h1>Selamat Datang</h1>
Silakan login:<br>
<?php
include “allfunctions.php”;
formLogin();
?>
</body>
</html>

Cara pemanggilan form login pada halaman index dengan menggunakan


include hampir sama seperti konsep OOP yaitu memanggil objek yang sudah
dibuat sebelumnya dan dapat digunakan kapan saja. Perbedaannya adalah
untuk memulai OOP pada PHP harus dibuat Class terlebih dulu, bukan hanya
sebuah file yang include seperti biasanya.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-3
Aplikasi PHP-MySQL – Otentikasi

Berikutnya adalah membuat file action src-login.php untuk menerima hasil


post dan menjalankan query MySQL:

<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<?php
//LANGKAH 1
include "allfunctions.php";
koneksi();
//LANGKAH 2
$username = $_POST[username];
$password = md5($_POST[password]);
$query = mysql_query("
SELECT username,password FROM members
WHERE username='$username' AND password='$password'
");
$search = mysql_num_rows($query);
//LANGKAH 3
if($search==1){
echo “<script type=\"text/javascript\">
setTimeout(\"location.href='home.php'\",5000);
</script>
Login berhasil. Silakan tunggu beberapa saat.<br>;
<a href=\"home.php\">Klik disini jika redirect tidak berhasil</a>
“;
}
else {
$error = mysql_error();
echo "$error <br>";
echo "Username atau Password salah <br>";
loginForm();
}
?>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-4
Aplikasi PHP-MySQL – Otentikasi

Cara kerja dari skrip login:

1. Include file allfunctions dan jalankan subroutine koneksi database.


2. Buat dua variabel untuk menampung hasil post username dan
password. Untuk password berikan fungsi md5. Buatlah sebuah
variabel untuk query dan langsung jalankan dengan mysql_query.
Perintah mysql_num_rows adalah untuk menghitung berapa banyak
record yang dihasilkan dari sebuah query.
3. Hasil dari query adalah 1, sehingga jika hasilnya benar sama
dengan 1 maka langsung berikan Javascript untuk auto redirect ke
halaman home.php. Berikan juga hyperlink untuk mengatasi
keadaan jika Javascript diblok atau sedang dimatikan di browser.
Jika kondisi false maka berikan notifikasi error versi MySQL dan
jalankan subroutine formLogin.

Action dari src-login.php belum mempunyai otentikasi sehingga untuk


sementara halaman home.php masih bisa dikunjungi tanpa harus login
terlebih dulu.

File: home.php

<!DOCTYPE html>
<html>
<head>
<title>Member’s Area</title>
</head>

<body>
Selamat datang member<br>
</body>
</html>

Halaman ini masih belum lengkap. Berikutnya perlu ditambahkan otentikasi


supaya halaman ini tidak dapat diakses oleh non-member.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-5
Aplikasi PHP-MySQL – Otentikasi

Authentication

Metode otentikasi bertujuan untuk membuat batasan terhadap pengunjung


suatu halaman. Otentikasi dilakukan pertama kali pada saat login.

PHP mempunyai dua tipe otentikasi yaitu dengan Session atau Cookie.
Hubungan antara web client dengan server disebut sebagai Stateless, artinya
keadaan dimana client sudah terhubung ke server tidak dapat dlihat dengan
mudah. Session atau Cookie bertujuan untuk menghilangkan keterbatasan
tersebut. Akan tetapi, keduanya tidak dapat dipakai bersamaan karena
terdapat perbedaan yang signifikan dari cara kerja Session dan Cookie.

Session bekerja pada sisi server (server-side) yaitu kondisi koneksi antara
client dengan server tercatat pada server. Client tidak dapat memanipulasi
session dengan mudah karena sudah ditangani oleh server. Default dari
session adalah tidak mempunyai limitasi waktu tetapi otomatis akan terputus
jika browser ditutup, artinya user harus login kembali apabila sengaja/tidak
sengaja menutup browser. Untuk memanipulasi limitasi waktu session
dibutuhkan skrip yang cukup rumit.

Cookie bekerja pada sisi client (client-side) yaitu koneksi client dengan server
terdapat pada komputer milik client yang sudah login ke sebuah aplikasi.
Cookie dapat diartikan juga sebagai “tiket masuk” ke aplikasi yang berbentuk
sebuah text file yang tersimpan pada direktori khusus di browser, misalnya
Temporary Internet Cache dan sebagainya.

Cookie dapat dikatakan tidak aman karena client sebenarnya dapat


memodifikasi nilai yang tersimpan dalam file cookie tersebut dengan mudah.
Keuntungan dari cookie adalah kemudahan mengatur limitasi waktu misalnya
tiket tersebut dapat berlaku selamanya sehingga user tidak perlu repot untuk
login jika mengunjungi aplikasi yang sama, atau masa berlakunya cookie
dapat dibuat sementara misalnya hanya berlaku selama 1 jam. Cookie tidak
hilang meskipun browser ditutup selama masa berlaku masih aktif.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-6
Aplikasi PHP-MySQL – Otentikasi

Session

Session adalah sebuah variabel yang tersimpan pada server. Dalam sebuah
aplikasi dapat menggunakan lebih dari 1 session yang dijadikan sebagai
media penyimpanan sebuah nilai penting misalnya username yang dijadikan
sebagai kunci dari aplikasi penting.

Jika seorang user telah login dan ingin melihat profilnya, maka harus dibuat
sebuah kunci yang dipakai pada kriteria query where username=’xxxx’.
Nilai kunci tersebut dapat dipanggil dari variabel superglobal $_SESSION.

Contoh inisialisasi session:

$username = $_POST[txtUsername];
$_SESSION[user_aktif] = $username;
$key = $_SESSION[user_aktif];

Hasil dari program di atas adalah inisialisasi sebuah variabel session dengan
nama user_aktif dan mempunyai value $username. Artinya variabel $key
dapat dijadikan sebagai kunci pada beberapa query. Berikut adalah contoh
dari query untuk update:

$query = mysql_query(“
UPDATE members
SET nama=’$nama’,alamat=’$alamat’
WHERE username=’$key’
“);

Jika ingin menggunakan session maka diharuskan untuk menambahkan


fungsi session_start() pada halaman yang berkaitan. Fungsi session_start
adalah fungsi tipe Header yaitu harus diletakkan di baris paling atas dan
sebelum ada output pada browser. Output yang dimaksud adalah output
HTML berupa baris kosong ataupun tag, dan output dari PHP dalam bentuk
print atau echo.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-7
Aplikasi PHP-MySQL – Otentikasi

Buka kembali file src-login.php dan modifikasi hingga menjadi seperti di


bawah ini:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<?php
//LANGKAH 1
include "allfunctions.php";
koneksi();
//LANGKAH 2
$username = $_POST[username];
$password = md5($_POST[password]);
$query = mysql_query("
SELECT username,password FROM members
WHERE username='$username' AND password='$password'
");
$search = mysql_num_rows($query);
//LANGKAH 3
if($search==1){
$_SESSION[user_aktif] = $username;
echo “<script type=\"text/javascript\">
setTimeout(\"location.href='home.php'\",5000);
</script>
Login berhasil. Silakan tunggu beberapa saat.<br>;
<a href=\"home.php\">Klik disini jika redirect tidak
berhasil</a>
“;
}
else {

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-8
Aplikasi PHP-MySQL – Otentikasi

$error = mysql_error();
echo "$error <br>";
echo "Username atau Password salah <br>";
loginForm();
}
?>
</body>
</html>

Terdapat dua baris perintah tambahan pada file src-login.php yaitu:


 session_start() yang diletakkan paling atas karena harus
dijalankan sebelum ada output apapun pada browser. Perintah tersebut
berfungsi untuk memulai sesi baru.
 $_SESSION[user_aktif] yang digunakan sebagai inisialisasi
variabel session baru untuk nantinya dijadikan kunci pada aplikasi profil
milik user dan juga dijadikan sebagai kunci otentikasi.

Setelah program dijalankan maka akan mulai menggunakan otentikasi dan


kunci dengan session. Halaman home.php harus ditambahkan perintah untuk
cek session. Supaya lebih mudah digunakan berulang kali, tambahkan
perintah berikut pada file allfunctions.php:

function otentikasiSession(){
session_start();
if ( !isset($_SESSION[user_aktif]) ) {
header(“Location:index.php”);
}
}

Cara kerja dari fungsi tersebut adalah memeriksa apakah session sudah
terinisialisasi atau belum. Perintah yang dapat melakukannya adalah isset.
Program tersebut dapat dibaca dengan “Jika session belum terinisialisasi
maka pindahkan ke halaman index”. Perintah header juga harus diletakkan
paling atas sebelum ada output.

Modifikasi file allfunctions.php:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8-9
Aplikasi PHP-MySQL – Otentikasi

<?php

function otentikasiSession(){
session_start();
if ( !isset($_SESSION[user_aktif]) ) {
header(“Location:index.php”);
}
}

function koneksi(){
mysql_connect(“localhost”, “root”, ““)
or die(“koneksi mysql gagal <br>“);

mysql_select_db(“exercise”)
or die(“database tidak ditemukan <br>“;
}

function formLogin(){
echo ‘
<form name="form1" method="post" action="src-login.php">
<p>Username:<br>
<input name="username" type="text" size="50" />
</p>
<p>Password:<br>
<input name="password" type="password" size="50" />
</p>
<p>
<input type="submit" name="Submit" value="Login" />
</p>
<p>Daftar baru <a href="signup.php">disini</a></p>
</form>
‘;
}

?>

Oleh karena pada file ini terdapat perintah header maka untuk selanjutnya
include file allfunctions ini harus diletakkan paling atas.
Modifikasi file home.php:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 10
Aplikasi PHP-MySQL – Otentikasi

<?php
include “allfunctions.php”;
otentikasiSession();
$aktif = $_SESSION[user_aktif];
?>
<!DOCTYPE html>
<html>
<head>
<title>Member’s Area</title>
</head>

<body>
Selamat datang, <?php echo $aktif; ?><br>
</body>
</html>

Setelah tulisan selamat datang terdapat perintah echo sebuah variabel.


Variabel tersebut menyimpan nilai dari session yaitu username yang sedang
aktif (logged in) di website.

Untuk mencoba apakah otentikasi sudah berjalan atau tidak, tutup browser
(bukan tab-nya saja melainkan browsernya) dan coba akses halaman
home.php. Apabila otentikasi sudah berhasil maka user langsung dilempar ke
halaman index untuk login kembali.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 11
Aplikasi PHP-MySQL – Otentikasi

Check Session

Kebalikan dari otentikasi yang pernah dicoba pada halaman sebelumnya,


disini adalah metode periksa otentikasi session yaitu jika terdapat suatu
keadaan dimana user yang sedang mengunjungi aplikasi dan juga
mengunjungi beberapa website lain pada tab yang berbeda. Jika user hanya
menutup tab aplikasi exercise sedangkan tab lainnya masih terbuka, artinya
browser belum ditutup semua dan session masih bisa dilanjutkan.

Contoh skenario yang diinginkan adalah sebagai berikut:


 User sedang mengunjungi 2 halaman website pada tab yang berbeda.
Salah satunya adalah aplikasi exercise.
 User sengaja atau tidak sengaja menutup tab milik exercise sedangkan
tab website lain masih terbuka.
 User membuka tab baru dan mengunjungi website exercise.
 Karena browser belum ditutup sepenuhnya, session masih dapat
dilanjutkan. User bisa mengunjungi halaman home.php tanpa harus
login dari awal.

Buatlah subroutine baru pada file allfunctions.php seperti berikut:

function cekSession(){
session_start();
if ( isset($_SESSION[user_aktif]) ) {
header(“Location:home.php”);
}
}

Halaman index.php harus include file allfunctions dan meletakkan subroutine


cekSession pada bagian paling atas. Cukup dengan menghilangkan tanda !
(exclamation) dapat berarti terbalik dari otentikasi sebelumnya.

Jika session masih berlaku maka user akan otomatis masuk ke halaman
home tanpa harus login dari awal.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 12
Aplikasi PHP-MySQL – Otentikasi

Modifikasi halaman index.php:

<?php
include “allfunctions.php”;
cekSession();
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<h1>Selamat Datang</h1>
Silakan login:<br>
<?php
formLogin();
?>
</body>
</html>

Perhatikan bahwa include yang tadinya berada di tengah sudah dipindahkan


ke baris atas karena sudah mencakup fungsi header seperti session_start dan
header location.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 13
Aplikasi PHP-MySQL – Otentikasi

Cookie

Alternatif dari otentikasi dengan session adalah menggunakan cookie yang


tersimpan pada client dan lebih mudah dalam menentukan limitasi waktu.
Meskipun browser ditutup, user masih bisa langsung masuk ke halaman
home tanpa harus login selama cookie masih aktif. Misalkan cookie dibuat
berlaku untuk 1 jam, maka selama 1 jam atau kurang user masih bisa
langsung masuk ke home.

Perintah berikut adalah untuk mengirimkan cookie yang biasa disebut sebagai
tiket masuk dari server ke client:

setcookie (“tiket”, “$username”, time()+3600 );

Tiket adalah nama dari cookie yang dikirimkan oleh server. Variabel
$username digunakan sebagai value dari cookie. Time adalah masa berlaku
dari cookie. Perintah di atas akan membuat cookie berlaku selama 1 jam
(3600 detik).

Perintah setcookie disisipkan ke file src-login.php. Sifat dari setcookie juga


sama seperti session_start yakni harus dijalankan sebelum ada output
apapun pada browser.

Kelemahan dari cookie adalah pada sisi keamanan. Karena bersifat client side
maka user bisa saja memodifikasi nilai dari cookie yang masih tersimpan
pada komputer client. Beberapa pengguna juga merasa tidak nyaman karena
khawatir privasi akan terganggu, misalnya user yang lupa logout dan user lain
yang menggunakan komputernya masih dapat melihat profil milik user yang
bersangkutan.

Untuk menyimpan nilai cookie pada sebuah variabel gunakan superglobal


$_COOKIE. Contohnya seperti berikut:

$cookie = $_COOKIE[tiket];

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 14
Aplikasi PHP-MySQL – Otentikasi

Modifikasi file src-login.php:


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<?php
//LANGKAH 1
include "allfunctions.php";
koneksi();
//LANGKAH 2
$username = $_POST[username];
$password = md5($_POST[password]);
$query = mysql_query("
SELECT username,password FROM members
WHERE username='$username' AND password='$password'
");
$search = mysql_num_rows($query);
//LANGKAH 3
if($search==1){
setcookie(“tiket”, “$username”, time()+3600);
echo “<script type=\"text/javascript\">
setTimeout(\"location.href='home.php'\",5000);
</script>
Login berhasil. Silakan tunggu beberapa saat.<br>;
<a href=\"home.php\">Klik disini jika redirect tidak
berhasil</a>
“;
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 15
Aplikasi PHP-MySQL – Otentikasi

else {
$error = mysql_error();
echo "$error <br>";
echo "Username atau Password salah <br>";
loginForm();
}
?>
</body>
</html>

Perintah $_SESSION diganti menjadi setcookie. Cookie yang dikirim oleh


server bernama tiket dan mempunyai value $username. Masa berlaku dari
cookie tersebut adalah 1 jam.

Pada file allfunctions harus dibuat subroutine baru untuk periksa otentikasi
dengan cookie. Perintah yang digunakan sama saja seperti otentikasi session,
hanya berbeda pada variabel yang diperiksa.

function otentikasiCookie(){
if ( !isset($_COOKIE[tiket]) ) {
header("Location:index.php");
}
}

Prinsip kerjanya sama seperti otentikasi session namun tidak membutuhkan


session_start. Peletakkan subroutine tetap harus di paling atas sebelum ada
output karena sama-sama menggunakan perintah header location.

Tambahkan juga cek cookie yang serupa dengan cek session:

function cekCookie(){
if ( isset($_COOKIE[tiket]) ) {
header("Location:home.php");
}
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 16
Aplikasi PHP-MySQL – Otentikasi

Modifikasi file allfunctions.php:

<?php

function otentikasiSession(){
session_start();
if ( !isset($_SESSION[user_aktif]) ) {
header(“Location:index.php”);
}
}

function cekSession(){
session_start();
if ( isset($_SESSION[user_aktif]) ) {
header(“Location:home.php”);
}
}

function otentikasiCookie(){
if ( !isset($_COOKIE[tiket]){
header(“Location:index.php”);
}
}

function cekCookie(){
if ( isset($_COOKIE[tiket]) ) {
header(“Location:home.php”);
}
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 17
Aplikasi PHP-MySQL – Otentikasi

function koneksi(){
mysql_connect(“localhost”, “root”, ““)
or die(“koneksi mysql gagal <br>“);

mysql_select_db(“exercise”)
or die(“database tidak ditemukan <br>“);
}

function formLogin(){
echo ‘
<form name="form1" method="post" action="src-login.php">
<p>Username:<br>
<input name="username" type="text" size="50" />
</p>
<p>Password:<br>
<input name="password" type="password" size="50" />
</p>
<p>
<input type="submit" name="Submit" value="Login" />
</p>
<p>Daftar baru <a href="signup.php">disini</a></p>
</form>
‘;
}

?>

Setelah modifikasi allfunctions selesai, selanjutnya adalah modifikasi halaman


index dan home untuk menggunakan otentikasi dengan cookie.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 18
Aplikasi PHP-MySQL – Otentikasi

Modifikasi file index.php

<?php
include “allfunctions.php”;
//cekSession();
cekCookie();
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<h1>Selamat Datang</h1>
Silakan login:<br>
<?php
formLogin();
?>
</body>
</html>

Untuk memudahkan jika ingin mengganti session atau cookie, cukup berikan
komentar pada salah satu baris perintah.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 19
Aplikasi PHP-MySQL – Otentikasi

Modifikasi file home.php:

<?php
include “allfunctions.php”;
//otentikasiSession();
//$aktif = $_SESSION[user_aktif];
otentikasiCookie();
$aktif = $_COOKIE[tiket];
?>
<!DOCTYPE html>
<html>
<head>
<title>Member’s Area</title>
</head>

<body>
Selamat datang, <?php echo $aktif; ?><br>
</body>
</html>

Supaya tidak sulit mengidentifikasi nilai session atau cookie, gunakan nama
variabel yang sama yaitu $aktif. Buatlah salah satu perintah menjadi komentar
jika ingin ganti lagi menjadi session atau cookie.

Untuk mencoba cookie sudah aktif atau belum, biarkan website diam (idle)
tanpa aktivitas apapun selama 1 jam atau tutuplah browser dan buka kembali
setelah 1 jam. Jika sudah berhasil maka ketika lewat dari 1 jam user akan
dilempar ke halaman index kembali.

Apabila waktu percobaan 1 jam dirasa terlalu lama, ubah masa berlaku cookie
menjadi lebih cepat, misalnya 5 menit (300 detik).

setcookie(“tiket”, “$username”, time()+300);

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 20
Aplikasi PHP-MySQL – Otentikasi

Logout

Setelah berhasil pada aplikasi login dan otentikasi, berikutnya untuk menutup
session atau menghapus cookie adalah dengan logout. Session dapat ditutup
cukup dengan mematikan browser namun untuk cara yang lebih stabil
gunakan link ke halaman logout.php.

File “fisik” Cookie tidak dapat dihapus melainkan hanya dikosongkan nilainya
dan dibuat menjadi “expired”. Cookie hanya dapat dihapus dengan
membersihkan temporary cache browser.

File logout.php untuk session:

<?php
session_start();
session_destroy();
?>
<!DOCTYPE html>
<html>
<head>
<title>Terima Kasih</title>
</head>

<body>
Terima kasih sudah mengunjungi website exercise<br />
Silahkan login kembali <a href="index.php">disini</a>
</body>
</html>

Perintah session_start tetap harus dijalankan terlebih dulu, kemudian perintah


session_destroy untuk menutup session.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 21
Aplikasi PHP-MySQL – Otentikasi

File logout.php untuk cookie:

<?php
setcookie("user", "", time()-3600);
?>
<!DOCTYPE html>
<html>
<head>
<title>Terima Kasih</title>
</head>

<body>
Terima kasih sudah mengunjungi website latihan<br />
Silahkan login kembali <a href="index.php">disini</a>
</body>
</html>

Seperti yang telah dijelaskan sebelumnya, file cookie yang sudah tersimpan di
cookie tidak dapat dihapus melalui PHP kecuali menghapus temporary cache
pada browser. Untuk keamanan, lakukan pembersihan temporary cache pada
browser secara rutin.

Perintah setcookie untuk menghapus (mengosongkan) cookie sama saja


dengan inisialisasi sewaktu login namun value menjadi kosong dan masa
berlaku dibuat negatif dari masa berlaku aslinya (-3600 detik).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 22
Aplikasi PHP-MySQL – Otentikasi

Buatlah hyperlink ke halaman logout pada file home.php:

<?php
include “allfunctions.php”;
//otentikasiSession();
//$aktif = $_SESSION[user_aktif];
otentikasiCookie();
$aktif = $_COOKIE[tiket];
?>
<!DOCTYPE html>
<html>
<head>
<title>Member’s Area</title>
</head>

<body>
Selamat datang, <?php echo $aktif; ?><br>
<a href=”logout.php”>Logout</a>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 8 - 23
Update dan Delete

9
Aplikasi PHP-MySQL – Update dan Delete

Aplikasi Update Profil

Aplikasi Update sebaiknya dibuat setelah registrasi, login dan otentikasi


selesai karena untuk melihat profil harus melalui sebuah kunci yang dijadikan
kriteria where pada query MySQL. Kunci yang dimaksud dapat diambil dari
variabel session atau cookie yang keduanya menyimpan username yang
sedang aktif (logged in).

Kunci yang digunakan sebagai kriteria where pada query dapat mengambil
dari variabel yang dihantarkan dari file ke file lain. Cara pertama adalah
menyimpan pada sebuah komponen form dan menghantarkannya ke file lain
dengan cara submit post atau get. Cara kedua yang lebih mudah adalah
menyimpan variabel berupa session atau cookie yang dapat dipanggil dan
disimpan ke variabel lain sewaktu-waktu diperlukan.

Dengan asumsi bahwa aplikasi masih menggunakan cookie, maka query


untuk membuka profil adalah seperti berikut:

$aktif = $_COOKIE[tiket];
$query = mysql_query(“
SELECT nama,jeniskelamin,alamat,kota
FROM members
WHERE username=’$aktif’
“);

Hasil dari query tersebut adalah record milik user yang sedang aktif pada
aplikasi web. Tiap nilai kolom akan dicetak di komponen form seperti aslinya,
misalnya text field untuk nama, text area untuk alamat dan sebagainya. Untuk
kerapihan tampilan profil, cetaklah menggunakan tabel HTML seperti pada
saat membuat form login atau registrasi.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-1
Aplikasi PHP-MySQL – Update dan Delete

Halaman profile.php akan menampilkan profil user dalam bentuk form pada
tabel HTML. Setiap komponen form akan langsung menampilkan data milik
user, misalnya text field nama akan langsung menampilkan nama lengkap
atau nama yang sudah terdaftar pada record milik user tersebut.

Tabel members mempunyai kolom jenis kelamin dan kota. Pada saat
membuka profil seorang user, logikanya adalah combo box harus langsung
menampilkan (selected=”selected”) jenis kelamin yang terdaftar pada
record milik user yang sedang aktif. Begitu juga dengan kota, combo box kota
juga harus langsung menampilkan kota yang terdaftar pada profil user.

Metode ini disebut dynamic form components dimana komponen form akan
langsung menampilkan record user. Untuk komponen yang mempunyai nilai
tunggal seperti text field atau text area, cukup dengan menambahkan value
pada atribut tag yang bersangkutan.

Untuk membuat komponen select (combo box) yang dinamis diperlukan dua
variabel pembanding misalnya kota yang diekstrak dari tabel cities dan kota
yang diekstrak dari tabel members. Teknik yang sama juga dilakukan pada
select jenis kelamin.

Khusus untuk password tidak perlu ditampilkan. Aplikasi untuk ubah password
akan dibuat pada halaman terpisah supaya query yang dibuat dapat lebih
sederhana.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-2
Aplikasi PHP-MySQL – Update dan Delete

Buatlah form yang berisikan tabel HTML untuk profil user:


 Text Field untuk nama
 Select untuk jenis kelamin
 Text Area untuk alamat
 Select untuk kota
 Button (Submit)

Username hanya digunakan pada variabel cookie (atau session) karena


username tidak dapat diganti seperti layaknya aplikasi pada umumnya.

Langkah pertama adalah membuat query dan menampung hasil ekstrak ke


beberapa variabel:

include “allfunctions.php”;
otentikasiCookie();
koneksi();
$aktif = $_COOKIE[tiket];
$query = mysql_query(“
SELECT nama,jeniskelamin,alamat,kota
FROM members
WHERE username=’$aktif’
“);
$fetch = mysql_fetch_assoc($query);
$nama = $fetch[nama];
$jeniskelaminUser = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kotaUser = $fetch[kota];

Setelah hasil ekstrak disimpan ke beberapa variabel, selanjutnya adalah


mencetak tiap variabel menjadi “initial value” tiap komponen form yang
bersangkutan. Perhatikan variabel $jeniskelaminUser dan $kotaUser
dengan nama yang sedikit berbeda. Variabel tersebut untuk mempermudah
perbandingan nantinya.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-3
Aplikasi PHP-MySQL – Update dan Delete

Pertama adalah membuat value untuk text field supaya dapat menampilkan
nama dari user yang sedang aktif:

<input type=”text” name=”nama” size=”50”


value=”<?php echo $nama;?>” />

Text field nama akan langsung menampilkan nama user yang terdaftar pada
kolom “nama” di tabel members. Text field berupa tag tunggal yang tidak ada
penutup sehingga tanda slash diletakkan sebelum tanda kurung tutup.

Lakukan langkah yang sama untuk text area alamat dengan sedikit
perbedaan:

<textarea name=”alamat” cols=”50” rows=”5”>


<?php echo $alamat;?>
</textarea>

Text area berupa tag berpasangan dan tidak mempunyai atribut value
sehingga tidak seperti text field sebelumnya.

Berikutnya adalah membuat select dinamis untuk mencocokkan kota user dari
tabel members dengan atribut pada option. Misalkan, jika kota user adalah
“Tangerang” maka combo box menampilkan Tangerang dengan atribut
selected=”selected”.

Pada baris atas harus dibuat query kedua yaitu query yang mengambil query
dari tabel cities. FetchCities nantinya akan dimasukkan ke WHILE.

$queryCities = mysql_query(“
SELECT namakota FROM cities ORDER BY namakota”);

$fetchCities = mysql_fetch_assoc($queryCities);

$namakota = $fetchCities[namakota];

Kemudian, buatlah gabungan kode loop WHILE dan kondisi IF dengan logika
seperti berikut:

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-4
Aplikasi PHP-MySQL – Update dan Delete

 Combo box dinamis mencetak seluruh namakota dari tabel cities.


 Pada saat queryCities mencetak satu nama kota periksa dulu apakah
kota user sama dengan hasil cetakan. Misalnya: queryCities sedang
mencetak kota “Bogor”, dicocokkan dengan kota user. Jika kota user
dengan queryCities cocok maka akan ditambahkan atribut selected
supaya kota tersebut langsung tampil pada combo box.
 Apabila tidak ada program untuk perbandingan ini, kesalahan yang
mungkin terjadi adalah ketidakcocokkan tampilan dengan data milik
user, contohnya: User terdaftar pada kota “Bogor” namun combo box
menampilkan kota “Bekasi”.

<select name=”kota”>
<?php
$queryCities = mysql_query(“
SELECT namakota FROM cities ORDER BY namakota”);
while( $fetchCities = mysql_fetch_assoc($queryCities) ){
$namakota = $fetchCities[namakota];
if ( $namakota == $kotaUser ) {
$atribut = ‘selected=”selected”’;
//hati-hati kesalahan penulisan tanda kutip
}
else { $atribut=””; }
echo “
<option value=\”$namakota\” $atribut>
$namakota
</option>
”;
}

?>
</select>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-5
Aplikasi PHP-MySQL – Update dan Delete

Lakukan teknik yang sama untuk membuat combo box jenis kelamin menjadi
dinamis:

<select name=”jeniskelamin”>
<?php

if ( $jeniskelaminUser == “L” ) {
$atributL = ‘selected=”selected”’;
$atributP = ‘’;
}
else {
$atributP = ‘selected=”selected”’;
$atributL = ‘’;
}

echo “
<option value=\”L\” $atributL>Laki-laki</option>
<option value=\”P\” $atributP>Perempuan</option>
“;
?>
</select>

Prinsip kerjanya hampir sama dengan combo box kota yang dinamis namun
perbedaannya adalah nilai L dan P bukan berasal dari tabel melainkan nilai
statis saja.

Action file dari form ini adalah src-update.php.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-6
Aplikasi PHP-MySQL – Update dan Delete

File: profile.php

<?php
include “allfunctions.php”;
otentikasiCookie();
koneksi();
$aktif = $_COOKIE[tiket];

$query = mysql_query("
SELECT nama,jeniskelamin,alamat,kota
FROM members
WHERE username=’$aktif’
");

$fetch = mysql_fetch_assoc($query);
$nama = $fetch[nama];
$jeniskelaminUser = $fetch[jeniskelamin];
$alamat = $fetch[alamat];
$kotaUser = $fetch[kota];
?>
<!DOCTYPE html>
<html>
<head>
<title>Profile</title>
</head>

<body>
<form name="form1" method="post" action="src-update.php">
<p>Lihat Profil - <?php echo $aktif;?></p>
<table width="600" border="0" cellspacing="3" cellpadding="3">
<tr>
<td width="127">Nama</td>
<td width="452">
<input name="nama" type="text" id="nama" size=”50”
value="<?php echo $nama;?>" />
</td>
</tr>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-7
Aplikasi PHP-MySQL – Update dan Delete

<tr>
<td>Jenis Kelamin</td>
<td>
<select name=”jeniskelamin”>
<?php
if ( $jeniskelaminUser == “L” ) {
$atributL = ‘selected=”selected”’;
$atributP = ‘’;
}
else {
$atributP = ‘selected=”selected”’;
$atributL = ‘’;
}
echo “
<option value=\”L\” $atributL>Laki-laki</option>
<option value=\”P\” $atributP>Perempuan</option>
“;
?>
</select>
</td>
</tr>
<tr>
<td>Alamat</td>
<td>
<textarea name="alamat" cols="50" rows="5">
<?php echo $alamat;?>
</textarea>
</td>
</tr>
<tr>
<td>Kota</td>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-8
Aplikasi PHP-MySQL – Update dan Delete

<td>
<select name="kota">
<?php
$queryCities = mysql_query(“
SELECT namakota FROM cities ORDER BY namakota”);
while( $fetchCities = mysql_fetch_assoc($queryCities) ){
$namakota = $fetchCities[namakota];
if ( $namakota == $kotaUser ) {
$atribut = ‘selected=”selected”’;
//hati-hati kesalahan penulisan tanda kutip
}
else { $atribut=””; }
echo “
<option value=\”$namakota\” $atribut>
$namakota
</option>
”;
}
?>
</select>
</td>
</tr>
</table>
<p>
<input type="submit" name="Submit" value="Update" />
</p>
</form>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9-9
Aplikasi PHP-MySQL – Update dan Delete

File: src-update.php

<?php
include "allfunctions.php";
otentikasiCookie();
koneksi();
$aktif = $_COOKIE[tiket];

$nama = $_POST[nama];
$jeniskelamin = $_POST[jeniskelamin];
$alamat = $_POST[alamat];
$kota = $_POST[kota];

$query = mysql_query("
UPDATE members
SET nama=’$nama’,jeniskelamin=’$jeniskelamin’,
alamat=’$alamat’,kota=’$kota’
WHERE username=’$aktif’
");
?>
<!DOCTYPE html>
<html>
<head>
<title>Update Your Profile</title>
</head>

<body>
<?php
if ( !$query ) {
echo "Update gagal. Tunggu beberapa detik. <br>";
}
else {
echo "Update berhasil. Tunggu beberapa detik. <br>";
}
?>
<script type="text/javascript">
setTimeout("location.href='profile.php'",5000);
</script>
<a href="profile.php">Klik disini jika redirect tidak berhasil</a>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 10
Aplikasi PHP-MySQL – Update dan Delete

Buatkan hyperlink pada tiap file supaya semua halaman dapat dihubungkan:
 Pada halaman home buatlah hyperlink ke halaman profile dan logout
 Pada halaman profile buatlah hyperlink ke halaman home dan logout

<a href=”profile.php”>Lihat Profil</a>

<a href=”home.php”>Ke Halaman Utama</a>

<a href=”logout.php”>Logout</a>

Latihan:

 Tambahkan otentikasi untuk halaman members.php


 Buatlah hyperlink untuk menghubungkan semua halaman home,
members, profile dan logout.

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 11
Aplikasi PHP-MySQL – Update dan Delete

Delete

Query ini adalah query penting yang sebaiknya tidak diberikan kepada user
selain administrator. Aplikasi yang penting/vital sebaiknya tidak dibuat untuk
konsumsi umum. Mayoritas aplikasi web mempunyai direktori sendiri khusus
untuk halaman administrator dan yang mengetahui hanya admin itu sendiri.

Beberapa contoh direktori tersendiri untuk halaman administrator:

http://www.exercise.co.id/administrator

http://www.latihan.com/admin

http://www.mywebsite.net.id/admin_rahasia

Contoh terakhir adalah nama samaran supaya tidak mudah diketahui oleh
sembarang orang. Teknik tersebut biasanya menggunakan .htaccess atau
menggunakan konstruktor jika aplikasinya dikembangkan melalui OOP.

Query untuk Delete:

$query = mysql_query(“
DELETE FROM members
WHERE username=’xxxxx’
“);

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 12
Aplikasi PHP-MySQL – Update dan Delete

Buatlah file delete.php yang berisi program seperti di bawah ini:

<?php
include "allfunctions.php";
koneksi();
?>
<!DOCTYPE html>
<html>
<head>
<title>Delete</title>
</head>

<body>
<form name="form1" method="post" action="src-delete.php">
Masukkan username yang akan dihapus:<br>
<input type="text" name=”hapus” size="50" /><br>
<input type="submit" name="Submit" value="DELETE" />
</form>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 13
Aplikasi PHP-MySQL – Update dan Delete

File: src-delete.php

<?php
include "allfunctions.php";
koneksi();
$hapus = $_POST[hapus];
//cari dahulu account yang ingin dihapus
$query = mysql_query("
SELECT username FROM members
WHERE username=’$hapus’
");
?>
<!DOCTYPE html>
<html>
<head>
<title>DELETE</title>
</head>

<body>
<?php
//periksa account
$search = mysql_num_rows($query);
if ( $search != 1 ){
echo “Account $hapus tidak ditemukan atau sudah dihapus.<br>”;
}
else {
$delete = mysql_query(“
DELETE FROM members WHERE username=’$hapus’
“);
echo “Account $hapus telah dihapus.<br>”;
}
?>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 14
Aplikasi PHP-MySQL – Update dan Delete

Ubah Password

Aplikasi untuk ubah password dibuat dalam halaman tersendiri supaya query
bisa terpisah dari update profil.

Cara kerja update password serupa dengan update profil yaitu mengirimkan
variabel dari form dan memasukkannya ke dalam query. Oleh karena aplikasi
masih dibangun secara sinkronus maka aplikasi ini tetap masih membutuhkan
dua file sebagai form dan action yang terpisah.

User yang hendak mengganti password tetap diminta untuk mengisi password
yang lama dan mengisi password baru berikut verifikasi apakah sudah benar
atau tidak. Jika password baru dan verifikasi tidak cocok maka user diminta
untuk mengisi kembali.

Buatlah file baru yang berisi form untuk mengganti password:


 1 text field untuk isi password lama
 1 text field untuk isi password baru
 1 text field untuk konfirmasi password baru

Jika sudah mengembangkan aplikasi ini dengan metode asinkronus maka


action dapat dimasukkan pada file yang sama sehingga tidak perlu banyak file
pada direktori aplikasi. Aplikasi asinkronus dapat dikembangkan dengan
memanfaatkan teknologi AJAX (Asynchronous Javascript XML).

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 15
Aplikasi PHP-MySQL – Update dan Delete

File: changepassword.php

<?php
include “allfunctions.php”;
otentikasiCookie();
$aktif = $_COOKIE[tiket];
//koneksi();
//halaman ini belum membutuhkan koneksi database
?>
<!DOCTYPE html>
<html>
<head>
<title>Change Password</title>
</head>

<body>
<form name=”form1” method=”post” action=”src-password.php”>
<h3>Ubah password - $aktif</h3>
<p>
Masukkan password anda saat ini:<br>
<input type=”password” name=”oldpassword” size=”50” />
</p>
<p>
Masukkan password baru:<br>
<input type=”password” name=”newpassword” size=”50” />
</p>
<p>
Konfirmasi password baru:<br>
<input type=”password” name=”newpasswordconfirm” size=”50” />
</p>
</form>
</body>
</html>

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 16
Aplikasi PHP-MySQL – Update dan Delete

File: src-password.php

<?php
include “allfunctions.php”;
otentikasiCookie();
koneksi();
$aktif = $_COOKIE[tiket];
?>
<!DOCTYPE html>
<html>
<head>
<title>Change Password</title>
</head>

<body>
<?php
$oldPassword = md5( $_POST[oldpassword] );
$newPassword = $_POST[newpassword];
$newPasswordConfirm = $_POST[newpasswordconfirm];

$query = mysql_query(“
SELECT password FROM members
WHERE username=’$aktif’
“);
$fetch = mysql_fetch_assoc($query);
$password = $fetch[password];

if ( $oldPassword == $password ) {
if ( $newPassword == $newPasswordConfirm ){
$newPassword = md5($newPassword);
$ganti = mysql_query(“
UPDATE members
SET password = ‘$newPassword’
“);
echo ‘Password anda sudah diganti<br>
<a href=”profile.php”>Klik disini</a> untuk kembali
ke profil anda<br>
‘;
}

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 17
Aplikasi PHP-MySQL – Update dan Delete

else {
echo ‘
Anda salah mengetik password atau password baru
anda tidak cocok. Tunggu beberapa detik.<br>
<a href=”changepassword.php”>Klik disini</a> jika redirect
tidak berhasil<br>
‘;
}
}
else {
echo ‘
Anda salah mengetik password atau password baru
anda tidak cocok. Tunggu beberapa detik.<br>
<a href=”changepassword.php”>Klik disini</a> jika redirect
tidak berhasil<br>
‘;
}

?>

Apabila sudah berhasil mengganti password, coba kembali password baru


anda dengan logout dan mengisi form login.

Latihan:

Buatlah hyperlink yang menghubungkan semua halaman:


 home.php
 profile.php
 changepassword.php

Setiap halaman harus saling terhubung satu sama lain.


Tiap halaman harus mempunya hyperlink ke logout.php

Building Web Applications with PHP & MySQL


Copyright © Inixindo 9 - 18

Anda mungkin juga menyukai