Wednesday, December 14, 2016

Bab 2. PHP/MySQL: Langkah Demi Langkah



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>


Gambar 2.1 Form utuh, yang meminta beberapa informasi dari user.


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.




Gambar 2.3 Kondisional berbasis-gender menampilkan pesan berbeda untuk setiap pilihan pada form.


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.









Gambar 2.4 Jika satu atau lebih bidang diabaikan, pesan Terimakasih tidak akan ditampilkan.


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>



Gambar 2.8 Halaman ini mendemonstrasikan sejumlah cara bagaimana array dapat diurutkan.



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.


Gambar 2.9 Representasi dari bagaimana PHP menangani sebuah loop while.


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.


Gambar 2.10 Representasi dari bagaimana PHP menangani sebuah loop for.


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