Wednesday, December 14, 2016

Bab 3. PHP/MySQL: Langkah Demi Langkah



Menciptakan Situs Web Dinamis






3.1 Menyertakan Beberapa File

Sampai sejauh ini, setiap skript pada buku ini hanya terdiri-dari satu file yang memuat kode HTML dan kode PHP. Tetapi, ketika Anda mengembangkan situs Web yang lebih kompleks, Anda akan melihat bahwa metodologi ini memiliki banyak keterbatasan. PHP dapat dipakai untuk mengakses atau menggunakan file eksternal, suatu kapabilitas yang dapat digunakan untuk membagi skript Anda menjadi beberapa bagian.

PHP memiliki empat fungsi yang dapat dimanfaatkan untuk mengakses file eksternal: include(), include_once(), require(), dan require_once(). Untuk menggunakannya, skript PHP Anda memerlukan sebuah baris seperti:

include_once(‘namafile.php’);
require(‘/path/ke/namafile.html’);

Hasil akhir dari penggunaan fungsi ini adalah pengaksesan seluruh isi file yang dicantumkan dan menempatkannya pada skript induk. Pertimbangan penting saat penyertaan file eksternal adalah bahwa PHP memperlakukan kode yang disertakan sebagai HTML (yaitu, mengirimkannya langsung ke browser) kecuali jika file yang disertakan memuat kode yang diapit di dalam tag PHP.

Dalam aspek fungsionalitas, adalah tidak penting ekstensi yang dikenakan pada file eksternal, baik ekstensi .php atau .html. Selain itu, Anda dapat memberikan path absolut atau path relatif pada file yang akan disertakan

Fungsi include() dan require() berperilaku sama persis ketika berhasil digunakan tetapi berperilaku berbeda ketika gagal digunakan. Jika fungsi include() gagal bekerja (tidak dapat menyertakan file dengan alasan tertentu), pesan peringatan akan ditampilkan pada browser Web, tetapi skript akan tetap  dijalankan. Jika fungsi require() gagal bekerja, pesan error akan ditampilkan dan skript berhenti dijalankan.

Kedua fungsi tersebut juga memiliki versi *_once(), yang menjamin bahwa file akan disertakan sekali saja tanpa memandang berapa kali sebuah skript mencoba menyertakannya.

require_once(‘namafile.php’);
include_once(‘namafile.php’);

Pada contoh selanjutnya, file yang disertakan akan memisahkan pemformatan HTML utama dari kode PHP. Kemudian, contoh-contoh lain pada bab ini akan memiliki tampilan yang sama, tanpa perlu menulis-ulang kode HTML. Teknik ini menciptakan sebuah sistem template, sebuah cara mudah untuk membuat aplikasi-aplikasi besar dapat terkelola dengan baik.


Menyertakan beberapa file eksternal
1.   Desainlah sebuah halaman HTML pada editor teks Anda (Skript 3.1). Untuk menciptakan sebuah template bagi situs Web, desainlah tata-letaknya seperti sebuah halaman HTML standar, yang bebas dari kode PHP.

SKRIPT 3.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
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>
    <title>Judul Halaman</title>
        <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
   
  </head>
  <body>
    <div id="kepala">
      <h1>Situs Web Anda</h1>
      <h2>Slogan hidup Anda...</h2>
    </div>
    <div id="navigasi">
      <ul>
        <li><a href="indeks.php">Halaman Beranda</a></li>
        <li><a href="kalkulator.php">Kalkulator</a></li>
        <li><a href="formtanggal.php">Form Tanggal</a></li>
        <li><a href="#">Link Empat</a></li>
        <li><a href="#">Link Lima</a></li>
      </ul>
    </div>
    <div id="isi"><!-- Awal dari isi halaman spesifik. -->
      <h1>Header Konten</h1>
          <p>Ini adalah dimana isi halaman spesifik ditempatkan.
          Bagian ini, dan header terkait, akan berubah dari
          satu halaman ke halaman lain.</p>
         
          <p>Volutpat at varius sed sollicitudin et, arcu. Vivamus viverra. Nullam turpis.
          Vestibulum sed etiam. Lorem ipsum sit amet dolore. Nulla facilisi. Sed tortor.
          Aenean felis. Quisque eros. Cras lobortis commodo metus. Vestibulum vel purus.
          In eget odio in sapien adipiscing blandit. Quisque augue tortor, facilisis sit
          amet, aliquam, suscipit vitae, cursus sed, arcu lorem ipsum dolor sit amet.</p>
         <!-- Akhir dari isi halaman spesifik. --></div>
       
        <div id="kaki">
          <p>Copyright &copy; <a href=”#”>RH.SIANIPAR</a> 2015 | Dirancang oleh
          <a href="http://www.rh_sianipar.com/">rh_sianipar.com</a> | Disponsori oleh
          <a href="http://www.teknik_unram.ac.id/">Fakultas Teknik UNRAM</a> | Valid
          <a href="http://jigsaw.w3.org/css-validator/">CSS</a> &amp;
          <a href="http://validator.w3.org/">XHTML</a></p>
    </div>
  </body>
</html>

