Académique Documents
Professionnel Documents
Culture Documents
Kerja sama antara Forum Website BPKP dengan Pusat Informasi Pengawasan BPKP
Bab 1
PENGANTAR
Buku ini akan menggunakan paket instalasi dari XAMPP untuk platform Microsoft
Windows (untuk platform lain, mis. Linux, silahkan merujuk ke situsnya. Pada saat
buku ini ditulis, versi XAMPP terbaru adalah XAMPP 1.7.3
Jawab y
Muncul layar berikut:
Jawab n
Muncul layar berikut:
Tekan Enter
Muncul layar berikut:
Tekan tombol start pada Apache dan MySQL sehingga tampak seperti berikut:
Untuk keperluan pelajaran selanjutnya dalam buku ini, kita harus mengubah
default halaman ke folder tempat kita membuat program. Dalam buku ini
diasumsikan semua program akan dibuat di folder c:\\workshop.
<?php
$nama = “EkoBayong”;
echo “Selamat datang “ . $nama;
phpinfo();
?>
Software Lain
- SQLYog Community Edition
Software ini digunakan untuk melakuan manajemen dan administrasi MySQL. Pada
saat buku ini dibuat, versi SQLYog Community Edition ini adalah
SQLyog85community.
SQLYog Community Edition dapat diunduh dari http://code.google.com/p/sqlyog/
- Teks Editor
Untuk membuat program php, kita dapat menggunakan text editor apapun (mis.
notepad, crimson editor, Notepad++) atau menggunakan IDE (Integrated
Development Environtment) semacam Komodo Edit, Eclipse, Zend Studio, Netbeans
dan sebagainya.
Browser
Anda bisa menggunakan browser apapun (Internet Expoler, Mozilla Firefox, Opera,
Google Chrome dan sebagainya)
Lain-lain
- Secangkir kopi dan sebungkus snack.
- Sediakan juga obat sakit kepala untuk mengatasi pusing karena belajar bahasa
pemrograman.
- Sabar dan tawakal.
Bab 2
DASAR-DASAR BAHASA PHP
Pada bab sebelumnya, kita telah mempersiapkan hal-hal yang diperlukan untuk
melakukan pemrograman PHP. Pada bab ini kita akan mempelajari konsep dasar PHP
meliputi variabel, tipe data, operator dan konstanta.
Variabel
Variabel adalah bagian mendasar dari setiap bahasa pemrograman. Variable adalah
wadah untuk menyimpan nilai tertentu. Isi sebuah variable dapat diubah sepanjang
jalannya program. Kemampuan ini yang membuat variabel begitu berguna.
Perhatikan potongan kode program PHP berikut ini:
<?php
echo 2 + 5
?>
<?php
echo “query ke sebuah table”;
----
----
----
echo “query ke sebuah table”;
?>
Perhatikan bahwa tanpa variable, kita harus mengulang query tersebut ditempat-
tempat yang membutuhkannya. Sangat tidak efektif jika query-nya cukup panjang.
Berbeda dengan yang berikut:
<?php
$query = “query ke sebuah tabel”;
echo $query;
----
----
----
echo $query;
?>
Nama variable bersifat Case-Sensitive (membedakan antara huruf besar dan kecil),
$Variable dan $variable adalah dua variabel yang berbeda. Meskipun panjang nama
variabel tidak dibatasi, tetapi membuat nama variabel lebih dari 30 karakter tidaklah
praktis karena memudahkan kita melakukan kesalahan penulisan nama variable. Juga
gunakan nama variabel yang menggambarkan isinya. $nama_pegawai tentu lebih
menggambarkan isinya dibandingkan dengan $np misalnya.
Tipe Data
Tipe data di PHP meliputi :
Tipe Data Scalar
Tipe data scalar adalah tipe data yang hanya mengandung nilai tunggal. PHP
mempunyai 4 tipe data scalar sebagai berikut (beserta contoh):
Konstanta
Jika sebuah variable dapat diubah isinya sepanjang jalannya program, konstanta
digunakan untuk menyimpan nilai tetap dan tidak dapat diubah. Konstanta
didefinisikan menggunakan fungsi define(). Aturan penamaan hampir mirip dengan
aturan penamaan variable kecuali tanda awal $. Konstanta juga bersifat Case-Sensitive.
Pada prakteknya, penamaan konstanta selalu menggunakan huruf kapital. Konstanta
hanya dapat menampung nilai Boolean, Integer, Float dan String.
Contoh :
<?php
define(“NAMA_APLIKASI”, “Aplikasi Sistem Informasi Kepegaw aian”);
define(“VERSI”, “2.00”);
echo NAMA_APLIKASI . VERSI;
?>
Operator
Operator adalah simbol yang digunakan untuk memanipulasi satu atau lebih nilai,
biasanya menghasilkan sebuah nilai baru dalam prosesnya.
Operator Aritmetika
Operator Contoh
+ (Penambahan) 11 + 9 = 20
- (Pengurangan) 23 – 7 = 16
* (Perkalian) 10 * 9 = 90
/ (Pembagian) 10 / 5 = 2
% (Modulus/Sisa pembagian) 10/2 = 0
Operator Logika
Operator logika bekerja pada nilai Boolean. Sebelum melihat bagaimana operator
logika bekerja, mari kita lihat terlebih dahulu nilai Boolean.
Nilai Boolean selalu berisi salah satu dari TRUE atau FALSE. PHP secara otomatis
mengevaluasi ekspresi sebagai TRUE atau FALSE saat dibutuhkan. Sebagai contoh,
ekspresi berikut dievaluasi ke TRUE
1
10 == 10
9>7
Eko” != “Panjul”
FALSE
Integer Zero (0)
Float Zero (0.00)
String kosong (“”)
String Zero (“0”)
Array dengan Zero Element
NULL
Digunakan untuk membandingkan operand satu dengan lainnya. Nilai yang dihasilkan
dari pembandingan ini adalah TRUE atau FALSE. Operator ini banyak digunakan
statetemen-statemen pengambilan keputusan dan perulangan.
Sering kali itu sangat berguna untuk menambah atau mengurangi nilai 1 (berulang-
ulang). Situasi ini terjadi begitu sering, misalnya ketika membuat perulangan
(looping). Di PHP ada operator khusus yang digunakan untuk melakukan tugas ini
yaitu operator Incrementing dan Decrementing. Operator ini ditulis sebagai dua tanda
plus atau minus, sebelum atau setelah nama variabel, seperti:
Operator String
Operator string hanya ada satu yaitu . (dot) yang digunakan untuk menggabungkan
string.
Contoh:
<?php
$nama_depan = “Eko”;
$nama_belakang = “Bayong”;
echo $nama_depan . “ ” . $nama_belakang;
//atau
$nama_lengkap = $nama_depan . “ “ . $nama_belakang;
echo $nama_lengkap;
?>
Operator Precedence
Program diatas jika dijalankan akan menghasilkan output 43, bukan 70. Hal ini terjadi
karena * level precedence lebih tinggi dari +. Sehingga prosesnya adalah operasi 4 * 10
akan dilakukan terlebih dahulu baru ditambah dengan 3.
++ --
(int) (float) (string) (array) (object) (bool) (casting)
! (not)
* / % (arithmetic)
+ - . (arithmetic)
< < = > > = < > (comparison)
== != === !== (comparison)
& & (and)
|| (or)
= += - = *= /= .= %= (assignment)
And
Xor
or
Untuk menghasilkan nilai 70 dan bukannya 43 kode program diatas harus diubah
menjadi seperti berikut ini:
<?php
echo (3 + 4) * 10;
?>
Anda dapat mengubah urutan eksekusi dari operator dalam ekspresi dengan menggunakan tanda
kurung. Sehingga kode diatas akan membuat 3+4 dikerjakan terlebih dahulu baru kemudian di *
dengan 10.
Bab 3
MULAI MEMBUAT PROGRAM PHP
Program Pertama
Mari kita mulai menulis program PHP kita.
Tulis kode berikut :
<html>
<head>
<title>Program Pertama< /title>
</head>
<body>
< ?php
echo "Selamat Datang di Workshop PHP";
?>
</body>
</html>
Memahami STRING
String adalah sederet karakter yang berada diantara ‘ ‘ (single quote/ tanda petik
tunggal) atau “ ” (double quote/tanda petik ganda).
Sintak Tanda Petik Tunggal
Mengapit string dalam tanda petik tunggal adalah cara yang paling sederhana untuk
membuat string (tidak menerjemahkah variable ataupun karakter khusus).
Hampir mirip dengan string yang diapit oleh tanda petik tunggal, kecuali bahwa string
yang diapit tanda petik ganda akan menerjemahkan variable atau karakter khusus.
Karakter-karakter yang mempunyai arti khusus ini, biasa disebut dengan escape
sequence antara lain:
Sequence Arti
\n Karakter ganti baris
\t Karakter tab horisontal
\v Karakter tab vertical
\\ Karakter Backslash
\” Karakter “ (double quote)
\$ Simbol $
Mari kita lihat dalam contoh program (simpan dengan nama file Latihan-4.php):
<?php
$gelar_depan = "Dr.";
$gelar_belakang = "SE, MM ";
$nama_depan = "Ahmad";
//berikut ada tanda petik yang merupakan bagian dari string itu sendiri
$nama_belakang = "Rifa\"i";
echo "Nama Pegawai : $gelar_depan $nama_depan $nama_belakang, $gelar_belakang <br />";
//tampilkan kembali menggunakan tanda petik tunggal
echo 'Nama Pegawai : $ gelar_depan $nama_depan $nama_belakang, $gelar_belakang<br />';
//tambahkan escape squence
echo "Nama Pegawai : \n$ gelar_depan $nama_depan $nama_belakang, \t$gelar_belakang< br
/>";
echo "===================================================";
?>
Jika kita tampilkan di browser:
Perhatikan perbedaan antara string yang diapit tanda petik tunggal dan tanda petik
ganda. Lantas dimana \n dan \t berada..? \n dan \t tidak akan berpengaruh di
browser, tapi pada source code halaman itu. Buka melalui menu view – source (IE)
atau CTRL-U jika menggunakan Firefox. Perhatikan source code tersebut.
Memahami ARRAY
Array merupakan sebuah fitur yang powerful dari sebuah bahasa pemrograman
karena memudahkan kita untuk bekerja dengan sejumlah besar data yang sama.
Misalkan kita menuliskan sebuah program untuk menyimpan 100 data pegawai,
daripada harus membuat 100 variabel terpisah ($pegawai1, $pegawai2...
$pegawai100) kita dapat membuat satu variabel array $pegawai yang menyimpan
informasi semua pegawai tersebut.
Anatomi Array
Nilai yang dapat disimpan dalam elemen array dapat berupa tipe apapun bahkan
dicampur dalam satu array. Jadi array dapat berisi string pada elemen pertama,
integer pada elemen kedua dan boolean pada elemen ketiga, bahkan berisi array yang
lain.
Membuat Array
Cara paling sederhana untuk membuat variable array adalah dengan menggunakan
kontruktor array().
Contoh:
Baris kode diatas membuat array dengan 3 elemen dengan setiap elemennye berupa
string dan disimpan di variable $pegawai. Array ini adalah array dengan index
numerik. Untuk mengakses “ekobayong” kita harus menuliskan $pegawai[0] dan
untuk mengakses “panjul” kita menggunakan index 2 ($pegawai[2]).
Jika kita ingin membuat sebuah array assosiative, dimana elemen-elemennya akan
diindex menggunakan string, kita harus menggunakan operator =>.
Contoh :
Jika kita ingin menampikan penerbit maka kita tuliskan $bukuperpustakaan[“penerbit”]; dan untuk
menampilkan judul kita gunakan $bukuperpustakaan[“judul”];
Untuk membaca data dari array tersebut kita gunakan index numerik 0, 1 atau 2 jadi:
$pegawai[0] ekobayong
$pegawai[1] parmin
Dan $pegawai[2] panjul.
Seperti telah dikatakan diatas bahwa elemen array juga dapat berupa array, maka kita dapat
membuat sebuah array multidimensi. (Juga dikenal sebagai array bersarang karena mereka terdiri
dari satu atau lebih array bersarang di dalam array yang lain).
Perhatikan contoh berikut :
<?php
$databuku = array(
array("judul" => "Beginning PHP 5.3",
"penerbit" => "Wrox"),
array("judul" => "PHP For Absolute Beginner",
"penerbit" => "Apress"),
array("judul" => "Web Dev elopment with PHP and MySQL",
"penerbit" => "Sams Publishing"),
array("judul" => "Beginning PHP5, Apache, and MySQL Web Development",
"penerbit" => "Wrox")
);
echo "<h2>Judul-Judul Buku Rekomendasi< /h2> ";
//looping array
foreach($databuku as $dba) {
foreach($ dba as $key => $value) {
echo $key . " : " . $value . "<br />";
}
}
echo "<hr>";
//akses salah satu elemen saja
echo "Akses isi salah satu array : <br />";
echo "Judul : " . $databuku[1 ]["judul"] . "<br /> ";
echo "Penerbit : " . $ databuku[1]["penerbit"] . "< br />";
?>
Pada contoh diatas dibuat sebuah array $databuku dimana elemen-elemennya terdiri dari array.
Berikut hasil dari program diatas jika ditampilkan di browser:
Berikut adalah contoh lain dari penggunaan array. Program berikut digunakan untuk menampilkan
data tanggal dalam format hari, tanggal bulan tahun dalam bahasa Indonesia.
<?php
$array_hari = array("","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu","M inggu");
$array_bulan = array("01" => "Januari",
"02" => "Pebruari",
"03" => "Maret",
"04" => "April",
"05" => "Mei",
"06" => "Juni",
"07" => "Juli",
"08" => "Agustus",
"09" => "September",
"10" => "Oktober",
"11" => "Nopember",
"12" => "Desember");
$tanggal = date("d");
$bulan = date("m");
$tahun = date("Y");
$hari = date("N");
$tanggal_id = $array_hari[$hari] . ", " . $tanggal . " " . $array_bulan[$bulan] . " " . $tahun;
echo "Tanggal dalam format indonesia: " . $tanggal_id;
?>
PENGAMBILAN KEPUTUSAN
Sebagaimana bahasa pemrograman lain, PHP mengijinkan kita untuk melakukan operasi
pengambilan keputusan menggunakan statement-statement kondisional.
Statemen IF
Statemen kondisional yang paling mudah untuk dimengeri adalah statemen IF. Struktur dari
perintah ini adalah sebagai berikut:
If (kondisi) {
//blok program
}
Jika kondisi yang ada didalam tanda kurung terpenuhi (bernilai True) maka blok program yang ada
di antara tanda {..} akan dijalankan.
Perhatikan contoh berikut :
<?php
$data_absen = array(
array("nama" => "Pegawai 1",
"jamkerja" => 6),
array("nama" => "Pegawai 2",
"jamkerja" => 8),
array("nama" => "Pegawai 3",
"jamkerja" => 9)
);
$jamkerja_standar = 8;
foreach($data_absen as $da) {
$ potongan = "--";
echo "Nama Pegawai : " . $ da["nama"] . "<br />";
echo "Jam Kerja : " . $da["jamkerja"] . "< br>";
//start contoh if statemen
if ($da["jamkerja"] < $jamkerja_standar) {
$potongan = "Terkena potongan 5%";
}
//end
echo "Potongan : " . $potongan . "<br />";
}
?>
Jika ditampilkan dibrowser:
Statemen ELSE
Statement else digunakan untuk memberikan alternatif jika kondisi yang ada di statemen if tidak
terpenuhi (bernilai false).
Struktur dari statement if dengan else :
If (kondisi) {
//blok program
}
else {
//blok program alternatif
}
Jika kondisi yang ada di statemen if terpenuhi (bernilai true) maka blok program akan dikerjakan,
jika kondisi tidak terpenuhi (bernilai false) maka blok program alternatif yang akan di kerjakan.
Perhatikan contoh berikut:
<?php
$data_absen = array(
array("nama" => "Pegawai 1",
"jamkerja" => 6),
array("nama" => "Pegawai 2",
"jamkerja" => 8),
array("nama" => "Pegawai 3",
"jamkerja" => 9)
);
$jamkerja_standar = 8;
foreach($data_absen as $da) {
$ potongan = "--";
echo "Nama Pegawai : " . $ da["nama"] . "<br />";
echo "Jam Kerja : " . $da["jamkerja"] . "< br>";
//start contoh if statemen
if ($da["jamkerja"] < $jamkerja_standar) {
$potongan = "Terkena potongan 5%";
}
else {
$potongan = "Tidak terkena potongan";
}
//end
echo "Potongan : " . $potongan . "<br />";
}
?>
Program tersebut akan menampilkan nama bulan (dalam bahasa indonesia) tergantung pada
tanggal sistem.
Statement-statement ini digunakan sebagai alternatif dari IF..ELSEIF..ELSE. terutama jika kita
membandingkan variabel yang sama berkali-kali. Mari kita tulis kembali contoh program diatas, kali
ini menggunakan statement switch,case,break dan default.
<?php
$tanggal = date("d");
$bulan = date("m");
$tahun = date("Y");
$hari = date("N");
$bulan_id = "";
switch ($bulan) {
case "01" :
$ bulan_id = "Januari";
break;
case "02" :
$ bulan_id = "Pebruari";
break;
case "03" :
$ bulan_id = "M aret";
break;
case "04" :
$ bulan_id = "April";
break;
case "05" :
$ bulan_id = "M ei";
break;
case "06" :
$ bulan_id = "Juni";
break;
case "07" :
$ bulan_id = "Juli";
break;
case "08" :
$ bulan_id = "Agustus";
break;
case "09" :
$ bulan_id = "September";
break;
case "10" :
$ bulan_id = "Oktober";
break;
case "11" :
$ bulan_id = "Nopember";
break;
case "12" :
$ bulan_id = "Desember";
default :
$ bulan_id = "Nama Bulan....?";
}
echo "Sekarang Bulan : " . $bulan_id;
?>
Contoh berikut akan memperlihatkan kembali statement swich :
<?php
$array_hari = array("","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu","M inggu");
$hari = date("N");
$hari_id = $array_hari[$hari];
switch ($hari_id) {
case "Senin" :
case "Selasa" :
case "Rabu" :
case "Kamis" :
case "Jum'at" :
echo "Hari <b> " . $hari_id . "</b> adalah hari kerja";
break;
case "Sabtu" :
case "Minggu" :
echo "Hari<b> " . $hari_id . "< /b> ngapain ke kantor...?";
break;
default :
echo "Gak Jelas...?";
}
?>
STATEMEN PENGULANGAN
Ide dasar dari pengulangan adalah menjalankan blok kode program secara berulang-ulang samapi
suatu kondisi terpenuhi. Seperti dalam statemen pengambilan keputusan, statemen pengulangan
membutuhkan ekspresi yang menghasilkan nilai true atau false. Jika ekspresi menghasilkan nilai
true maka pengulangan akan berlanjut. Jika ekspresi menghasilkan false maka eksekusi akan keluar
dari pengulangan ke baris pertama dibawah struktur pengulangan tersebut.
Atau
while (ekpresi) :
//kode program
endwhile;
<?php
$i = 1;
while($i <= 100) {
echo $i . "<br /> ";
$i++;
}
?>
Program diatas akan menampilkan hasil berupa daftar angka 1 s.d. 100. Perhatikan ekspresi yang
ada didalam while.
Statement FOR
Ekspresi pertama (ekspresi1) dievaluasi (dieksekusi) sekali tanpa syarat pada awal iterasi. Disetiap
awal iterasi, ekspresi2 akan dievaluasi di setiap iterasi. Jika ekpresi2 menghasilkan true, iterasi
berjalan terus dan blok program akan dijalankan. Jika ekspresi2 menghasilkan false, iterasi akan
berhenti. Ekpresi3 akan dijalankan pada akhir setiap iterasi.
Ekspresi pertama (EXPR1) dievaluasi (dieksekusi) sekali tanpa syarat pada awal loop.
Di awal setiap iterasi, expr2 dievaluasi. Jika mengevaluasi TRUE, loop terus dan pernyataan
bersarang (s) dijalankan. Jika dievaluasi ke FALSE, pelaksanaan loop berakhir.
FUNGSI
Fungsi adalah sebuah kode blok yang digunakan untuk melakukan tugas tertentu. Fungsi adalah
bagian penting dari setiap bahasa pemrograman.
Fungsi berguna untuk beberapa alasan:
- Menghindari duplikasi kode.
- Memudahkan mengeliminasi kesalahan.
- Dapat digunakan ulang pada script atau aplikasi lain.
- Membantu dalam pembuatan proyek-proyek besar.
Memanggil Fungsi
Sebuah fungsi dapat berupa fungsi built-in (bawaan) atau fungsi yang didefinisikan sendiri oleh kita.
Cara memanggil fungsi (baik built-in maupun UDF) :
$var = nama_fungsi([parameter1,parameter2....]);
Jumlah parameter yang dikirim akan berbeda, tergantung fungsi-nya dan bahkan mungkin berbeda
untuk fungsi yang sama. Parameter yang dikirim harus valid dan dalam urutan tertentu seperti
yang diharapkan oleh fungsi. Fungsi juga mungkin akan mengembalikan sebuah nilai.
Berikut beberapa contoh fungsi built-in :
//menghitung panjang sebuah string
$panjang = strlen(“PHP”); // $panjang akan berisi nilai 3.
//bulan dari tanggal sistem (January, February dsb).
$bulan = date(“F”); //$bulan akan berisi July (saat modul ini ditulis)
PHP menyediakan banyak sekali fungsi built-in (lebih dari 700 fungsi). Kita bisa mendapatkannya
dalam manual PHP (dowload di www.php.net).
Jika diperlukan (seringkali) kita membuat fungsi sendiri. Sintaks untuk membuat fungsi adalah
sebagai berikut:
function namafungsi([parameter1,parameter2....] {
//blok program
}
Nama fungsi dapat berupa string yang dimulai dengan huruf atau garis bawah diikuti dengan nol
atau lebih huruf, garis bawah, dan digit. Nama Fungsi bersifat case-insensitif.
Biasanya, fungsi mengembalikan nilai tertentu. Untuk mengembalikan nilai dari fungsi, gunakan
return. Ketika pernyataan return ditemui pada saat menjalankan fungsi, maka alur program akan
kembali ke program pemanggil.
Contoh program:
<?php
function html_header($title= "Belum ada Judul") {
echo "<html>
<head>
<title>$title</title>
</head>
<body>";
}
function html_footer() {
echo "< body>< /html> ";
}
function translate_to_day_id($hari) {
$array_hari = array("","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu","Minggu");
return $array_hari[$hari];
}
function translate_date_to_id($tanggal) {
$array_bulan = array("01" => "Januari",
"02" => "Pebruari",
"03" => "M aret",
"04" => "April",
"05" => "M ei",
"06" => "Juni",
"07" => "Juli",
"08" => "Agustus",
"09" => "September",
"10" => "Oktober",
"11" => "Nopember",
"12" => "Desember");
$bln = substr($tanggal, 5, 2);
$tahun = substr($tanggal, 0, 4);
$tanggal = substr($tanggal, 8, 2);
$date_id = $tanggal . " " . $ array_bulan[$ bln] . " " . $tahun;
return $date_id;
}
function br($jumlah=1) {
for($i=0;$i<=$jumlah;$i++) {
echo "<br />";
}
}
Form HTML
Sekilas kita akan kembali melihat bagaimana form HTML dibuat. Sebuah form HTML dibuat
menggunakan tag-tag HTML untuk input, seperti <input>, <select>, <textarea>. Form HTML diawali
dengan tag <form> dan diakhiri dengan tax </form>
Mari kita lihat contoh form HTML Login berikut ini (kode HTML berikut dimasukkan ke file program
php. Bukan file HTML biasa:
<?php
function html_header($title= "Belum ada Judul") {
echo "<html>
<head>
<title>$title</title>
</head>
<body>";
}
function html_footer() {
echo "< body>< /html> ";
}
html_header();
?>
<h3>Login Page< /h3>
<form name="login" action="dologin.php" method= "post">
Username< br />
<input type="text" name="username"><br />
Password< br />
<input type="password" name= "password" /><br />
<input type="submit" value= "Login" />
</form>
<?php
html_footer();
?>
Perhatikan pada tag form, atribut action memberitahukan lokasi file yang akan menerima data dari
form tersebut. Atribut method digunakan untuk menentukan bagaimana data akan dikirim. Apakah
dikirim sebagai variable (menggunakan GET) dan melekat ke URL atau dikirim sebagai bagian dari
transaksi protokol HTTP.
Catatan tentang metode GET:
- Metode ini menambahkan data ke URL dengan pasangan namavariableform=nilai.
- Metode ini berguna untuk pengiriman form dimana pengguna ingin menandai hasilnya
(bookmark)
- Tidak ada batas untuk banyak data yang dapat ditempatkan di URL (bervariasi antar
browser). Oleh karena itu kita tidak dapat memastikan bahwa semua data dari form HTML
akan benar-benar ditransfer.
- Jangan menggunakan metode ini untuk menyampaikan informasi yang sensitif. (Password
atau informasi lainnya.
Catatan tentang metode POST
- Metode ini mengirimkan data form sebagai bagian dari transaksi HTTP.
- Form dengan metode pengiriman POST tidak dapat ditandai (bookmark)
- Merupakan metode yang lebih aman untuk mengirimkan data dan tidak memiliki batas
besaran data yang akan dikirim.
Jika contoh program diatas diubah dengan method=”GET” maka ketika ketika tombol submit
(login) ditekan, url akan berubah menjadi (http://www.domain.com/
dologin.php?username=ekobayong&password=ddd).
MySQL
Pada prinsipnya, kita dapat menggunakan database yang lain selain MySQL. Ada banyak sekali
database yang didukung oleh PHP, dari MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Db2 dan
lain-lain.
Pada buku ini kita akan menggunakan MySQL. Sekedar diketahui, database ini merupakan database
yang paling banyak digunakan oleh programmer web dengan beberapa alasan berikut:
- Merupakan satu database yang paling populer digunakan di pemrograman web.
- Tersedia secara bebas (download, install, use).
- Mudah untuk diinstall di berbagai sistem operasi (Termasuk UNIX, Windows, MAC dan
LINUX).
- Hampir semua perusahaan penyedia jasa layanan Hosting mendukung MySQL.
- Cepat dan mampu digunakan untuk database besar dan kompleks.
Pada bab I kita telah melakukan instalasi MySQL menggunakan paket installer XAMPP. Ini berarti
MySQL telah siap digunakan.
Log in ke MySQL.
Catatan:
Sesuai dengan instalasi pada Bab I, tambahkan path untuk program-program MySQL ke PATH di
environment variable komputer kita. Pada buku ini tambahkan path C:\xampp\mysql\bin .
mysql –u root
Sehingga perintah diatas akan langsung membawa kita ke konsol MySQL. (parameter –u adalah
untuk menentukan user yang akan dipakai untuk login. Saat ini kita akan menggunakan login
dengan root. Pada aplikasi yang sebenarnya kita harus membuat user lain, dan jangan pernah
menggunakan user root untuk aplikasi. User root adalah user tertinggi dalam sistem MySQL).
Perintah diatas akan membawa kita ke konsol MySQL seperti tampak berikut ini (mungkin sedikit
berbeda):
Membuat Hak Akses
Kali ini kita akan memberikan privileges baru untuk root dengan password ‘x’.
mysql>> grant all privileges on *.* to root@localhost i dentified by “x” with grant option;
Arti dari perintah diatas adalah : Berikan semua privileges pada semua database dan table ke user
root di localhost, password = x dan hak untuk memberikan hak akses (grant) kepada user lain.
(mysql>> adalah tanda konsol mysql. Bukan merupakan bagian dari perintah yang kita jalankan).
Membuat Database
Mari kita buat sebuah database blog untuk kepentingan latihan berikutnya pada buku ini.
Membuat Tabel
Contoh:
Mari kita buat dua buah tabel untuk membuat sebuah blog sederhana.
1 tabel untuk menyimpan setiap posting kita, 1 tabel untuk menyimpan komentar dari pengunjung.
Struktur tabel tersebut adalah sebagai berikut:
1. Tabel posting
Nama Field Type Options
Id Int(11) Primary key, auto increment
Judul Varchar(255)
Pengantar Text
Isi Text
Tglposting Datetime
2. Tabel komentar
Nama Field Type Options
Id Int(11) Primary key, auto increment
Nama Varchar(255)
Email Varchar(255)
Isi Text
Tglkomentar Datetime
Posting_id Int(11)
3. Tabel User
Nama Field Type Options
Id Int(11) Primary key, auto increment
Username Varchar(255)
Password Varchar(255)
Lastlogin Datetime
mysql>> create tabl e komentar(id integer pri mary key auto_increment,nama varchar(255),
email varchar(255),isi text,tglkomentar datetime,posting_id integer);
Membuat tabel user
mysql>> create tabl e user(id integer pri mary key auto_increment,username varchar(255),
password varchar(255),lastl ogin datetime) ;
Contoh:
mysql>> desc posting;
akan menampilkan informasi seperti berikut:
Mengisi Tabel
Untuk mengisi data ke dalam tabel kita gunakan perintah insert. Format perintah insert adalah
sebagai berikut:
Contoh:
Mari kita masukkan data-data berikut ke dalam tabel posting
Judul Pengantar Isi Tglposting
Pemrograman Web Banyak bahasa yang Mau membuat 2010-07-10 20:10:45
harus dipilih... mau program web..?
pilih yang mana..? Terdapat banyak sekali
bahasa pemrograman
yang bisa digunakan....
Pemrograman Desktop Mulai dari Visual Basic Mana pilihan yang 2010-08-10 13:01:45
sampai Java... mulai C, tepat ketika harus
C++ sampai bahasa menentukan bahasa
yang kurang kita pemrograman untuk
kenal... aplikasi desktop....
mysql>> insert into posting (judul,pengantar,isi,tglposting)
values(“Pemrograman Web”, “Banyak bahasa yang harus dipilih... mau pilih yang
mana..?”,“M au membuat program web..? Terdapat banyak sekali bahasa
pemrograman yang bisa digunakan....”, “2010-07-10 20:10:45”);
Catatan: field /kolom auto_increment akan diisi secara otomatis oleh MySQL.
Menampilkan Data
Perintah untuk menampilkan data SELECT. Format perintah ini adalah sebagai berikut:
Contoh:
- Menampilkan semua data dari tabel posting
select * from posting;
- Menampilkan judul,pengantar dari tabel posting
select judul,pengatar from posting;
- Menampilkan semua data untuk id=2
select * from posting where id=2;
- Menampilkan judul,pengantar,tglposting diurutkan berdasarkan tanggal
select judul,pengantar,tglposting from posting order by tglposting asc;
Update Data
Perintah untuk update data adalah UPDATE. Format umum perintah ini adalah:
Contoh:
- Mengubah judul=Pemrograman Web menjadi Pemrograman Berbasis Web
update posting set judul="Pemrograman Berbasis Web" where judul="Pemrograman
Web";
- Mengubah tglposting menjadi 2010-08-01 08:00 untuk id=2
update posting set tglposting="2010-08-01 08:00" where id=2;
Menghapus Data
Perintah untuk menghapus data adalah DELETE. Format umum perintah ini adalah:
Contoh:
- Menghapus record dengan judul=”Pemrograman Desktop”;
delete from posting where judul=”Pemrograman Desktop”;
- Menghapus semua record
delete from posting;
(sebelumnya berikan perintah berikut untuk membuat sebuat user mysql baru dengan nama
webuser@localhost password = x. User ini hanya dapat select,update,insert,delete ke database
blog.
mysql>> grant all privileges on blog.* to webuser@localhost identified by “x”;
mysql>> glush privileges;
).
<?php
mysql_connect("localhost", "webuser", "x") or die ("Koneksi G agal");
mysql_select_db("blog");
$query = "select * from posting order by tglposting desc;";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
echo "< b>" . $row["judul"] . "</b>< br /> ";
}
?>
Jika kita tampilkan di browser:
Tipikal program PHP yang berinteraksi dengan MySQL adalah sebagai berikut:
1. Lakukan koneksi.
2. Pilih Database
3. Lakukan Query
4. Tampilkan hasilnya.
Mari kita lihat contoh berikut yang merupakan modifikasi dari program sebelumnya untuk melihat
bagaimana perintah-perintah lain digunakan untuk mendapatkan hasil dari sebuah query.
<?php
//koneksi ke server
$conn = mysql_connect("localhost", "webuser", "x");
//jika tidak berhasil
if(!$ conn) {
echo "Gagal melakukan koneksi ke Database System.";
exit;
}
if(!mysql_select_db("blog")){
echo "Gagal menggunakan database yang diinginkan";
exit;
}
$query = "select * from posting order by tglposting desc;";
if(!$result = mysql_query($query)) {
echo "Query gagal dilakukan";
exit;
}
//menampilkan jumlah baris yang didapatkan
echo "Jumlah Posting : " . mysql_num_rows($result) . "<br />";
echo "<hr /> ";
//menampilkan hasil query sebagai array asosiatif menggunakan mysql_fetch_array
echo "mysql_fetch_array<br />";
while($row = mysql_fetch_array($result)) {
echo "< b>" . $row["judul"] . "</b>< br /> ";
echo "Posting tanggal : " . $row["tglposting"] . "<br />";
}
echo "<hr /> ";
//kembalikan pointer ke 0
mysql_data_seek($result, 0);
//menampilkan hasil query sebagai array asosiatif menggunakan mysql_fetch_assoc
echo "mysql_fetch_assoc<br />";
while($row = mysql_fetch_assoc($result)) {
echo "< b>" . $row["judul"] . "</b>< br /> ";
echo "Posting tanggal : " . $row["tglposting"] . "<br />";
}
echo "<hr /> ";
//kembalikan pointer ke 0
mysql_data_seek($result, 0);
//menampilkan hasil query sebagai array numerik
echo "mysql_fetch_row<br /> ";
while($row = mysql_fetch_row($result)) {
echo "< b>" . $row[1] . "</b><br /> ";
echo "Posting tanggal : " . $row[4] . "<br />";
}
echo "<hr /> ";
//kembalikan pointer ke 0
mysql_data_seek($result, 0);
//menampilkan hasil query sebagai object
echo "mysql_fetch_object<br />";
while($row = mysql_fetch_object($result)) {
echo "< b>" . $row->judul . "</b>< br /> ";
echo "Posting tanggal : " . $row->tglposting . "<br />";
}
?>
Persiapan
Pada bab ini kita akan membuat sebuah program blog sederhana. Tampilan akhir dari program ini
adalah sebagai berikut :
- Halaman Awal.
Dihalaman awal akan ditampilkan daftar posting diurutkan berdasarkan tanggal terbaru.
Untuk membaca posting secara terinci, user harus memilih dengan klik di judul posting.
- Tampilan rinci posting dan komentar terkait serta form untuk mengisi komentar.
- Pemilik blog mempunyai accout untuk login. Berikut tampilan halaman login
- Berikut tampilan halaman daftar posting setelah login.
Dihalaman ini terdapat link untuk logout, edit, delete dan show posting serta link untuk
membuat posting baru.
- Berikut tampilan edit posting
- Tabel yang perlu dibuat adalah tabel posting, komentar dan user.
Tabel posting dan komentar telah dibuat pada bab sebelumnya, jadi kali ini kita hanya perlu
membuat sebuah tabel lagi yaitu tabel user. Struktur tabel tersebut adalah sebagai berikut:
<?php
define(ROO T,"/blog/");
define(CSS_FOLDER, ROO T . "public/css/");
define(IMAGES_FOLDER, ROOT . "public/images/");
define(MYSQL_HOST,'localhost');
define(MYSQL_USER,"webuser");
define(MYSQL_PASSWORD,"x");
define(MYSQL_DB,"blog");
define(TITLE,"MySimple Weblog");
define(AUTHOR,"S&R");
define(VERSIO N,"1.00");
define(YEAR,date("Y"));
define(META_DESCRIPTIO N,"S&R Blog, Blog tentang apapun");
define(META_KEYWO RD,"PHP, MySQL,APACHE, HTML, C SS, Anything about IT Stuff");
$kon = mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASSWO RD );
if (!$kon) {
echo "Koneksi gagal dilakukan";
exit;
}
$db = mysql_select_db(MYSQL_DB);
if (!$db) {
echo "Database tidak ditemukan";
exit;
}
?>
return $hari . ", " . date_format($date,"d") . " " . $ bulan . " " . date_format($date,"Y");
}
?>
html_footer();
?>
if(!$result = mysql_query($query)) {
echo "Gagal input komentar";
}
else {
echo "Terima kasih atas kunjungan dan komentar anda";
br(2);
}
}
}
//tampilkan komentar terkait
$query = "select * from komentar where posting_id= " . $_GET["post_id"];
$result = mysql_query($query);
//jika belum ada komentar
if (mysql_num_rows($result) == 0) {
echo "Belum ada komentar masuk";
echo br(2);
}
else {
//tampilkan komentarnya
echo "Jumlah komentar : < b>" . mysql_num_rows($result) . "</b><br />";
while($row = mysql_fetch_object($result)) {
echo "<h1>$row->nama</h1>";
echo "<span class='tanggal'> " . conv ert_to_longdate_id($row->tglkomentar) .
"</span><br />";
echo "<span class='tanggal'>" . $row-> email . "< /span><br />";
echo stripslashes(nl2br($row->isi));
echo br(1);
}
}
echo "<b>Silahkan Isi Komentar</b><br />";
if (!empty($error)) {
foreach($ error as $e) {
echo $ e . "<br />";
}
}
form_komentar();
echo br(2) . "<a href='" . ROO T . "'>Back to Home</a> ";
}
}
}
else {
echo "Hmm....< a href='" . ROOT . "'>kembali ke home saja ya...</a>";
}
html_footer();
?>
?>
<h3>Login Page< /h3>
<?php
if(!empty($ error)) {
foreach($error as $e) {
echo $e . "<br />";
}
}
?>
<form name="login" action="" method="post">
Username< br />
<input type="text" name="username" size="20" /><br />
Password< br />
<input type="password" name= "password" size="20" /><br />
<input type="submit" value= "Login" />
</form>
<?php
html_footer();
?>
if(!$result = mysql_query($query)) {
echo "Gagal Edit Posting";
echo $query;
}
else {
header("Location:postinglist.php");
}
}
}
if (!empty($error)) {
foreach($ error as $e) {
echo $ e . "<br />";
}
}
?>
<form action= "" method="post" name= "new">
Judul<br >
<input type= "text" name= "judul" size="70" value= "<?php echo stripslashes($row ->judul)
?>"/>< br />
Pengantar< br />
<textarea name= "pengantar" rows="3 " cols= "70"> <?php echo stripslashes($row-
>pengantar) ?></textarea><br />
Isi<br />
<textarea name="isi" rows="10" cols="70">< ?php echo stripslashes($row->isi)
?></textarea><br />
<input type="submit" value= "Simpan" />
<a href="postinglist.php">Batal< /a>
</form>
<?php
}
}
}
else {
echo "Hmm....< a href='" . ROOT . "'>kembali ke home saja ya...</a>";
}
html_footer();
?>
11. Buat file delete.php di folder admin
Berikut listing program-nya:
<?php
include "../include/config.php";
include "../include/layout.php";
include "../include/tanggal.php";
session_start();
if(empty($_SESSIO N["id"])) {
header("L ocation:" . ROOT ."admin");
}
html_header();
echo "Welcome " . $_SESSIO N["username"];
echo " <a href='" . ROO T ."admin/logout.php'>Logout</a><br /><br /> ";
if(empty($_SESSIO N["id"])) {
header("L ocation:" . ROOT ."admin");
}
if($_GET) {
if($_GET["post_id"] and !empty($_GET["post_id"])) {
$ post = intval($_GET["post_id"]);
if ($post) {
//hapus
$query = "delete from posting where id=" . $_GET["post_id"];
$res = mysql_query($query);
if($res) {
//hapus komentar terkait
$ query = "delete from komentar where posting_id=" . $_GET["post_id"];
$res = mysql_query($query);
echo "Record telah dihapus<br />";
echo "<a href='postinglist.php'>Back</a>";
}
else {
echo "Gagal melakukan penghapusan<br />";
echo "<a href='postinglist.php'>Back</a>;";
}
}
else {
echo "Hm... apa yang mau dihapus... ";
echo "<a href='postinglist.php'>Back to List< /a>";
}
}
else {
echo "Hm... apa yang mau dihapus... ";
echo "<a href='postinglist.php'>Back to List< /a>";
}
}
else {
echo "Hm... apa yang mau dihapus... ";
echo "<a href='postinglist.php'>Back to List< /a>";
}
html_footer();
?>