Pemrograman PHP
2.1 Menciptakan
Form HTML
Penanganan
sebuah form HTML dengan PHP (mungkin) merupakan proses paling penting pada
sembarang situs dinamis. Dua langkah terlibat: pertama Anda menciptakan form
HTML, dan kemudian Anda menciptakan skript PHP yang akan menerima dan memproses
data form.
Meski penjelasan
form HTML secara detil di luar cakupan buku ini, tetapi pada Anda akan
dijelaskan satu contoh sehingga Anda dapat memahaminya secara komprehensif.
Jika Anda tidak familier dengan dasar-dasar form HTML, Anda bisa mempelajarinya
pada situs W3C.
Form HTML
diciptakan menggunakan tag form dan
pelbagai elemen untuk masukan. Tag form
tampak seperti ini:
<form action=”skript.php” method=”post”>
</form>
Dalam PHP,
atribut yang paling penting pada tag form
adalah action, yang mendiktasi data
form mana pada halaman yang akan dikirim. Atribut kedua, method, perlu penjelasan tersendiri tetapi post merupakan nilai yang sering dipakai.
Pelbagai masukan
seperti kotak teks, tombol radio, menu seleksi, kotak periksa, dan lainnya
ditempatkan di dalam tag form
pembuka dan tag form penutup.
Seperti yang akan Anda lihat, jenis masukan pada form Anda membuat hanya
sedikit perbedaan pada skript PHP dalam menanganinya. Anda sebaiknya memberi
perhatian pada nama-nama yang Anda berikan pada masukan-masukan form, karena
hal ini penting ketika digunakan pada kode PHP Anda.
Menciptakan form HTML
1. Awali dokumen HTML baru pada editor teks Anda (Skript 2.1).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Form HTML
Sederhana</title>
</head>
<body>
<!-- #Skript2.1 - form.html -->
Tidak ada yang baru di sini. Dokumen masih menggunakan sintaksis dasar
yang sama untuk sebuah halaman HTML seperti pada bab sebelumnya. Sebuah
komentar HTML mengindikasikan nama dan nomor file.
2. Tambahkan tag form awal.
<form
action="tangani_form.php" method="post">
Karena atribut action menentukan ke skript mana data form akan dikirimkan, Anda
sebaiknya memberikannya nama yang sesuai (tangani_form.php untuk memproses
skript form.html). Ekstensi .php diberikan karena halaman PHP yang akan
memproses data form ini.
3. Awali form HTML.
<fieldset><legend>Masukkan
informasi Anda pada form berikut:</legend>
Anda menggunakan tag fieldset dan legend karena tampilan form HTML akan terlihat lebih rapi.
4. Tambahkan dua masukan teks.
<p><b>Nama:</b>
<input type="text" name="nama" size="20"
maxlength="40"/></p>
<p><b>Alamat
Email:</b> <input type="text" name="email"
size="40" maxlength="60" /></p>
Keduanya merupakan masukan teks
sederhana, agar user dapat memasukkan nama dan alamat emailnya (Gambar 2.1).
5. Tambahkan sepasang tombol radio.
<p><b>Gender:</b>
<input
type="radio" name="gender" value="L" /> Lelaki
<input
type="radio" name="gender" value="P" />
Perempuan</p>
Tombol-tombol radio memiliki nama
sama, yang berarti bahwa hanya salah satu dari kedua tombol radio tersebut yang
dapat diseleksi. Masing-masing tombol memiliki nilai yang berbeda.
6. Tambahkan sebuah menu pull-down.
<p><b>Usia:</b>
<select
name="usia">
<option value="0-29">Di bawah
29 tahun </option>
<option value="30-60">Antara
30 dan 60 tahun </option>
<option value="60+">Di atas
60</option>
</select></p>
Tag select mengawali menu pull-down, dan kemudia setiap tag option akan menciptakan satu pilihan
pada daftar pilihan yang ada.
7. Tambahkan sebuah kotak teks untuk komentar.
<p><b>Komentar:</b>
<textarea name="komentar" rows="3" cols="40"></textarea></p>
Masukan textarea berbeda dari masukan text;
Masukan textarea direpresentasikan
sebagai sebuah kotak, bukan sebuah baris. Masukan ini dapat memuat informasi
yang lebih banyak dan sering dipakai untuk menempatkan komentar user.
8. Tutup form.
</fieldset>
<div align="center"><input
type="submit" name="submit" value="Submit Informasi
Saya"
/></div>
</form>
Tag pertama menutup fieldset yang dibuka pada langkah 3.
Kemudian tombol submit diciptakan
dan disejajarkan ke tengah menggunakan sebuah tag div. Terakhir, form ditutup.
9. Tutup halaman HTML.
</body>
</html>
10. Simpan file sebagai form.html, tempatkan pada direktori Web, dan uji
dengan browser Web Anda (Gambar 2.1).
SKRIPT 2.1
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Form HTML Sederhana</title>
</head>
<body>
<!-- #Skript2.1
- form.html -->
<form action="tangani_form.php"
method="post">
<fieldset><legend>Masukkan informasi Anda pada form
berikut:</legend>
<p><b>Nama:</b>
<input type="text"
name="nama" size="20" maxlength="40"/></p>
<p><b>Alamat Email:</b>
<input type="text" name="email" size="40"
maxlength="60" /></p>
<p><b>Gender:</b>
<input
type="radio" name="gender" value="L" />
Lelaki
<input
type="radio" name="gender" value="P" />
Perempuan</p>
<p><b>Usia:</b>
<select
name="usia">
<option
value="0-29">Di bawah 29 tahun </option>
<option
value="30-60">Antara 30 dan 60 tahun </option>
<option
value="60+">Di atas 60</option>
</select></p>
<p><b>Komentar:</b> <textarea name="komentar" rows="3"
cols="40"></textarea></p>
</fieldset>
<div align="center"><input type="submit" name="submit"
value="Submit Informasi Saya" /></div>
</form>
</body>
</html>
|
2.2
Menangani Form
Setelah form
HTML diciptakan, sekarang saatnya untuk menuliskan skript PHP untuk
menanganinya. Ini artinya bahwa halaman PHP akan melakukan sesuatu terhadap
data yang diterimanya (yaitu data yang dimasukkan user ke dalam form). Pada bab
ini, skript hanya akan menampilkan data kembali pada browser Web. Pada
contoh-contoh selanjutnya, data form akan disimpan di dalam sebuah database
MySQL.
Keindahan PHP
dan apa yang membuatnya begitu mudah untuk dipelajari dan digunakan adalah
bahwa PHP berinteraksi dengan form HTML. Skript PHP menyimpan informasi yang
diterima di dalam beberapa variabel spesial. Sebagai contoh, dimisalkan bahwa
Anda memiliki sebuah form dengan sebuah masukan seperti ini:
<input
type=”text” name=”kota” />
Apapun yang
diketikkan user ke dalam elemen tersebut dapat diakses melalui sebuah variabel
PHP dengan nama $_REQUEST[‘kota’]. Adalah sangat penting untuk memerhatikan
ejaan dan kapitalisasi variabel tersebut. PHP bersifat case-sensitive pada
penamaan variabel, jadi $_REQUEST[‘kota’] memiliki nilai, tetapi
$_Request[‘kota’] atau $_REQUEST[‘Kota’] tidak akan memiliki nilai.
Pada contoh
selanjutnya, akan diberikan sebuah skript PHP yang menangani form HTML yang
telah dibuat (Skript 2.1). Skript ini akan menugasikan data form kepada
beberapa variabel baru. Skript kemudian akan menampilkan nilai-nilai yang
diterimanya.
Menangani form HTML
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda,
diawali dengan HTML (Skript 2.2).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data
Form</title>
</head>
<body>
2. Tambahkan tag PHP pembuka dan ciptakan versi pendek dari
variabel-variabel data form.
<?php
#Skript2.2 - tangani_form.php
$nama
= $_REQUEST['nama'];
$email
= $_REQUEST['email'];
$komentar
= $_REQUEST['komentar'];
Mengikuti aturan-aturan yang telah
dijelaskan sebelumnya, data yang dimasukkan ke dalam masukan form pertama,
yaitu nama, akan diakses melalui variabel $_REQUEST[‘nama’], yang ditunjukkan
pada Tabel 2.1. Data yang dimasukkan ke dalam masukan form email dapat diakses
dengan variabel $_REQUEST[‘email’]. Hal yang sama berlaku untuk data komentar.
Pengejaan dan kapitalisasi dari variabel Anda di sini harus sama persis dengan
nilai-nilai name pada form HTML.
3. Tampilkan nilai nama, email, dan komentar yang diterima.
//
Menampilkan informasi yang dikirim:
echo "<p>Terimakasih,
<b>$nama</b>, atas komentar berikut:<br />
<tt>$komentar</tt></p>
<p>Kami akan membalasnya pada
<i>$email</i>.</p>\n";
Nilai-nilai yang dikirim ditampilkan menggunakan statemen echo().
4. Tutup halaman HTML.
?>
</body>
</html>
5. Simpan file sebagai tangani_form.php dan tempatkan pada direktori Web.
6. Uji kedua dokumen pada browser Web Anda dengan mengisi form HTML yang
diberikan dan menekan tombol submit (Gambar 2.2).
TABEL 2.1 Elemen-elemen
form HTML dan nilai-nilai variabel PHP terkait.
Nama Elemen
|
Nama Variabel
|
nama
|
$_REQUEST[‘nama’]
|
email
|
$_REQUEST[‘email’]
|
komentar
|
$_REQUEST[‘komentar’]
|
usia
|
$_REQUEST[‘usia’]
|
gender
|
$_REQUEST[‘gender’]
|
submit
|
$_REQUEST[‘submit’]
|
Gambar 2.2 Untuk menguji
tangani_form.php, Anda perlu mengisi form HTML yang disediakan dan
mengirimkannya.
SKRIPT 2.2
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data Form</title>
</head>
<body>
<?php
#Skript2.2 - tangani_form.php
// Menciptakan
versi pendek dari data form:
$nama = $_REQUEST['nama'];
$email = $_REQUEST['email'];
$komentar = $_REQUEST['komentar'];
/* Tidak
digunakan:
$_REQUEST['usia']
$_REQUEST['gender']
$_REQUEST['submit']
*/
// Menampilkan
informasi yang dikirim:
echo "<p>Terimakasih,
<b>$nama</b>, atas komentar berikut:<br />
<tt>$komentar</tt></p>
<p>Kami akan membalasnya pada
<i>$email</i>.</p>\n";
?>
</body>
</html>
|
2.3
Kondisional dan Operator
Tiga istilah
utama pada PHP untuk menciptakan kondisional adalah if, else, dan elseif (yang juga dapat ditulis dengan
dua kata, else if). Setiap kondisional diawali dengan klausa if:
if (kondisi) {
// Lakukan sesuatu!
}
Dan if dapat pula memuat klausa else:
if (kondisi) {
// Lakukan sesuatu!
} else {
// Lakukan yang lain!
}
Klausa elseif
dapat dipakai untuk menambahkan kondisi-kondisi lainnya:
if (kondisi1) {
// Lakukan sesuatu!
} elseif (kondisi2)
{
// Lakukan yang lain!
} else {
// Lakukan yang
berbeda!
}
Jika sebuah
kondisi bernilai true, maka kode yang diapit oleh kurung kurawal ({ dan }) yang
menyusulnya akan dieksekusi. Jika tidak, PHP akan berlanjut. Jika terdapat
kondisi kedua (setelah klausa elseif),
maka kebenaran kondisi tersebut akan diperiksa. Proses akan berlanjut. Anda
dapat menggunakan sebanyak mungkin klausa elseif.
Klausa else selalu ditempatkan di akhir dan diperlakukan sebagai aksi default
jika semua kondisi yang diuji tidak bernilai true.
Sebuah kondisi
bernilai true dalam PHP disebabkan oleh sejumlah alasan. Berikut merupakan
beberapa contoh dimana kondisi menghasilkan nilai true:
·
$var, jika $var
memiliki sebuah nilai selain 0, string kosong, FALSE, atau NULL.
·
isset($var),
jika $var memiliki sebuah nilai selain NULL. Nilai selain NULL adalah termasuk
nilai 0, FALSE, atau string kosong.
·
TRUE, true,
atau True.
Pada contoh
kedua, fungsi isset() diintroduksi pada Anda. Fungsi ini memeriksa apakah
sebuah variabel telah ditetapkan atau belum. Fungsi ini menghasilkan true jika
variabel memiliki sebuah nilai selain NULL (NULL merupakan sebuah tipe spesial
dalam PHP, yang merepresentasikan ketiadaaan nilai). Anda juga dapat
menggunakan operator-operator komparatif dan logikal (Tabel 2.2) untuk
memperkompleks ekspresi.
TABEL 2.2 Operator-operator
yang sering dipakai pada kondisional
Simbol
|
Arti
|
Tipe
|
Contoh
|
==
|
Sama dengan
|
komparasi
|
$x == $y
|
!=
|
Tidak sama dengan
|
komparasi
|
$x != $y
|
<
|
Kurang dari
|
komparasi
|
$x < $y
|
>
|
Lebih dari
|
komparasi
|
$x > $y
|
<=
|
Kurang dari atau sama dengan
|
komparasi
|
$x <= $y
|
>=
|
Lebih dari atau sama dengan
|
komparasi
|
$x >= $y
|
!
|
not
|
logikal
|
!$x
|
&&
|
and
|
logikal
|
$x && $y
|
||
|
or
|
logikal
|
$x || $y
|
XOR
|
xor
|
logikal
|
$x XOR $y
|
Menggunakan kondisional
1. Buka file tangani_form.php (Skript 2.2) pada editor teks atau IDE Anda.
2. Tepat sebelum statemen echo(), tambahkan sebuah kondisional yang
menciptakan sebuah variabel $gender (Skript 2.3).
//
Menciptakan variabel the $gender:
if
(isset($_REQUEST['gender'])) {
$gender = $_REQUEST['gender'];
}
else {
$gender = NULL;
}
Ini merupakan cara sederhana dan
efektif untuk memvalidasi sebuah masukan form (khususnya masukan berupa tombol
radio, kotak periksa, atau menu seleksi). Jika user mencentang salah satu
tombol radio, maka $_REQUEST[‘gender’] akan memilki sebuah nilai, yang berarti
bahwa kondisi isset($_REQUEST[‘gender’]) bernilai true. Pada kasus semacam itu,
versi pendek dari variabel ini, $gender, ditugasi nilai dari
$_REQUEST[‘gender’], mengulangi teknik yang digunakan pada $nama, $email, dan
$komentar. Jika user tidak mengklik salah satu tombol radio, maka kondisi tidak
bernilai true, dan $gender ditugasi nilai NULL, yang mengindikasikan bahwa ia
tidak memiliki nilai. Perhatikan bahwa NULL tidak diapit oleh kutip.
3. Tepat setelah statemen echo(), tambahkan sebuah kondisional lain yang
menampilkan sebuah pesan yang didasarkan pada nilai $gender.
//
Menampilkan sebuah pesan berdasarkan nilai gender:
if
($gender == 'L') {
echo
'<p><b>Selamat siang, Pak!</b></p>';
}
elseif ($gender == 'P') {
echo '<p><b>Selamat siang,
Bu!</b></p>';
}
else { //Tidak ada gender yang diseleksi.
echo '<p><b>Anda lupa memasukkan
gender Anda!</b></p>';
}
Kondisional if-elseif-else ini mengamati nilai dari variabel $gender dan
menampilkan pesan yang berbeda untuk tiap nilainya. Adalah sangat penting untuk
mengingat bahwa tanda sama-dengan ganda (==) menandakan ekualitas, sedangkan
tanda sama-dengan tunggal (=) menandakan penugasan sebuah nilai. Perbedaan ini
penting karena kondisi $gender == ‘P’ dapat bernilai true atau false, sedangkan
$gender = ‘P’ selalu bernilai true. Selain itu, nilai-nilai yang digunakan di
sini, L atau P, harus sama persis dengan yang ada pada form HTML (nilai untuk
tiap tombol radio). Ekualitas merupakan komparasi case-sensitive, jadi m tidak
sama dengan M.
4. Simpan file, tempatkan pada direktori Web, dan uji dengan browser Web
Anda.
SKRIPT 2.3
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data Form</title>
</head>
<body>
<?php #Skript2.3
- tangani_form.php
// Menciptakan
versi pendek dari data form:
$nama =
$_REQUEST['nama'];
$email =
$_REQUEST['email'];
$komentar =
$_REQUEST['komentar'];
// Menciptakan
variabel the $gender:
if (isset($_REQUEST['gender'])) {
$gender = $_REQUEST['gender'];
} else {
$gender = NULL;
}
// Menampilkan
informasi yang dikirim:
echo
"<p>Terimakasih, <b>$nama</b>, atas komentar
berikut:<br />
<tt>$komentar</tt></p>
<p>Kami
akan membalasnya pada <i>$email</i>.</p>\n";
// Menampilkan
sebuah pesan berdasarkan nilai gender:
if ($gender == 'L') {
echo '<p><b>Selamat siang,
Pak!</b></p>';
} elseif ($gender == 'P') {
echo '<p><b>Selamat siang,
Bu!</b></p>';
} else { //Tidak ada gender yang diseleksi.
echo '<p><b>Anda lupa
memasukkan gender Anda!</b></p>';
}
?>
</body>
</html>
|
2.4
Memvalidasi Form
Konsep penting
yang berkaitan dengan penanganan form HTML adalah validasi data form. Dalam
kaitan dengan pengelolaan error dan sekuritas, Anda sebaiknya jangan pernah
memercayai data yang dimasukkan pada sebuah form HTML. Apakah karena tujuan
jahat atau karena kesalahan yang tak disengaja, sebagai arsitek Web, Anda perlu
menguji data pada form HTML.
Satu masalah
yang ada pada fungsi isset() adalah bahwa string kosong diuji sebagai true,
yang berarti bahwa isset() bukanlah cara efektif untuk memvalidasi masukan teks
dan kotak teks dari sebuah form HTML. Untuk memeriksa apakah user telah
mengetikkan sesuatu pada elemen-elemen tekstual, Anda dapat menggunakan fungsi
empty(). Fungsi ini memeriksa apakah sebuah variabel memiliki nilai kosong:
string kosong, 0, NULL, atau FALSE.
Tujuan pertama
pada validasi form adalah memeriksa apakah sesuatu telah diketikkan atau
diseleksi pada elemen-elemen form. Tujuan kedua adalah untuk memeriksa apakah
data yang disubmit bertipe sesuai (numerik, string, atau lainnya), dengan
format yang tepat (seperti alamat email). atau dengan nilai yang dapat diterima
(seperti $gender bernilai L atau P).
Memvalidasi form Anda
1. Awali skript PHP yang baru pada editor teks atau IDE Anda (Skript 2.4).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data
Form</title>
</head>
<body>
<?php #Skript2.4 - tangani_form.php
2. Di dalam head HTML, tambahkan beberapa kode CSS (Cascading Style Sheet).
<style
type="text/css" title="text/css" media="all">
.error {
font-weight: bold;
color: #C00
}
</style>
CSS merupakan cara efektif untuk
menangani pelbagai pemformatan dan tata-letak pada halaman HTML. Anda akan
melihat sedikit kode CSS di sini dan pada buku ini; jika Anda tidak familier
dengan CSS, Anda bisa mengunjungi situs W3C.
Pada skript ini, Anda mendefinisikan
satu kelas CSS, yang dinamakan dengan error. Sembarang elemen HTML yang
memiliki kelas ini akan diformat dengan huruf tebal dan warna merah.
3. Periksa apakah nama dimasukkan oleh user.
//
Validasi nama:
if (!empty($_REQUEST['nama'])) {
$nama = $_REQUEST['nama'];
} else {
$nama = NULL;
echo '<p
class="error">Anda lupa memasukkan nama Anda!</p>';
}
Cara sederhana dalam memeriksa
apakah sebuah masukan teks pada form telah diisi atau tidak adalah dengan
menggunakan fungsi empty(). Jika $_REQUEST[‘nama’] memiliki sebuah nilai selain
string kosong, 0, NULL atau FALSE, maka diasumsikan bahwa nama telah diketikkan
dan sebuah variabel ditugasi nilai tersebut. Jika $_REQUEST[‘nama’] kosong,
maka variabel $nama ditetapkan menjadi NULL dan pesan error akan ditampilkan.
Pesan error ini menggunakan kelas CSS.
4. Ulangi proses yang sama untuk alamat email dan komentar.
// Validasi email:
if (!empty($_REQUEST['email'])) {
$email = $_REQUEST['email'];
} else {
$email = NULL;
echo '<p class="error">Anda
lupa memasukkan alamat email!</p>';
}
// Validasi komentar:
if (!empty($_REQUEST['komentar'])) {
$komentar = $_REQUEST['komentar'];
} else {
$komentar = NULL;
echo '<p class="error">Anda
lupa memasukkan komentar Anda!</p>';
}
Kedua variabel menerima perlakuan
yang sama seperti $_REQUEST[‘nama’] pada langkah 3.
5. Lakukan validasi terhadap variabel gender.
//
Validasi gender:
if (isset($_REQUEST['gender'])) {
$gender = $_REQUEST['gender'];
if ($gender == 'L') {
echo '<p><b>Selamat siang,
Pak!</b></p>';
} elseif ($gender == 'P') {
echo '<p><b>Selamat siang,
Bu!</b></p>';
} else { // Nilai tidak dapat diterima.
$gender = NULL;
echo '<p
class="error">Gender harus berupa "L" atau
"P"!</p>';
}
} else { // $_REQUEST['gender'] tidak
ditetapkan.
$gender = NULL;
echo '<p class="error">Anda
lupa memasukkan gender Anda!</p>';
}
6. Tampilkan pesan jika semua pengujian telah dilakukan.
//
Jika segala sesuatu OK, tampilkan pesan:
if ($nama && $email &&
$gender && $komentar) {
echo "<p>Terimakasih,
<b>$nama</b>, untuk komentar berikut:<br />
<tt>$komentar</tt></p>
<p>Kami akan membalasnya pada
<i>$email</i>.</p>\n";
} else { // Nilai form tidak ada.
echo '<p
class="error">Silahkan mengisi form kembali.</p>';
}
Kondisi utama bernilai true jika
setiap variabel memiliki nilai true. Setiap variabel akan memiliki sebuah nilai
jika ia lolos dalam pengujian kondisi.
7. Tutup kode PHP dan kode HTML.
?>
</body>
</html>
8. Simpan file sebagai tangani_form.php, tempatkan pada direktori Web, dan
uji dengan browser Web.
SKRIPT 2.4
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data Form</title>
<style
type="text/css" title="text/css"
media="all">
.error {
font-weight:
bold;
color: #C00
}
</style>
</head>
<body>
<?php
#Skript2.4 - tangani_form.php
// Validasi nama:
if (!empty($_REQUEST['nama'])) {
$nama = $_REQUEST['nama'];
} else {
$nama = NULL;
echo '<p
class="error">Anda lupa memasukkan nama Anda!</p>';
}
// Validasi email:
if (!empty($_REQUEST['email'])) {
$email = $_REQUEST['email'];
} else {
$email = NULL;
echo '<p
class="error">Anda lupa memasukkan alamat email!</p>';
}
// Validasi
komentar:
if (!empty($_REQUEST['komentar'])) {
$komentar = $_REQUEST['komentar'];
} else {
$komentar = NULL;
echo '<p
class="error">Anda lupa memasukkan komentar Anda!</p>';
}
// Validasi
gender:
if (isset($_REQUEST['gender'])) {
$gender = $_REQUEST['gender'];
if ($gender == 'L') {
echo '<p><b>Selamat siang,
Pak!</b></p>';
} elseif ($gender == 'P') {
echo '<p><b>Selamat siang,
Bu!</b></p>';
} else { // Nilai tidak dapat diterima.
$gender = NULL;
echo '<p
class="error">Gender harus berupa "L" atau
"P"!</p>';
}
} else { // $_REQUEST['gender'] tidak
ditetapkan.
$gender = NULL;
echo '<p
class="error">Anda lupa memasukkan gender Anda!</p>';
}
// Jika segala
sesuatu OK, tampilkan pesan:
if ($nama && $email &&
$gender && $komentar) {
echo "<p>Terimakasih,
<b>$nama</b>, untuk komentar berikut:<br />
<tt>$komentar</tt></p>
<p>Kami akan membalasnya pada
<i>$email</i>.</p>\n";
} else { // Nilai form tidak ada.
echo '<p
class="error">Silahkan mengisi form kembali.</p>';
}
?>
</body>
</html>
|
2.5
Mengenalkan Array
Tipe variabel
terakhir yang dirangkum pada buku ini adalah array. Tidak seperti string dan
angka (number) yang merupakan variabel skalar yang hanya memuat satu nilai pada
suatu waktu, sebuah array dapat memuat beberapa nilai atau informasi. Oleh
karena itu, array merupakan sebuah daftar nilai, dimana setiap nilai dapat
berupa string, angka, atau bahkan sebuah array.
Array
distrukturisasi sebagai sederet pasangan-pasangan nilai-kunci, dimana sepasang
kunci-nilai merupakan sebuah item atau elemen dari array tersebut. Untuk setiap
item di dalam array, terdapat sebuah kunci (atau indeks). Lihat Tabel 2.3.
TABEL 2.3 Array $kabupaten
menggunakan angka sebagai kunci.
Kunci (key)
|
Nilai (value)
|
0
|
Simalungun
|
1
|
Lombok Barat
|
2
|
Toba Samosir
|
3
|
Klaten
|
4
|
Banjar Baru
|
5
|
Ciamis
|
TABEL 2.4 Array $propinsi
menggunakan string sebagai kunci.
Kunci (key)
|
Nilai (value)
|
SUMUT
|
Sumatera Utara
|
JABAR
|
Jawa Barat
|
KALSEL
|
Kalimantan Selatan
|
KALBAR
|
Kalimantar Barat
|
NTB
|
Nusa Tenggara Barat
|
NTT
|
Nusa Tenggara Timur
|
PHP mendukung
dua jenis array: array berindeks, yang menggunakan angka sebagai kunci (seperti
pada Tabel 2.3); array asosiatif, yang menggunakan string sebagai kunci (Tabel
2.4). Sama seperti pada banyak bahasa pemrograman, array berindeks dimulai dari
indeks 0 (kecuali jika Anda tetapkan sendiri secara eksplisit).
Array mengikuti
aturan-aturan penamaan yang berlaku pada variabel biasa. Untuk mengakses nilai
tertentu di dalam sebuah array, Anda mengawalinya dengan nama variabel array,
yang diikuti dengan kunci di dalam kurung siku:
echo $kabupaten[2]; // Toba Samosir
echo $propinsi[‘NTB’; // Nusa Tenggara Barat
Anda dapat
melihat bahwa kunci array dipakai seperti nilai biasa dalam PHP: angka
(misalnya, 2) tidak diapit kutip, sedangkan string (NTB) harus diapit kutip.
Karena array
menggunakan sintaksis berbeda dari variabel lain, proses dalam menampilkan isi
array juga lebih rumit. Pertama, karena array dapat memuat sejumlah nilai, Anda
tidak dapat dengan mudah menampilkannya seperti ini:
echo “Daftar propinsi: $propinsi”;
Namun, proses
untuk menampilkan nilai elemen individual cukup sederhana jika array
menggunakan kunci indeks numerik:
echo “Kabupaten pertama adalah $kabupaten[0].”;
Tetapi jika
array menggunakan string untuk kunci, maka tanda kutip yang dipakai untuk
mengapit kunci akan bercampur aduk dengan sintaksis. Kode berikut akan
menyebabkan error:
echo
“NTT adalah $propinsi[‘NTT’].”; // SALAH!
Untuk
memperbaikinya, bungkus nama array dan kunci di dalam kurung siku ketika sebuah
array menggunakan string untuk kuncinya:
echo
“NTT adalah {$propinsi[‘NTT’]}.”;
Menggunakan array
1. Awali skript PHP yang baru pada editor teks Anda (Skript 2.5).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta http-equiv="content-type"
content="text/html; charset=iso-8859-1"/>
<title>Menangani Data
Form</title>
<style type="text/css"
title="text/css" media="all">
.error {
font-weight: bold;
color: #C00
}
</style>
</head>
<body>
<?php #Skript2.5 - tangani_form.php
2. Lakukan beberapa validasi dasar terhadap form.
if
( !empty($_POST['nama']) && !empty($_POST['komentar']) &&
!empty($_POST['email']) )
Pada versi terdahulu dari skript
ini, nilai-nilai diakses menggunakan array $_REQUEST. Tetapi karena nilai-nilai
ini berasal dari sebuah form yang menggunakan metode post (lihat Skript 2.1), maka array $_POST akan dipakai untuk
alasan sekuritas yang lebih tinggi.
3. Tampilkan pesan.
echo
"<p>Terimakasih, <b>{$_POST['nama']}
</b>, atas komentar Anda
berikut:<br />
<tt>{$_POST['komentar']}</tt></p>
<p>Kami akan membalasnya pada
<i> {$_POST ['email']}</i>.</p>\n";
Setelah Anda memahami konsep sebuah
array, Anda masih perlu memahami sintaksis yang terkait dalam penampilan array.
Ketika menampilkan sebuah elemen array yang menggunakan string sebagai
kuncinya, gunakan kurung kurawal (seperti pada {$_POST[‘nama’]} di sini) untuk
menghindari error.
4. Sempurnakan kondisional yang diawali pada langkah 2.
}
else { // Nilai form tidak ada.
echo '<p
class="error">Silahkan isi ulang form Anda.</p>';
}
5. Tutup kode PHP dan HTML.
?>
</body>
</html>
6. Simpan file, tempatkan pada direktori Web, dan uji dengan browser Web
Anda (Gambar 2.5).
Gambar 2.5 Fakta bahwa
sekarang skript menggunakan array $_POST tidak memberikan pengaruh pada hasil.
SKRIPT 2.5
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Menangani Data Form</title>
<style
type="text/css" title="text/css"
media="all">
.error {
font-weight:
bold;
color: #C00
}
</style>
</head>
<body>
<?php
#Skript2.5 - tangani_form.php
// Menampilkan
informasi yang disubmit:
if ( !empty($_POST['nama']) &&
!empty($_POST['komentar']) && !empty($_POST['email']) ) {
echo "<p>Terimakasih,
<b>{$_POST['nama']}
</b>, atas komentar Anda
berikut:<br />
<tt>{$_POST['komentar']}</tt></p>
<p>Kami akan membalasnya pada
<i> {$_POST ['email']}</i>.</p>\n";
} else { // Nilai form tidak ada.
echo '<p
class="error">Silahkan isi ulang form Anda.</p>';
}
?>
</body>
</html>
|
Menciptakan array
Contoh
sebelumnya menggunakan sebuah array yang dibangkitkan oleh PHP, tetapi pada
banyak kesempatan lain, Anda perlu menciptakan array sendiri. Ada dua cara
untuk mendefinisikan array sendiri. Pertama, Anda dapat menambahkan sebuah
elemen pada suatu waktu untuk menciptakan array:
$band[] = ‘Jemaine’;
$band[] = ‘Bret’;
$band[]
= ‘Murray’;
Sekarang
$band[0] bernilai Jemaine; $band[1] bernilai Bret, dan $band[2] bernilai Murray
(karena indeks array dimulai dari 0).
Cara lainnya,
Anda dapat menetapkan kunci ketika menambahkan sebuah elemen. Tetapi sangat
penting dipahami bahwa jika Anda menetapkan sebuah kunci dan sebuah nilai yang
telah diindeks dengan kunci yang sama, nilai baru tersebut akan menggantikan
nilai lama.
$band[‘fan’] = ‘Mel’;
$band[‘fan’] = ‘Dave’; // Nilai baru
$array[2] = ‘apel’;
$array[2] = ‘jeruk’; // Nilai baru
Anda dapat
menggunakan fungsi array() untuk menciptakan sebuah array secara keseluruhan
dalam satu langkah:
$propinsi = array(‘SUMUT’ => ’Sumatera Utara’, ‘NTB’
=> ‘Nusa Tenggara Barat’);
Fungsi ini dapat
dipakai ketika apakah Anda menetapkan kunci secara eksplisit atau tidak:
$kabupaten = array(‘Klaten’, ‘Sleman’, ‘Tobasa’);
Atau, jika Anda
menetapkan nilai kunci numerik pertama, nilai-nilai yang ditambahkan berikutnya
akan dikunci secara inkremental:
$hari = array (1 => ‘Senin’, ‘Selasa’, ‘Rabu’);
echo
$hari[3]; // Rabu
Fungsi array()
juga dipakai untuk menginisialisasi sebuah array:
$tv = array();
$tv[] = ‘televis republik indonesia’;
Penginisialisasian
array (atau variabel) dalam PHP tidak disyaratkan, tetapi hal itu dapat
memperjelas kode Anda dan dapat membantu menghindari error.
Terakhir, jika
Anda ingin menciptakan sebuah array dengan angka-angka berurutan, Anda dapat
menggunakan fungsi range():
$sepuluh
= range (1, 10);
2.6
Mengakses Array
Anda telah
melihat bagaimana mengakses elemen-elemen array individual menggunakan kunci
(misalnya, $_POST[‘email’]). Ini dapat diterapkan ketika Anda mengetahui secara
persis apa kunci-kunci di dalam array atau ketika Anda hanya ingin mengakses
satu elemen array saja.
Untuk mengakses
setiap elemen arry, gunakan loop foreach:
foreach ($array as $nilai) {
// Lakukan sesuatu
terhadap $value.
}
Loop foreach
akan beriterasi melalui setiap elemen di dalam $array, menugaskan nilai dari
tiap elemen kepada variabel $value. Untuk mengakses kunci dan nilai, gunakan
foreach ($array as $kunci => $nilai) {
echo “Nilai pada $kunci
adalah $nilai.”;
}
Menciptakan dan mengakses array
1. Ciptakanlah sebuah dokumen PHP yang baru pada editor teks atau IDE Anda
(Skript 2.6).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Kalender</title>
</head>
<body>
<form action="kalender.php"
method="post">
<?php #Skript2.6 - kalender.php
2. Ciptakanlah sebuah array untuk menampung nama-nama bulan.
//
Menciptakan array bulan:
$bulan = array (1 => 'Januari',
'Februari', 'Maret', 'April', 'Mei',
'Juni', 'Juli', 'Agustus', 'September',
'Oktober', 'November', 'Desember');
Array pertama akan menggunakan angka
sebagai kunci, dari 1 sampai 12. Karena nilai dari kunci pertama ditetapkan,
maka nilai-nilai berikutnya akan diindeks secara inkremental (dengan kata lain,
kode 1 => menciptakan sebuah array yang diindeks dari 1 sampai 12).
3. Ciptakan array untuk hari dan tahun.
//
Membuat array hari dan tahun:
$hari = range (1, 31);
$tahun = range (2008, 2018);
Dengan menggunakan fungsi range(),
Anda dapat dengan mudah menciptakan sebuah array yang memuat angka-angka.
4. Ciptakan sebuah menu pull-down untuk bulan.
//
Membuat menu pull-down bulan:
echo '<select name="bulan">';
foreach ($bulan as $kunci => $nilai) {
echo "<option
value=\"$kunci\">$nilai</option>\n";
}
echo '</select>';
Loop foreach dapat dengan cepat menciptakan
kode HTML untuk menu pull-down untuk bulan. Setiap iterasi pada loop akan
menciptakan sebaris kode seperti ini:
<option value=”1”>Januari</option>
5. Ciptakan dua menu pull-down untuk hari dan tahun.
//
Membuat menu pull-down hari:
echo '<select name="hari">';
foreach ($hari as $nilai) {
echo "<option
value=\"$nilai\">$nilai</option>\n";
}
echo '</select>';
//
Membuat menu pull-down tahun:
echo '<select name="tahun">';
foreach ($tahun as $nilai) {
echo "<option
value=\"$nilai\">$nilai</option>\n";
}
echo '</select>';
6. Tutup kode PHP, tag form, dan halaman HTML.
?>
</form>
</body>
</html>
7. Simpan file sebagai kalender.php, tempatkan pada direktori Web, dan uji
dengan browser Web Anda.
SKRIPT 2.6
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Kalender</title>
</head>
<body>
<form
action="kalender.php" method="post">
<?php
#Skript2.6 - kalender.php
// Skript ini
membuat tiga menu pull-down
// untuk sebuah
form HTML: bulan, hari, tahun.
// Menciptakan
array bulan:
$bulan = array (1 => 'Januari',
'Februari', 'Maret', 'April', 'Mei',
'Juni', 'Juli', 'Agustus', 'September',
'Oktober', 'November', 'Desember');
// Membuat array
hari dan tahun:
$hari = range (1, 31);
$tahun = range (2008, 2018);
// Membuat menu
pull-down bulan:
echo '<select
name="bulan">';
foreach ($bulan as $kunci => $nilai) {
echo "<option
value=\"$kunci\">$nilai</option>\n";
}
echo '</select>';
// Membuat menu
pull-down hari:
echo '<select
name="hari">';
foreach ($hari as $nilai) {
echo "<option
value=\"$nilai\">$nilai</option>\n";
}
echo '</select>';
// Membuat menu
pull-down tahun:
echo '<select
name="tahun">';
foreach ($tahun as $nilai) {
echo "<option
value=\"$nilai\">$nilai</option>\n";
}
echo '</select>';
?>
</form>
</body>
</html>
|
Gambar 2.6 Keluaran
skript kalender.php dan kode sumber HTML yang dihasilkan dari beberapa baris
PHP.
Tip
§ Untuk menentukan jumlah elemen di dalam sebuah array, gunakan fungsi
count():
$jum_elemen
= count($array)
§ Fungsi range() dapat pula menciptakan sebuah array dengan huruf-huruf
yang berurutan secara sekuensial:
$alfabet
= range (‘a’, ‘z’);
§ Kunci pada sebuah array dapat berupa string yang memuat lebih dari satu
kata, seperti nama depan atau nomor telepon.
§ Fungsi is_array() dipakai untuk memastikan bahwa sebuah variabel bertipe
array atau tidak.
2.7
Array Multidimensi
Seperti telah
dijelaskan sebelumnya, nilai-nilai array dapat berupa kombinasi dari angka,
string, dan bahkan array lain. Opsi terakhir ini, yang merupakan sebuah array
yang memuat beberapa array lain, menciptakan sebuah array multidimensi.
Array
multidimensi cukup sederhana. Sebagai contoh, berikut merupakan sebuah array
yang memuat beberapa angka prima:
$prima = array(2, 3, 5, 7, …);
Kemudian, berikut
merupakan sebuah array yang memuat beberapa angka sphenic:
$sphenic = array(30, 42, 66, 70, …);
Kedua array
tersebut dapat dikombinasikan menjadi satu array multidimensi sebagai berikut:
$angka = array(‘Prima’ => $prima, ‘Sphenic’ =>
$sphenic);
Sekarang, $angka
merupakan sebuah array multidimensi. Untuk mengakses subarray angka prima,
$angka[‘Prima’] dipakai untuk melakukannya. Untuk mengakses angka prima 5,
gunakan $angka[‘Prima’][2] (merupakan elemen ketiga di dalam array, dan indeks
array diawali dari 0). Untuk menampilkan salah satu nilai dari angka prima,
apit konstruksi di dalam kurung kurawal:
echo “Angka prima pertama adalah {$angka[‘Prima’][0]}.”;
Tentu, Anda
dapat pula mengakses array multidimensi menggunakan loop foreach, dimana satu
loop bersarang di dalam loop lainnya. Contoh berikut akan mengilustrasikannya.
Menggunakan array multidimensi
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks Anda (Skript
2.7).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Array
Multidimensi</title>
</head>
<body>
<?php #Skript2.7 - multidimensi.php
2. Ciptakan sebuah array yang memuat beberapa negara bagian di Meksiko.
//
Menciptakan array pertama:
$meksiko = array(
'YU' => 'Yucatan',
'BC' => 'Baja California',
'OA' => 'Oaxaca'
);
Ini merupakan array asosiatif,
menggunakan singkatan negara bagian sebagai kuncinya. Nama lengkap dari negara
bagian sebagai nilai elemen.
3. Ciptakan array kedua dan array ketiga.
//
Menciptakan array kedua:
$us = array (
'MD' => 'Maryland',
'IL' => 'Illinois',
'PA' => 'Pennsylvania',
'IA' => 'Iowa'
);
// Menciptakan array ketiga:
$kanada = array (
'QC' => 'Quebec',
'AB' => 'Alberta',
'NT' => 'Northwest Territories',
'YT' => 'Yukon',
'PE' => 'Prince Edward Island'
);
4. Gabungkan ketiga array menjadi satu.
//
Menggabungkan tiga array:
$benua_amerika = array(
'Meksiko' => $meksiko,
'Amerika Serikat' => $us,
'Kanada' => $kanada
);
Anda sebenarnya tidak perlu
menciptakan tiga array kemudian menugaskannya ke array keempat untuk membuat
array multidimensi. Tetapi, hal ini lebih mudah untuk dibaca dan dimengerti
dengan cara ini.
Array $benua_amerika sekarang memuat
tiga elemen. Kunci untuk tiap elemen merupakan sebuah string, yang merupakan
nama negara. Nilai dari tiap elemen merupakan sebuah daftar negara bagian,
propinsi, dan teritori di dalam negara tersebut.
5. Awali loop foreach utama.
//
Loop menjelajahi negara-negara:
foreach ($benua_amerika as $negara =>
$list)
{
// Menampilkan heading:
echo
"<h2>$negara</h2><ul>";
Dengan mengikuti sintaksis yang
telah dijelaskan sebelumnya, loop ini akan mengakses setiap elemen dari array
$benua_amerika. Ini berarti bahwa loop ini akan beriterasi sebanyak tiga kali.
Di dalam tiap iterasi loop, variabel $negara akan menyimpan kunci (Meksiko,
Kanada atau Amerika Serikat) dari array $benua_amerika. Selain itu, di dalam
tiap iterasi loop, variabel $list akan menyimpan nilai elemen.
Untuk menampilkan hasil, loop mulai menampilkan
nama negara di dalam tag H2. Karena negara-negara bagian ditampilkan sebagai
list HTML, tag list tak-terurut (<ul>) akan digunakan.
6. Ciptakan loop foreach kedua.
//
Menampilkan setiap state, propinsi, atau teritori:
foreach ($list as $k => $v) {
echo "<li>$k -
$v</li>\n";
}
Loop ini akan beriterasi pada tiap
subarray (pertama-tama $meksiko, kemudian $us, dan kemudian $kanada). Dengan
tiap iterasi pada loop ini, $k akan menyimpan singkatan dan $v akan menyimpan
nama lengkap. Keduanya ditampilkan di dalam tag list HTML. Karakter garis-baru
juga digunakan untuk memformat kode sumber HTML agar tampak lebih rapi.
7. Tutup loop foreach sebelah luar.
// Menutup list:
echo '</ul>';
}
// Akhir dari FOREACH.
8. Tutup kode PHP dan HTML.
?>
</body>
</html>
9. Simpan file sebagai multidimensi.php, tempatkan di dalam direktori Web,
dan uji dengan browser Web Anda (Gambar 2.7).
SKRIPT 2.7
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Array Multidimensi</title>
</head>
<body>
<?php
#Skript2.7 - multidimensi.php
// Menciptakan
array pertama:
$meksiko = array(
'YU' => 'Yucatan',
'BC' => 'Baja California',
'OA' => 'Oaxaca'
);
// Menciptakan
array kedua:
$us = array (
'MD' => 'Maryland',
'IL' => 'Illinois',
'PA' => 'Pennsylvania',
'IA' => 'Iowa'
);
// Menciptakan
array ketiga:
$kanada = array (
'QC' => 'Quebec',
'AB' => 'Alberta',
'NT' => 'Northwest Territories',
'YT' => 'Yukon',
'PE' => 'Prince Edward Island'
);
// Menggabungkan
tiga array:
$benua_amerika = array(
'Meksiko' => $meksiko,
'Amerika Serikat' => $us,
'Kanada' => $kanada
);
// Loop
menjelajahi negara-negara:
foreach ($benua_amerika as $negara =>
$list)
{
// Menampilkan heading:
echo
"<h2>$negara</h2><ul>";
// Menampilkan setiap state, propinsi,
atau teritori:
foreach ($list as $k => $v) {
echo "<li>$k -
$v</li>\n";
}
// Menutup list:
echo '</ul>';
} // Akhir dari FOREACH.
?>
</body>
</html>
|
Gambar 2.7 Hasil akhir dari
halam PHP pada Skript 2.7, dimana setiap negara ditampilkan, diikuti dengan
daftar singkatan dari negara bagian, propinsi, dan teritori.
Tip
§ Array multidimensi dapat pula berasal dari sebuah form HTML. Sebagai
contoh, jika sebuah form memiliki sejumlah kotak periksa dengan nama hobi[]:
<input type=”checkbox” name=”hobi[]”
value=”Musik”/> Musik
<input type=”checkbox” name=”hobi[]”
value=”Film”/> Film
<input type=”checkbox” name=”hobi[]”
value=”Buku”/> Buku
Variabel $_POST pada halaman PHP
penerima akan berupa sebuah array multidimensi. Variabel $_POST[‘hobi’] akan
berupa sebuah array, dengan $_POST[‘hobi’][0] menyimpan nilai dari kotak teks
pertama (Musik), $_POST[‘hobi’][1] menyimpan nilai dari kotak teks kedua
(Film), dan seterusnya.
§ Array multidimensi dapat pula berasal dari menu seleksi dengan seleksi
jamak pada form HTML:
<select name=”hobi[]”
multiple=”multiple”>
<option value=”Musik”>Musik</option>
<option value=”Film”>Film</option>
<option value=”Buku”>Buku</option>
<option value=”Tidur”>Tidur</option>
</select>
2.8
Mengurutkan Array
Salah satu
kelebihan array dari tipe variabel lain adalah kemampuannya untuk mengurutkan
elemen-elemennya. PHP memiliki sejumlah fungsi pustaka yang dapat digunakan
untuk mengurutkan array, menggunakan sintaksis sederhana berikut:
$nama = array (‘Morina’, ‘Rinto’, ‘Panbers’);
sort($nama);
Fungsi-fungsi
pengurutan melakukan tiga jenis pengurutan. Pertama, Anda dapat mengurutkan
sebuah array berdasarkan nilai, dengan membuang semua kunci, menggunakan fungsi
sort(). Adalah penting untuk memahami bahwa pada pengurutan ini relasi
kunci-nilai menjadi berantakan. Jadi, bila relasi kunci-nilai penting bagi
Anda, sebaiknya jangan gunakan fungsi ini.
Kedua, Anda
dapat mengurutkan sebuah array berdasarkan nilai dengan tetap mempertahankan
kuncinya, menggunakan asort(). Ketiga, Anda dapat mengurutkan sebuah array
berdasarkan kunci, menggunakan ksort().
Ketiga jenis
pengurutan ini dapat menghasilkan pengurutan terbalik jika Anda mengubahnya
menjadi rsort(), arsort(), dan krsort().
Untuk
mendemonstrasikan efek dari pengurutan array, berikut akan diciptakan sebuah
array yang memuat beberapa judul film dan setiap ratingnya (dengan skala 1
sampai 10) dan kemudian menampilkannya dengan sejumlah cara.
Mengurutkan array
1. Ciptakan sebuah dokumen PHP yang baru di dalam editor teks atau IDE Anda
(Skript 2.8).
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Mengurutkan
Array</title>
</head>
<body>
2. Ciptakan sebuah tabel HTML.
<table
border="0" cellspacing="3" cellpadding="3"
align="center">
<tr>
<td><h2>Rating</h2></td>
<td><h2>Judul</h2></td>
</tr>
3. Tambahkan tag PHP pembuka dan ciptakan sebuah array baru.
$film
= array (
=> 'Casablanca',
=> 'To Kill a Mockingbird',
=> 'The English Patient',
=> 'Stranger Than Fiction',
=> 'Story of the Weeping Camel',
=> 'Donnie Darko'
);
4. Tampilkan array dengan urutan asli.
//
Menampilkan film dengan urutan asli
echo '<tr><td
colspan="2"><b>Urutan
asli:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
Pada titik ini di dalam skript,
array memiliki urutan yang sama seperti ketika didefinisikan. Untuk
memverifikasi ini, Anda bisa menampilkannya. Kapsion pertama-tama ditampilkan
di atas tabel. Kemudian, di dalam loop foreach, kunci ditampilkan pada kolom
pertama dan nilai pada kolom kedua. Karakter garis-baru juga ditampilkan untuk
meningkatkan keterbacaan pada kode sumber HTML.
SKRIPT 2.8
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Mengurutkan Array</title>
</head>
<body>
<table
border="0" cellspacing="3" cellpadding="3"
align="center">
<tr>
<td><h2>Rating</h2></td>
<td><h2>Judul</h2></td>
</tr>
<?php
#Skript2.8 - pengurutan.php
// Menciptakan
sebuah array:
$film = array (
10 => 'Casablanca',
9 => 'To Kill a Mockingbird',
2 => 'The English Patient',
8 => 'Stranger Than Fiction',
5 => 'Story of the Weeping Camel',
7 => 'Donnie Darko'
);
// Menampilkan
film dengan urutan asli
echo '<tr><td
colspan="2"><b>Urutan
asli:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
// Menampilkan
film terurut berdasarkan judul
asort($film);
echo '<tr><td
colspan="2"><b>Diurutkan berdasarkan
judul:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
// Menampilkan
film terurut berdasarkan rating
krsort($film);
echo '<tr><td
colspan="2"><b>Diurutkan berdasarkan
rating:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
?>
</table>
</body>
</html>
|
5. Urutkan array secara alfabetikal berdasarkan judul dan tampilkan
kembali.
//
Menampilkan film terurut berdasarkan judul
asort($film);
echo '<tr><td
colspan="2"><b>Diurutkan berdasarkan
judul:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
Fungsi asort() mengurutkan sebuah
array berdasarkan nilai dan mempertahankan relasi kunci-nilainya.
6. Urutkan array secara numerik dengan rating terurut menurun dan tampilkan
kembali.
//
Menampilkan film terurut berdasarkan rating
krsort($film);
echo '<tr><td
colspan="2"><b>Diurutkan berdasarkan
rating:</b></td></tr>';
foreach ($film as $kunci => $nilai) {
echo
"<tr><td>$kunci</td>
<td>$nilai</td></tr>\n";
}
Fungsi ksort() akan mengurutkan
sebuah array berdasarkan kunci, tetapi dengan tatanan menaik. Karena film-film
dengan ranking tertinggi harus ditampilkan lebih dahulu, tatanan perlu dibalik,
menggunakan fungsi krsort(). Fungsi ini, seperti asort(), mempertahankan relasi
kunci-nilai.
7. Tutup kode PHP, tabel, dan kode HTML.
?>
</table>
</body>
</html>
8. Simpan file sebagai pengurutan.php, tempatkan pada direktori Web, dan
uji dengan browser Web Anda (Gambar 2.8).
Tip
§ Jika Anda ingin menggunakan rating desimal untuk film, angka rating
harus diapit kutip atau jika tidak PHP akan membuang bagian pecahan (kunci
numerik selalu integer).
§ Untuk mengacak urutan sebuah array, gunakan fungsi shuffle().
§ Fungsi natsort() dapat dipakai untuk mengurutkan array dengan tatanan
yang lebih natural (khususnya dipakai untuk menangani angka di dalam string).
§ Array multidimensi dapat diurutkan dalam PHP dengan sedikit usaha
tambahan. Lihat manual PHP untuk mencari informasi tentang fungsi usort().
2.9
Loop for dan Loop while
Konstruksi
terakhir yang didiskusikan pada bab ini adalah loop. Anda telah menggunakan
satu loop, foreach, untuk mengakses setiap elemen di dalam sebuah array. Dua
jenis loop berikutnya yang akan digunakan adalah loop for dan loop while.
Loop while
memiliki sintaksis seperti ini:
while (kondisi) {
// Lakukan sesuatu.
}
Sepanjang
kondisi loop bernilai true, maka loop akan tetap dieksekusi. Ketika kondisi
loop bernilai false, maka loop berhenti dieksekusi (Gambar 2.9). Jika loop
tidak pernah bernilai true, maka loop tidak akan pernah dieksekusi. Loop while
paling sering digunakan ketika membaca hasil dari sebuah database.
Loop for
memiliki sintaksis yang lebih kompleks:
for (ekspresi awal; kondisi; ekspresi penutup) {
// Lakukan sesuatu.
}
Pada saat loop
pertama kali dieksekusi, ekspresi awal dijalankan. Kemudian kondisi diperiksa
dan, jika bernilai true, maka isi loop akan dieksekusi. Setelah itu, ekspresi
penutup dijalankan dan kondisi diperiksa kembali. Proses ini berlanjut sampai
kondisi bernilai false (Gambar 2.10).
Sebagai contoh,
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
Pertama kali
loop ini dijalankan, variabel $i ditetapkan menjadi nilai 1. Kemudian kondisi
diperiksa (apakah 1 kurang dari atau sama dengan 10?). Karena kondisi ini
bernilai true, maka 1 ditampilkan (echo $i). Kemudian, $i diinkremen menjadi 2
($i++), kondisi diperiksa kembali, dan seterusnya. Hasil dari skript ini
merupakan angka 1 sampai 10.
Menggunakan loop
1. Buka kalender.php (Skript 2.6) pada editor teks atau IDE Anda.
2. Hapus array $hari dan $bulan. Dengan menggunakan loop, hasil yang sama
pada kedua menu pull-down dapat diperoleh tanpa kode ekstra yang melibatkan
array. Jadi kedua array ini dihapus, sedangkan array $bulan tetap
dipertahankan.
3. Tulis-ulang loop foreach $hari.
//
Membuat menu pull-down hari:
echo '<select name="hari">';
for ($hari = 1; $hari <= 31; $hari++) {
echo
"<option value=\"$hari\">$hari</option>\n";
}
echo '</select>';
Loop for standar ini diawali dengan
menginisialisasi variabel $hari dengan nilai 1. Loop akan terus beriterasi
sampai $hari lebih dari 31, dan pada setiap iterasi, $hari akan diinkremen
sebesar 1. Isi dari loop itu sendiri (yang dieksekusi 31 kali) merupakan sebuah
statemen echo().
4.
Tulis-ulang
loop foreach $tahun.
// Membuat menu pull-down tahun:
echo '<select name="tahun">';
for ($tahun = 2008; $tahun <= 2018; $tahun++) {
echo "<option
value=\"$tahun\">$tahun</option>\n";
}
echo '</select>';
Struktur dari loop ini secara fundamental sama dengan loop for
sebelumnya, tetapi variabel $tahun awalnya ditetapkan menjadi 2008. Sepanjang
$tahun bernilai kurang dari atau sama dengan 2018, loop akan tetap dieksekusi.
Di dalam loop, statemen echo() akan dieksekusi.
5.
Simpan file,
tempatkan pada direktori Web, dan uji dengan browser Web Anda.
SKRIPT 2.9
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
<title>Kalender</title>
</head>
<body>
<form
action="kalender.php" method="post">
<?php
#Skript2.9 - kalender.php
// Skript ini
membuat tiga menu pull-down
// untuk sebuah
form HTML: bulan, hari, tahun.
// Menciptakan
array bulan:
$bulan = array (1
=> 'Januari',
'Februari',
'Maret', 'April', 'Mei',
'Juni', 'Juli',
'Agustus', 'September',
'Oktober',
'November', 'Desember');
// Membuat menu
pull-down bulan:
echo '<select
name="bulan">';
foreach ($bulan as
$kunci => $nilai) {
echo
"<option value=\"$kunci\">$nilai</option>\n";
}
echo
'</select>';
// Membuat menu
pull-down hari:
echo '<select
name="hari">';
for ($hari = 1; $hari <= 31; $hari++)
{
echo "<option
value=\"$hari\">$hari</option>\n";
}
echo
'</select>';
// Membuat menu
pull-down tahun:
echo '<select
name="tahun">';
for ($tahun = 2008; $tahun <= 2018;
$tahun++) {
echo "<option
value=\"$tahun\">$tahun</option>\n";
}
echo
'</select>';
?>
</form>
</body>
</html>
|
Gambar 2.11 Kalender dihasilkan sama dengan sebelumnya, tetapi kalender ini
diciptakan dengan satu array saja (dibandingkan
dengan tiga array pada kalender sebelumnya).
No comments:
Post a Comment