2.   Tandai dimana konten halaman spesifik ditempatkan. Hampir semua situs Web memiliki beberapa elemen yang sama pada tiap halaman, seperti kepala, navigasi, iklan, kaki, dan lainnya. Pada halaman HTML (Skript 3.1), apit bagian tata-letak yang akan berubah dari halaman ke halaman di dalam komentar-komentar HTML untuk menandai statusnya.
3.   Salin semua dari baris pertama sampai baris tepat sebelum konten halaman spesifik dan tempatkan pada sebuah dokumen baru (Skript 3.2).

SKRIPT 3.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
<!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>
    <title><?php echo $judul_hal;?></title>
        <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
   
  </head>
  <body>
    <div id="kepala">
      <h1>Situs Web Anda</h1>
      <h2>Slogan hidup Anda...</h2>
    </div>
    <div id="navigasi">
      <ul>
        <li><a href="indeks.php">Halaman Beranda</a></li>
        <li><a href="kalkulator.php">Kalkulator</a></li>
        <li><a href="formtanggal.php">Form Tanggal</a></li>
        <li><a href="#">Link Empat</a></li>
        <li><a href="#">Link Lima</a></li>
      </ul>
    </div>
    <div id="isi"><!-- Awal dari isi halaman spesifik. -->
    <!-- Skript 3.2 - kepala.html -->
  </body>
</html>

4.   Ubah baris judul halaman untuk membaca

<title><?php echo $judul_hal; ?> </title>

Halaman judul (yang ditampilkan di sis atas browser Web) sebaiknya dapat diubah halaman demi halaman. Agar hal itu dimungkinkan, nilai ini akan didasarkan pada sebuah variabel PHP, yang akan ditampilkan. Anda akan melihat bagaimana hal ini dilakukan.

5.   Simpan file sebagai kepala.html. Seperti disebutkan sebelumnya, file yang disertakan dapat menggunakan sembarang ekstensi. Jadi, file ini dinamakan dengan kepala.html, yang menandakan template untuk kepala file.

6.   Salin segala sesuatu dari template asli dari akhir dari konten halaman spesifik sampai akhir halaman dan tempatkan pada sebuah file baru (Skript 3.3).

SKRIPT 3.3
1

2
3
4
5
6
7
8
9
10
<!-- Skript 3.3 - kaki.html -->
<!-- Akhir dari konten halaman spesifik. --></div>
    <div id="kaki">
      <p>Copyright &copy; <a href=”#”>RH.SIANIPAR</a> 2015 | Dirancang oleh
          <a href="http://www.rh_sianipar.com/">rh_sianipar.com</a> | Disponsori oleh
          <a href="http://www.teknik_unram.ac.id/">Fakultas Teknik UNRAM</a> | Valid
          <a href="http://jigsaw.w3.org/css-validator/">CSS</a> &amp;
          <a href="http://validator.w3.org/">XHTML</a></p>
    </div>
  </body>
</html>

7.   Simpan sebagai kaki.html.
8.   Awali sebuah dokumen PHP yang baru pada editor teks atau IDE Anda (Skript 3.4) dengan

<?php # Skript 3.4 - indeks.php

Karena skript ini akan menggunakan file-file eksternal yang disertakan, ia akan diawali dan diakhiri dengan tag PHP.

9.   Tetapkan variabel $judul_hal dan sertakan header HTML.

$judul_hal = 'Selamat datang ke situs ini!';
include ('kepala.html');

Variabel $judul_hal akan menyimpan nilai yang ditampilkan di sisi atas jendela browser. Variabel ini ditampilkan pada kepala.html (lihat Skript 3.2). Dengan mendefinisikan variabel sebelum penyertaan file kepala, file kepala dapat mengakses variabel tersebut. Ingat bahwa baris include() akan menempatkan isi dari file tercantum pada halaman induk.

10.  Tutup tag PHP dan tambahkan konten halaman spesifik.

?>

<h1>Header Konten</h1>
  <p>Ini adalah dimana isi halaman spesifik ditempatkan.
  Bagian ini, dan header terkait, akan berubah dari
  satu halaman ke halaman lain.</p>
     
  <p>Volutpat at varius sed sollicitudin et, arcu. Vivamus viverra. Nullam turpis.
  Vestibulum sed etiam. Lorem ipsum sit amet dolore. Nulla facilisi. Sed tortor.
  Aenean felis. Quisque eros. Cras lobortis commodo metus. Vestibulum vel purus.
  In eget odio in sapien adipiscing blandit. Quisque augue tortor, facilisis sit
  amet, aliquam, suscipit vitae, cursus sed, arcu lorem ipsum dolor sit amet.</p>

11.  Ciptakan bagian akhir dari PHP dan sertakan file kaki.

<?php
include ('kaki.html');
?>

12.  Simpan file sebagai indeks.php, dan tempatkan pada direktori Web Anda.
13.  Uji template ini dengan menempatkan halaman indeks.php pada browser Web Anda (Gambar 3.1).



Gambar 3.1 Tata-letak halaman diciptakan menggunakan beberapa file eksternal.



SKRIPT 3.4
1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php # Skript 3.4 - indeks.php
$judul_hal = 'Selamat datang ke situs ini!';
include ('kepala.html');
?>

<h1>Header Konten</h1>
  <p>Ini adalah dimana isi halaman spesifik ditempatkan.
  Bagian ini, dan header terkait, akan berubah dari
  satu halaman ke halaman lain.</p>
         
  <p>Volutpat at varius sed sollicitudin et, arcu. Vivamus viverra. Nullam turpis.
  Vestibulum sed etiam. Lorem ipsum sit amet dolore. Nulla facilisi. Sed tortor.
  Aenean felis. Quisque eros. Cras lobortis commodo metus. Vestibulum vel purus.
  In eget odio in sapien adipiscing blandit. Quisque augue tortor, facilisis sit
  amet, aliquam, suscipit vitae, cursus sed, arcu lorem ipsum dolor sit amet.</p>

<?php
include ('kaki.html');
?>

14.  Jika diinginkan, Anda bisa melihat kode HTML dari halaman (Gambar 3.2).



Gambar 3.2 Kode sumber HTML yang dihasilkan dari halaman Web mereplikasi kode pada template asli (lihat Skript 3.1).



3.2 Revisi: Menangani Form HTML
Pada Bab 2, telah didiskusikan tentang bagaimana menangani form HTML. Contoh-contoh pada bab itu menggunakan dua file terpisah: satu file yang menampilkan form dan file lain yang menerima data form. Meskipun tidak ada yang salah dengan hal ini, ada beberapa keuntungan bila menempatkan keseluruhan proses ke dalam satu skript.

Untuk menciptakan sebuah halaman yang menampilkan dan sekaligus menangani form, sebuah kondisional perlu dipakai untuk memeriksa aksi mana (menampilkan atau menangani) yang akan diambil:

if (/* form telah disubmit */) {
  // Tangani form.
} else {
  // Tampilkan form.
}

Untuk menentukan apakah form telah disubmit atau tidak, periksa apakah variabel $_POST telah ditetapkan atau tidak. Sebagai contoh, untuk menciptakan sebuah masukan form tersembunyi dengan nama diserahkan dan sembarang nilai:

<input type=”hidden” name=”diserahkan” value=”1” />

Maka pengujian kondisi untuk pengiriman form dilakukan dengan

if (isset($_POST[‘diserahkan’])) {
   // Tangani form.
} else {
   // Tampilkan form.
}

Jika Anda menginginkan sebuah halaman untuk menangani form dan kemudian menampilkannya (misalnya, menambah sebuah rekaman ke dalam database), hapus kluasa else:

if (isset($_POST[‘diserahkan’])) {
   // Tangani form.
}
// Tampilkan form.

Dengan kode tersebut, sebuah skript akan menangani form jika form tersebut telah dikirim/diserahkan dan menampilkan form setiap kali halaman dimuat.

Menangani form HTML
1.   Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda (Skript 3.5).

<?php #Skript 3.5 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

Contoh ini, dan semua contoh berikutnya pada buku ini, akan menggunakan template yang sama seperti indeks.php (Skript 3.4). Sintaks awal dari tiap halaman akan sama, tetapi judul halaman akan berbeda.

2.   Tulis kondisional untuk menangani form.

if (isset($_POST['diserahkan'])) {

Pengujian ini terkait dengan masukan tersembunyi pada form.

3.   Validasi form.

if ( is_numeric($_POST['kuantitas']) &&
     is_numeric($_POST['harga']) &&
     is_numeric($_POST['pajak']) ) {

Validasi di sini sangat sederhana: hanya memeriksa apakah ketiga variabel yang dikirim semuanya bertipe numerik. Anda dapat mengelaborasinya, misalnya dengan memeriksa apakah kuantitas merupakan sebuah integer atau tidak dan memeriksa apakah semua nilai positif atau tidak.

Jika validasi melewati semua pengujian, kalkulasi akan dilakukan; jika tidak, user akan diminta untuk mencoba lagi.

4.   Lakukan perhitungan.

// Menghitung hasil:
$total = ($_POST['kuantitas'] * $_POST['harga']);
$besar_pajak = ($_POST['pajak'] / 100); // Ubah 5% menjadi .05.
$total += ($total * $besar_pajak); // Tambahkan ke total.

5.   Tampilkan hasil.

// Menampilkan hasil:
echo '<h1>Biaya total</h1>
<p>Biaya total pembelian sejumlah ' .
$_POST['kuantitas'] . ' widget dengan harga masing-masing Rp.' .
number_format ($_POST['harga'], 2) . ', termasuk pajak ' .
$_POST['pajak'] . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';

Semua nilai ditampilkan, dengan memformat harga dan total dengan fungsi number_format(). Dengan menggunakan operator penyambungan (tanda titik), nilai-nilai numerik dapat ditempelkan pada pesan yang tertampil.

6.   Sempurnakan kondisional dan tutup tag PHP.

  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas, harga, dan pajak yang valid.</p>';
  }
}
?>

7.   Tampilkan form HTML.

<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5" /></p>
    <p>harga: <input type="text" name="harga" size="5" maxlength="10" /></p>
    <p>pajak (%): <input type="text" name="pajak" size="5" maxlength="5" /></p>
   
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>

8.   Cantumkan file kaki.html.

<?php // Cantumkan file kaki:
include ('kaki.html');
?>

Simpan file sebagai kalkulator.php, tempatkan pada direktori Web Anda, dan uji dengan browser Anda (Gambar 3.3).

SKRIPT 3.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
28
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php #Skript 3.5 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

// Memeriksa submisi form:
if (isset($_POST['diserahkan'])) {
  // Validasi form minimal:
  if ( is_numeric($_POST['kuantitas']) &&
    is_numeric($_POST['harga']) &&
    is_numeric($_POST['pajak']) ) {

      // Menghitung hasil:
      $total = ($_POST['kuantitas'] * $_POST['harga']);
      $besar_pajak = ($_POST['pajak'] / 100); // Ubah 5% menjadi .05.
      $total += ($total * $besar_pajak); // Tambahkan ke total.

      // Menampilkan hasil:
      echo '<h1>Biaya total</h1>
      <p>Biaya total pembelian sejumlah ' .
      $_POST['kuantitas'] . ' widget dengan harga masing-masing Rp.' .
      number_format ($_POST['harga'], 2) . ', termasuk pajak ' .
      $_POST['pajak'] . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';

  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas, harga, dan pajak yang valid.</p>';
  }

} // Akhir dari IF isset().
// Ciptakan form HTML:
?>
<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5" /></p>
    <p>harga: <input type="text" name="harga" size="5" maxlength="10" /></p>
    <p>pajak (%): <input type="text" name="pajak" size="5" maxlength="5" /></p>
       
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>
<?php // Cantumkan file kaki:
include ('kaki.html');
?>






Gambar 3.3 Halaman melakukan perhitungan, melaporkan hasil, dan kemudian menampilkan-ulang form.



3.3 Membuat Sticky Form
Sticky form merupakan form HTML standar yang mengingat bagaimana Anda mengisi form. Ini merupakan fitur menarik bagi user, khususnya jika Anda perlu mengirim-ulang sebuah form karena kesalahan pengisian form.

Untuk menetapkan apa yang diisikan pada sebuah kotak teks, gunakan atribut value:

<input type=”text” name=”kota” size=”20” value=”Siantar” />

Agar PHP dapat menetapkan nilai tersebut, tampilkan variabel tertentu:

<input type=”text” name=”kota” size=”20” value=”<?php echo $kota; ?>” />

Untuk menetapkan status dari tombol radio atau kotak periksa, tambahkan kode checked=”checked” pada tag input. Dengan menggunakan PHP, Anda bisa menuliskan:

<input type=”radio” name=”gender” value=”P” <?php if ($gender == ‘P’)) {
  echo ‘checked=”checked”’;
} ?>/>

Untuk menetapkan nilai dari sebuah textarea, tempatkan nilai di antara tag-tag textarea:

<textarea name=”komentar” rows=”10” cols=”50”><?php echo $komentar; ?></textarea>

Perhatikan bahwa tag textarea tidak memiliki atribut value seperti tag text standar.

Untuk menyeleksi sebuah menu pull-down, tambahkan selected=”selected” pada opsi tertentu. Ini merupakan cara mudah jika Anda menggunakan PHP untuk menghasilkan menu:

echo ‘<select name=”tahun”>’;
for ($y = 2008; $y <= 2018; $y++) {
   echo “<option value=\”$y\”;
   if ($tahun == $y) {
     echo ‘ selected=”selected”’;
   }
   echo “>$y</option>\n”;
}
echo ‘</select>’;

Dengan informasi ini, Anda akan menulis-ulang kalkulator.php untuk menciptakan sticky form.

Membuat sticky form
1.   Buka kalkulator.php (Skript 3.5) pada editor teks atau IDE Anda.
2.   Ubah masukan kuantitas

<p>Kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5"
value="<?php if (isset($_POST['kuantitas'])) echo $_POST['kuantitas']; ?>" /></p>

Perubahan pertama adalah menambahkan atribut value pada masukan. Kemudian, menampilkan nilai dari variabel kuantitas yang dikirimkan ($_POST[‘kuantitas’]). Karena saat pertama kali halaman dimuat $_POST[‘kuantitas’] tidak memiliki nilai, sebuah kondisional diperlukan untuk memastikan bahwa variabel itu ditetapkan sebelum ditampilkan. Kode untuk menetapkan nilai dari variabel kuantitas adalah

<?php
  if (isset($_POST[‘kuantitas’])) {
    echo $_POST[‘kuantitas’];
  }
?>

Ini dapat dipadatkan menjadi form minimal seperti dipakai pada skript.

3.   Ulangi proses yang sama untuk harga dan pajak.

<p>Harga: <input type="text" name="harga" size="5" maxlength="10"
value="<?php if (isset($_POST['harga'])) echo $_POST['harga']; ?>" /></p>

<p>Pajak (%): <input type="text" name="pajak" size="5" maxlength="5"
value="<?php if (isset($_POST['pajak'])) echo $_POST['pajak']; ?>" /></p>

4.   Simpan file sebagai kalkulator.php, tempatkan pada direktori Web, dan uji dengan browser Web Anda (Gambar 3.4).

SKRIPT 3.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
28
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php #Skript 3.6 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

// Memeriksa submisi form:
if (isset($_POST['diserahkan'])) {
  // Validasi form minimal:
  if ( is_numeric($_POST['kuantitas']) &&
    is_numeric($_POST['harga']) &&
    is_numeric($_POST['pajak']) ) {

      // Menghitung hasil:
      $total = ($_POST['kuantitas'] * $_POST['harga']);
      $besar_pajak = ($_POST['pajak'] / 100); // Ubah 5% menjadi .05.
      $total += ($total * $besar_pajak); // Tambahkan ke total.

      // Menampilkan hasil:
      echo '<h1>Biaya total</h1>
      <p>Biaya total pembelian sejumlah ' .
      $_POST['kuantitas'] . ' widget dengan harga masing-masing Rp.' .
      number_format ($_POST['harga'], 2) . ', termasuk pajak ' .
      $_POST['pajak'] . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';

  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas, harga, dan pajak yang valid.</p>';
  }

} // Akhir dari IF isset().
// Ciptakan form HTML:
?>
<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>Kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5"
    value="<?php if (isset($_POST['kuantitas'])) echo $_POST['kuantitas']; ?>" /></p>

    <p>Harga: <input type="text" name="harga" size="5" maxlength="10"
        value="<?php if (isset($_POST['harga'])) echo $_POST['harga']; ?>" /></p>

    <p>Pajak (%): <input type="text" name="pajak" size="5" maxlength="5"
        value="<?php if (isset($_POST['pajak'])) echo $_POST['pajak']; ?>" /></p>
       
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>
<?php // Cantumkan file kaki:
include ('kaki.html');
?>






Gambar 3.4 Form sekarang mengingat nilai-nilai yang dikirimkan sebelumnya, tanpa memandang apakah form telah diisi secara keseluruhan atau tidak.



3.4 Menciptakan Fungsi Sendiri
PHP mempunyai banyak fungsi pustaka (built-in), yang dapat dipakai untuk menyelesaikan hampir semua permasalahan yang Anda alami. PHP juga memiliki kapabilitas sehingga Anda bisa mendefinisikan dan menggunakan fungsi sendiri untuk tujuan yang Anda tetapkan sendiri. Sintaksis untuk menciptakan fungsi sendiri adalah

function nama_fungsi () {
  // Kode fungsi.
}


Nama fungsi Anda dapat berupa kombinasi dari huruf, angka, dan garis-bawah tetapi ia harus diawali dengan huruf atau garis-bawah, tidak bisa diawali dengan angka. Anda juga tidak dapat memakai nama fungsi pustaka untuk nama fungsi Anda. Berikut contoh definisi fungsi yang benar:

function lakukan_sesuatu() {
  // Lakukan apapun.
}

Dalam PHP, seperti disebutkan sebelumnya, nama fungsi berwatak case-insensitive (tidak seperti nama variabel), jadi Anda dapat memanggil fungsi tersebut dengan lakukan_Sesuatu() atau LAKUKAN_SESUATU() atau Lakukan_Sesuatu(), dan lainnya (tetapi tidak dengan lakukansesuatu() atau LakukanSesuatu()).

Kode yang berada di dalam fungsi dapat dipakai untuk apapun sesuai dengan keinginan Anda. Bab ini akan menyajikan beberapa contoh tentang bagaimana fungsi sendiri dapat diimplementasikan.

Menciptakan fungsi sendiri
1.   Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda (Skript 3.7).

<?php # Skript 3.7 - formtanggal.php

$judul_hal = 'Form Kalender';
include ('kepala.html');

Halaman ini akan memakai template HTML yang sama dengan contoh-contoh sebelumnya.

2.   Awali pendefinisian sebuah fungsi baru.

function buat_kalender_pulldown() {

Fungsi yang ditulis di sini akan menghasilkan tiga menu pull-down yang diperlukan untuk memilih bulan, hari, dan tanggal, sama seperti kalender.php (lihat Skript 2.9). Nama fungsi secara jelas menyatakan tujuannya.

3.   Bangkitkan tiga menu pull-down.

// Membuat array bulan:
  $bulan = array (1 => 'Januari',
    'Februari', 'Maret', 'April', 'Mei',
    'Juni', 'Juli', 'Agustus', 'September',
    'Oktober', 'Nopember', '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";
  }

Kode ini persis sama dengan yang ada pada kalender.php, hanya saja ia sekarang ditempatkan di dalam sebuah definisi fungsi.

4.   Tutup definisi fungsi.

} // Akhir definisi fungsi.

Komentar bisa membantu Anda untuk menandai akhir dari sebuah fungsi sehingga Anda mengetahui awal dan akhir dari fungsi.

5.   Ciptakan form dan panggil fungsi.

// Menciptakan tag-tag form:
echo '<h1>Pilih sebuah tanggal:</h1>
<form action="formtanggal.php" method="post">';

// Memanggil fungsi.
buat_kalender_pulldown();
echo '</form>';

Kode ini akan menciptakan tag-tag form. Pemanggilan terhadap fungsi buat_kalender_form() akan menghasilkan tiga menu pull-down.

6.   Tutup skript PHP dengan menyertakan kaki.html.

include ('kaki.html');
?>

7.   Simpan file sebagai formtanggal.php, tempatkan pada direktori Web, dan uji dengan browser Web Anda (Gambar 3.5).

SKRIPT 3.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
28
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php # Skript 3.7 - formtanggal.php

$judul_hal = 'Form Kalender';
include ('kepala.html');

// Fungsi ini membuat tiga menu pull-down
// untuk memilih bulan, hari, dan tahun.
function buat_kalender_pulldown() {
  // Membuat array bulan:
  $bulan = array (1 => 'Januari',
    'Februari', 'Maret', 'April', 'Mei',
    'Juni', 'Juli', 'Agustus', 'September',
    'Oktober', 'Nopember', '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>';
} // Akhir definisi fungsi.

// Menciptakan tag-tag form:
echo '<h1>Pilih sebuah tanggal:</h1>
<form action="formtanggal.php" method="post">';

// Memanggil fungsi.
buat_kalender_pulldown();

echo '</form>';

include ('kaki.html');
?>


Gambar 3.5 Ketiga menu pull-down ini dibangkitkan oleh fungsi buatan sendiri.


3.5 Menciptakan Fungsi Dengan Argumen
Sama seperti fungsi pustaka PHP, fungsi yang Anda ciptakan sendiri dapat memiliki argumen (juga dikenal dengan parameter). Sebagai contoh, fungsi isset() mengambil sebuah argumen berupa nama dari sebuah variabel yang akan diuji. Fungsi strlen() mengambil sebuah argumen berupa string yang akan ditentukan panjang karakternya.

Sebuah fungsi dapat mengambil sebanyak mungkin argumen, tetapi urutan argumen harus menjadi perhatian serius. Untuk memberikan argumen pada fungsi, gunakan sintaksis berikut:

function tampil_hallo ($pertama, $terakhir) {
  // Kode fungsi.
}

Setelah fungsi didefinisikan, Anda kemudian dapat memanggilnya seperti memanggil fungsi lain dalam PHP:

tampil_hallo (‘Tom’, ‘Cruise’);
$nama_keluarga = ‘Cruise’;
print_hello (‘Tom’, $nama_keluarga);

Sama seperti fungsi lain dalam PHP, ketidak-cocokan jumlah argumen akan menyebabkan error. Untuk mendemonstrasikan konsep ini, Anda akan menulis-ulang proses kalkulator sebagai sebuah fungsi.

Mendefinisikan fungsi yang memiliki argumen
1.   Buka kalkulator.php (Skript 3.6) pada editor teks atau IDE Anda.

2.   Setelah menyertakan file kepala.html, definisikan fungsi hitung_total() (Skript 3.8).

/* Fungsi ini menghitung total dan kemudian
menampilkan hasilnya. */
function hitung_total ($kti, $biaya, $pjk) {
  $total = ($kti * $biaya);
  $taxrate = ($pjk / 100); // Mengubah 5% menjadi .05.
  $total += ($total * $taxrate); // Menambah pajak.

  // Menampilkan hasil:
  echo '<p>Biaya total untuk membeli sejumlah '
       . $kti . ' widget seharga masing-masing Rp. '
       . number_format ($biaya, 2) . ', termasuk pajak '
       . $pjk . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';
} // Akhir dari fungsi.

Fungsi ini melakukan perhitungan yang sama dengan apa yang ada pada file kalkulator.php sebelumnya. Fungsi ini mengambil tiga argumen: kuantitas yang dibeli, harga, dan pajak. Perhatikan bahwa variabel-variabel yang digunakan sebagai argumen-argumen bukanlah $_POST[‘kuantitas’], $_POST[‘harga’], dan $_POST[‘pajak’]. Variabel-variabel argumen pada fungsi hanya dikenali pada fungsi ini dan memiliki nama sendiri.

3.   Ubah isi dari validasi kondisional.

// Menampilkan heading:
      echo '<h1>Biaya total</h1>';
       
// Memanggil fungsi:
hitung_total($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);

Ketika memanggil fungsi, ketiga argumen dilewatkan kepada fungsi tersebut, masing-masing merupakan sebuah variabel $_POST. Nilai dari $_POST[‘kuantitas’] ditugaskan kepada variabel $kti pada definisi fungsi; nilai dari $_POST[‘harga’] ditugaskan kepada variabel $biaya pada definisi fungsi; Nilai dari $_POST[‘pajak’] ditugaskan kepada variabel $pjk pada definisi fungsi.

4.   Simpan file sebagai kalkulator.php, tempatkan pada direktori Web Anda, dan uji dengan browser Web Anda (Gambar 3.6).

SKRIPT 3.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
28
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
<?php #Skript 3.8 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

/* Fungsi ini menghitung total dan kemudian
menampilkan hasilnya. */
function hitung_total ($kti, $biaya, $pjk) {
  $total = ($kti * $biaya);
  $taxrate = ($pjk / 100); // Mengubah 5% menjadi .05.
  $total += ($total * $taxrate); // Menambah pajak.

  // Menampilkan hasil:
  echo '<p>Biaya total untuk membeli sejumlah '
       . $kti . ' widget seharga masing-masing Rp. '
       . number_format ($biaya, 2) . ', termasuk pajak '
       . $pjk . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';
} // Akhir dari fungsi.

// Memeriksa submisi form:
if (isset($_POST['diserahkan'])) {
  // Validasi form minimal:
  if ( is_numeric($_POST['kuantitas']) &&
    is_numeric($_POST['harga']) &&
    is_numeric($_POST['pajak']) ) {
   
      // Menampilkan heading:
      echo '<h1>Biaya total</h1>';
         
      // Memanggil fungsi:
      hitung_total($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);
  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas, harga, dan pajak yang valid.</p>';
  }

} // Akhir dari IF isset().
// Ciptakan form HTML:
?>
<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>Kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5"
    value="<?php if (isset($_POST['kuantitas'])) echo $_POST['kuantitas']; ?>" /></p>

    <p>Harga: <input type="text" name="harga" size="5" maxlength="10"
        value="<?php if (isset($_POST['harga'])) echo $_POST['harga']; ?>" /></p>

    <p>Pajak (%): <input type="text" name="pajak" size="5" maxlength="5"
        value="<?php if (isset($_POST['pajak'])) echo $_POST['pajak']; ?>" /></p>
       
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>
<?php // Cantumkan file kaki:
include ('kaki.html');
?>



Gambar 3.6 Meskipun menggunakan fungsi sendiri dalam melakukan perhitungan, hasil akhir tidak berbeda dari sebelumnya.



3.6 Menetapkan Nilai Argumen Default
Varian lain dalam mendefinisikan fungsi Anda sendiri adalah dengan memberikan nilai argumen. Untuk melakukannya, tugaskan sebuah nilai kepada argumen pada definisi fungsi:

function salam($nama, $psn = ‘Hallo’) {
  echo “$psn, $nama!”;
}

Hasil akhir dari penetapan nilai argumen default adalah bahwa argumen tersebut menjadi opsional ketika fungsi dipanggil. Jika sebuah nilai dilewatkan kepadanya, nilai yang dilewatkan itu yang akan digunakan. Anda dapat menetapkan nilai-nilai default untuk sebanyak mungkin argumen yang Anda inginkan, dengan syarat bahwa argumen-argumen itu di berikan di bagian akhir pada definisi fungsi. Dengan kata lain, argumen-argumen yang disyaratkan harus dicantumkan lebih dahulu. Pada fungsi yang baru saja didefinisikan, semua pemanggilan ini dapat dilakukan:

salam($nama_keluarga, $pesan);
salam(‘Samy’);
salam(‘Samy’, ‘Selamat Pagi’);

Namun, salam() saja tidak dapat dipakai.

Menetapkan nilai argumen default
1.   Buka file kalkulator.php (Skript 3.8) pada editor teks atau IDE Anda.
2.   Ubah baris definisi fungsi sehingga hanya kuantitas dan harga yang disyaratkan (Skript 3.9).

function hitung_total ($kti, $biaya, $pjk = 5) {

Nilai dari variabel $pjk sekarang diberikan pada definisi fungsi, yang membuatnya menjadi opsional.

3.   Ubah validasi form.

if ( is_numeric($_POST['kuantitas']) && is_numeric($_POST['harga'])) {

Karena nilai pajak menjadi opsional, hanya dua variabel lain yang disyaratkan dan perlu divalidasi.

4.   Ubah baris pemanggilan fungsi.

// Memanggil fungsi, dengan atau tanpa pajak:
if (is_numeric($_POST['pajak'])) {
   hitung_total ($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);
} else {
   hitung_total ($_POST['kuantitas'], $_POST['harga']);
}

5.   Ubah pesan error agar hanya melaporkan kuantitas dan harga.

echo '<h1>Error!</h1>
<p class="error">Silahkan masukkan kuantitas dan harga yang valid.</p>';

6.   Jika diinginkan, Anda bisa menandai nilai pajak pada form sebagai variabel opsional.

<p>Pajak(%): <input type="text" name="pajak" size="5" maxlength="5"
value="<?php if(isset($_POST['pajak'])) echo $_POST['pajak']; ?>"/> (opsional)</p>

7.   Simpan file, tempatkan pada direktori Web, dan uji dengan browser Web Anda (Gambar 3.7).

SKRIPT 3.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
28
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
<?php #Skript 3.9 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

/* Fungsi ini menghitung total dan kemudian
menampilkan hasilnya. */
function hitung_total ($kti, $biaya, $pjk = 5) {
  $total = ($kti * $biaya);
  $taxrate = ($pjk / 100); // Mengubah 5% menjadi .05.
  $total += ($total * $taxrate); // Menambah pajak.

  // Menampilkan hasil:
  echo '<p>Biaya total untuk membeli sejumlah '
       . $kti . ' widget seharga masing-masing Rp. '
       . number_format ($biaya, 2) . ', termasuk pajak '
       . $pjk . '%, adalah Rp. ' . number_format ($total, 2) . '.</p>';
} // Akhir dari fungsi.

// Memeriksa submisi form:
if (isset($_POST['diserahkan'])) {
  // Validasi form minimal:
  if ( is_numeric($_POST['kuantitas']) &&
    is_numeric($_POST['harga'])) {
   
    // Menampilkan heading:
    echo '<h1>Biaya total</h1>';
         
    // Memanggil fungsi, dengan atau tanpa pajak:
    if (is_numeric($_POST['pajak'])) {
      hitung_total ($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);
    } else {
      hitung_total ($_POST['kuantitas'], $_POST['harga']);
    }
  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas dan harga yang valid.</p>';
  }

} // Akhir dari IF isset().
// Ciptakan form HTML:
?>
<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>Kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5"
    value="<?php if (isset($_POST['kuantitas'])) echo $_POST['kuantitas']; ?>" /></p>

    <p>Harga: <input type="text" name="harga" size="5" maxlength="10"
        value="<?php if (isset($_POST['harga'])) echo $_POST['harga']; ?>" /></p>

    <p>Pajak(%): <input type="text" name="pajak" size="5" maxlength="5"
    value="<?php if(isset($_POST['pajak'])) echo $_POST['pajak']; ?>"/> (opsional)</p>
       
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>
<?php // Cantumkan file kaki:
include ('kaki.html');
?>




Gambar 3.7 Jika nilai pajak tidak dimasukkan, nilai default 5% akan dipakai dalam perhitungan.


3.7 Menciptakan Fungsi Penghasil Nilai Balik
Hal terakhir pada sebuah fungsi sendiri yang akan didiskusikan adalah bagaimana menuliskan sebuah fungsi yang dapat menghasilkan nilai balik. Sebagian fungsi pustaka melakukan hal ini. Sebagai contoh, print() menghasilkan 1 atau 0, yang mengindikasikan keberhasilan atau kegagalan dalam menampilkan. Fungsi echo() bukanlah fungsi penghasil nilai balik.

Untuk menciptakan fungsi penghasil nilai balik, gunakan statemen return berikut:

function penghasil_nilaibalik ($satu, $dua) {
  // Kode fungsi.
  return $nilai_balik;
}

Pada contoh selanjutnya, Anda akan memperbarui fungsi hitung_total() sehingga ia menghasilkan nilai balik berupa nilai total yang dihitung.


Menciptakan fungsi penghasil nilai balik
1.   Buka file kalkulator.php (Skript 3.9) pada editor teks atau IDE Anda.
2.   Hapus statemen echo() dari definisi fungsi dan ganti dengan sebuah statemen return (Skript 3.10).

return number_format($total, 2);

Versi fungsi ini tidak akan menampilkan hasil, tetapi menghasilkan nilai balik berupa nilai total yang dihitung, yang diformat menjadi dua dijit di belakang titik desimal.

3.   Ubah baris-baris

if (is_numeric($_POST['pajak'])) {
   $jum = hitung_total ($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);
} else {
   $jum = hitung_total ($_POST['kuantitas'], $_POST['harga']);
}

4.   Tambahkan statemen echo() yang baru untuk menampilkan hasil.

// Menampilkan hasil:
echo '<p>Biaya total untuk membeli sejumlah '
     . $_POST['kuantitas'] . ' widget seharga masing-masing Rp. '
     . number_format ($_POST['harga'], 2) . ', termasuk pajak '
     . ' adalah Rp. ' . $jum . '.</p>';

5.   Simpan file, tempatkan pada direktori Web, dan uji dengan browser Web Anda (Gambar 3.8).

SKRIPT 3.10
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
28
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
<?php #Skript 3.10 - kalkulator.php
$judul_hal = 'Kalkulator Penghitung Harga Widget';
include ('kepala.html');

/* Fungsi ini menghitung total dan kemudian
menghasilkan nilai balik. */
function hitung_total ($kti, $biaya, $pjk = 5) {
  $total = ($kti * $biaya);
  $taxrate = ($pjk / 100); // Mengubah 5% menjadi .05.
  $total += ($total * $taxrate); // Menambah pajak.

  return number_format($total, 2);
} // Akhir dari fungsi.

// Memeriksa submisi form:
if (isset($_POST['diserahkan'])) {
  // Validasi form minimal:
  if ( is_numeric($_POST['kuantitas']) &&
    is_numeric($_POST['harga'])) {
   
        // Menampilkan heading:
      echo '<h1>Biaya total</h1>';
         
    // Memanggil fungsi, dengan atau tanpa pajak:
    if (is_numeric($_POST['pajak'])) {
      $jum = hitung_total ($_POST['kuantitas'], $_POST['harga'], $_POST['pajak']);
    } else {
      $jum = hitung_total ($_POST['kuantitas'], $_POST['harga']);
    }
       
    // Menampilkan hasil:
    echo '<p>Biaya total untuk membeli sejumlah '
       . $_POST['kuantitas'] . ' widget seharga masing-masing Rp. '
       . number_format ($_POST['harga'], 2) . ', termasuk pajak '
       . ' adalah Rp. ' . $jum . '.</p>';

  } else { // Nilai-nilai yang dikirim tak-valid.
    echo '<h1>Error!</h1>
    <p class="error">Silahkan masukkan kuantitas dan harga yang valid.</p>';
  }

} // Akhir dari IF isset().
// Ciptakan form HTML:
?>
<h1>Kalkulator Biaya Widget</h1>
  <form action="kalkulator.php" method="post">
    <p>Kuantitas: <input type="text" name="kuantitas" size="5" maxlength="5"
    value="<?php if (isset($_POST['kuantitas'])) echo $_POST['kuantitas']; ?>" /></p>

    <p>Harga: <input type="text" name="harga" size="5" maxlength="10"
    value="<?php if (isset($_POST['harga'])) echo $_POST['harga']; ?>" /></p>

    <p>Pajak(%): <input type="text" name="pajak" size="5" maxlength="5"
    value="<?php if(isset($_POST['pajak'])) echo $_POST['pajak']; ?>"/> (opsional)</p>
       
    <p><input type="submit" name="serahkan" value="Hitung!" /></p>
    <input type="hidden" name="diserahkan" value="1" />
  </form>
<?php // Cantumkan file kaki:
include ('kaki.html');
?>


Gambar 3.8 Fungsi yang diciptakan sendiri sekarang menghasilkan nilai balik (bukan lagi menampilkan hasil).












No comments:

Post a Comment