projek print tutorial belajar php part 13

436
http:// www.duniailkom.com ____________________________________________________ _________ Tutorial Belajar PHP Part 13: Mengenal Tipe Data Integer dan Cara Penulisan Integer dalam PHP Di dalam tutorial belajar PHP kali ini kita akan mempelajari tipe data integer PHP dan cara penulisan tipe data integer dalam PHP. Tipe data integer dalam PHP dapat ditulis dalam bentuk desimal,heksadesimal, oktal, dan biner. Pengertian Tipe Data PHP Setelah sebelumnya kita mempelajari tentang pengertian variabel dan pengertian konstanta , dalam beberapa tutorial ke depan kita akan mempelajari tipe data PHP. Sebuah variabel atau konstanta merupakan ‘tempat‘ dari data. Di dalam bahasa pemograman (dan juga PHP), data yang diinput kedalam variabel atau konstanta akan memiliki tipe tertentu. Tipe-tipe ini nantinya menentukan bagaimana cara kita memprosesnya. Beberapa tipe data terdengar familiar, seperti tipe data angka, desimal dan text. Namun kita juga akan menemukan tipe data lain seperti boolean dan array. Untuk tipe data pertama yang akan dibahas adalah tipe data angka bulat, atau disebut dengan tipe data Integer. Pengertian Tipe Data Integer dalam PHP Tipe data integer adalah tipe data yang berupa angka bulat seperti: 1, 22, dan -172. Tipe data integerumum digunakan untuk data dengan angka bulat, seperti harga barang, jumlah stock dan jumlah mahasiswa. Jika data yang kita miliki kemungkinnan akan mengandung pecahan, maka tipe data yang digunakan adalah float (akan dibahas dalam tutorial berikutnya). Nilai integer dapat bernilai positif (+) maupun negatif (-). Jika tidak diberi tanda, maka diasumsikan nilai tersebut adalah positif. Berikut contoh penulisan bilangan integer dalam PHP: <?php $umur=21; $harga=15000; $rugi=-500000;

Upload: wisnu-hidayat

Post on 02-Dec-2015

228 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial Belajar PHP Part 13: Mengenal Tipe Data Integer dan Cara Penulisan Integer dalam PHP

Di dalam tutorial belajar PHP kali ini kita akan mempelajari tipe data integer PHP dan cara penulisan tipe data integer dalam PHP. Tipe data integer dalam PHP dapat ditulis dalam bentuk desimal,heksadesimal, oktal, dan biner.

Pengertian Tipe Data PHP

Setelah sebelumnya kita mempelajari tentang pengertian variabel dan pengertian konstanta, dalam beberapa tutorial ke depan kita akan mempelajari tipe data PHP.

Sebuah variabel atau konstanta merupakan ‘tempat‘ dari data. Di dalam bahasa pemograman (dan juga PHP), data yang diinput kedalam variabel atau konstanta akan memiliki tipe tertentu. Tipe-tipe ini nantinya menentukan bagaimana cara kita memprosesnya. Beberapa tipe data terdengar familiar, seperti tipe data angka, desimal dan text. Namun kita juga akan menemukan tipe data lain seperti boolean dan array.

Untuk tipe data pertama yang akan dibahas adalah tipe data angka bulat, atau disebut dengan tipe data Integer.

Pengertian Tipe Data Integer dalam PHP

Tipe data integer adalah tipe data yang berupa angka bulat seperti: 1, 22, dan -172. Tipe data integerumum digunakan untuk data dengan angka bulat, seperti harga barang, jumlah stock dan jumlah mahasiswa. Jika data yang kita miliki kemungkinnan akan mengandung pecahan, maka tipe data yang digunakan adalah float (akan dibahas dalam tutorial berikutnya).

Nilai integer dapat bernilai positif (+) maupun negatif (-). Jika tidak diberi tanda, maka diasumsikan nilai tersebut adalah positif.

Berikut contoh penulisan bilangan integer dalam PHP:

<?php

$umur=21;

$harga=15000;

$rugi=-500000;

echo $umur; //21

echo "<br />";

echo $harga; //15000

echo "<br />";

echo $rugi; //-500000

?>

Page 2: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk variabel dengan angka integer, kita bisa melakukan operasi matematis seperti penambahan, pengurangan, pembagian dan lain-lain, seperti contoh berikut ini:

<?php

$a=14;

$b=16;

$c= $a + $b;

echo $c; // 30

$d=$a * $b;

echo $d; // 224

?>

Jangkauan angka integer bergantung kepada kemampuan komputasi komputer, namun biasanya dimulai dari −2,147,483,648 sampai +2,147,483,647, atau 32bit. Jika terdapat menungkinan angka yang dihasilkan dari kode program kita berada diluar jangkauan ini, sebaiknya menggunakan tipe data float.

Secara teknis, jangkauan angka integer ini sama dengan jangkauan tipe data LONG pada bahasa C. Namun dikarenakan bahasa C tidak memberikan spesifikasi khusus seberapa besar jangkauanLONG, anda mungkin mendapat hasil yang berbeda.

Untuk mengetahui nilai maksimal tipe data integer pada komputer, PHP menyediakan konstantaPHP_INT_MAX. Berikut adalah hasil nilai PHP_INT_MAX yang saya jalankan:

<?php

print PHP_INT_MAX; // 2147483647

?>

Selain digunakan untuk menampung angka dengan base 10 (disebut juga angka desimal), tipe datainteger digunakan juga untuk menampung angka base 16 (hexadesimal), base 8 (octal), dan base 2 (binary).

Page 3: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Penulisan Angka Hexadesimal Dalam PHP

Angka heksadesimal (atau hexadecimal) adalah angka khusus yang bilangan penyusunnya terdiri dari 16 digit, yaitu angka 0-9, dan huruf A-F. Angka heksadesimal ini biasanya digunakan untuk pemrosesan yang berkaitan dengan perhitungan komputer.

Dalam pemograman web kita akan menemukan angka ini pada penulisan kobinasi warna pada CSS. Sebagai contoh, warna merah ditulis: ff0000, biru: 0000ff, abu-abu: cccccc, dan kombinasi warna lainnya dalam CSS menggunakan angka heksadesimal.

Untuk membuat sebuah variabel berisi angka heksadesimal, kita menulis huruf “0x” (angka 0 dan huruf ‘x’) sebelum angka yang ingin diinput. Karakter “0x” menginstruksikan kepada PHP bahwa angka setelahnya adalah heksadesimal. Misalkan, angka heksadesimal 54FA ditulis dengan0x54FA.

Berikut contoh penulisan bilangan integer heksadesimal dalam PHP:

<?php

$angka_desimal= 31;

$angka_heksadesimal=0x1F; //1F heksadesimal = 31 desimal

echo $angka_desimal; //31

echo "<br />";

echo $angka_heksadesimal; //31

?>

Pada contoh diatas, variabel $angka_desimal dan $angka_heksadesimal sama-sama ditampilkan dengan nilai 31 (PHP secara tidak langsung mengkonversi nilai $angka_heksadesimal menjadi nilaidesimal).

Cara Penulisan Angka Oktal Dalam PHP

Bilangan oktal adalah bilangan yang terdiri dari 8 digit, yaitu karakter 0-7. Bilangan oktal tidak terlalu sering digunakan. Untuk menuliskan bilangan oktal ke dalam variabel PHP, kita menggunakan tanda “0” (angka nol) diawal angka. Angka desimal 511 ditulis dalam bentuk oktal777, sehingga penulisannya dalam PHP menjadi 0777.

Berikut contoh penulisan bilangan integer oktal dalam PHP:

<?php

Page 4: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$angka_desimal= 511;

$angka_oktal=0777; //777 oktal = 511 desimal

echo $angka_desimal; //511

echo "<br />";

echo $angka_oktal; //511

?>

Cara Penulisan Angka Biner Dalam PHP

Bilangan biner (atau binary) adalah bilangan yang terdiri dari 2 digit saja, yaitu 0 dan 1. Prinsip bilangan biner inilah yang mendasari perhitungan komputer. Bilangan biner kadang disebut juga dengan bilangan logika, yakni logika benar (ditandai dengan angka 1), dan logika salah (ditandai dengan angka 0).

Di dalam PHP, angka integer biner ditulis dengan awalan 0b (angka nol, dan huruf b). Nilai desimal222, dalam notasi biner biner ditulis 11011110, sehingga untuk menyimpannya dalam variabel PHP ditulis menjadi 0b11011110.

Berikut contoh penulisan bilangan integer biner dalam PHP:

<?php

$angka_desimal= 222;

$angka_biner=0b11011110; //11011110 biner = 222 desimal

echo $angka_desimal; //222

echo "<br />";

echo $angka_biner; //222

?>

Page 5: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tipe data integer adalah tipe data penting dalam pemograman. Dalam tutorial kali ini kita telah mempelajari cara penulisan bilangan integer dalam PHP dengan penulisan untuk karakter desimal,heksadesimal, oktal, dan biner.

Selain tipe data Integer, dalam PHP masih terdapat tipe angka lainnya, yaitu tipe data Floating Pointatau Float. Dalam tutorial belajar PHP selanjutnya kita akan mempelajari tipe data Float dan Cara Penulisan tipe data Float dalam PHP.

Tutorial Belajar PHP Part 14: Mengenal Tipe Data Float dan Cara Penulisan Float dalam PHP

Jika sebelumnya kita telah mempelajari tentang tipe data Integer dalam PHP, kali ini kita akan membahas tipe data Float, dan cara penulisan tipe data float dalam PHP.

Pengertian Tipe Data Float dalam PHP

Tipe data float (disebut juga tipe data floating point, atau real number) adalah tipe data angka yang memiliki bagian desimal di akhir angka, atau memiliki floating point (floating point adalah istilah dalam bahasa inggris untuk menyebut tanda “titik” yang menandakan bilangan desimal). Contoh angka float adalah seperti: 0,9 atau 3,14.

Tipe data float cocok digunakan untuk variabel yang akan berisi angka pecahan, seperti nilai IPK, hasil pembagian, atau hasil komputasi numerik yang angkanya tidak bisa ditampung oleh datainteger.

Sama seperti tipe data integer, jangkauan angka float bergantung kepada komputasi prosessor yang digunakan, walaupun pada umumnya berupa angka mulai dari 1.7 x 10^-308 sampai dengan1.7^+308 dengan 15 digit keakuratan. Anda tidak perlu khawatir dengan limit angka float ini, karena selain untuk membuat aplikasi matematis tingkat tinggi, kita tidak akan menggunakan angka float sampai 15 digit.

Cara Penulisan Tipe Data Float dalam PHP

PHP mendukung 2 cara penulisan tipe data float, yang pertama yaitu penulisan desimal sehari-hari, seperti 0.17 atau 9.47 dan yang kedua berupa penulisan format scientific notation, seperti 0.314E1, atau 12.0E-3.

Penggunaan scientific notation digunakan untuk menyederhanakan penulisan, 0.314E1 adalah sama dengan 0.314*10^1 atau 3.14, dan 12.0E-3 sama dengan 12.0*10^(-3), atau 0.012.

Berikut contoh penulisan bilangan float dalam PHP:

<?php

$angka_float1= 0.78;

Page 6: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$angka_float2= 14.99;

$angka_scientific1=0.314E1;

$angka_scientific2=0.3365E-3;

echo $angka_float1; // 0.78

echo "<br />";

echo $angka_float2; //14.99

echo "<br />";

echo $angka_scientific1; //3.14

echo "<br />";

echo $angka_scientific2; //0.0003365

?>

Sama seperti tipe data integer, variabel dengan tipe data float juga dapat melakukan operasi numerik seperti penambahan, pembagian, perkalian, dan lain-lain. Berikut adalah contoh operasi matematis dengan tipe data float:

<?php

$a=10.66;

$b=12.4;

$c= $a + $b;

echo $c; // 23.06

$d=$a / $b;

echo $d; // 0.85967741935484

?>

Penjelasan lanjutan tentang operasi matematis, akan kita bahas dalam tutorial khusus tentangoperator matematis dalam PHP.

Dalam tutorial belajar PHP ini, kita telah mempelajari tipe data float, atau disebut juga tipe datafloating point atau real number. Selanjutnya kita akan membahas tentang Tipe Data String dan Cara Penulisan String dalam PHP.

Tutorial Belajar PHP Part 15: Mengenal Tipe Data String dan Cara Penulisan String dalam PHP

Page 7: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah dalam tutorial PHP sebelumnya kita telah mempelajari 2 tipe data angka, yakni tipe data integer dan tipe data float, dalam tutorial kali ini kita akan membahas tipe data string, dan cara penulisannya.

Pengertian Tipe Data String dalam PHP

Tipe data string adalah tipe data yang berisi text, kalimat, atau kumpulan karakter. Sebagai contoh, “a”, “saya sedang belajar PHP” atau “tUT0r1al pHp?!” semuanya adalah string.

Tipe data string mungkin adalah tipe data yang paling sering digunakan, dan memiliki banyak fitur yang disediakan PHP. Karakter yang didukung saat ini adalah 256 karakter ASCII. List karakterASCII tersebut dapat dilihat di http://www.ascii-code.com.

Cara Penulisan Tipe Data String dalam PHP

PHP menyediakan 4 cara penulisan tipe data string, yakni Single Quoted, Double Quoted,Heredoc, dan Nowdoc. Kita akan mempelajarinya lebih dalam dalam tutorial ini.

1. Penulisan Tipe Data String dengan Single Quoted

Penulisan tipe data string menggunakan single quoted atau tanda petik satu (karakter ‘) merupakan cara penulisan string yang paling sederhana. Kita tinggal membuat sebuah kata atau kalimat, dan menambahkan tanda petik satu di awal dan akhir kalimat.

Untuk string yang didalamnya juga terdapat tanda petik satu, kita harus mendahuluinya dengan karakter backslash (\) agar tidak dianggap sebagai penutup string. Dan jika di dalam string anda ingin menulis tanda backslash, kita harus menulisnya dengan 2 kali (\\).

Berikut adalah contoh penulisan tipe data string menggunakan metode single quoted:

<?php

$string1='Ini adalah string sederhana';

$string2='Ini adalah string

yang bisa memiliki beberapa

baris';

$string3='Dia berkata: "I\'ll be back"';

$string4='Anda telah berhasil menghapus C:\\xampp\\htdoc';

$string5='Kalimat ini tidak akan pindah ke: \n baris baru';

Page 8: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$string6='Variabel juga tidak otomatis ditampilkan $string1 dan $string3';

echo $string1; echo "<br>";

echo $string2; echo "<br>";

echo $string3; echo "<br>";

echo $string4; echo "<br>";

echo $string5; echo "<br>";

echo $string6;

?>

Jika contoh tersebut dijalankan, berikut tampilannya di browser:

Pada contoh diatas, saya membuat beberapa karakter khusus seperti “, \n, dan variabel yang dimulai dengan tanda dollar ($). Ketiga karakter khusus ini ditampilkan secara karakter aslinya ke dalam browser.

2. Penulisan Tipe Data String dengan Double Quoted

Cara kedua dalam penulisan tipe data string dalam PHP adalah dengan menggunakan Double Quoted atau tanda petik dua (karakter “). Walaupun seperti tidak ada perbedaan dengan menggunakan single quote, hasil yang di dapat akan sangat berbeda.

Dengan double quoted, PHP akan memproses karakter-karakter khusus seperti carriage return (\n), dan karakter tab (\t) dan juga memproses setiap variabel (yang ditandai dengan tanda $ didepan kata).

Page 9: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Di karenakan metode double quoted melakukan pemrosesan terlebih dahulu, maka untuk menampilkan karakter khusus seperti tanda petik (karakter ‘), tanda dollar (karakter $) dan tanda-tanda khusus lainnya, kita harus menggunakan backslash (karakter \). Berikut adalah tabel karakter khusus untuk double quoted string:

Cara Penulisan String Karakter Yang Ditampilkan

\" Karakter Tanda petik dua

\n Karakter Newline

\r Karakter Carriage return

\t Karakter Tab

\\ Karakter Backslash

\$ Karakter Dollar Sign

\{ Karakter Pembuka Kurung Kurawal

\} Karakter Penutup Kurung Kurawal

\[ Karakter Pembuka Kurung Siku

\] Karakter Penutup Kurung Kurawal

\0 sampai \777 Karakter ASCII menggunakan nilai oktal

\x0 sampai \xFF Karakter ASCII menggunakan nilai heksadesimal

Sebagai contoh penggunaan double quoted string, saya akan menggunakan contoh yang sama dengan single quoted string, agar dapat dilihat perbedaannya:

<?php

$string1="Ini adalah string sederhana";

$string2="Ini adalah string

Page 10: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

yang bisa memiliki beberapa

baris";

$string3="Dia berkata: \"I'll be back\"";

$string4="Anda telah berhasil menghapus C:\\xampp\\htdoc";

$string5="Kalimat ini akan akan pindah ke: \n baris baru";

$string6="Variabel akan otomatis ditampilkan: $string1 dan $string3";

echo $string1; echo "<br \>";

echo $string2; echo "<br \>";

echo $string3; echo "<br \>";

echo $string4; echo "<br \>";

echo $string5; echo "<br \>";

echo $string6;

?>

Dan hasil kode PHP tersebut adalah:

Page 11: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Perhatikan perbedaannya pada hasil $string3, $string5 dan $string6.

Pada $string3, kita harus mem-blackslash tanda petik dua karena itu merupakan karakter khusus dalam double quoted string.

Pada $string5, tanda \n yang merupakan karakter khusus untuk baris baru, tapi karena kita menampilkannya di browser, karakter ini tidak akan terlihat, tetapi jika kita menulis hasil string ini kedalam sebuah file text, kalimat tersebut akan terdiri dari 2 baris.

Pada $string6, terlihat bahwa string dengan petik dua akan memproses variabel $string1 dan$string3 sehingga tampil hasilnya di web browser. Fitur ini akan sangat bermanfaat jika kita sering menampilkan variabel didalam sebuah string.

3. Penulisan Tipe Data String Dengan Heredoc

Cara penulisan tipe data string yang ketiga yaitu dengan fitur PHP yang disebut heredoc. Fitur ini digunakan untuk membuat tipe data string yang dapat berisi beberapa baris kalimat. Dibandingkan dengan menggunakan single quote dan double quote, pembuatan string dengan heredoc tidak terlalu sering digunakan.

Agar lebih jelas, berikut adalah contoh penulisan tipe data string dengan heredoc:

<?php

$IPK=3.9;

$string1 = <<<end

Saya sedang belajar PHP

di duniailkom.com <br />

Kali ini tentang pembahasan

Page 12: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

mengenai "PHP", <br /> dan berharap

bisa dapat IPK $IPK :)

end;

echo $string1;

?>

Mari kita bahas tentang cara penulisan Heredoc.

Seperti yang terlihat dari contoh diatas, fitur Heredoc ditandai dengan tanda “<<<” untuk memulaistring, lalu diikuti dengan karakter penanda akhir string. Dari contoh tersebut kata “end” pada awal string adalah penanda akhir string. Anda bebas mengganti kata “end” dengan kata atau karakter lain, sepanjang kata tersebut bisa dijamin tidak akan muncul didalam string.

Setelah karakter penanda string, baris pertama setelahnya adalah awal dari string. String ini dapat mencakup beberapa baris, sampai ditemukan karakter penanda akhis string yang kita definisikan di awal (yaitu kata “end”). Setelah ditemukan karakter penanda akhir string, maka pendefenisian string berakhir.

Perhatikan juga bahwa di dalam kalimat diatas, saya menggunakan karakter \n dan variabel $IPK. Seluruh karakter ini diproses oleh PHP, sehingga mirip dengan fitur double quoted string.

Page 13: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

4. Penulisan Tipe Data String Dengan Nowdoc

Cara penulisan tipe data keempat dalam PHP yaitu dengan fitur Nowdoc. Fitur ini hampir sama dengan Heredoc, namun dengan pengecualian: karakter khusus dan variabel tidak akan diproses oleh PHP, atau mirip dengan single quoted string.

Berikut adalah contoh penulisan tipe data string menggunakan metode Nowdoc:

<?php

$IPK=3.9;

$string1 = <<< 'selesai'

Saya sedang belajar PHP

di \n duniailkom.com <br />

Kali ini tentang pembahasan

mengenai "PHP", <br /> dan berharap

bisa dapat IPK $IPK :)

selesai;

echo $string1;

?>

Page 14: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika dilihat sekilas, tidak ada perbedaan cara penulisan metode nowdoc dengan heredoc, namun perhatikan karakter penanda akhir string. Kali ini saya menggunakan karakter ‘selesai’ sebagaipenanda akhir string. Dan yang membedakannya dengan heredoc adalah, nowdocmenambahkan single quoted untuk karakter penanda akhir string. Saya menulis ‘selesai’(dengan tanda kutip satu) untuk mengawali string.

Dari tampilan yang dihasilkan, nowdoc memproses string sama dengan  single quoted string, dimana karakter khusus dan variabel tidak diproses sama sekali, sehingga dalam tampilan akhir anda dapat melihat tanda \n dan variabel $IPK ditulis sebagai string.

Dalam tutorial belajar PHP kali ini kita telah membahas 4 cara penulisan dan pendefenisian tipedata string, yaitu dengan single quoted, double quoted, heredoc, dan nowdoc. Metode penulisanstring dengan heredoc dan nowdoc mungkin tidak akan sering anda jumpai.

PHP juga menyediakan banyak fitur dan fungsi untuk manipulasi string, salah satunya adalah operasi yang bisa dilakukan dengan string. Kita akan membahasnya pada Pengertian dan Jenis-jenis Operator String dalam PHP. Tetapi, jika anda ingin melanjutkan tutorial tentang tipe data, selanjutnya kita akan membahas tipe data Boolean dalam PHP.

Tutorial Belajar PHP Part 16: Mengenal Tipe Data Boolean dan Cara Penulisan Boolean dalam PHP

Pada tutorial belajar PHP kali ini kita akan membahas tentang pengertian tipe data boolean, dan cara penulisan tipe data boolean dalam PHP.

Pengertian Tipe Data Boolean PHP

Tipe data boolean adalah tipe data paling sederhana dalam PHP dan juga dalam bahasa pemograman lainnya. Tipe data ini hanya memiliki 2 nilai, yaitu true (benar) dan false (salah).

Page 15: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tipe data boolean biasanya digunakan dalam operasi logika seperti kondisi if, dan perulangan (looping). Untuk penggunaan tipe data boolean akan kita pelajari pada waktu membahas tentang struktur pemograman PHP.

Pengertian Tipe Data Boolean PHP

Tipe data boolean adalah tipe data paling sederhana dalam PHP dan juga dalam bahasa pemograman lainnya. Tipe data ini hanya memiliki 2 nilai, yaitu true (benar) dan false (salah).

Tipe data boolean biasanya digunakan dalam operasi logika seperti kondisi if, dan perulangan (looping). Untuk penggunaan tipe data boolean akan kita pelajari pada waktu membahas tentang struktur pemograman PHP.

ara Penulisan Boolean dalam PHP

Penulisan boolean cukup sederhana, karena hanya memiliki 2 nilai, yakni true atau false. Penulisantrue atau false ini bersifat non-case sensitif, sehingga bisa ditulis sebagai true, True atau TRUE.

Berikut adalah contoh penulisan tipe data boolean:

<?php

$benar=true;

$salah=false;

echo "benar = $benar, salah = $salah";

// hasil output: benar = 1, salah =

?>

Jika anda menjalankan contoh kode PHP diatas, variabel $benar akan ditampilkan dengan angka 1, sedangkan variabel $false ditampilkan dengan string kosong (tanpa output). Hal ini karena jika ditampilkan menggunakan echo, tipe data boolean “dipaksa” berganti dengan tipe data string. (Lebih lanjut tentang konversi antar tipe data akan kita dalam Tutorial PHP: Cara Mengubah Tipe Data PHP.

Konversi Tipe Data Lain Menjadi Boolean

Karena PHP adalah loosely tiped language, atau bahasa pemograman yang tidak bertipe,sebuah variabel dapat di konversi menjadi tipe data lainnya.

Berikut adalah aturan tipe data boolean jika dikonversi dari tipe data lainnya:

Integer 0, dianggap sebagai false.

Float 0.0, dianggap sebagai false.

String kosong (“”) dan string “0” dianggap sebagai false.

Array tanpa elemen, dianggap sebagai false.

Page 16: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Objek dengan tanpa nilai dan fungsi, dianggap sebagai false.

Nilai null, dianggap sebagai false.

Selain 6 kondisi diatas, sebuah variabel akan dikonversi menjadi true.

Berikut adalah contoh variabel dan nilai konversinya dalam boolean:

<?php

$x = FALSE; // false

$x = ""; // false

$x = " "; // true

$x = 1; // true

$x = -2; // true

$x = "belajar"; // true

$x = 3.14; // true

$x = array(); // false

$x = array(12); // true

$x = "false"; // true

?>

Perhatikan beberapa konversi diatas, string “” (string kosong) dianggap sebagai false, namun string“ “ (string dengan karakter spasi) adalah true. Juga string “0” dianggap false, namun string “false” dianggap true.

Kesalahan dalam kode program sering terjadi karena “konversi” dari tipe data lain menjadi boolean, sehingga sedapat mungkin kita membuat variabel boolean dengan nilai yang pasti dan tidak bargantung kepada aturan “konversi” booelan dari PHP.

Dalam tutorial kali ini, kita telah membahas tentang tipe data boolean PHP serta hasil boolean dari konversi tipe data lain. Tipe data boolean ini akan banyak digunakan dalam operasi logika seperti if.

Dalam sesi tutorial selanjutnya, kita akan membahas Tipe Data Array dan Cara Penulisan Array dalam PHP.

Tutorial Belajar PHP Part 17: Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP

Pada tutorial belajar PHP kali ini kita akan membahas tentang tipe data bentukan: Array, serta cara penulisan array dalam PHP. Namun pada kesempatan ini saya hanya membahas sekilas tentangarray, karena PHP sendiri memiliki banyak fitur dan fungsi yang dapat digunakan untuk pemrosesan array. Pembahasan yang lebih lengkap akan saya bahas pada tutorial lainnya.

Page 17: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengertian Tipe Data Array

Array (atau larik dalam bahasa indonesia) bukanlah tipe data dasar seperti integer atau boolen,Array adalah sebuah tipe data bentukan yang terdiri dari kumpulan tipe data lainnya. Menggunakan array akan memudahkan dalam membuat kelompok data, serta menghemat penulisan dan penggunaan variabel.

Misalkan kita butuh untuk menyimpan 10 nama mahasiswa, maka kode PHPnya jika tanpa menggunakan array adalah sebagai berikut:

<?php

$nama0="Andri";

$nama1="Joko";

$nama2="Sukma";

$nama3="Rina";

$nama4="Sari";

//... dst sampai $nama10

?>

Kode PHP seperti diatas tidak salah, tetapi kurang efektif karena kita membuat 10 variabel untuk 10 nama. Bagaimana jika kita butuh 100 nama? maka akan dibutuhkan 100 variabel $nama.

Pembuatan kode program diatas akan lebih rapi jika ditulis kedalam bentuk array, karena kita hanya membutuhkan 1 buah variabel saja untuk menampung banyak nilai. Berikut adalah contoh penggunaan array:

<?php

$nama = array (

0=>"Andri",

1=>"Joko",

2=>"Sukma",

3=>"Rina",

4=>"Sari",)

//... dst sampai 10

?>

Cara Penulisan Array dalam PHP

PHP mendukung beberapa cara penulisan array, salah satunya dengan menggunakankonstruktor array PHP (array language construct) sebagai berikut:

Page 18: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$nama_variabel = array(

key => value,

key2 => value2,

key3 => value3,

...

)

Komponen array terdiri dari pasangan kunci (key) dan nilai (value). Key adalah penunjuk posisi dimana value disimpan. Perhatikan juga bahwa PHP menggunakan tanda panah (=>) untuk memberikan nilai kepada key.

Dalam mengakses nilai dari array, kita menggunakan kombinasi $nama_variabel dan nilai key-nya, dengan penulisan sebagai berikut:

$nama_variabel[key];

Berikut adalah contoh pengaksesan array dalam PHP:

<?php

//pembuatan array

$nama = array(

1=>"Andri",

2=>"Joko",

3=>"Sukma",

4=>"Rina",

5=>"Sari");

//cara akses array

echo $nama[1]; //Andri

echo "<br />";

echo $nama[2]; //Joko

echo "<br />";

echo $nama[3]; //Sukma

?>

Page 19: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam contoh diatas, saya menggunakan angka integer sebagai key (1,2,3…) dan string sebagaivalue (Andri, Joko, Sukma, …).

Selain mendefenisikan key secara langsung, PHP juga memperbolehkan penulisan array tanpa key, dan key itu secara otomatis akan diurutkan dari nilai 0, 1, 2, dst.

Berikut adalah contoh pendefenisian array tanpa key:

<?php

// pembuatan array

$nama = array("Andri","Joko","Sukma","Rina","Sari");

// pengaksesan array

echo $nama[1]; //Joko

echo "<br />";

echo $nama[2]; //Sukma

echo "<br />";

echo $nama[3]; //Rina

?>

Perhatikan bahwa sekarang, index atau key dari array dimulai dari angka 0, bukan 1. sehingga$nama[1] berisi Joko. nama Andri berada di $nama[0]. Dalam penggunaan array di dalam PHP, konsep “key” array dimulai dari angka 0 ini sangat penting untuk dipahami

Selain menggunakan angka, key dalam PHP dapat berisi string atau boolean. Sedangkan untuk value dapat menyimpan berbagai tipe data seperti integer, float, string, boolan, bahkan array lainnya. Array seperti ini disebut juga dengan istilah “associate array“.

Berikut contoh penggunaan array dengan kombinasi tipe data.

<?php

// pembuatan array

$coba = array (

2=>"Andri",

"dua"=>"2",

'tiga'=>3,

true=>true,

9=>"sembilan",);

Page 20: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

// pengaksesan array

echo $coba[2]; //Andri

echo "<br />";

echo $coba["dua"]; //2

echo "<br />";

echo $coba['tiga']; //3

echo "<br />";

echo $coba[true]; //1 (true di konversi menjadi 1)

echo "<br />";

echo $coba[9]; // sembilan

?>

Dari contoh diatas, saya membuat array $coba dengan menggunakan berbagai tipe data untuk keydan value, yaitu dengan tipe data integer, string, dan boolean. Namun jika key di defenisikan dengan tipe data boolean seperti pada baris ke-6, maka secara otomatis PHP akan mengkonversinya menjadi 1.

Page 21: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial kali ini kita telah membahas cara pembuatan Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP. Array merupakan sebuah tipe data yang sangat berguna dalam pembuatan program nantinya (terutama untuk menampilkan hasil dari database) dan PHP menyediakan banyak fungsi untuk mendukung pemrosesan array, hal ini akan kita bahas dalam pembahasan tentang array dalam tutorial lanjutan.

Dalam sesi tutorial selanjutnya, kita akan membahas operator-operator yang dapat digunakan untuk memproses 4 tipe dasar PHP, dan juga array.

Page 22: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial Belajar PHP Part 18: Pengertian Operand, Operator dan Urutan Operator dalam PHP

Dalam tutorial PHP sebelumnya, kita telah mempelajari 4 tipe data dasar dalam PHP, yaitu Integer, Float, String dan Boolean, serta 1 tipe data bentukan: Array. Dalam beberapa tutorial kedepan, saya akan membahas operasi-operasi yang bisa dilakukan dengan kelima tipe data dasar PHP ini.

Sebagai permulaan, kali ini saya akan mulai dengan membahas pengertian operand, operator dan urutan operator di dalam PHP.

Pengertian Operand dan Operator

Dalam bahasa pemograman, terdapat istilah operand dan operator. Operand adalah nilai asal yang digunakan didalam proses operasi, sedangkan operator adalah instruksi yang diberikan untuk mendapatkan hasil dari proses tersebut.

Contohnya, operasi: 5+2. Angka 5 dan 2 adalah operand, sedangkan tanda tambah (karakter +) adalah operator. Beberapa operator bisa mengubah nilai dari operandnya sendiri, walaupun kebanyakan hanya sebagai penghubung antar operand. Operator di dalam PHP banyak meminjam contoh karakter dari bahasa C dan Perl.

Jenis Operator Berdasarkan Jumlah Operand

Berdasarkan jumlah operand, operator dapat dibedakan menjadi 3, yaitu Operator Unary, Binary dan Ternary.

Operator unary adalah operator yang hanya memiliki 1 operand, contohnya karakter – (tanda minus). Tanda minus digunakan membuat sebuah angka menjadi negatif, contohnya: -5, atau karakter + untuk menegaskan nilai positif, contohnya: +5.

Operator binary adalah operator yang memiliki 2 operand. Operator jenis ini adalah yang paling banyak digunakan, misalkan 5×2, atau 10/3.

Operator Ternary adalah operator yang memiliki 3 operand. Didalam PHP hanya dikenal 1 operator ternary, yaitu operator kondisi (? :). Kita akan mempelajari operator ini dalam tutorial selanjutnya.

Urutan Prioritas Operator dalam PHP

Sama seperti membuat persamaan dalam matematika, operator dalam PHP juga memiliki urutan pemrosesan tersendiri. Misalkan terdapat kode program sebagai berikut:

$hasil1 = $a + $b/$c - $d;

$hasil2 = $a AND $b || $c AND $d;

Program tersebut akan dieksekusi oleh PHP dengan melihat urutan prioritasnya. Urutan prioritas ini menetapkan seberapa “dekat” operator dengan kedua operand-nya. Sebagai contoh, 2+3*5 hasilnya

Page 23: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

adalah 17, bukan 25. Hal ini karena operator perkalian (*) memiliki prioritas lebih tinggi daripada operator penambahan (+).

Namun urutan prioritas ini dapat “dipaksa” dengan menggunakan tanda kurung, jika anda ingin menjumlahkan 2 dan 3 terlebih dahulu, maka operasi sebelumnya bisa ditulis menjadi (2+3)*5 yang hasilnya adalah 25.

Berikut adalah tabel urutan prioritas operator dalam PHP. Operator paling atas lebih diprioritaskan dari pada operator dibawahnya, dan operator yang berada dalam baris yang sama memiliki urutan prioritas yang sama

Dari tabel diatas, terdapat beberapa operator yang berada dalam 1 baris. Bagaimana PHP memproses operator-operator yang memiliki urutan prioritas sama? Di dalam PHP, operator tersebut akan diproses berdasarkan kolom arah proses.

Page 24: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Kolom arah proses (atau dalam manual PHP disebut dengan Associativity) digunakan untuk melihat bagaimana arah proses operator dijalankan.

Misalkan operator kurang (-), di dalam tabel dapat dilihat bahwa operator kurang (-) memiliki arah proses “kiri”, sehingga operasi 5 – 3 – 1 oleh PHP diproses dari kiri ke kanan. 5 – 3 – 1 diproses menjadi (5 – 3) – 1, dan hasilnya adalah 1.

Namun di dalam tabel, operator “=” memiliki arah proses “kanan”, sehingga $a = $b = $c, akan diproses dari kanan terlebih dahulu, menjadi $a = ($b = $c).

Jika arah proses tersebut “non-arah”, berarti operator itu tidak bisa digunakan secara berdampingan. Misalkan 4 < 6 > 2, tidak dapat diproses oleh PHP, namun 1 <= 1 == 1 bisa diproses karena operator == memiliki urutan prioritas lebih rendah daripada <=.

Selain untuk memaksakan urutan prioritas, penggunaan tanda kurung juga akan memudahkan pembacaan program, bahkan ketika tidak diperlukan. Misalkan $a AND $b OR $c, akan lebih mudah dimengerti ketika ditulis menjadi ($a AND $b) OR $c, walaupun sebenarnya operator AND memiliki urutan prioritas lebih tinggi daripada OR.

Didalam tutorial PHP selanjutnya, kita akan membahas operator-operator didalam tabel diatas secara satu persatu beserta contoh penggunaannya.

Tutorial Belajar PHP Part 19: Pengertian dan Cara Penulisan Fungsi var_dump() dalam PHP

Dalam tutorial kali ini kita akan membahas cara penggunaan salah satu fungsi penting dalam proses pembuatan program ataupun pencarian kesalahan (debugging), yaitu fungsi var_dump(). Dalam pembahasan tentang operator, kita akan sering menggunakan fungsi var_dump() untuk melihat proses yang terjadi di dalam PHP.

Pengertian Fungsi var_dump()

Karena sifat variabel dalam PHP yang tidak bertipe (Loosely Typed Language), dalam pembuatan program PHP sebuah tipe variabel dapat “berubah” menjadi tipe lainnya. Perubahan ini bergantung operator yang digunakan. Seperti yang kita lihat pada saat pembahasan tentang tipe data boolean , tipe data string “aku”, dapat menjadi tipe data boolean TRUE.

Perhatikan contoh kode berikut:

<?php

$a= 5; $b=8; $c=4.5;

$hasil1=$a+$b;

$hasil2=$a+$c;

$hasil3=$a.$b;

Page 25: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "\$hasil1: $hasil1 <br/>"; //13

echo "\$hasil2: $hasil2 <br/>"; //9.5

echo "\$hasil3: $hasil3 <br/>"; //"58"

?>

Dari contoh kode diatas, variabel $a dan $b bertipe integer, dan variabel $c bertipe float. Namun variabel $hasil1, $hasil2 dan $hasil3 akan bertipe integer, float, dan string secara berurutan.

Salah satu aturan di dalam PHP, jika operator penyambungan string (karakter titik) digunakan untuk tipe data integer, secara otomatis PHP akan mengkonversinya menjadi string, sehingga: 5(integer) + 8(integer) = 13(integer)

5(integer) . 8(integer) = 58(string)

Proses konversi ini dilakukan secara otomatis oleh PHP, sehingga kita memerlukan sebuah fungsi untuk menyetahui secara lebih detail tipe data dan nilai sebuah variabel. Untuk keperluan inilah PHP menyediakan fungsi var_dump().

Cara Penulisan Fungsi var_dump()

Untuk memastikan tipe data dari sebuah variabel, PHP menyediakan fungsi yang sangat berguna, terutama untuk proses pengujian dan pencarian kesalahan (debugging), yakni fungsi var_dump.

Fungsi var_dump membutuhkan inputan variabel yang akan diperiksa. Berikut contoh penggunaan fungsi var_dump:

<?php

$a= 5; $b=8; $c=4.5;

$hasil1=$a+$b;

$hasil2=$a+$c;

$hasil3=$a.$b;

echo "\$hasil1:"; var_dump($hasil1); //int(13)

echo "<br \>"; //

echo "\$hasil2:"; var_dump($hasil2); //float(9.5)

echo "<br \>";

echo "\$hasil3:"; var_dump($hasil3); //string(2) "58"

?>

Page 26: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari tampilan hasil kode PHP tersebut, fungsi var_dump() selain menampilkan hasil variabel, juga memperlihatkan jenis tipe dari variabel tersebut. Fitur ini akan sangat berguna dalam proses pembuatan kode program PHP yang lebih rumit untuk menghindari kesalahan.

Perhatikan pula hasil dari var_dump($hasil3), hasil fungsi var_dump adalah string(2) “58”. Angka 2 disini menjelaskan panjang dari variabel string tersebut.

Di dalam pembahasan tentang operator, saya akan sering menggunakan fungsi var_dump ini nantinya. Untuk memulai pembahasan tentang operator dalam PHP, saya akan memulai dengan jenis-jenis operator aritmatika dalam PHP.

Tutorial Belajar PHP Part 20: Pengertian dan Jenis-jenis Operator Aritmatika dalam PHP

Operator Aritmatika (Arithmetic Operators) atau operator matematika adalah operator dasar yang sering kita gunakan sehari-hari. Dalam tutorial kali ini saya akan membahas tentang pengertian, jenis dan cara penggunaan operator matematika di dalam PHP.

Pengertian Operator Aritmatika dalam PHP

Operator Aritmatika adalah operator matematis yang terdiri dari operator penambahan, pengurangan, perkalian, pembagian, modulus, plus, dan minus.

Jenis Operator Aritmatika dalam PHP

Didalam PHP terdapat 7 jenis operator aritmatika, berikut ke tujuh operator tersebut:

Kebanyakan operator aritmatika dalam PHP bertipe binary yakni membutuhkan 2 operand, kecuali operator minus (-) dan plus (+) yang merupakan operator tipe unary (hanya membutuhkan 1 operand).

Page 27: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari ke 7 operator aritmatika dalam PHP tersebut, operator modulus ($a % $b) mungkin terdengar baru. Operator ini menghasilkan sisa hasil bagi dari hasil pembagian. Misalkan 10 % 3, hasilnya adalah 1. Biasanya operator modulus ini digunakan bersama-sama dengan operator pembagian (/).

Cara Penggunaan Operator Aritmatika di dalam PHP

Penggunakan operator aritmatika di dalam PHP relatif mudah, karena kita telah terbiasa dengan operator ini.

Berikut adalah contoh kode program, cara penggunaan operator aritmatika dalam PHP:

<?php

$hasil1= -3;

$hasil2=3+5;

$hasil3=8-4.5;

$hasil4=2*5;

$hasil5=3+8/5-3;

$hasil6=10 % 4;

echo "\$hasil1:"; var_dump($hasil1); // $hasil1:int(-3)

echo "<br \>";

echo "\$hasil2:"; var_dump($hasil2); // $hasil2:int(8)

echo "<br \>";

echo "\$hasil3:"; var_dump($hasil3); // $hasil3:float(3.5)

echo "<br \>";

echo "\$hasil4:"; var_dump($hasil4); // $hasil4:int(10)

echo "<br \>";

echo "\$hasil5:"; var_dump($hasil5); // $hasil5:float(1.6)

echo "<br \>";

echo "\$hasil6:"; var_dump($hasil6); // $hasil6:int(2)

?>

Pada kode program diatas, saya menggunakan fungsi var_dump() untuk menampilkan hasil perhitungan, sehingga kita bisa melihat tipe data dari masing-masing variabel.

Page 28: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari hasil var_dump(), terlihat bahwa variabel $hasil3 dan $hasil5 bertipe float. Hal ini dikarenakan perhitungan aritmatika pada baris ke-4 dan ke-6 menghasilkan angka desimal, sehingga secara otomatis variabel tersebut tidak dapat ditampung sebagai integer, melainkan harus float.

Namun jika hasil operasi matematis tersebut menghasilkan bilangan bulat, PHP akan menyimpannya sebagai tipe data int (integer), seperti variabel $hasil1, $hasil2, $hasil4 dan $hasil6.

Pada perhitungan baris ke-6 yaitu persamaan $hasil5=3+8/5-3, hasilnya adalah 1.6. Hal ini karena operator pembagian memiliki prioritas lebih tinggi daripada operator tambah dan kurang. Operasi 3+8/5-3 dikerjakan oleh PHP sebagai (3+(8/5))-3. Namun untuk hal ini, disarankan menggunakan tanda kurung secara tertulis agar memudahkan dalam membaca alur program, dari pada bergantung kepada aturan prioritas operator PHP.

Namun jika tidak ditegaskan dengan menggunakan tanda kurung, urutan prioritas operator matematis dalam PHP mengikuti aturan tabel yang kita bahas pada tutorial Pengertian Operand, Operator dan Urutan Operator dalam PHP

Itulah operator-operator dasar aritmatika dalam PHP. Untuk keperluan yang lebih spesifik seperti pemangkatan, logaritma, exponensial dan sinus, PHP menyediakan fungsi matematika (Mathematical Functions) yang akan kita bahas pada tutorial PHP lanjutan.

Tutorial Belajar PHP Part 21: Pengertian dan Jenis-jenis Operator String dalam PHP

String merupakan tipe dasar yang paling sering digunakan dalam PHP. Dalam tutorial kali ini kita akan membahas jenis dan cara penggunaan operator string dalam PHP (String Operators) .

Pengertian dan Jenis Operator String dalam PHP

Dalam PHP, hanya terdapat 1 jenis operator String, yakni operasi penyambungan (concatenation) string. Operator ini menggunakan karakter titik (.).

Operator penyambungan string ini membutuhkan 2 inputan yang bertipe data string. Hasil dari operator ini adalah sebuah string yang terdiri dari sambungan kedua string tersebut.

Cara Penggunaan Operator String di dalam PHP

Berikut adalah contoh kode program cara penggunaan operator string dalam PHP:

<?php

$a = "Hello ";

$hasil = $a . "World!";

echo $hasil; // Hello World!

echo "<br />";

$a = "belajar ";

$b = "PHP ";

Page 29: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$c = "di Duniailkom.com";

$hasil= "Saya sedang ".$a.$b.$c;

echo $hasil; // Saya sedang belajar PHP di Duniailkom.com

?>

Pada kode program diatas, saya menyambung beberapa string sederhana menggunakan operator concatenation (tanda .).

Cara Alternatif: Penyambung string dengan kurung kurawal { }

Didalam PHP, tanda kurung kurawal (karakter { dan }) untuk variabel bisa berfungsi sebagaipenyambung string. Contoh kode program diatas dapat juga ditulis menjadi:

<?php

$a = "Hello ";

$hasil = "{$a} World!";

echo $hasil; // Hello World!

echo "<br />";

$a = "belajar ";

$b = "PHP ";

$c = "di Duniailkom.com";

$hasil= "Saya sedang {$a}{$b}{$c}";

echo $hasil; // Saya sedang belajar PHP di Duniailkom.com

?>

Contoh diatas “memanfaatkan” sifat pendefenisian string menggunakan tanda kutip dua (double quote). Seperti yang telah kita bahas pada tutorial Mengenal Tipe Data String dan Cara Penulisan String dalam PHP, jika pendefenisian string menggunakan double quote (karakter “), maka setiap variabel akan diproses oleh PHP.

Namun kita tidak bisa menulis :

$hasil= "Saya sedang $a$b$c"; //akan menghasilkan error

Karena yang akan diproses PHP adalah 1 variabel saja, yakni $a$b$c. sehingga kita perlu menambahkan tanda kurung kurawal (karakter { dan }) untuk memisahkan ketiga string menjadi{$a}{$b}{$c}.

Beberapa situs referensi PHP, menyebutkan bahwa cara ini “lebih cepat” untuk menyambung string daripada menggunakan operator titik (.), Namun anda tidak akan melihat perbedaanya untuk kode program sederhana.

Page 30: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial ini kita telah membahas tentang operator penyambungan (concatenation) stringdalam PHP. Namun PHP juga menyediakan banyak fungsi pemrosesan string untuk keperluan lebih lanjut, seperti memecah string menjadi array, memotong string, dll. Kita akan membahas fungsi string ini pada lain kesempatan.

Tutorial Belajar PHP Part 22: Pengertian dan Jenis-jenis Operator Logika dalam PHP

Operator logika digunakan untuk membandingkan 2 inputan kondisi boolean, yakni true ataufalse. Dalam tutorial kali ini kita akan membahas tentang jenis dan cara penggunaan operator logika (Logical Operators) dalam PHP, serta memahami pengertian prinsip short-circuit dalam operasi logika PHP.

Pengertian Operator Logika dalam PHP

Operator Logika adalah operator yang digunakan untuk membandingkan 2 kondisi logika, yaitu logika benar (TRUE) dan logika salah (FALSE). Operator logika sering digunakan untuk kodisi IF, atau untuk keluar dari proses perulangan (looping).

Jenis operand dalam operator logika ini adalah variabel dengan tipe boolean. Namun jikaoperand bukan boolean, akan “dikonversi” menjadi boolean oleh PHP (aturan “konversi” ini telah kita bahas pada tutorial tentang tipe data boolean PHP).

Jenis-jenis Operator Logika dalam PHP

Jenis-jenis operator logika dalam PHP dapat dilihat dari tabel berikut:

Perbedaan dari operator AND dengan &&, dan OR dengan || terkait dengan cara penulisan dan aturan “kekuatan” operator. Operator && dan || memiliki “kekuatan” lebih tinggi dari pada AND danOR, sehingga baris perintah: $a AND $b || $c, akan dieksekusi oleh PHP menjadi $a AND ($b || $c).

Dari tabel diatas, saya hanya memberikan hasil untuk kondisi TRUE, maka selain kondisi tersebut, hasilnya adalah FALSE.

Cara Penggunaan Operator Logika di dalam PHP

Page 31: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Berikut adalah contoh kode program, cara penggunaan operator logika dalam PHP:

<?php

$hasil1 = true and false;

echo '$hasil1 = ';

echo var_dump($hasil1)."<br/>"; // $hasil1 = bool(true)

$hasil2 = (true and false);

echo '$hasil2 = ';

echo var_dump($hasil2)."<br/>"; // $hasil2 = bool(false)

$hasil3 = (true xor false);

echo '$hasil3 = ';

echo var_dump($hasil3)."<br/>"; // $hasil3 = bool(true)

$hasil4 = (false or true && false);

echo '$hasil4 = ';

echo var_dump($hasil4)."<br/>"; // $hasil4 = bool(false)

$a=true;

$b=false;

$hasil5 = ($a and $b || $a or b);

echo '$hasil5 = ';

echo var_dump($hasil5); // $hasil5 = bool(true)

?>

Saya akan membahas kode program diatas:

Pada baris 2, operasi logika yang dijalankan adalah $hasil1 = true and false, yang harusnya$hasil1 akan bernilai false (berdasarkan prinsip operator and: jika salah satu saja ada yang false, maka hasilnya adalah false)

Namun seperti yang terlihat dalam tampilan saat program dijalankan, variabel $hasil1 bernilaitrue!. Apa yang sebenarnya terjadi? Hal ini kembali kepada prinsip urutan prioritas operator.

Page 32: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda perhatikan tabel urutan operator pada tutorial urutan operator dalam PHP, operator assignment (pendefenisian variabel) yaitu menggunakan tanda sama dengan (=) memiliki priotitas lebih tinggi dari pada operator logika and. Sehingga yang sebenarnya diproses adalah ($hasil1 = true) and false, sehingga $hasil1 akan bernilai true.

Kesalahan pemograman seperti ini akan sulit dideteksi, sehingga anda disarankan menggunakan tanda kurung untuk menegaskan urutan program.

Pada baris ke-6, untuk variabel $hasil2 saya mengulangi operasi yang sama dengan baris 2, namun kali ini dengan menggunakan tanda kurung untuk memberitahukan kepada PHP bahwa operasi logikalah yang harus dijalankan pertama kali, baru setelah itu proses assigment yang kali ini berjalan sebagaimana harusnya (true and false menghasilkan false). Dan variabel $hasil2 bernilaifalse.

Pada baris ke-10, variabel $hasil3 bernilai true, karena operator xor akan menghasilkan trueapabila salah satu operand bernilai true.

Untuk baris ke-14, $hasil4 = (false or true && false), urutan proses operasi dimulai terlebih dahulu pada operator && karena memiliki urutan prioritas lebih tinggi daripada operator or, sehingga yag diproses oleh PHP adalah (false or (true && false)), dan menghasilkan nilai false.

Pada contoh terakhir baris ke-20, operator || akan diproses terlebih dahulu, sehingga persamaanya menjadi $hasil5 = ($a and ($b || $a) or b).

Dalam membuat operasi logika ini, sedapat mungkin untuk mengujinya terlebih dahulu, karena kesalahan program pada logika akan sulit terdeteksi.

Pengertian Prinsip Short Circuit dalam operasi Logika PHP

PHP menjalankan operasi logika dengan prinsip short-circuit, yaitu jika dengan memeriksa satu perintah saja sudah didapati hasil logikanya, maka perintah lain tidak akan dijalankan. Contohnya:

$hasil = $a AND $b AND $c AND $d;

Jika pada saat program dijalankan $a sudah bernilai FALSE, maka variabel $b, $c dan $d tidak akan diperiksa lagi, karena apapun nilai variabel tersebut, hasilnya akan tetap FALSE.

Hal ini akan berguna untuk kasus-kasus tertentu, seperti contoh berikut:

<?php

$result = fopen($filename) or exit();

?>

Fungsi exit() dalam kode PHP tersebut (yang akan membuat program PHP berhenti diproses) tidak akan dijalankan selama fopen($filename) bernilai true. Fungsi short-circuit ini sering digunakan dalam contoh-contoh aplikasi PHP.

Dalam tutorial ini kita telah mempelajari operator logika dalam PHP, untuk selanjutnya kita akan membahas operator perbandingan.

Tutorial Belajar PHP Part 23: Pengertian dan Jenis-jenis Operator Perbandingan dalam PHP

Page 33: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial kali ini kita akan mempelajari jenis dan cara penggunaan operator perbandingan (Comparison Operators) dalam PHP.

Pengertian Operator Perbandingan dalam PHP

Sesuai dengan namanya, operator perbandingan membandingkan nilai dari 2 operand. Hasilnya selalu salah satu dari TRUE atau FALSE. Hasil perbandingan akan bernilai TRUE jika kondisi perbandingan tersebut benar, atau FALSE jika kondisinya salah.

Operand untuk operator perbandingan ini bisa berupa tipe data angka (integer atau float), maupun bertipe string. Operator perbandingan akan memeriksa nilai dan (untuk beberapa operator) juga tipe data dari operand.

Jenis-jenis Operator Perbandingan dalam PHP

Jenis-jenis dari operator perbandingan dalam PHP dapat dilihat dari tabel dibawah ini:

Dikarenakan operasi perbandingan dapat memiliki operan berupa angka dan string, PHP memiliki aturan sebagai berikut:

Page 34: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari tabel diatas dapat dilihat bahwa selain membandingkan angka dengan angka, PHP juga membolehkan perbandingan angka dengan string, array, bahkan objek. Namun dalam prakteknya kita akan sering membandingkan angka.

Cara Penggunaan Operator Perbandingan di dalam PHP

Berikut adalah beberapa contoh penggunaan operator perbandingan dalam PHP:

<?php

echo "1. 12 < 14 = "; var_dump(12<14); // bool(true)

echo "<br />";

echo "2. 14 < 14 = "; var_dump(14<14); // bool(false)

echo "<br />";

echo "3. 14 <= 14 = "; var_dump(14<=14); // bool(true)

echo "<br />";

echo "4. 10 <> '10' = "; var_dump(10<>'10'); // bool(false)

echo "<br />";

Page 35: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "5. 10 == '10' = "; var_dump(10=='10'); // bool(true)

echo "<br />";

echo "6. 10 === '10' = "; var_dump(10==='10'); // bool(false)

echo "<br />";

echo "7. '150' == '1.5e2' = "; var_dump('150'=='1.5e2'); // bool(true)

echo "<br />";

echo "8. 'duniailkom' == 0 = "; var_dump('duniailkom'==0); // bool(true)

echo "<br />";

?>

Dalam contoh kode PHP diatas, saya menggunakan fungsi var_dump() untuk melihat hasil dari perbandingan. Contoh 1 sampai 3 merupakan operasi perbandingan aritmatika biasa.

Pada contoh ke 4, 10 <> ’10’ = FALSE, karena PHP menganggap kedua operand adalah sama, sehingga jika diberikan operator tidak sama dengan (<>), maka hasilnya FALSE. Perhatikan bahwa tipe data kedua angka berbeda, saya menambahkan tanda petik untuk membuah string ‘10’, namun PHP mengkonversinya menjadi integer 10 ketika membandingkan (sesuai aturan tabel diatas).

Pada contoh ke 5, 10 == ’10’ = TRUE, karena alasan yang sama dengan penjelasan contoh ke 4. String ‘10’ dikonversi terlebih dahulu menjadi angka, lalu dibandingkan, sehingga hasilnya menjadiTRUE.

Page 36: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk contoh ke 6, 10 === ’10’ = FALSE, karena operator === selain membandingkan nilai, juga membandingkan tipe data dari opearand, sehingga string ‘10’ dianggap tidak sama dengan integer10. Hal ini berbeda dengan contoh ke 5.

Untuk contoh ke 7, ‘150’ == ‘1.5e2’ = TRUE, karena seluruh string yang berupa angka dikonversi menjadi angka terlebih dahulu, dan ‘1.5e2’ adalah penulisan scientific dari 1,5 x 10^2, yang hasilnya adalah 150. Namun sama seperti contoh ke 6, jika kita mengganti operator ‘==’ dengan ‘===’, maka hasilnya akan FALSE.

Pada contoh terakhir, no 8. Saya membandingkan string dengan angka, sehingga string ‘duniailkom’ dikonversi menjadi integer bernilai 0, dan baru disamakan dengan operan kedua, yakni angka 0. Karena 0==0, maka hasilnya = TRUE.

Operator perbandingan ini sering digunakan untuk kondisi IF, misalkan jika $nama_user ada di dalam database, maka jalankan kode program. Lebih lanjut tentang penggunaan operator perbandingan, akan kita bahas pada tutorial lanjutan.

Tutorial Belajar PHP Part 24: Pengertian dan Jenis-jenis Operator Increment dan Decrement PHP

Operator Increment dan Decrement adalah operator yang mempersingkat pembuatan kode program. Dalam tutorial kali ini kita akan membahas Pengertian, Jenis-jenis serta cara penggunaan Operator Increment dan Decrement dalam PHP.

Pengertian Operator Increment dan Decrement PHP

Operator Increment dan Decrement adalah penyebutan untuk operasi sepert $a++, dan $a–. Jika anda telah mempelajari bahasa pemograman lain, operasi increment dan decrement ini sering digunakan dalam perulangan  (looping).

Increment digunakan untuk menambah variabel sebanyak 1 angka, sedangkan decrementdigunakan untuk mengurangi variabel sebanyak 1 angka. Penulisannya menggunakan tanda tambah 2 kali untuk increment, dan tanda kurang 2 kali untuk decrement. Penempatan tanda tambah atau kurang ini boleh diwal, atau diakhir variabel, namun keduanya memiliki perbedaan, sehingga terdapat 4 jenis increment dan decrement dalam PHP.

Jenis Operator Increment dan Decrement dalam PHP

Berikut adalah tabel 4 jenis operator increment dan decrement dalam PHP:

Page 37: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari tabel diatas terlihat bahwa terdapat 2 jenis increment, yaitu Pre-increment, dan Post-Increment, dan 2 jenis decrement, yaitu Pre-decrement dan Post-decrement. Perbedaan keduanya terletak pada posisi mana tanda tambah atau kurang diletakkan.

Cara Penggunaan Operator Increment dan Decrement

Untuk memahami cara penggunaan operator increment dan decrement, berikut contoh kode program PHP:

<?php

echo "<h3>Postincrement</h3>";

$a = 5;

echo "\$a = $a <br />";

echo "\$a akan bernilai 5: " . $a++ . " (\$a++)<br />";

echo "\$a akan bernilai 6: " . $a . "<br />";

echo "<h3>Preincrement</h3>";

$a = 5;

echo "\$a = $a <br />";

echo "\$a akan bernilai 6: " . ++$a . " (++\$a)<br />";

echo "\$a akan bernilai 6: " . $a . "<br />";

echo "<h3>Postdecrement</h3>";

$a = 5;

echo "\$a = $a <br />";

echo "\$a akan bernilai 5: " . $a-- . " (\$a--)<br />";

echo "\$a akan bernilai 4: " . $a . "<br />";

echo "<h3>Predecrement</h3>";

$a = 5;

echo "\$a = $a <br />";

echo "\$a akan bernilai 4: " . --$a . " (--\$a)<br />";

echo "\$a akan bernilai 4: " . $a . "<br />";

Page 38: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Contoh kode program diatas terlihat agak rumit, namun sebagian besar hanyalah pengaturan format agar hasilnya tampil rapi seperti berikut ini:

Terlihat bahwa Post-increment ($a++), akan memberikan hasilnya dulu, baru menambahkan nilai variabel $a sebanyak 1 angka, namun dengan Pre-increment, $a akan ditambahkan 1 angka, baru nilainya ditampilkan. Begitu juga hal nya dengan operasi Post-decrement dan Pre-decrement.

Dalam tutorial PHP kali ini kita telah membahas tentang operator Increment dan Decrementdalam PHP dan perbedaan Post-Increment dan Pre-Increment. Memahami perbedaan ini akan memudahkan kita dalam menulis dan menghindari penulisan kode program yang tidak diinginkan.

Tutorial Belajar PHP Part 25: Pengertian dan Jenis-jenis Operator Assignment dalam PHP

Page 39: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial kali ini saya akan membahas tentang Pengertian dan Jenis-jenis Operator Assignment (Assignment Operators) dalam PHP, serta perbedaan antara Assignment by Value danAssignment by References.

Pengertian Operator Assignment dalam PHP

Operator assignment adalah operator untuk menambahkan, atau memasukkan sebuah nilai kedalam variabel. PHP memiliki 3 jenis operator assigment, dan kita telah menggunakan 2 diantaranya, yaitu tanda = untuk mengdefenisikan variabel, dan tanda => untuk mengisi nilai dariarray.

Jenis-jenis Operator Assigment dalam PHP

PHP mengenal 3 jenis operator assigment, yaitu Assigment dengan Nilai (Assignment by Value),Assigment Array, dan Assigment dengan Referensi (Assignment by Reference).

Pengertian Operator Assigment dengan Nilai (Assignment by Value)

Assigment dengan Nilai atau dalam istilah pemograman dikenal dengan Assignment by Value , adalah proses pemberian nilai kedalam sebuah variabel dengan meng-copy nilai atau value dari variabel lain.

PHP menggunakan tanda sama dengan (=) untuk Assignment by Value. Secara tidak sadar, kita telah banyak menggunakan operator ini dalam berbagai contoh pada tutorial sebelumnya. Pada saat menggunakan operator “=”, PHP meng-copy nilai (atau value), dari sisi kanan operator ke sisi kiri.

Operator Assignment by Value (dan juga operator assigment lainnya) memiliki arah proses kanan(dapat dilihat dalam tabel urutan proses pada Tutorial PHP: Pengertian Operand, Operator dan Urutan Operator dalam PHP) sehingga proses pemberian nilai kepada sebuah variabel dimulai darikanan, seperti contoh berikut:

<?php

$a = 20;

$b = 15;

$c = 5;

echo "\$a = $a, \$b = $b, \$c = $c";

echo "<br />";

// hasil proses: $a = 20, $b = 15, $c = 5

$a = $b = $c+5;

echo "\$a = $a, \$b = $b, \$c = $c";

// hasil proses: $a = 10, $b = 10, $c = 5

Page 40: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Pada contoh kode PHP diatas, saya mendefenisikan 3 variabel: $a, $b, dan $c dengan operatorassigment by value. Perhatikan pada baris terakhir, dimana saya menuliskan kode $a = $b = $c+5, yang urutan pemrosesannya di mulai dari kanan ke kiri, sehingga yang diproses oleh PHP menjadi:$a = ($b = ($c+5)).

Pengertian Operator Assigment Array

Operator Assigment array adalah operator assigment untuk menginput nilai kedalam array. Operator ini menggunakan tanda panah (=>). Kita telah membahas cara pembuatan, dan penggunaan operator ini pada tutorial Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP.

Pengertian Assigment dengan Referensi (Assignment by Reference)

Assigment dengan referensi atau dalam istilah programmingnya: Assignment by Reference, adalah operator assigment khusus yang digunakan untuk men-copy nilai referensi dari sebuahvariabel.

Perhatikan contoh kode PHP berikut ini:

<?php

$a = 20;

$b = $a;

echo "\$a = $a, \$b = $b";

echo "<br />";

// hasil proses: $a = 20, $b = 20

$a = $a + 5;

echo "\$a = $a, \$b = $b";

echo "<br />";

// hasil proses: $a = 25, $b = 20

$b = $b + 10;

echo "\$a = $a, \$b = $b";

// hasil proses: $a = 25, $b = 30

Page 41: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Dalam kode program diatas, saya membuat 2 buah variabel, yaitu $a dan $b. Variabel $a saya input dengan nilai 20, sedangkan variabel $b men-copy nilai dari variabel $a. Selanjutnya saya tampilkan kedua variabel tersebut menggunakan perintah echo.

Pada baris ke-9 saya menambahkan nilai variabel $a dengan 5, lalu menampilkan hasil kedua variabel tersebut. Selanjutnya pada baris ke-14 saya menambahkan $b dengan 10, lalu menampilkan hasilnya

Kata kunci disini adalah, variabel $b hanya men-copy nilai yang ada pada variabel $a, sehingga kedua variabel memiki nilai sendiri-sendiri dan terpisah, seperti yang terlihat dari hasil echo.

Bagaimana jika yang saya inginkan adalah: karena variabel $a=$b, maka ketika saya merubah nilai salah satu variabel, nilai pada variabel yang lain juga ikut berubah. Fitur inilah yang bisa didapatkan dengan Assignment by Reference.

Assignment by Reference dalam PHP menggunakan operator “= &”.

Perhatikan contoh kode PHP berikut yang sama persis dengan contoh sebelumnya, namun saya mengganti baris $b = $a, menjadi $b = &$a:

<?php

$a = 20;

$b = &$a;

echo "\$a = $a, \$b = $b";

echo "<br />";

// hasil proses: $a = 20, $b = 20

$a = $a + 5;

echo "\$a = $a, \$b = $b";

echo "<br />";

// hasil proses: $a = 25, $b = 25

$b = $b + 10;

echo "\$a = $a, \$b = $b";

// hasil proses: $a = 35, $b = 35

?>

Page 42: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Seperti yang dapat dilihat, bahwa sekarang kedua variabel ($a dan $b), seolah-olah saling terikat, sehingga ketika sebuah variabel diubah nilainya, variabel yang lain juga ikut berubah.

Perbedaan Assigment By Value, dengan Assigment By Reference

Agar lebih jelas, berikut adalah Perbedaan Proses Assigment By Value, dengan Assigment By Reference

Didalam bahasa pemograman (dan juga PHP), sebuah nilai dari variabel di simpan pada sebuah alamat tertentu di memory komputer. Alamat memory inilah yang dimaksud dengan referensi.

Misalkan variabel $a memiliki nilai 20, dan berada pada lokasi memory 1013, ketika saya membuat kode program $b=$a, maka nilai (atau value) dari variabel $a di-copy ke dalam variabel $b yang mungkin saja akan berada pada lokasi memory 1014. Sehingga saat ini ada 2 buah lokasi memori untuk menampung nilai dari masing-masing variabel, $a pada lokasi 1013 dengan nilai 20, dan $bpada lokasi 1014 dengan nilai 20 (dicopy dari nilai $a).

Ketika saya menambahkan variabel $a dengan operasi $a = $a + 5, nilai pada lokasi memory 1013akan menjadi 25, namun karena memiliki lokasi memory yang berbeda, nilai pada variabel $b akan tetap 20. Inilah proses yang terjadi ketika menggunakan Assigment By Value.

Bagaimana dengan Assigment By Reference?

Ketika variabel $a dengan nilai 20 berada di lokasi memory 1013, dan saya menjalankan perintah$b=&$a, maka yang terjadi adalah, alamat lokasi memory ( referensi ) untuk variabel $b dicopy dari nilai variabel $a, sehingga kedua variabel memiliki 1 alamat memory yang sama, yaitu 1013.

Karena alamat untuk variabel $a dan $b sama, maka ketika salah satu variabel mengubah nilai di alamat 1013, maka nilai tersebut akan berubah. Ketika saya menambahkan nilai variabel $a denganoperasi $a = $a + 5, nilai pada lokasi memory 1013 akan menjadi 25. Dan ketika saya tampilkan nilai dari variabel $b, maka PHP akan mencari nilai di lokasi memori 1013, dan menampilkan hasilnya, yakni 25. Kedua variabel $a dan $b terikat dengan 1 lokasi memory yang sama.

Dalam tutorial ini kita telah mempelajari tentang pengertian dan jenis operator assigment, serta perbedaan antara assigment by value dengan assigment by references. Konsep ini bersifat universal untuk berbagai bahasa pemograman (tidak hanya PHP).

Tutorial Belajar PHP Part 26: Pengertian dan Jenis-jenis Operator Bitwise dalam PHP

Melanjutkan pembahasan tentang operator, dalam tutorial ini kita saya akan membahas Pengertian dan Jenis-jenis Operator Bitwise (Bitwise Operator) dalam PHP.

Pengertian Operator Bitwise dalam PHP

Operator bitwise (Bitwise Operators) adalah operator khusus yang disediakan PHP untuk menangani proses logika untuk bilangan biner. Bilangan biner atau binary adalah jenis bilangan yang hanya terdiri dari 2 jenis angka, yakni 0 dan 1. Jika operand yang digunakan untuk operator ini bukan bilangan biner, maka akan dikonversi secara otomatis oleh PHP menjadi bilangan biner.

Dalam penerapannya, operator bitwise tidak terlalu sering digunakan, kecuali anda membuah program yang langsung berkaitan dengan pemrosesan bilangan biner.

Page 43: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jenis-Jenis Operator Bitwise PHP

PHP mendukung 6 jenis operator bitwise. Daftar lengkapnya dapat dilihat pada tabel dibawah ini:

Cara Penggunaan Operator Bitwise dalam PHP

Seluruh operator bitwise tersebut diproses dalam bentuk biner. Berikut contoh cara penggunaan operator bitwise dalam PHP:

<?php

$a=0b10110101;

$b=0b01101100;

echo "\$a = 10110101 = $a"; echo "<br />";

echo "\$b = 01101100 = $b"; echo "<br />";

echo "<br />";

echo "==Hasil Bitwise=="; echo "<br />";

$hasil = $a & $b;

echo "1. \$a & \$b = $hasil"; echo "<br />";

Page 44: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$hasil = $a | $b;

echo "2. \$a | \$b = $hasil"; echo "<br />";

$hasil = $a ^ $b;

echo "3. \$a ^ \$b = $hasil"; echo "<br />";

echo "4. ~\$a = ".~$a; echo "<br />";

$hasil = $a >> 1;

echo "5. \$a >> 1 = $hasil"; echo "<br />";

$hasil = $b << 2;

echo "6. \$b << 2 = $hasil"; echo "<br />";

?>

Dalam contoh kode PHP diatas, saya mendefenisikan 2 variabel yakni $a dan $b, dan memberikan nilai awal berupa angka biner ke

Page 45: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

dalam kedua variabel tersebut (cara penulisan angka biner telah kita bahas pada tutorial Tutorial PHP: Mengenal Tipe Data Integer dan Cara Penulisan Integer dalam PHP)

Variabel $a berisi angka biner: 10110101, yang nilai desimalnya adalah 181, dan variabel $b berisi angka biner: 01101100, yang nilai desimalnya adalah 108.

Pada contoh 1, saya melakukan operasi & terhadap kedua variabel. Operasi bitwise “and” ini akan memproses bit per bit dari kedua variabel, jika kedua bit sama-sama 1, maka hasilnya juga 1, selain kondisi tersebut, nilai akhirnya adalah 0. Berikut perhitungan bitwise “and”:

$a = 10110101

$b = 01101100

--------

$a & $b = 00100100 = 36 (desimal)

Dan dari hasil echo, terlihat bahwa hasilnya adalah 36 (dalam bentuk desimal).

Contoh kedua, untuk operasi I atau or, akan bernilai 0 jika kedua bit variabel bernilai 0, selebihnya nilai bit hasil akan diset menjadi 1. Berikut perhitungan bitwise “or”:

$a = 10110101

$b = 01101100

--------

$a | $b = 11111101 = 253 (desimal)

Contoh ketiga, menggunakan operasi ^ atau xor, dan bit hasil akan bernilai 1 jika salah satu dari kedua variabel bernilai 1, namun tidak keduanya. Berikut perhitungan bitwise “xor”:

$a = 10110101

$b = 01101100

--------

$a ^ $b = 11011001 = 217 (desimal)

Contoh keempat, menggunakan operasi ~ atau not,yang akan membalikkan nilai bit sebuah variabel dari 0 menjadi 1, dan 1 menjadi nol. Namun perhitungan bit not ini sedikit membingungkan, karena jika kita hanya membalikkan seluruh bitnya saja, hasilnya tidak sesuai dengan apa yang dihitung oleh PHP, seperti contoh perhitungan berikut:

$a = 10110101

--------

~$a = 01001010 = 74 (desimal) ==> salah ???

Page 46: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dari hasil menjalankan program, dapat dilihat bahwa ~$a = -182, darimanakah angka ini? Hal ini terkait dengan cara PHP menyimpan angka biner dengan 32 bit. PHP menyimpan bit dalam perhitungan matematis komputer yang di sebut dengan “Two’s complement” Penjelasan tentang ini dapat anda baca lebih lanjut pada http://en.wikipedia.org/wiki/Two%27s_complement danhttp://stackoverflow.com/questions/18754198/confusing-php-bitwise-not-behavior

Namun cara perhitungan singkatnya adalah sebagai berikut:

$a = 00000000000000000000000010110101 (32 bit)

--------

~$a = 11111111111111111111111110110101 (32 bit negative)

Flip & -1 = 00000000000000000000000010110101 - 1

~$a = -182 (desimal) ==> benar

Karena PHP memproses menggunakan 32 bit, maka kita harus mengikutkan seluruh bit 0 yang berada di depan angka biner dengan total 32 digit, lalu menegatifkannya. Jika angka paling kiri terdapat angka 1, maka ini adalah instruksi kepada PHP bahwa hasilnya akan negatif, dan hasil negatif di flip (dinegatifkan kembali), lalu dikurang 1, sehingga menjadi -182 dalam desimal.

Contoh ke 5, adalah operator Shift right dimana PHP akan menggeser variabel $a ke kanan sebanyak 1 tempat. Berikut proses yang terjadi:

$a = 10110101 = 181

$a >> 1 = 1011010 = 90 (desimal)

Operator shift right menggeser nilai biner variabel $a ke arah kanan, dan digit paling kanan akan dihapus. Operator shift right ini akan menghasilkan nilai asal / 2. Dalam contoh, hasilnya adalah 180/2 = 90 (dibulatkan). Setiap penggeseran 1 tempat ke kanan akan membagi 2 nilai asal.

Contoh ke 6 adalah operator Shift Left, dimana PHP menggeser nilai variabel $b sebanyak 2 digitke kiri. Berikut proses yang terjadi:

$b = 01101100 = 108

$b << 2 = 0110110000 = 432 (desimal)

Ketika hasil pergeseran ke kanan, digit paling kiri akan diisi dengan nilai 0. Setiap penggeseran 1 tempat ke kiri akan mengkali 2 nilai asal.

Dalam tutorial kali ini kita telah mempelajari operator bitwise dalam PHP. Anda tidak akan sering menggunakan operator ini. PHP menyediakan operator bitwise untuk keperluan khusus.

Tutorial Belajar PHP Part 27: Pengertian dan Jenis Operator Gabungan Assigment PHP

Dalam tutorial kali ini, saya akan membahas tentang operator gabungan assigment (combined assigment operators) dalam PHP.

Page 47: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengertian Operator Gabungan (Combined Operators)

Operator gabungan assigment adalah cara penulisan singkat operator dengan menggunaan sebuah operatror assigment secara bersamaan dengan operator lainnya. Dalam PHP, operator gabungan ini adalah antara operator assigment dengan operator lain seperti operator aritmatika,string, bitwise, dll.

Untuk memahami operator gabungan assigment ini, perhatikan contoh berikut:

<?php

$a = 10;

$a = $a + 5;

$a = $a - 10;

echo "\$a = $a";

echo "<br />";

// sama hasilnya dengan kode berikut:

$b = 10;

$b += 5; // sama dengan $b = $b + 5;

$b -= 10;// sama dengan $b = $b - 10;

echo "\$b = $b";

?>

Pada baris ke.. saya menggunakan operator gabungan untuk mempersingkat penulisan $b = $b + 5menjadi $b += 5;

Jenis-jenis Operator Gabungan (Combined Operators)

Operator gabungan assigment bisa digunakan hampir untuk seluruh operator lainnya, berikut tabel jenis operator gabungan assigment dalam PHP:

Page 48: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Operator gabungan ini akan menghemat penulisan kode program, namun jika anda nyaman menggunakan kode yang sedikit panjang juga tidak masalah.

Dalam tutorial belajar PHP selanjutnya, kita akan membahas tentang perubahan tipe data dalam PHP, atau dikenal dengan istilah Type Juggling dan Type Casting dalam PHP.

Tutorial Belajar PHP Part 28: Cara Mengubah Tipe Data PHP (Type Juggling dan Type Casting)

Dalam tutorial kali ini kita akan membahas tentang cara merubah tipe data PHP dari sebuah tipe data menjadi tipe data lainnya. Dalam permograman PHP, hal ini dikenal dengan istilah type juggling dan type casting.

Pengertian Type Juggling dalam PHP

PHP merupakan bahasa pemograman yang tidak terlalu ketat dalam aturan tipe data (dimana sebuah variabel dapat diisi dengan berbagai tipe data). Hal ini memberikan kemudahan penulisan, namun juga mendatangkan permasalahan tersendiri. Terkadang PHP mengubah tipe data suatu variabel menjadi tipe data lainnya secara tidak langsung tanpa kita instruksikan.

Jika anda telah mengikuti tutorial PHP di duniailkom tentang pembahasan tipe data dan operator, maka beberapa kali kita telah membuat kode program yang “memaksa” suatu tipe data berfungsi sebagai tipe data lainnya.

Perhatikan kode program php berikut:

<?php

$a=12;

$b="9 kucing";

echo $a+$b; // 21

Page 49: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Dalam kode diatas, saya mendefenisikan variabel $a sebagai integer (angka) dan variabel $bsebagai string. Operasi penambahan seharusnya membutuhkan 2 inputan berupa angka, namun seperti yang terlihat ketika program dijalankan, PHP dengan senang hati akan menjalankan perintah tersebut tanpa mengeluarkan error. 12+”9 kucing” akan menghasilkan nilai 21.

Proses perubahan tipe data ini dikenal dengan istilah type juggling. Type Juggling dalam PHP adalah sebuah proses untuk menentukan jenis tipe data yang “cocok” dengan operasi saat itu, dan PHP akan menkonversinya secara langsung.

PHP akan mencoba “menebak” dan mengubah tipe data agar disesuaikan dengan peruntukannya. Misalkan operator aritmatika seharusnya membutuhkan 2 buah inputan (atau operand) yang bertipe angka (baik berupa integer maupun float). Namun apabila salah satu atau kedua operand itu bukan bertipe angka, maka PHP akan mengkonversinya menjadi angka.

Seperti contoh program diatas, string “9 kucing” akan dikonversi menjadi angka. Dan menghasilkan angka 24 (aturan pengkonversian ini akan kita bahas sesaat lagi).

Sebagai contoh lainnya, perhatikan kode PHP berikut ini:

<?php

$a=12;

$b="9 kucing";

echo $a AND $b;

?>

Nilai dari variabel $a dan $b masih sama dengan contoh saya yang pertama, namun kali ini saya membuat operator logika AND sebagai operasi yang akan diproses. Dan jika anda menjalankan program diatas, di browser akan tampil angka 1. Dari manakah angka 1 ini berasal?

Operator AND membutuhkan 2 inputan bertipe boolean, yakni nilai TRUE atau FALSE. Namun karena saya menggunakan tipe integer “12” dan type string “9 kucing”, maka kedua operand ini akan dikonversi menjadi TRUE. Karena TRUE AND TRUE adalah TRUE, maka hasil $a AND $b pada contoh program diatas adalah TRUE.

Namun proses type juggling PHP belum selesai, karena perintah echo membutuhkan inputan berupa string, bukan nilai boolean TRUE. Dan PHP akan mengkonversi boolean TRUE menjadistring “1”.

Pemahaman tentang type juggling dalam PHP ini akan membantu kita untuk menghindari error kode program karena perubahan tipe data yang tidak terdeteksi.

Pengertian Type Casting dalam PHP

Jika type juggling merupakan proses “otomatis” oleh PHP, maka Type Casting adalah proses perubahan type data secara manual dengan menggunaan instruksi di dalam kode program.

Page 50: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk merubah sebuah type data, kita menggunakan perintah casting dengan cara membuat nama tipe data tujuan di dalam tanda kurung sebelum variabel yang akan diubah.

Perhatikan contoh kode program berikut:

<?php

$a=12;

$b="9 kucing";

echo $b; //9 kucing

echo "<br />";

echo (integer) $b; //9

echo "<br />";

echo (boolean) $b; //1

?>

Pada baris ke -9, saya membuat echo (integer) $b, perintah ini adalah men-casting tipe data yang ada didalam variabel $b (apapun tipe datanya) menjadi integer. Dan pada baris ke 9. saya meng-casting tipe data $b menjadi boolean.

Jenis-jenis perintah casting yang ada dalam PHP adalah sebagai berikut:

(int), (integer) – mengubah tipe data menjadi integer

(bool), (boolean) – mengubah tipe data menjadi boolean

(float), (double), (real) – mengubah tipe data menjadi float

(string) – mengubah tipe data menjadi string

(array) – mengubah tipe data menjadi array

(object) – mengubah tipe data menjadi object

(unset) – mengubah tipe data menjadi NULL (PHP 5)

Aturan konversi data dalam PHP

Perubahan sebuah tipe data menjadi tipe data lainnya dalam PHP memiliki aturan tersendiri. Berikut adalah aturan konversi tipe data dalam PHP

Konversi menjadi Integer

Jika tipe data asal adalah float, maka perubahan menjadi integer akan membuang tanda desimal dari float. Contohnya, 3.94 akan menjadi integer 3.

Jika tipe data asal adalah boolean, maka nilai TRUE akan menjadi 1, dan FALSE manjadi 0.

Page 51: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika tipe data asal adalah string, maka string akan dipotong pada angka terakhir yang ditemukan, mulai dari awal string. Namun jika diawal string tidak terdapat angka, maka string akan dikonversi menjadi 0. Contohnya, “9 Kucing” akan menjadi integer 9, “999 kucing” akan menjadi integer 999. “kucing 99” akan menjadi 0, “14,5 kali gaji” akan menjadi integer 14 (karena desimal akan dibuang dari string)

Jika tipe data asal adalah array kosong (tanpa data) maka jika dikonversi menjadi integer akan menghasilkan 0, namun array dengan isi data minimal 1, akan dikonversi menjadi 1.

Konversi menjadi float

Secara garis besar, konversi menjadi float hampir sama dengan konversi menjadi integer, dengan perbedaan jika tipe asal adalah string, maka angka desimal akan diperhitungkan, misalnya “14,5 kali gaji” akan dikonversi menjadi float 14,5

Konversi menjadi boolean

Jika tipe data asal adalah integer, maka angka 0 akan dikonversi menjadi FALSE, selain itu, akan dikonversi menjadi TRUE. Contohnya 0 -> FALSE, 1 -> TRUE, -1 -> TRUE.

Jika tipe data asal adalah float, maka angka 0.0 akan dikonversi menjadi FALSE, selain itu, akan dikonversi menjadi TRUE. Contohnya 0.0 -> FALSE, 1,9 -> TRUE, -1,6 -> TRUE.

Jika tipe data asal adalah string, maka string “” (tanpa karakter) akan dikonversi menjadi FALSE, string “0” (string dengan karakter nol) akan dikonversi menjadi FALSE, selain itu akan dikonversi menjadi TRUE. Contohnya: “” -> FALSE, “ ” ->TRUE (karakter spasi), “0” -> FALSE.

Jika tipe data asal adalah array, maka array kosong (tanpa data) akan dianggap FALSE, selain itu array akan dikonversi menjadi TRUE.

Sebagai penutup, berikut adalah contoh-contoh konversi tipe data didalam PHP:

<!DOCTYPE html>

<html>

<head>

<title>Belajar Cara Konversi Tipe Data PHP</title>

</head>

<body>

<?php

// Konversi menjadi Integer

var_dump((int) 3.45); // 3

Page 52: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "<br />";

var_dump((int) "3.45"); // 3 (string 3.45)

echo "<br />";

var_dump((int) "9 Naga"); //9

echo "<br />";

var_dump((int) "Naga Bonar"); // 0

echo "<br />";

var_dump((int) "Wiro Sableng 212"); //0

echo "<br />";

var_dump((int) FALSE); // 0

echo "<br />";

var_dump((int) "1FALSE"); //1

echo "<br />";

var_dump((int) array()); // 0

echo "<br />";

var_dump((int) array("data")); //1

echo "<br />";

// Konversi menjadi Float

var_dump((float) 3); // 3

echo "<br />";

var_dump((float) "3.45"); // 3.45

echo "<br />";

var_dump((float) "9 Naga"); //9

echo "<br />";

var_dump((float) "Naga Bonar"); // 0

echo "<br />";

var_dump((float) "Wiro Sableng 212"); //0

echo "<br />";

Page 53: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

var_dump((float) FALSE); // 0

echo "<br />";

var_dump((float) "1FALSE"); //1

echo "<br />";

var_dump((float) array()); // 0

echo "<br />";

var_dump((float) array("data")); //1

echo "<br />";

// Konversi menjadi Boolean

var_dump((bool) 3); // TRUE

echo "<br />";

var_dump((bool) 0); // FALSE

echo "<br />";

var_dump((bool) -1); // TRUE

echo "<br />";

var_dump((bool) ""); // FALSE

echo "<br />";

var_dump((bool) " "); //TRUE

echo "<br />";

var_dump((bool) "0"); // FALSE

echo "<br />";

var_dump((bool) "FALSE"); // TRUE (!) - karena string

echo "<br />";

var_dump((bool) array()); // FALSE

echo "<br />";

var_dump((bool) array("data")); // TRUE

echo "<br />";

?>

Page 54: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

</body>

</html>

Dalam program diatas, saya membuat beberapa contoh konversi di dalam PHP.

Aturan tentang konversi tipe data dalam PHP ini (Type Juggling dan Type Casting ) menutup tutorial PHP sesi operator. Untuk selanjutnya, kita akan mempelajari tentang alur logika program dalam PHP, atau dikenal dengan Struktur kontrol dalam PHP.

Tutorial Belajar PHP Part 29: Pengertian dan Cara Penulisan Struktur Logika IF dalam PHP

Struktur kontrol pertama yang akan kita bahas adalah struktur logika IF. Di dalam tutorial belajar PHP kali ini kita akan mempelajari Pengertian dan Cara Penulisan Struktur IF dalam PHP.

Pengertian Struktur IF dalam PHP

Pengertian Struktur IF dalam bahasa pemograman adalah sebuah struktur logika untuk membuat percabangan alur program. Secara sederhananya, dengan menggunakan struktur IF kita dapat mengatur apakah sebuah perintah akan dijalankan atau tidak tergantung kepada kondisinya.

Sebagai contoh kita ingin membuat program sederhana, jika nama user adalah “Andi”, maka tampilkan kata “Selamat Datang, Andi”. Berikut adalah penulisannya di dalam PHP:

<?php

$nama="Andi";

if ($nama=="Andi")

echo "Selamat datang Andi, di duniailkom...";

?>

Jika anda jalankan kode program diatas, maka di web browser akan tampil “Selamat datang Andi, di duniailkom...”, namun apabila anda mengganti kode program diatas menjadi:

<?php

$nama="Joni";

if ($nama=="Andi")

echo "Selamat datang Andi, di duniailkom...";

?>

Maka tidak akan ada tampilan apa-apa di dalam web browser.

Page 55: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Struktur logika IF setidaknya membutuhkan 2 inputan, yaitu ekspresi logika (expression) dimana berisi kondisi yang harus dipenuhi, dan perintah yang akan dijalankan (statement) jika kondisi logika tersebut terpenuhi.

Berikut adalah struktur dasar penulisan alur logika IF dalam PHP:

if (expression)

statement

Expression dalam hal ini adalah kondisi yang harus dipenuhi agar statement dapat dijalankan. Hasil dari expression harus tipe boolean. Selama hasil expression bernilai TRUE, maka statement akan dijalankan, namun jika nilainya FALSE, maka statement tidak akan dijalankan.

Dalam pembuatan program, biasanya digunakan operasi perbandingan sebagai expression. Pada contoh kita pertama, expression kita adalah $nama==”Andi”, yang bermaksud bahwa jika isi variabel $nama sama dengan “Andi” maka jalankan perintah echo.

Namun expression IF ini tidak harus berupa operasi perbandingan, namun bisa berupa variabel, yang selama hasilnya adalah TRUE, maka statement akan dijalankan. Perhatikan contoh berikut ini:

<?php

if (TRUE)

echo "Selamat datang Andi, di duniailkom...";

?>

Jika anda menjalankan program tersebut, kalimat “Selamat datang Andi, di duniailkom…” akan selalu tampil di web browser, karena kondisi IF akan selalu terpenuhi.

Aturan Penulisan Struktur IF dalam PHP

Page 56: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Penulisan sederhana dari struktur if adalah sebagai berikut:

<?php

if (expression)

statement;

?>

Expression ditulis di dalam tanda kurung, dan tidak diikuti dengan titik koma(;).

Apabila statement yang ingin dijalankan terdiri dari 2 baris atau lebih, kita harus memberikan tanda kurung kurawal untuk menandai statement yang berhubungan dengan kondisi IF. Berikut contoh strukturnya:

<?php

if (expression)

{

statement1;

statement1;

}

?>

Tanda kurung kurawal menandakan blok perintah yang dijalankan jika expression bernilai true.

Kita juga bisa membuat beberapa logika IF sekaligus untuk berbagai situasi:

<?php

if (expression1)

{

statement1;

statement2;

}

if (expression2)

{

statement3;

statement4;

}

Page 57: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Untuk kasus yang lebih spesifik, kita bisa membuat struktur IF didalam IF, atau dikenal dengannested IF, seperti contoh berikut:

if (expression)

{

statement1;

if (expression)

{

statement1;

}

}

?>

Seberapa banyak kondisi IF didalam IF (nested) tidak dibatasi dalam PHP, namun perlu diperhatikan penggunaan tanda kurung kurawal sebagai penanda bagian dari IF. Jika anda membuat struktur IFyang kompleks, tanda kurung kurawal ini akan membuat bingung jika tidak dikelola dengan benar. Kesalahan penutupan kurung kurawal akan membuat program tidak berjalan sesuai dengan keinginan.

Alternatif Penulisan Struktur Logika IF

Selain menggunakan tanda kurung kurawal sebagai tanda awal dan akhir IF, PHP menyediakan cara penulisan lain untuk menandai akhir perintah IF, yaitu diawali dengan tanda titik dua (:) dengan diakhiri dengan endif.

Berikut adalah format dasar penulisan IF:

<?php

if (expression) :

statement1;

statement1;

endif

?>

Perbedaan mendasar tentang cara penulisan ini ada di tanda titik dua (:) setelah penulisan expression, dan kata kunci endif di akhir statement.

Anda bebas menggunakan format penulisan logika IF yang disediakan. Beberapa programmer menggunakan alternatif penulisan IF dengan endif ini, karena dianggap lebih rapi.

Page 58: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Struktur logika IF ini juga memiliki percabangan kedua seandainya kondisi expression tidak terpenuhi. Dalam tutorial selanjutnya kita akan mempelajari struktur logika ELSE.

Tutorial Belajar PHP Part 30: Pengertian dan Cara Penulisan Struktur Logika ELSE dalam PHP

Struktur kontrol IF yang telah kita bahas sebelumnya, memiliki percabangan logika kedua, yakni logika ELSE. Di dalam tutorial belajar PHP kali ini kita akan mempelajari Pengertian dan Cara Penulisan Struktur ELSE dalam PHP.

Pengertian Struktur ELSE dalam PHP

Jika Struktur IF digunakan untuk percabangan alur program dengan 1 pilihan saja, maka dengan struktur ELSE kita dapat membuat percabangan kedua, yakni percabangan ketika kondisi IF tidak terpenuhi, atau expressi IF menghasilkan nilai FALSE.

Berikut adalah contoh penggunaan logika ELSE dalam PHP:

<?php

$nama="Andi";

if ($nama=="Andi")

echo "Selamat Datang Andi...";

else

echo "Selamat Datang di duniailkom";

?>

Contoh kode program diatas, hampir sama dengan contoh kita pada tutorial tentang IF sebelumnya. Namun kali ini saya menambahkan percabangan ELSE. Jika anda menjalankan kode program diatas, maka di dalam web browser akan tampil “Selamat Datang Andi…“, karena kondisi IF terpenuhi. Perintah ELSE hanya akan dijalankan jika kondisi $nama bukan berisi “ANDI”.

Jika saya mengubah kode PHP diatas menjadi

<?php

$nama="Budi";

if ($nama=="Andi")

echo "Selamat Datang Andi...";

else

echo "Selamat Datang di duniailkom";

?>

Page 59: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Maka sekarang di web browser akan tampil “Selamat Datang di duniailkom“. Hal ini terjadi karena kondisi if ($nama==”Andi”) tidak terpenuhi dan menghasilkan FALSE, sehingga perintah di bagian ELSE-lah yang akan diekseskusi.

Aturan Penulisan Struktur IF-ELSE dalam PHP

Penulisan sederhana dari struktur IF-ELSE adalah sebagai berikut:

<?php

if (expression)

statement1;

else

statement2;

?>

Statement1 akan dijalankan hanya jika expression bernilai TRUE (kondisi expression terpenuhi). Namun apabila kondisi expression tidak terpenuhi (bernilai FALSE), maka statement2 lah yang akan dijalankan.

Jika struktur logika IF-ELSE terdiri dari beberapa baris, maka kita harus menambahkan penanda kurung kurawal untuk menandai awal dan akhir statement. Penanda ini dibutuhkan untuk membatasi blok perintah mana yang akan dijalankan ketika expression TRUE, dan blok perintah mana yang akan dijalankan jika expression FALSE.

Berikut adalah penulisan dasar struktur IF-ELSE dengan pembatasan blok perintah:

<?php

if (expression)

{

statement1;

statement1;

}

else

{

statement2;

statement1;

}

?>

Page 60: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Penandaan statement ini akan menghasilkan error ketika kita salah atau lupa menempatkan tandakurung kurawal. Perhatikan contoh kode PHP berikut ini:

<?php

$nama="Budi";

if ($nama=="Andi")

echo "Selamat Datang Andi...";

echo "Anda Memiliki 3 pesan di inbox...";

else

echo "Maaf, anda tidak memiliki hak akses";

?>

Kode PHP diatas akan menghasilkan error, karena PHP mendeteksi ada lebih dari satu baris setelah struktur IF. Kode tersebut akan berjalan seperti yang diinginkan jika dirubah menjadi:

<?php

$nama="Budi";

if ($nama=="Andi")

{

echo "Selamat Datang Andi...";

echo "Anda Memiliki 3 pesan di inbox...";

}

else

{

echo "Maaf, anda tidak memiliki hak akses";

}

?>

Pada baris terakhir, saya juga menambahkan tanda kurung kurawal sebagai penanda awal dan akhir dari ELSE, walaupun tanda kurung tersebut sebenranya tidak diperlukan (karena hanya bersisi satu baris). Namun hal ini akan memudahkan kita seandainya ingin menambahkan perintah tambahan pada bagian ELSE.

Page 61: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Penulisan Alternatif Struktur ELSE

Sama seperti alternatif penulisan IF pada tutorial sebelumnya,selain menggunakan tanda kurung kurawal penanda awal dan akhir blok IF, PHP juga menyediakan cara penulisan lain untuk blok perintah ELSE, yaitu diawali dengan tanda titik dua (:) dan diakhiri dengan endif.

Berikut adalah format dasar penulisan IF:

<?php

if (expression) :

statement1;

statement2;

else:

statement3;

endif

?>

Perbedaan mendasar tentang cara penulisan ini ada di setelah penulisan expression dimana dibutuhkan tanda titik dua (:), dan di akhir statement dengan kata kunci endif.

Anda bebas menggunakan format penulisan logika IF yang disediakan. Beberapa programmer memilih alternatif penulisan IF dengan endif karena dianggap lebih rapi.

Dalam tutorial struktur alur program berikutnya, kita akan membahas struktur lanjutan dari IF, yakni cara penulisan dan penggunaan struktur ELSE-IF.

Tutorial Belajar PHP Part 31: Pengertian dan Cara Penulisan Struktur Logika ELSE-IF dalam PHP

Struktur kontrol program IF terakhir yang akan kita bahas adalah stuktur ELSE-IF. Dalam tutorial PHP kali ini kita akan mempelajari tentang Pengertian dan Cara Penulisan Struktur Logika ELSE-IF dalam PHP.

Pengertian Struktur ELSE-IF dalam PHP

Stuktur ELSE-IF merupakan percabangan logika lanjutan dari IF. Dengan ELSE-IF kita bisa membuat kode program yang akan menyeleksi berbagai kemungkinan yang bisa terjadi. Berikut adalah contoh penggunaan ELSE-IF dalam PHP:

<?php

$a=15;

$b=8;

if ($a > $b)

Page 62: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

{

echo "a lebih besar daripada b";

}

elseif ($a == $b)

{

echo "a sama besar dengan b";

}

else

{

echo "a lebih kecil daripada b";

}

?>

Dalam kode program diatas, saya membuat program sederhana untuk membandingkan 2 angka. IF pertama akan melakukan pengecekan apakah $a > $b, jika hasilnya adalah FALSE, maka masuk ke IF kedua (ditulis dengan elseif) apakah $a == $b, dan jika hasilnya adalah FALSE, maka dapat dipastikan $a < $b.

Jika anda bertanya apa perbedaan IF dengan ELSEIF, maka jawabanya terletak di efisiensi pemrosesan. Contoh diatas bisa juga kita buat tanpa menggunakan ELSEIF seperti berikut ini:

<?php

$a=15;

$b=8;

if ($a > $b)

{

echo "a lebih besar daripada b";

}

if ($a == $b)

{

echo "a sama besar dengan b";

}

Page 63: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

else

{

echo "a lebih kecil daripada b";

}

?>

Perhatikan kode program pada baris ke-9, saya mengganti ELSEIF menjadi IF.

Perbedaannya adalah, untuk contoh kode PHP kita tanpa IF ini, seluruh kondisi akan dijalankan, walaupun sebenarnya tidak perlu. Jika $a=15 dan $b=8, maka kondisi IF pertama akan terpenuhi ($a > $b), dan kita ingin program PHP keluar dari IF. Namun karena perintah selanjutnya adalah IF, maka PHP akan tetap memeriksa apakah ($a == $b).

Lain halnya jika kita menggunakan perintah ELSEIF, maka ketika sebuah kondisi telah dipenuhi, PHP tidak perlu melakukan pengecekan terhadap kondisi IF lainnya.

Aturan Penulisan Struktur ELSE-IF dalam PHP

Dalam PHP, kita bisa menuliskan struktur ELSE-IF dengan elseif, atau else if (dipisahkan dengan spasi). Kedua bentuk ini dianggap sama.

Format dasar penulisan ELSE-IF adalah sebagai berikut:

<?php

if (expression)

{

statement1;

}

elseif

{

statement2;

}

else

{

statement3;

}

?>

Page 64: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Seberapa banyak struktur ELSE-IF di dalam kode program tidak dibatasi, namun jika anda ada dalam situasi yang membutuhkan percabangan ELSE IF yang lebih dari 5, mungkin anda bisa memecah nya menjadi bagian-bagian kecil agar memudahkan alur logika program.

Cara Penulisan Alternatif Struktur ELSE-IF

Selain menggunakan tanda kurung kurawal sebagai tanda awal dan akhir ELSE-IF, PHP menyediakan cara penulisan alternatif. Berikut format dasar penulisannya:

<?php

if (expression) :

statement1;

statement2;

elseif (expression):

statement3;

else

statement4;

endif

?>

Namun untuk cara penulisan ini, kita tidak bisa memisahkan penulisan ELSE-IF menjadi “else if”, tetapi harus ditulis menyatu menjadi “elseif”.

<?php

$a=15;

$b=8;

if ($a > $b):

echo "a lebih besar daripada b";

else if ($a == $b): // akan menghasilkan error

echo "a sama besar dengan b";

else:

echo "a lebih kecil daripada b";

endif;

?>

Page 65: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Kode program diatas baru berhasil dieksekusi jika diubah menjadi:

<?php

$a=15;

$b=8;

if ($a > $b):

echo "a lebih besar daripada b";

elseif ($a == $b):

echo "a sama besar dengan b";

else:

echo "a lebih kecil daripada b";

endif;

?>

StrukurIF-ELSE-IF ini merupakan salah satu struktur terpenting dalam pemograman, dengan struktur IF kita bisa membuat alur percabangan program tergantung dengan situasi yang dihadapi.

Selain struktur IF, PHP meyediakan struktur percabangan lainnya, yakni switch. Pembahasan tentang struktur switch akan kita bahas dalam tutorial PHP selanjutnya.

Tutorial Belajar PHP Part 32: Pengertian dan Cara Penulisan Struktur Logika Switch dalam PHP

Struktur alur program yang akan kita bahas berikutnya adalah tentang pengertian dan cara penulisan struktur Switch dalam PHP. Struktur switch ini dapat digunakan sebagai penggantistruktur IF.

Pengertian Struktur logika Switch

Struktur logika switch adalah sebuah stuktur percabangan yang akan memeriksa suatu variabel, lalu menjalankan perintah-perintah yang sesuai dengan kondisi yang mungkin terjadi untuk variabel tersebut. Struktur switch ini mirip dengan struktur IF yang ditulis berulang.

Katakan kita ingin membuat sebuah program yang akan menampilkan kata dari angka 0-5, sehingga terdapat 6 kemungkinan yang terjadi. Jika menggunakan struktur IF, maka kita akan membutuhkan 6 perulangan sebagai berikut:

<?php

$a=3;

if ($a=="0") {

Page 66: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "Angka Nol";

}

elseif ($a=="1") {

echo "Angka Satu";

}

elseif ($a=="2") {

echo "Angka Dua";

}

elseif ($a=="3") {

echo "Angka Tiga";

}

elseif ($a=="4") {

echo "Angka Empat";

}

elseif ($a=="5") {

echo "Angka Lima";

}

else

echo "Angka diluar jangkauan";

?>

Tidak ada yang salah dari kode program tersebut, namun jika kita menggunakan switch, kode tersebut dapat ditulis menjadi:

<?php

$a=3;

switch ($a)

{

case 0 :

echo "Angka Nol";

break;

Page 67: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

case 1 :

echo "Angka Satu";

break;

case 2 :

echo "Angka Dua";

break;

case 3 :

echo "Angka Tiga";

break;

case 4 :

echo "Angka Empat";

break;

case 5 :

echo "Angka Lima";

break;

default :

echo "Angka diluar jangkauan";

break;

}

?>

Kedua kode program akan menghasilkan output yang sama, namun untuk kondisi logika yang diuji merupakan kondisi sederhana, penulisan dengan switch lebih disarankan dibandingkan IF.

Aturan Penulisan Struktur Switch dalam PHP

Seperti yang terlihat dalam contoh sebelumnya, struktur switch terdiri dari beberapa bagian, berikut format dasar penulisan switch dalam PHP:

switch ($var)

{

case value1:

statement1;

Page 68: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

break;

case value2:

statement2;

break;

}

Setelah kata kunci switch, kita harus mencantumkan variabel yang akan diperiksa nilainya didalam tanda kurung, lalu memulai block switch dengan kurung kurawal.

Tiap kondisi yang mungkin terjadi dicantumkan setelah kata kunci case, lalu diikuti dengan nilai yang akan dibandingkan dengan nilai variabel switch. Jika kondisi sesuai, maka baris programstatement akan dijalankan. Kata kunci break digunakan untuk keluar dari switch, sehingga PHP tidak perlu memeriksa case berikutnya.

Alur program untuk switch akan dieksekusi dari baris pertama sampai terakhir. Kata kunci breakmemegang peranan penting untuk menghentikan switch.

Perhatikan contoh kode PHP berikut:

<?php

$a=1;

switch ($a)

{

case 0:

echo "Angka Nol ";

case 1 :

echo "Angka Satu ";

case 2 :

echo "Angka Dua ";

case 3 :

echo "Angka Tiga ";

}

?>

Program diatas akan memeriksa nilai dari $a, dan memberikan output tergantung kepada nilai $atersebut. Jika sekilas dilihat, maka keluaran program adalah: “Angka Satu” sesuai dengan nilai variabel $a. Akan tetapi, jika anda menjalankan program diatas, PHP akan memberikan output berupa:

Page 69: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Angka Satu Angka Dua Angka Tiga

Apa yang terjadi? Hal ini terkait dengan bagaimana PHP menjalankan proses switch.

Ketika program dijalankan, PHP pertama kali akan memeriksa case 0, yaitu apakah $a sama dengan0, jika tidak, PHP akan lanjut ke case 1, dan memeriksa apakah $a sama dengan 1. Jika iya, maka PHP akan menjalankan echo “Angka Satu”, beserta seluruh perintah program pada case-case dibawahnya. Hal ini mungkin terkesan aneh, namun adakalanya proses seperti inilah yang dibutuhkan.

Namun, untuk kasus diatas, kita ingin mengistruksikan kepada PHP bahwa setelah case ditemukan, maka switch harus berhenti.

Untuk instruksi ini, kita harus menggunakan kata kunci break. Instruksi break memberitahu PHP untuk segera keluar dari switch, dan tidak menjalankan case lainnya.

Berikut adalah kode program switch kita setelah ditambahnya keyword break:

<?php

$a=1;

switch ($a)

{

case 0:

echo "Angka Nol ";

break;

case 1 :

echo "Angka Satu ";

break;

case 2 :

echo "Angka Dua ";

break;

case 3 :

echo "Angka Tiga ";

break;

}

?>

Page 70: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Selain kata kunci break, PHP menyediakan kata kunci default untuk alur switch. Kata kunci ini berfungsi seperti ELSE di dalam struktur IF, yakni kondisi dimana seluruh case untuk switch tidak ada yang cocok. Kata kunci default ini diletakkan di akhir dari switch.

Untuk contoh kita diatas, saya akan menambahkan bagian default sebagai perintah yang akan dijalankan jika nilai dari variabel $a duluar dari angka 0-5. Berikut kode PHP nya:

<?php

$a=9;

switch ($a)

{

case 0:

echo "Angka Nol ";

break;

case 1 :

echo "Angka Satu ";

break;

case 2 :

echo "Angka Dua ";

break;

case 3 :

echo "Angka Tiga ";

break;

default :

echo "Angka diluar jangkauan";

break;

}

?>

PHP membolehkan kita menjalankan satu statement saja untuk case yang berlainan, seperti contoh kode PHP berikut ini:

<?php

$a=3;

Page 71: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

switch ($a)

{

case 0 :

case 1 :

case 2 :

case 3 :

echo "Angka berada di dalam range 0-3";

break;

case 4 :

case 5 :

case 6 :

case 7 :

echo "Angka berada di dalam range 4-7";

break;

default :

echo "Angka diluar jangkauan";

break;

}

?>

Didalam kode diatas, saya menyatukan beberapa case ke dalam 1 statement.

Penulisan case untuk struktur switch menyesuaikan dengan jenis tipe data yang akan diuji. Sampai dengan bagian ini, saya hanya menggunakan contoh case untuk variabel dengan tipe angka, namun jika anda menggunakan switch untuk tipe data string, maka kita harus menggunakan tanda kutip untuk case.

Berikut contoh kode switch PHP untuk tipe data string:

<?php

$a=dua;

switch ($a)

{

case "nol":

Page 72: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "Angka 0 ";

break;

case "satu" :

echo "Angka 1 ";

break;

case "dua" :

echo "Angka 2 ";

break;

case "tiga" :

echo "Angka 3 ";

break;

default :

echo "Angka diluar jangkauan";

break;

}

?>

Perbedaan Antara struktur IF dengan Switch

Walaupun memiliki tujuan yang hampir sama, namun struktur IF dan switch memiliki perbedaan yang mendasar.

Didalam struktur switch, kondisi logika hanya akan diperiksa satu kali saja, yaitu pada awal perintahswitch, dan hasilnya di bandingkan dengan setiap case. Akan tetapi di dalam struktur if, setiap kondisi akan selalu diperiksa. Sehingga jika anda memiliki struktur percabangan yang banyak, struktur switch akan lebih cepat dieksekusi.

Namun disisi lain, switch memiliki keterbatasan dalam jenis operasi perbandingan yang dapat dilakukan. Operasi perbandingan di dalam switch terbatas untuk hal-hal sederhana seperti memeriksa nilai dari sebuah variabel.

Struktur switch tidak bisa digunakan untuk percabangan program dengan operasi yang lebih rumit seperti membandingkan 2 variabel. Kita tidak bisa menggunakan switch untuk membuat kode program menentukan nilai terbesar seperti contoh pada tuturial IF sebelum ini.

Untuk kebanyakan kasus, kita akan sering menggunakan IF dibandingkan switch.

Tutorial Belajar PHP Part 33: Pengertian dan Cara Penulisan Perulangan For dalam PHP

Page 73: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial sebelumnya, kita telah membahas struktur logika IF dan struktur Switch yang digunakan untuk percabangan program PHP. Dalam beberapa tutorial kedepan, kita akan membahas tentang struktur perulangan atau dikenal juga dengan istilah loop. Untuk struktur perulangan pertama yang kita bahas adalah Pengertian dan Cara Penulisan Perulangan For dalam PHP.

Pengertian Struktur Perulangan For dalam PHP

Struktur perulangan (atau dalam bahasa inggris disebut dengan loop) adalah instruksi program yang bertujuan untuk mengulang beberapa baris perintah. Dalam merancang perulangan kode program, kita setidaknya harus mengetahui 3 komponen, yaitu kondisi awal dari perulangan,perintah program yang akan diulang, serta kondisi akhir dimana perulangan akan berhenti.

Di dalam bahasa pemograman, terdapat beberapa jenis instruksi perulangan, salah satunya:struktur perulangan FOR.

Sebagai contoh sederhana untuk perulangan for, saya akan membuat program PHP untuk menampilkan 10 baris kalimat “Saya sedang belajar PHP”. Berikut adalah kode program yang digunakan:

<?php

for ($i= 1; $i <= 10; $i++)

{

echo "Saya sedang belajar PHP";

echo "<br />";

}

?>

Page 74: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda menjalankan perintah tersebut, maka di web browser akan tampil sebanyak 10 kalimat. Kemampuan bahasa pemograman untuk melakukan perulangan ini sangat praktis jika yang kita inginkan adalah mengulang beberapa perintah yang sama sebanyak beberapa kali.

Cara Penulisan Struktur Perulangan For dalam PHP

Seperti yang telah saya singgung sebelumnya, untuk kondisi perulangan for, kita setidaknya membutuhkan 3 kondisi, yaitu di kondisi awal perulangan, kondisi pada saat perulangan, dan kondisi yang harus dipenuhi agar perulangan berhenti.

Penulisan dasar format perulangan for PHP adalah sebagai berikut:

for (start; condition; increment)

{

statement;

}

Start adalah kondisi pada saat awal perulangan. Biasanya kondisi awal ini digunakan untuk membuat dan memberikan nilai kepada variabel counter yang digunakan untuk mengontrol perulangan. Misalkan, kita akan membuat variabel counter $i, maka untuk kondisi start ini, kita juga harus memberikan nilai awal untuk variabel $i, misalnya dengan 1, maka $i=1.

Page 75: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Condition adalah kondisi yang harus dipenuhi agar perulangan dijalankan. Selama kondisi ini terpenuhi, maka PHP akan terus melakukan perulangan. Biasanya variabel counterdigunakan untuk mengatur akhir perulangan. Misalkan kita ingin menghentikan perulangan jika variabel $i telah mencapai nilai 20, maka pada bagian condition ini kita membuat perintah$i<=20, yang berarti selama nilai $i kurang atau sama dengan 20, terus lakukan perulangan.

Increment adalah bagian yang digunakan untuk memproses variabel counter agar bisa memenuhi kondisi akhir perulangan. Biasanya, pada bagian inilah kita akan membuat kondisi dari variabel counter.

Statement adalah bagian kode program yang akan diproses secara terus-menerus selama proses perulangan berlangsung. Untuk statement ini, kita membuat blok program di antaratanda kurung kurawal ({ dan }) sebagai penanda bahwa bagian di dalam kurung kurawal inilah yang akan dikenai proses perulangan.

Sebagai contoh, kita akan membuat perulangan untuk menampilkan angka 1-15 kedalam web browser, berikut kode PHP yang digunakan:

<?php

for ($i= 1; $i <= 15; $i++)

{

echo $i;

echo "<br />";

}

?>

Page 76: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda menjalankan kode tersebut, maka di dalam web browser akan tampil urutan angka dari 1 sampai dengan 15.

Sebagai kondisi awal dari perulangan tersebut adalah $i= 1, dimana saya memberikan nilai 1 kepada variabel $i. Variabel $i inilah yang akan menjadi counter atau penghitung dari perulangan for.

Untuk kondisi akhir, saya membuat $i <= 15, jadi selama variabel $i bernilai kurang atau sama dengan 15, maka perulangan akan terus dijalankan.

Sebagai increment, saya membuat $i++, dimana instruksi ini sama dengan $i=$i+1. instruksi ini akan dijalankan pada setiap perulangan, sehingga dengan kata lain, setiap proses perulangan, $iakan bertambah 1 angka.

Selain berfungsi sebagai counter, variabel $i juga dapat digunakan dalam proses perulangan, sehingga dengan membuat perintah echo $i, maka dalam setiap perulangan, kita bisa menampilkan nilai $i pada saat itu.

Sebagai contoh lain, saya ingin membuat perulangan untuk menampilkan angka 0-100, namun untuk kelipatan 5, seperti: 0.5.10..dst, sampai dengan 100.

Berikut adalah contoh kode PHPnya:

<?php

for ($i= 0; $i <= 100; $i=$i+5)

Page 77: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

{

echo $i;

echo "<br />";

}

Perbedaan penulisan struktur for diatas dibandingkan contoh sebelumnya adalah pada bagianincrement, dimana saya membuat kondisi increment yang menaik sebanyak 5 angka setiap perulangannya ($i=$i+5). Sehingga variabel counter, $i akan bertambah sebanyak 5 pada setiap perulangan.

Kita juga bisa membuat perluangan dengan kondisi mundur, seperti contoh kode PHP berikut ini:

<?php

for ($i= 20; $i >= 1; $i--)

{

Page 78: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo $i;

echo "<br />";

}

Di dalam kode tersebut, saya memulai nilai awal dari angka $i= 20, membuat perulangan selama $i >= 1, dan pada setiap perulangan, nilai $i akan dikurangi 1 angka ($i–). Dengan kondisi tersebut, maka variabel counter $i akan dikurangi 1 pada setiap perulangan.

Pengertian Infinity Loop

Ketika membuat kondisi akhir dari perluangan for, kita harus memperhatikan kapan kondisi akhir tersebut dipenuhi. Jika kondisi akhir tidak pernah terpenuhi, maka perulangan akan berjalan selamanya. Hal ini dikenal dengan infinity loop.

Seperti yang terjadi untuk kode seperti berikut ini:

<?php

for ($i= 20; $i >= 1; $i++)

{

echo $i;

echo "<br />";

}

Jika anda menjalankan kode tersebut, proses perulangan akan berjalan terus menerus, sehingga untuk menghentikannya kita harus menutup paksa web browser.

Kesalahan dari struktur for tersebut adalah pada kondisi akhir dari perulangan, dimana saya membuat $i >= 1, sehingga ketika nilai awal variabel counter $1 adalah 20, dan dalam tiap perulangan $i ditambah 1, maka nilai $i akan selalu lebih besar dari 1, sehingga kondisi akhir tidak akan pernah terpenuhi, dan $i >= 1 akan selalu benar.

Infinity loop ini kadang diperlukan untuk kasus-kasus tertentu. Namun kebanyakan kita akan menghindari perulangan jenis ini.

Pengertian Nested Loop (Perulangan Bersarang)

Selain infinity loop, terdapat istilah lainnya yang sering digunakan dalam proses perulangan, yakninested loop, atau terjemahan bebasnya: perulangan bersarang.

Nested loop adalah istilah pemograman yang berarti membuat perulangan di dalam perulangan. Perhatikan contoh program berikut:

<?php

for ($i=0; $i <10; $i++)

{

Page 79: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

for ($j=0; $j <10; $j++)

{

echo $i;

}

echo "<br />";

}

Dalam contoh program diatas, saya membuat perulangan di dalam perulangan. Counter $jdigunakan untuk perulangan dalam (inner loop), dan counter $i digunakan di dalam perulangan luar(outer loop).

Nested loop ini biasanya digunakan dalam program yang membutuhkan pengaksesan kompleks, seperti array 2 atau 3 dimensi.

Cara Alternatif Penulisan Perulangan For dalam PHP

Sama seperti struktur if, PHP juga memiliki alternatif perulangan tanpa menggunakan tandakurung kurawal sebagai penanda blok program, dan menggantinya dengan endfor.

Berikut adalah contoh perulangan for dengan endfor:

<?php

for ($i= 1; $i <= 15; $i++) :

echo $i;

echo "<br />";

endfor;

Page 80: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Perbedaan dengan penulisan for dengan kurung kurawal adalah penanda awal blok yang menggunakan tanda titik dua (:) dan pada akhir blok dengan perintah endfor.

Instruksi for yang telah kita pelajari dalam tutorial PHP ini membutuhkan syarat yaitu kita telah mengetahui berapa kali perulangan akan dilakukan pada saat penulisan program. Untuk kondisi dimana kita tidak bisa menentukan berapa banyak proses perulangan yang terjadi, maka PHP menyediakan struktur perulangan while.

Untuk lebih lanjut akan kita bahas pada tutorial belajar PHP berikutnya: Pengertian dan Cara Penulisan Perulangan While dalam PHP.

Tutorial Belajar PHP Part 34: Pengertian dan Cara Penulisan Perulangan While dalam PHP

Dalam tutorial belajar PHP kali ini kita akan mempelajari Pengertian dan Cara Penulisan Perulangan While dalam PHP.

Pengertian Struktur Perulangan While PHP

Untuk situasi dimana kita membutuhkan kondisi perulangan yang tidak dapat dipastikan berapa kali perulangan akan dilakukan, maka kita tidak bisa menggunakan perulangan for.

PHP (dan juga bahasa pemograman lain) menyediakan stuktur perulangan while untuk kondisi perulangan dimana banyaknya perulangan tidak dapat dipastikan pada saat penulisan program.

Misalkan kita ingin membuat program tebak angka, dimana user akan menebak 1 angka dari 1 sampai 10. Untuk kondisi ini, kita tidak dapat mengetahui berapa kali user akan ’mencoba’ untuk menebak angka tersebut. Bisa saja user mencoba sebanyak 1, 5, atau 10 kali sebelum angka tersebut berhasil diterka.

Atau misalkan kita ingin membuat program menemukan kata tertentu di dalam sebuah kalimat yang dimasukkan oleh user. Banyak kata dalam kalimat tidak bisa kita tentukan pada saat pembuatan program (karena akan diinput oleh user pada saat program berjalan), maka kita tidak bisa menentukan seberapa banyak perulangan yang harus dilakukan untuk mencari kata tersebut.

Sampai dengan tutorial ini, kita belum bisa membuat kedua program diatas karena membutuhkan beberapa fungsi PHP yang belum kita pelajari, namun sebagai contoh cara penggunaan struktur while sederhana, berikut adalah kode PHP untuk perulangan while:

<?php

$i=1;

while ($i <= 10)

{

echo "$i";

echo "<br />";

Page 81: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$i=$i+1;

}

?>

Jika anda menjalankan kode program tersebut, maka di web browser akan tampil perulangan angka 1 sampai dengan 10. Dalam tutorial ini, kita akan membahas cara penulisan struktur whileini secara lebih dalam.

Cara Penulisan Struktur Perulangan While PHP

Seperti terlihat pada contoh program sebelumnya, struktur while dalam PHP terdiri dari 2 bagian, yaitu kondisi yang harus dipenuhi untuk proses perulangan, dan baris perintah yang akan diproses secara berulang.

Struktur dasar perulangan while adalah sebagai berikut:

while (condition)

{

statement;

statement;

}

Condition adalah kondisi yang harus dipenuhi agar perulangan berlangsung. Kondisi ini mirip seperti dalam perulangan for. Selama condition bernilai TRUE, maka perulangan akan terus dilakukan. Condition ini akan diperiksa pada tiap perulangan, dan hanya jika hasilnya FALSE, maka proses perulangan berhenti.

Page 82: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Statement adalah kode program yang akan diulang. Kita bisa membuat beberapa kode program untuk menampilkan perintah seperti echo, atau perintah yang lebih kompleks. Namun di dalam bagian ini harus ada baris program yang digunakan sebagai ’penghenti’perulangan. Misalkan pada bagian condition kita menggunakan variabel counter $i, maka di bagian statement harus ada baris program yang membuat condition bernilai FALSE, atau kalau tidak proses perulangan tidak akan pernah berhenti (infinity loop).

Tanda kurung kurawal diperlukan untuk membatasi blok program yang akan diulang. Jika statement hanya terdiri dari 1 baris, maka tanda kurung kurawal tidak diperlukan.

Sebagai pembahasan, saya akan menampilkan ulang contoh kode program sebelumnya, yakni:

<?php

$i=1;

while ($i <= 10)

{

echo "$i";

echo "<br />";

$i=$i+1;

}

?>

Pada baris ke-2 saya membuat sebuah variabel $i, dan memberikan nilai 1. Variabel $i inilah yang akan digunakan sebagai counter untuk kondisi while.

Setelah penulisan while, selanjutnya didalam tanda kurung adalah condition yang harus dipenuhi agar perulangan berjalan. Saya membuat kondisi ($i <= 10) sebagai penanda akhir while, yang berarti selama variabel $i bernilai kurang dari 10, maka lakukan perulangan.

Penting untuk diperhatikan adalah logika pemograman untuk condition. While ($i <= 10) juga berarti bahwa jika nilai variabel $i = 11, maka perulangan akan berhenti. Di dalam kode program, kita harus membuat sebuah baris statement yang digunakan untuk terus menambahkan nilai $isupaya nilai $i bisa mencapai angka lebih dari 10 untuk menghentikan perulangan.

Setelah membuat beberapa baris kode echo untuk menampilkan angka ke web browser pada baris ke-5 dan 6, saya menambahkan kode $i=$i+1 pada baris ke-7 Baris inilah yang akan menambahkan nilai variabel counter $i sebanyak 1 angka pada tiap perulangan, sehingga pada perulangan ke 10, nilai $i akan menjadi 11. Dan kondisi while akan menghasilkan FALSE, sehingga proses perulangan berhenti.

Kesalahan dalam memahami logika while sering menghasilkan perulangan yang akan memproses secara terus menerus (infinity loop).

Page 83: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Anda juga bebas menentukan awal dari variabel counter $i, misalnya untuk mulai dari angka 100 dan mundur ke belakang seperti contoh berikut:

<?php

$i=100;

while ($i >= 0)

{

echo "$i";

echo "<br />";

$i-=8;

}

?>

Perulangan while tersebut akan menghasilkan angka menurun dari 100 sampai dengan 0, dimana pada setiap perulangan nilai 100 akan dikurangi dengan 8.

Penulisan Nested Loop untuk While

Walaupun struktur while agak jarang digunakan untuk nested loop, anda bisa membuat perulangan bersarang dengan struktur while, seperti contoh berikut ini:

<?php

Page 84: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$i=0;

while ($i < 10)

{

$j=0;

while ($j < 10)

{

echo $i;

$j++;

}

echo "<br />";

$i++;

}

Dalam kode diatas, saya membuat perulangan yang sama seperti contoh nested loop pada tutorialperulangan for, dimana kode diatas akan menampilkan angka 0-9 sebanyak 9 angka.

Jika anda membandingkan dengan struktur for untuk hasil yang sama, perulangan for akan ’lebih’mudah dipahami dibandingkan perulangan while diatas.

Cara Penulisan Alternatif Struktur Perulangan While

Page 85: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai cara penulisan alternatif, PHP menyediakan penulisan blok while yang biasanya menggunakan tanda kurung kurawal dengan endwhile.

Berikut adalah contoh penulisan alternatif struktur while dalam PHP:

<?php

$i=1;

while ($i <= 10):

echo "$i";

echo "<br />";

$i=$i+1;

endwhile;

?>

Untuk penulisan alternatif ini, saya mengganti tanda kurung kurawal untuk menandai blok whiledengan tanda titik dua (:) pada awal perulangan, dan perintah endwhile di akhir blok.

Setelah mempelajari struktur perulangan for dan while, PHP masih menyediakan 1 buah struktur perulangan dasar lainnya, yakni perulangan do-while. Dalam tuturial selanjutnya kita akan mempelajari penhertian dan cara penulisan struktur perulangan do-while dalam PHP.

Tutorial Belajar PHP Part 35: Pengertian dan Cara Penulisan Perulangan Do-While dalam PHP

Struktur dasar perulangan terakhir yang akan kita bahas adalah perulangan do-while. Di dalam tutorial Pengertian dan Cara Penulisan Struktur Perulangan Do-While dalam PHP ini kita akan membahasnya lebih dalam.

Pengertian Perulangan Do-While dalam PHP

Perulangan while dan do-while pada dasarnya hampir sama. Perbedaan terletak pada ’lokasi’pengecekan kondisi perulangan.

Dalam struktur while, pengecekan untuk kondisi perulangan di lakukan di awal, sehingga jika kondisi tidak terpenuhi, maka perulangan tidak akan pernah dijalankan.

Namun pada perulangan do-while, pengecekan kondisi akan dilakukan di akhir perulangan, sehingga walaupun kondisi adalah FALSE, perulangan akan tetap berjalan minimal 1 kali.

Sebagai perbandingan, perhatikan contoh struktur while berikut ini:

<?php

$i=1000;

while ($i <= 10)

{

Page 86: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "$i";

echo "Tidak akan tampil di browser";

$i=$i+1;

}

?>

Kode program diatas tidak akan menampilkan apa-apa, karena kondisi while ($i<=10) sudah menghasilkan nilai FALSE pada awal program (karena saya sudah mendefenisikan nilai $i=1000, pada baris pertama)

Namun jika kode diatas kita ubah menjadi do-while, maka berikut hasilnya:

<?php

$i=1000;

do

{

echo "$i";

echo "Akan tampil di browser";

$i=$i+1;

} while ($i <= 10);

?>

Program diatas akan menampilkan ”1000Akan tampil di browser”. Hal ini terjadi karena pada struktur do-while, perulangan program akan tampil setidaknya 1 kali walaupun kondisi whilemenghasilkan FALSE.

Cara Penulisan Struktur Perulangan Do-While PHP

Penulisan struktur do-while mirip dengan struktur while, namun kita menambahkan perintah dodi awal struktur. Berikut adalah format dasar penulisan struktur do-while dalam PHP:

do {

statement;

statement;

} while (condition);

Setelah perintah do, di dalam blok kurung kurawal adalah statement. Statement adalah kode program yang akan diulang. Kita bisa membuat beberapa kode program untuk menampilkan perintah seperti echo, atau perintah yang lebih kompleks. Namun di dalam bagian ini harus ada baris program yang digunakan sebagai ’penghenti’ perulangan.

Page 87: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Condition adalah kondisi yang harus dipenuhi agar perulangan berlangsung. Selama conditionbernilai TRUE, maka perulangan akan terus dilakukan. Condition ini akan diperiksa pada tiap perulangan, dan hanya jika hasilnya FALSE, maka proses perulangan berhenti.

Sebagai contoh sederhana perulangan do-while, berikut adalah kode perulangan untuk menampilkan angka 1 sampai dengan 10 pada web browser:

<?php

$i=1;

do

{

echo "$i";

echo "<br />";

$i=$i+1;

} while ($i <= 10);

?>

Anda juga bisa menggunakan struktur do-while untuk perulangan bersarang (nested loop) seperti pada tutorial perulangan for dan while.

Sama seperti perulangan while, dalam perancangan perulangan do-while ini kita harus memahami alur logika program yang dibuat. Karena tidak seperti perulangan for dimana jumlah perulangan telah di tentukan di awal, untuk struktur do-while banyak perulangan di tentukan pada saat program mencapai kondisi FALSE. Kesalahan dalam alur logika akan membuat PHP tidak pernah berhenti memproses perulangan.

Tutorial Belajar PHP Part 36: Fungsi dan Cara Penulisan Perintah Break Dalam Perulangan PHP

Page 88: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial kali ini kita akan membahas tantang perintah break yang digunakan untuk menghentikan perulangan for, while, maupun do-while di dalam PHP.

Fungsi Perintah Break Dalam Perulangan PHP

Ketika proses perulangan berjalan, ada kalanya kita ingin segera keluar dari perulangan jika sebuah kondisi tertentu telah terpenuhi, sehingga sisa proses perulangan tidak perlu dijalankan.

Misalkan kita memiliki nama-nama mahasiswa yang tersimpan di dalam sebuah array atau di dalam database. Proses pencarian sederhana dapat dirancang dengan melakukan pencocokan secara berulang dimulai dari nama pertama, kedua, dan seterusnya. Perulangan ini akan dilakukan sebanyak daftar mahasiswa yang ada.

Akan tetapi, jika nama yang dicari telah ditemukan, proses perulangan seharusnya dapat dihentikan saat itu juga, karena tujuan pencarian nama telah selesai.

Untuk keperluan inilah PHP menyediakan instruksi break. Break berfungsi sebagai perintah kepada web server untuk menghentikan perulangan secara prematur, yaitu menghentikan perulangan di luar dari yang direncanakan.

Cara Penulisan Perintah Break

Perintah break dapat di letakkan di posisi manapun di dalam perulangan, namun biasanya kita akan membuat logika IF untuk menentukan kapan perintah break akan dijalankan.

Contoh Penggunaan Break dalam Perulangan For

Berikut adalah contoh program perulangan for dengan menggunakan perintah break:

<?php

for ($i=0; $i <100; $i++)

{

if ($i==13)

{

break;

}

echo $i;

echo "<br />";

}

Page 89: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam program diatas, saya membuat perulangan for dari 0 sampai 100, dan dalam keadaan normal, perintah for ($i=0; $i <100; $i++) akan memproses perulangan sebanyak 100 kali.

Namun pada baris ke-4 saya menambahkan sebuah struktur IF yang menyatakan bahwa jika nilai variabel counter $i sama dengan 13, maka break. Perintah break akan membuat perulangan forlangsung dihentikan, dan kita hanya menghasilkan perulangan sampai angka 13.

Contoh Penggunaan Break dalam Perulangan While

Sama seperti perulangan for, perintah break digunakan untuk menghentikan perulangan while secara prematur, atau sebelum kondisi pada bagian condition terpenuhi.

Menggunakan contoh yang sama dengan struktur perulangan for, berikut adalah contoh penggunaan break untuk perulangan while:

<?php

$i=0;

while ($i < 100)

{

$i++;

if ($i==13)

{

break;

Page 90: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

echo $i;

echo "<br />";

}

Dalam contoh kode program diatas, perulangan akan berhenti pada iterasi ke-13. Dimana saya membuat sebuah kondisi ketika variabel counter bernilai 13, maka break. Perintah break akan menghentikan perulangan secara paksa.

Cara Penggunaan Instruksi Break pada Perulangan Bersarang (Nested Loop)

Untuk perulangan bersarang (nested loop), instruksi break bisa bermakna ganda, yaitu apakah kita ingin menghentikan perulangan luar, atau perulangan dalam.

Agar lebih mudah dipahami, berikut adalah contoh nested loop yang pernah kita bahas pada tutorial perulangan for:

<?php

for ($i=0; $i <10; $i++)

{

for ($j=0; $j <10; $j++)

{

echo $i;

}

echo "<br />";

}

Page 91: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam perulangan tersebut, variabel counter $i digunakan untuk perulangan luar (outer loop), dan variabel counter $j digunakan untuk perulangan dalam (inner loop).

Jika kita membuat perintah break pada perulangan $j (inner loop), maka yang akan dihentikan hanya perulangan $j saja, seperti pada contoh program berikut ini:

<?php

for ($i=0; $i <10; $i++)

{

for ($j=0; $j <10; $j++)

{

if ($i==4)

{

break;

}

echo $i;

}

echo "<br />";

}

Page 92: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dengan memberikan perintah break pada perulangan $j, maka perulangan $j akan berhenti pada angka 4, namun perulangan $i akan terus berjalan.

Bagaimana jika kita juga ingin menghentikan perulangan $i?

Caranya adalah dengan mengubah perintah break diatas menjadi break 2. Angka 2 bertujuan untuk memberitahu PHP bahwa perintah break ditujukan untuk 2 level perulangan diatasnya.

Berikut adalah contoh program sebelumnya, dengan ditambahkan break 2:

<?php

for ($i=0; $i <10; $i++)

{

for ($j=0; $j <10; $j++)

{

if ($i==4)

{

break 2;

}

echo $i;

}

echo "<br />";

}

Page 93: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda membuat nested loop dengan 3 tingkatan, atau 3 level, maka kita bisa menggunakan perintah break 3 untuk keluar dari perulangan terdalam.

Perintah atau instruksi break berguna untuk menghentikan perulangan secara langsung, namun jika yang kita inginkan adalah ’melompati’ satu kali proses perulangan tanpa menghentikan seluruh proses, PHP menyediakan perintah continue.

Perintah continue ini akan kita bahas secara mendalam di tutorial belajar PHP selanjutnya: Fungsi dan Cara Penulisan Perintah Continue Dalam Perulangan PHP.

Tutorial Belajar PHP Part 37: Fungsi dan Cara Penulisan Continue Dalam Perulangan PHP

Dalam tutorial kali ini kita akan membahas tentang Fungsi Perintah Continue Dalam Perulangan PHP.

Fungsi Perintah Continue dalam PHP

Perintah continue juga digunakan untuk men-interupsi perulangan dalam PHP, namun jika perintahbreak digunakan untuk menghentikan perulangan, maka perintah continue hanya akan menghentikan perulangan untuk 1 iterasi saja, lalu proses perulangan akan dilanjutkan.

Berikut contoh kode PHP penggunaan perintah continue:

<?php

for ($i=0; $i <10; $i++)

{

if ($i==7)

{

continue;

Page 94: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

echo $i;

echo "<br />";

}

Contoh perulangan diatas mirip dengan contoh pada perulangan break. Setelah perintah for, saya membuat sebuah kondisi IF yang jika variabel counter $i bernilai 7, maka jalankan continue.

Arti dari continue ini adalah sebuah instruksi kepada PHP untuk melewati sisa perintah dalam perulangan, dan langsung lompat ke nilai counter berikutnya, yakni 8. Dari hasil program, anda tidak akan melihat angka 7 ditampilkan.

Cara Penggunaan Continue pada Nested Loop

Sama seperti perintah break, perintah continue juga bisa digunakan untuk nested loop, dan kita menggunakan angka setelah perintah continue untuk menginstruksikan level kedalaman loop.

Berikut adalah contoh penggunaan perintah continue dalam nested loop

<?php

for ($i=0; $i <10; $i++)

{

for ($j=0; $j <10; $j++)

{

if ($i==4)

{

Page 95: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

continue 2;

}

echo $i;

}

echo "<br />";

}

Dalam contoh diatas, perintah continue 2 akan menginstruksikan kepada PHP untuk tidak mengeksekusi perulangan for pada perulangan terluar, yakni jika $i sama dengan 4, dan melanjutkan kedalam iterasi selanjutnya, yakni $i=5.

Instruksi break dan continue ini melengkapi tutorial tentang perulangan dalam PHP. Selanjutnya, saya akan membahas tentang perulangan khusus untuk array, yaitu perulangan foreach.

Tutorial Belajar PHP Part 38: Pengertian dan Fungsi Perulangan Foreach dalam PHP

Setelah mempelajari perulangan dasar seperti for, while, dan do-while, PHP menyediakan perulangan khusus untuk array, yaitu perulangan foreach. Dalam tutorial kali ini kita akan mempelajari Pengertian dan Cara Penulisan Perulangan Foreach dalam PHP.

Pengertian Perulangan Foreach dalam PHP

Array merupakan tipe data yang sering digunakan dalam membuat program menggunakan PHP. Kemampuan array dalam menyimpan banyak data dalam satu variabel akan sangat berguna untuk menyederhanakan dan menghemat penggunaan variabel.

Untuk menampilkan dan memproses data dari array, kita bisa memanfaatkan perulangan for, seperti contoh berikut ini:

<?php

Page 96: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$nama = array("Andri","Joko","Sukma","Rina","Sari");

for ($i=0; $i <5; $i++)

{

echo "$nama[$i]";

echo "<br />";

}

?>

Contoh diatas membuat perulangan for sebanyak 5 kali, dengan variabel counter $i dimulai dari angka 0 (karena index array dimulai dari angka 0).

Namun sebagai cara alternatif untuk menampilkan array, saya akan mengubah kode diatas dengan menggunakan perulangan foreach:

<?php

$nama = array("Andri","Joko","Sukma","Rina","Sari");

foreach ($nama as $val)

{

echo "$val";

echo "<br />";

}

?>

Page 97: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Perulangan foreach diatas akan menampilkan semua isi array dengan perintah yang lebih singkat daripada menggunakan perulangan for.

Cara Penulisan Perulangan Foreach dalam PHP

Perulangan foreach merupakan perulangan khusus untuk pembacaan nilai array. Seperti yang telah kita bahas pada tutorial tentang tipe data array: Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP, setiap array memiliki pasangan key dan value. Key adalah ‘posisi’ dari array, danvalue adalah ‘isi’ dari array.

Format dasar perulangan foreach adalah:

foreach ($nama_array as $value)

{

statement (...$value...)

}

$nama_array adalah nama dari array yang telah didefenisikan sebelumnya.

$value adalah nama ‘variabel perantara’ yang berisi data array pada perulangan tersebut. Anda bebas memberikan nama untuk variabel perantara ini, walaupun pada umumnya banyak programmer menggunakan $value, atau $val saja.

Berikut adalah contoh perulangan foreach sebelumnya:

<?php

$nama = array("Andri","Joko","Sukma","Rina","Sari");

foreach ($nama as $val)

{

echo "$value";

echo "<br />";

}

?>

Pada contoh diatas, saya mendefenisikan variabel array $nama dengan format singkat, dan tanpa mendefenisikan key secara tertulis. Variabel $val merupakan variabel perantara dalam contoh diatas. Perulangan tersebut akan diulang sebanyak data yang terdapat di dalam array, sehingga kita tidak perlu harus menghitung seberapa banyak perulangan yang harus dilakukan.

Jika anda membutuhkan nilai key dari array untuk dapat diproses, maka PHP menyediakan bentuk kedua dari perulangan foreach, dengan format dasar penulisan sebagai berikut:

Page 98: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

foreach ($nama_array as $key => $value)

{

statement ($key...$value...)

}

Perbedaan dengan format sebelumnya, disini PHP menyediakan variabel perantara kedua, yaitu variabel $key. Variabel $key ini menampung nilai key dari array.

Berikut adalah contoh penggunaannya:

<?php

$nama = array(

1=>"Andri",

6=>"Joko",

12=>"Sukma",

45=>"Rina",

55=>"Sari");

foreach ($nama as $kunci =>$isi)

{

echo "Urutan ke-$kunci adalah $isi";

echo "<br />";

}

?>

Page 99: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Variabel array $nama saya defenisikan menggunakan key yang berbeda-beda. Pada perulanganforeach, saya membuat variabel perantara $kunci =>$isi, sehingga didalam perulangan, variabel$kunci akan berisi key dari array, dan variabel $isi akan berisi nilai dari array.

Proses menampilkan dan memproses array akan lebih mudah dengan menggunakan perulangan foreach dibandingkan perulangan dasar seperti for. Terlebih lagi kita tidak perlu mencari tau seberapa banyak perulangan harus dilakukan, karena perulangan foreach akan otomatis berhenti pada data terakhir dari array.

Cara Pembuatan Fungsi PHP:

Tutorial Belajar PHP Part 39: Pengertian Fungsi (function) PHP dan Cara Penggunaan Fungsi PHP

Fungsi (function) merupakan bagian penting dalam pemograman. Dalam tutorial PHP kali ini, kita akan membahas tentang pengertian, dan cara penggunaan fungsi di dalam PHP.

Pengertian Fungsi (Function) dalam PHP

Dalam merancang kode program, kadang kita sering membuat kode yang melakukan tugas yang sama secara berulang-ulang, seperti membaca tabel dari database, menampilkan penjumlahan, dan lain-lain. Tugas yang sama ini akan lebih efektif jika dipisahkan dari program utama, dan dirancang menjadi sebuah fungsi.

Fungsi (atau Function) dalam bahasa pemograman adalah kode program yang dirancang untuk menyelesaikan sebuah tugas tertentu, dan merupakan bagian dari program utama. Kita dapat membuat fungsi sendiri, atau menggunakan fungsi yang dibuat oleh programmer lain.

Dalam dunia pemograman terdapat istilah ‘lazy progamming’ yang artinya bukanlah programmer yang malas. Tetapi, daripada membuat kode program umum dari dasar, kita bisa menggunakanfungsi yang telah dibuat oleh programmer lain. PHP bahkan menyediakan ribuan fungsi bawaan yang tersedia untuk membantu kita dalam merancang program.

Mengetahui cara penggunaan fungsi ini akan menghemat waktu pembuatan program dan membuat kode program menjadi lebih efisien. Lazy programming is smart programming.

Page 100: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Menggunakan Fungsi PHP

Menggunakan fungsi dalam teori pemograman sering juga disebut dengan istilah ‘memanggil fungsi’(calling a function). Fungsi dipanggil dengan menulis nama dari fungsi tersebut, dan diikuti dengan argumen (jika ada). Argumen ditulis di dalam tanda kurung, dan jika jumlah argumen lebih dari satu, maka diantaranya dipisahkan oleh karakter koma.

Setelah memproses nilai inputan, hampir semua fungsi akan memberikan nilai hasil pemrosesan tersebut (walaupun ada fungsi yang tidak memberikan nilai). Cara fungsi memberikan nilainya ini sering disebut dengan ‘mengembalikan nilai’ (return a value). Nilai yang dikembalikan oleh sebuah fungsi dapat ditampung ke dalam variabel, atau langsung ditampilkan ke web browser.

Pengertian Argumen dan Parameter dalam Fungsi PHP

Sebuah fungsi dalam memproses data, kadang memerlukan beberapa inputan atau nilai masukan. Inputan inilah yang dimaksud dengan argumen. Sebuah fungsi bisa membutuhkan 1, 2, atau 5argumen, namun bisa juga tidak memerlukan argumen sama sekali.

Parameter adalah sebutan lain untuk argumen. Perbedaannya, parameter merujuk kepada inputan fungsi pada saat pendefenisian fungsi tersebut, dan agrumen adalah sebutan untuk inputan fungsi pada saat pemanggilan fungsi. Kita akan membahas perbedaan Argumen danParameter secara lebih dalam pada tutorial selanjutnya, namun pada dasarnya argumen danparameter merujuk kepada hal yang sama, yaitu inputan kepada fungsi dan kedua istilah ini sering dipertukarkan.

Contoh Pemanggilan Fungsi PHP

Sebagai latihan dan prakter dalam menggunakan fungsi, Berikut adalah format dasar pemanggilan, dan pengembalian nilai fungsi:

$varibel_hasil_fungsi = nama_fungsi(argumen1, argumen2, argumen3)

$varibel_hasil_fungsi adalah variabel yang akan menampung hasil pemrosesan fungsi. Tergantung fungsinya, hasil dari sebuah fungsi bisa berupa angka, string, array, bahkan objek.

nama_fungsi adalah nama dari fungsi yang akan dipanggil

argumen1, argumen2 adalah nilai inputan fungsi. Banyaknya argumen yang dibutuhkan, tergantung kepada fungsi tersebut. Jika sebuah fungsi membutuhkan argumen 2 buah angka, maka kita harus menginputnya sesuai dengan aturan tersebut, atau jika tidak, PHP akan mengeluarkan error.

Sebagai contoh, PHP menyediakan fungsi akar kuadrat, yakni sqrt(), berikut adalah cara penggunaannya:

<?php

$akar_kuadrat = sqrt(49);

echo "Akar kuadrat dari 49 adalah $akar_kuadrat";

// Akar kuadrat dari 49 adalah 7

Page 101: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Dalam contoh diatas, fungsi sqrt() akan menghitung akar kuadrat dari nilai argumen yang diinput. Saya menambahkan argumen 49 sebagai inputan.

Nilai hasil dari fungsi sqrt(49), selanjutnya di tampung dalam variabel $akan_kuadrat, yang kemudian ditampilkan ke dalam web browser.

Selain ditampung di dalam variabel, kita bisa menampilkan hasil fungsi langsung ke web browser, seperti contoh berikut:

<?php

echo "12 pangkat 2 adalah: ".pow(12,2);

// 12 pangkat 2 adalah: 144

?>

Fungsi pow() adalah fungsi pemangkatan matematika bawaan PHP. Fungsi ini membutuhkan 2 argumen, argumen pertama adalah nilai awal yang ingin dihitung, dan argumen kedua adalah nilai pangkat. Pow(12,2) sama dengan 12 kuadrat.

Perlu juga diperhatikan adalah tipe parameter yang dibutuhkan oleh sebuah fungsi. Seperti 2 contoh kita diatas, fungsi sqrt() dan pow() adalah fungsi matematika. Kedua fungsi ini hanya bisa memproses parameter dengan tipe angka (interger dan float). Jika anda memasukkan parameter jenis string, maka PHP akan mengeluarkan error.

Jumlah dan urutan argumen juga harus sesuai dengan yang dibutuhkan oleh fungsi. Jika sebuah fungsi hanya membutuhkan 1 argumen, maka kita tidak bisa menambahkan argumen kedua, kecuali ada argumen yang bersifat opsional (dapat diabaikan).

Dalam tutorial selanjutnya, kita akan mempelajari cara membuat fungsi di dalam PHP.

Tutorial Belajar PHP Part 40: Cara Penulisan dan Pembuatan Fungsi PHP

Selain menggunakan fungsi bawaan PHP, untuk keperluan yang lebih khusus kita bisa membuat fungsi sendiri. Dalam tutorial kali ini kita akan membahas Cara Penulisan dan Pembuatan Fungsi dalam PHP.

Cara Penulisan Fungsi dalam PHP

Sebuah fungsi merupakan kode program yang dirancang untuk menyelesaikan sebuah tugas tertentu. Tujuan memisahkan sebuah kode menjadi fungsi adalah untuk kepraktisan dan kemudahan dalam membuat program utama. Karena jika dijadikan fungsi, maka untuk menjalankan tugas yang sama, kita tinggal memanggil fungsi tersebut, tanpa perlu membuat kembali kode programnya.

Untuk membuat fungsi di dalam PHP, berikut adalah format dasar pembuatan fungsi:

function nama_fungsi ($parameter1, $parameter2)

{

// kode program fungsi

Page 102: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

return $nilai_akhir

}

Kata function adalah instruksi kepada PHP bahwa kita akan membuat fungsi

nama_fungsi adalah nama dari fungsi yang akan ditulis

$parameter1, $parameter2 adalah variabel perantara yang akan menyimpan inputan yang diperlukan dalam pemrosesan fungsi (argumen). Tergantung kebutuhan, anda bebas merancang seberapa banyak parameter yang dibutuhkan.

return adalah perintah khusus untuk fungsi, dimana kata return menginstruksikan kepada PHP bahwa pemrosesan fungsi telah selesai. return $nilai_akhir berarti bahwa fungsi akan ‘mengembalikan’ $nilai_akhir sebagai hasil dari fungsi.

Perhatikan juga bahwa fungsi ini berada di dalam blok program yang ditandai dengan kurung kurawal pada baris pertama dan terakhir fungsi.

Agar lebih mudah dipahami, kita akan mencoba membuat beberapa fungsi PHP sederhana.

Contoh Pembuatan Fungsi PHP

Sebagai contoh pertama fungsi PHP, saya akan membuat fungsi sederhana untuk perkalian 2 angka. Nama fungsi ini adalah perkalian, dan membutuhkan 2 argumen dengan tipe data angka (integer atau float), berikut adalah cara pembuatan dan penggunaan fungsi perkalian:

<?php

//pembuatan fungsi

function perkalian($angka1, $angka2)

{

$a= $angka1;

$b= $angka2;

$hasil= $a*$b;

return $hasil;

}

//pemanggilan fungsi

$hasil=perkalian(4,5);

echo "Perkalian 4 x 5 adalah $hasil";

echo "<br />";

Page 103: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "Perkalian 7 x 2 adalah ".perkalian(7,2);

?>

Pada baris ke-3, saya mendefenisikan fungsi perkalian() yang memerlukan 2 parameter.SParameter ditulis sebagai variabel, dan anda bebas menentukan nama variabel ini, dalam contoh diatas, parameter untuk fungsi perkalian() adalah $angka1 dan $angka2.

Di dalam fungsi perkalian(), saya membuat variabel $a dan $b yang digunakan untuk menampung nilai $angka1 dan $angka2, pemindahan variabel ini sebenarnya tidak diperlukan, namun anda akan sering menemukan hal ini di dalam berbagai fungsi. Biasanya pemindahan ini dilakukan agar lebih mudah dan singkat dalam menggunakan variabel pada pemrosesan fungsi.

Variabel $hasil digunakan untuk menampung nilai akhir dari perkalian $a*$b, dan hasilnya di-kembalikan dengan perintah return $hasil. Return secara otomatis menutup fungsi, dan jika anda masih memiliki kode program setelah perintah return, perintah tersebut tidak akan diproses, oleh karena itu perintah return harus diletakkan di akhir penulisan fungsi.

Selanjutnya pada baris ke-12, saya memanggil fungsi perkalian() dengan menyimpan nilai kembaliannya ke dalam variabel $hasil, atau bisa dipanggil secara langsung dalam satu baris perintah echo, seperti pada baris ke-15.

Sebagai contoh fungsi kedua, saya akan membuat fungsi untuk menentukan luas lingkaran. Seperti yang kita ketahui, luas lingkaran didapat dengan rumus: pi*jari-jari*jari-jari. Berikut adalah program untuk menghitung luas lingkaran:

<?php

//pemanggilan fungsi

echo "Luas Lingkaran dengan jari-jari 7cm = ".luas_lingkaran(7)."cm";

//pembuatan fungsi

function luas_lingkaran($jari2)

{

return M_PI*$jari2*$jari2;

}

?>

Saya memulai program dengan langsung memanggil fungsi luas_lingkaran(7), padahal fungsi tersebut belum didefenisikan. Hal ini dimungkinkan karena pada saat kode PHP dijalankan, web server akan men-compile fungsi-fungsi yang ada terlebih dahulu. Sehingga kita bisa memanggil fungsi yang di defenisikan setelah dipanggil.

Page 104: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pada fungsi luas_lingkaran(), satu-satunya argumen yang diperlukan adalah panjang jari-jari lingkaran. M_PI adalah konstanta matematis yang disediakan PHP, yang nilainya sama dengan konstanta pi, yaitu 3,14. Namun anda juga bisa mengubahnya menjadi 3.14*$jari2*$jari2.

Perbedaan antara Argumen dan Paramater

Pada penjelasan tentang fungsi perkalian() dan luas_lingkaran(), saya menggunakan 2 istilah untuk nilai inputan fungsi, yakni argumen dan parameter. Tetapi apa perbedaan keduanya?

Argumen merujuk kepada inputan fungsi pada saat fungsi dipanggil, contohnya pada saat saya memanggil fungsi perkalian(4,5), angka 4 dan 5 disebut argumen.

Sedangkan Parameter merujuk kepada inputan fungsi pada saat pendefenisian. Saya membuat fungsi perkalian dengan perintah : function perkalian($angka1, $angka2), variabel $angka1 dan$angka2 adalah parameter.

Namun pada penggunaan sehari-hari, istilah parameter dan argumen sering dipertukarkan. Termasuk dalam manual resmi PHP, dimana istilah argumenlah yang sering digunakan. Dalam tutorial di duniailkom, saya akan menggunakan istilah parameter dan argumen secara bergantian.

Dalam tutorial selanjutnya, kita akan membahas tentang variabel scope, yaitu batasan ruang lingkup dari sebuah variabel. Selanjutnya dalam Tutorial Belajar PHP: Pengertian Variabel Scope, Global Variabel, dan Static Variabel dalam PHP.

Tutorial Belajar PHP Part 41: Pengertian Variabel Scope, Global Variabel, dan Static Variabel PHP

Pada tutorial kali ini kita akan mempelajari tentang beberapa istilah terkait fungsi dalam PHP, yaituPengertian Variabel Scope, Global Variabel, dan Static Variabel dalam PHP.

Pengertian Variabel Scope

Variabel Scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses sebuah variabel.

Jika kita mendefenisikan sebuah variabel pada satu file PHP, maka variabel tersebut dapat diakses oleh seluruh kode program pada halaman yang sama. Namun jika variabel tersebut di defenisikan di dalam sebuah fungsi, variabel itu belum tentu bisa diakses dari luar fungsi tersebut. Hal inilah yang dimaksud dengan Variabel Scope.

Variabel yang didefenisikan di dalam sebuah fungsi, secara default tidak dapat diakses oleh kode program di luar fungsi tersebut. Dan begitu juga sebaliknya, variabel yang didefenisikan di luar fungsi, tidak bisa diakses dari dalam fungsi.

Contoh Variabel Scope dalam Fungsi PHP

Untuk memahami konsep variabel scope, berikut adalah contoh kode program dalam PHP:

<?php

$a = 5;

Page 105: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

function coba()

{

$a=10;

$b=7;

}

// pemanggilan fungsi coba()

coba();

echo $a; // 5

echo $b; // error:notice

?>

Pada baris ke-2, saya mendefenisikan variabel $a, dan memberikan nilai awal = 5. Pada baris ke-4 saya membuat fungsi coba() dan mendefenisikan kembali variabel $a yang kali ini nilainya adalah 10, dan juga membuat sebuah variabel baru, yakni $b.

Setelah memanggil fungsi coba() pada baris ke-11, saya kemudian memeriksa nilai $a dengan perintah echo. Dan ternyata nilai $a adalah 5, bukan 10. Dan ketika saya ingin mengakses variabel $b, PHP akan mengeluarkan peringatan bahwa variabel $b belum di defenisikan, dengan pesan error: Notice: Undefined variable: b in D:\xampp\htdocs\belajar\test.php on line 13.

Hal ini terjadi karena variabel $a dan $b berada di dalam fungsi coba() yang merupakan variabel yang berbeda dengan variabel $a yang berada diluar fungsi. Jangkauan variabel $a dan $b hanya berada di dalam fungsi.

Contoh lainnya, perhatikan kode program berikut ini:

<?php

$b = 7;

function coba()

{

$a=10;

echo $a;

echo $b;

}

Page 106: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

coba();

?>

Pada program kali ini, saya mencoba mengakses variabel $b dari dalam fungsi coba(), namun PHP akan mengeluarkan pesan peringatan pada baris ke-8: Notice: Undefined variable: b in D:\xampp\htdocs\belajar\test.php on line 8 yang berarti bahwa PHP tidak menemukan adanya variabel $b. Variabel $b hanya dapat diakses dalam ruang lingkup di luar fungsi coba().

Konsep pembatasan variabel scope ini terkesan merepotkan, namun sebenarnya sangat berguna untuk men-isolasi penggunaan variabel agar tidak saling ‘menimpa’. Fungsi-fungsi bawaan di dalam PHP dibuat oleh berbagai programmer dari seluruh dunia, dan mungkin saja kita secara tidak sengaja menggunakan nama variabel yang sama dengan nama variabel yang ada dalam salah satu fungsi tersebut. Dengan menerapkan variabel scope, PHP dapat terhindar dari permasalahan tersebut.

Pengertian Global Variabel

Jika kita tetap ingin menggunakan variabel yang didefenisikan di luar fungsi dan sebaliknya, PHP memperbolehkan hal tersebut dengan menambahkan sebuah kata kunci ‘global’ sebelum pendefenisian nama variabel.

Berikut contoh penggunaan keyword global:

<?php

$a = 7;

function coba()

{

global $a;

global $b;

$b=15;

echo $a; //7

echo $b; //15

}

coba();

echo $a; //7

echo $b; //15

Page 107: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Program diatas tidak akan menghasilkan error seperti sebelumnya, dan kita bisa mengakses nilai variabel $a dari dalam fungsi coba(), dan nilai variabel $b di luar fungsi.

Kata kunci global membuat fungsi dapat mengakses variabel yang didefenisikan diluar fungsi.

Pengertian Static Variabel

Static Variabel, atau variabel statis adalah jenis variabel yang mempertahankan nilainya pada setiap pemanggilan fungsi. Untuk variabel normal, nilai dari variabel tersebut akan secara otomatis dihapus pada saat fungsi selesai dijalankan, dan akan dibuat ulang pada saat fungsi dipanggil.

Namun jika sebuah variabel dinyatakan sebagai static variabel, maka nilai variabel tersebut akan tetap dipertahankan walaupun fungsi telah selesai dijalankan. Biasanya fungsi ini dimanfaatkan jika kita ingin menghitung berapa kali sebuah fungsi dipanggil.

Berikut adalah contoh program penggunaan variabel statis dalam PHP:

<?php

function coba()

{

static $a=0;

$a=$a+1;

return "Ini adalah pemanggilan ke-$a fungsi coba() <br />";

}

echo coba();

echo coba();

echo coba();

echo coba();

?>

Jika anda menghapus keyword static pada baris ke-4, maka variabel $a akan selalu bernilai 0, karena nilainya akan dihapus pada setiap kali pemanggilan fungsi coba(). Namun dengan membuat$a sebagai static variable, maka nilai dari $a akan terus dipertahankan sepanjang pemrosesan halaman oleh PHP.

Konsep tentang variabel scope, global variabel dan static variabel ini akan membantu kita dalam memahami cara kerja fungsi dalam PHP.

Page 108: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Selanjutnya masih tutorial tentang fungsi, kita akan membahas Cara Pengecekan Tipe Data Argumen untuk Fungsi PHP.

Tutorial Belajar PHP Part 42: Cara Pengecekan Tipe Data Argumen untuk Fungsi PHP

Dalam pembuatan fungsi PHP, kita dapat memanfaatkan argumen atau parameter sebagai inputan kedalam fungsi yang dirancang. Dalam tutorial belajar PHP kali ini kita akan membahas tentang Cara Pengecekan Tipe Data Argumen untuk Fungsi PHP.

Pentingnya Pengecekan Tipe Data Argumen

Dalam pembuatan fungsi PHP, selain merancang cara kerja fungsi, kita juga harus memperkirakan berapa banyak parameter yang dibutuhkan untuk fungsi tersebut. Sebuah fungsi bisa memiliki 1, 2 atau 5 parameter, namun bisa juga tanpa parameter sama sekali.

Tergantung tujuannya, sebuah fungsi umumnya hanya memperbolehkan tipe data tertentu sebagaiargumen. Misalnya, untuk fungsi yang berhubungan dengan matematika, biasanya hanya membutuhkan argumen dengan tipe data angka (integer atau float), dan fungsi penghitung kata, hanya membutuhkan tipe data string sebagai argumen.

Jika anda adalah satu-satunya pengguna fungsi yang anda rancang sendiri, maka dapat dipastikan bahwa tidak akan ada inputan argumen yang salah tipe data. Namun jika terdapat kemungkinan fungsi yang dirancang akan digunakan oleh pihak lain, pengecekan tipe data argumen perlu dirancang agar fungsi berjalan sebagaimana mestinya.

Jika tipe data parameter tidak sesuai, maka fungsi tidak akan berjalan sebagaimana mestinya, dan biasanya PHP akan mengeluarkan pesan error. Cara elegan untuk mengatasi permasalahan ini adalah membuat kode program untuk memeriksa tipe data parameter ini sebelum masuk kepada pemrosesan di dalam fungsi.

Pengecekan tipe data dilakukan pada awal pemrosesan fungsi, dan jika tipe data tidak sesuai, kita bisa membuat pesan bahwa fungsi tidak dapat diproses. Pengecekan apakah suatu argumenmerupakan bagian dari tipe data tertentu, dilakukan dengan fungsi khusus yang telah disediakan PHP.

Berikut adalah list fungsi pengecekan tipe data dalam PHP:

is_array($var): fungsi pengecekan apakah tipe data adalah array

is_bool($var): fungsi pengecekan apakah tipe data adalah boolean

is_double($var): fungsi pengecekan apakah tipe data adalah float

is_float($var): fungsi pengecekan apakah tipe data adalah float

is_int($var): fungsi pengecekan apakah tipe data adalah integer

is_integer($var): fungsi pengecekan apakah tipe data adalah integer

is_long($var): fungsi pengecekan apakah tipe data adalah integer

Page 109: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

is_null($var): fungsi pengecekan apakah tipe data adalah null

is_numeric($var): fungsi pengecekan apakah tipe data adalah angka (integer dan float)

is_object($var): fungsi pengecekan apakah tipe data adalah objek

is_real($var): fungsi pengecekan apakah tipe data adalah float

is_resource($var): fungsi pengecekan apakah tipe data adalah resource (seperti variabel yang menampung koneksi ke database)

is_scalar($var): fungsi pengecekan apakah tipe data adalah scalar (scalar adalah penyebutan untuk tipe data dasar, seperti integer, float, string atau boolean. Array, object dan resource bukan scalar)

is_string($var): fungsi pengecekan apakah tipe data adalah string

Cara Pengecekan Tipe Data Argumen Fungsi

Fungsi-fungsi diatas dapat dimanfaatkan untuk pengecekan tipe data suatu variabel, dan tentu saja juga argumen fungsi. Agar lebih mudah dipahami, saya telah merancang fungsi pangkat() yang berfungsi untuk melakukan pemangkatan bilangan.

Fungsi pangkat() saya rancang dengan 2 buah inputan atau parameter. Parameter pertama adalah angka yang akan dihitung, dan parameter kedua adalah nilai pangkatnya. pangkat(2,3) berarti 2 pangkat 3. pangkat(2,8) berarti 2 pangkat 8. Kedua parameter ini harus berupa angka, dan khusus untuk nilai pangkat, harus berupa angka bulat (integer).

Berikut adalah kode program fungsi pangkat():

<?php

function pangkat($nilai, $pangkat)

{

if (is_numeric($nilai) AND is_int($pangkat)) //pengecekan tipe data argumen

{

//Jika argumen sesuai, maka jalankan proses fungsi

$hasil=1;

for ($i=1;$i<=$pangkat;$i++)

{

$hasil=$hasil*$nilai;

}

return $hasil;

Page 110: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

else

{

//Bagian ini akan dijalankan jika tipe data argumen bukan angka

return "Tipe data argumen harus berupa angka";

}

}

//Test beberapa kasus inputan untuk fungsi pangkat()

echo pangkat(5,2);

echo "<br />";

echo pangkat(5.6,2);

echo "<br />";

echo pangkat(2,8);

echo "<br />";

echo pangkat(5,2.9);

echo "<br />";

echo pangkat("lima",2);

echo "<br />";

?>

Page 111: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Fungsi pangkat() diatas terasa sedikit panjang, namun jika anda telah mengikuti seluruh tutorial PHP di duniailkom, maka fungsi tersebut tidak akan terlalu sulit untuk dipahami.

Fungsi pangkat() saya rancang untuk menghitung pangkat dari sebuah angka. Variabel $nilai dan$pangkat adalah parameter yang akan menjadi variabel perantara.

Pada baris ke-4 saya membuat pengecekan masing-masing parameter di dalam logika IF. Fungsiis_numeric() dan is_int() akan menghasilkan nilai TRUE jika keduanya benar, sehingga saya menggabungkan keduanya kedalam logika AND. Seandainya logika AND ini salah, maka kondisi IF akan bernilai FALSE, dan bagian ELSE akan dijalankan (baris ke-13), dimana saya membuat kalimat “Tipe data argumen harus berupa angka” untuk memberitahu pengguna fungsi bahwa tipe argumennya harus berupa angka.

Jika kedua kondisi is_numeric() dan is_int() benar, maka saya membuat proses perulangan foruntuk mencari hasil pemangkatan. Setelah hasilnya ditemukan, perintah return akan mengembalikan nilai tersebut (baris ke-11).

Dari hasil pemanggilan fungsi, kita dapat melihat bahwa logika alur program sudah berjalan benar, dan jika saya memberikan nilai argumen yang salah, hasil yang ditampilkan bukan kode error PHP, melainkan pesan kesalahan yang lebih informatif.

Dengan menggunakan fungsi seperti is_numeric() dan is_int() kita dapat melakukan pengecekan tipe data terlebih dahulu sebelum melakukan proses fungsi. Hal ini akan menghindari error program PHP, dan memberikan fleksibilitas untuk melakukan tindakan pencegahan jika tipe data yang diinput bukan yang seharusnya.

Dalam tutorial belajar PHP selanjutnya, kita akan membahas tentang Cara Pembuatan Default Parameter pada Fungsi PHP.

Tutorial Belajar PHP Part 43: Cara Pembuatan Default Parameter pada Fungsi PHP

Dalam lanjutan tutorial belajar PHP kali ini kita akan membahas tentang Cara Pembuatan Default Parameter pada Fungsi PHP.

Page 112: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengertian Default Parameter dalam PHP

Default Parameter adalah istilah untuk parameter yang memiliki nilai awal, atau nilai default.

Sebagai contoh, misalkan kita membuat fungsi sederhana: tambah(). Fungsi ini membutuhkan 2 buah parameter, yakni nilai yang ingin ditambahkan. Berikut adalah contoh programnya:

<?php

function tambah($a,$b)

{

return $a+$b;

}

echo tambah(2,3); // hasil: 5

echo tambah(3,4); // hasil: 7

?>

Dengan menambahkan default parameter, kita bisa memanggil fungsi tambah() hanya dengan 1 inputan angka, atau bahkan tidak perlu sama sekali. Berikut adalah perubahannya:

<?php

function tambah($a,$b=2)

{

return $a+$b;

}

echo tambah(2); // hasil: 4

echo tambah(10); // hasil: 12

echo tambah(4,4); // hasil: 8

?>

Perhatikan di dalam pembuatan fungsi, saya menulis parameter kedua menjadi $b=2. Inilah yang dimaksud dengan default parameter. Jika parameter $b tidak ditulis pada saat pemanggilan fungsi, nilai 2 akan dijadikan nilai awal.

Dengan nilai default ini, kita bisa merancang fungsi dengan parameter yang bersifat opsional. Parameter tersebut bisa diisi pada saat pemanggilan fungsi, namun boleh juga diabaikan. Sehingga jika fungsi dipanggil tanpa parameter, nilai ini akan menjadi nilai awal untuk fungsi tersebut.

Page 113: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Fitur default parameter bisa dimanfaatkan untuk membuat fungsi yang fleksibel, karena pada saat pemanggilan fungsi kita tidak harus menginputkan seluruh parameter, tetapi apa yang dianggap perlu saja.

Cara Penulisan Default Parameter dalam PHP

Untuk membuat default parameter, kita hanya butuh memberikan nilai awal pada saat pendefenisian parameter. Berikut adalah format dasar penulisan default parameter dalam PHP:

function nama_fungsi ($parameter1=nilai_default1,$parameter2=nilai_default2)

{

// proses fungsi

return nilai_akhir;

}

nama_fungsi adalah nama dari fungsi yang akan dibuat

$parameter1, $parameter2 adalah variabel yang akan menampung inputan atau argumen pada saat pemanggilan fungsi.

nilai_default1, nilai_default2 adalah nilai default untuk parameter. Nilai ini akan digunakan jika pada saat pemanggilan fungsi nilai parameter tidak diisi.

return nilai_akhir adalah instruksi untuk mengembalian hasil pemrosesan fungsi.

Agar lebih mudah memahami konsep default parameter, saya akan mengubah fungsi pangkat()yang telah kita rancang pada tutorial Cara Pengecekan Tipe Data Argumen untuk Fungsi PHP, berikut adalah contoh kode programnya:

<?php

function pangkat($nilai, $pangkat=2)

{

$hasil=1;

for ($i=1;$i<=$pangkat;$i++)

{

$hasil=$hasil*$nilai;

}

return $hasil;

}

Page 114: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//Test beberapa kasus inputan untuk fungsi pangkat()

echo "pangkat(5) = ".pangkat(5);

echo "<br />";

echo "pangkat(3) = ".pangkat(3);

echo "<br />";

echo "pangkat(2,8) = ".pangkat(2,8);

echo "<br />";

echo "pangkat(3.5,3) = ".pangkat(3.5,3);

echo "<br />";

?>

Pada contoh fungsi pangkat() kali ini saya tidak menggunakan fitur pengecekan tipe data agar contoh program lebih sederhana.

Pada saat mendefenisikan fungsi pangkat(), saya menambahkan nilai 2 sebagai default parameter untuk parameter $pangkat. Sehingga jika fungsi pangkat() dipanggil tanpa parameter ke-2, berarti$pangkat akan diisi nilai 2.

Saat pemanggilan fungsi pangkat(5), maka kita hanya menggunakan 1 buah argumen. Untuk argumen ke 2, akan diisi nilai default, yakni 2. Sehingga fungsi yang akan dijalankan sebenarnya adalah pangkat(5,2).

Namun saat pemanggilan fungsi pangkat(2,8), maka nilai parameter $pangkat akan menggunakan8, bukan angka 2, karena pada pemanggilan kali ini, saya membuat 2 buah argumen.

Penempatan Default Parameter

Page 115: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebuah fungsi tidak dibatasi berapa banyak default parameter yang boleh digunakan, namun jika anda ingin membuat default parameter, dan pada fungsi yang sama juga menggunakan parameter biasa, maka default parameter harus diletakkan di akhir pendefenisian parameter.

Dengan kata lain, setelah pendefinisian parameter dengan nilai default, tidak boleh ada parameter reguler sesudahnya. Contoh pendefenisian fungsi berikut ini akan menyebabkan error dalam PHP:

function tambah($nilai1, $nilai2=3, $nilai3)

Hal ini terjadi karena default parameter diletakkan sebelum parameter biasa. Contoh diatas seharusnya di tulis sebagai:

function tambah($nilai1, $nilai2, $nilai3=3)

//atau

function tambah($nilai1, $nilai2=3, $nilai3=3)

Dalam kedua contoh tersebut, dafault parameter di letakkan setelah pendefenisian parameter biasa.

Default parameter merupakan fitur yang bisa dimanfaatkan untuk membuat fungsi kita lebih fleksibel, karena cara pemanggilan fungsi dapat dirancang dengan lebih sederhana. Untuk merancang fungsi yang lebih rumit, kita bisa membuat jumlah argumen yang tidak terbatas. Mengenai hal ini kita akan membahasnya dalam tutorial Pengertian Variable Parameter dalam Fungsi PHP.

Tutorial Belajar PHP Part 44: Pengertian Variable Parameter dalam Fungsi PHP

Dalam tutorial belajar PHP kali ini, kita akan membahas tentang pengertian variable parameter, dan fungsi dari variabel parameter dalam PHP.

Pengertian Variable Parameter

Variable Parameter adalah sebuah fitur dalam PHP dimana kita bisa membuat fungsi dengan jumlah parameter yang bisa berubah-ubah (variable). Umumnya sebuah fungsi membutuhkanparameter yang telah ditentukan sebelumnya, namun dengan beberapa fungsi khusus, PHP membolehkan kita untuk membuat fungsi dengan jumlah parameter tidak dibatasi, bisa 0, 2, 5, bahkan 100 parameter dengan 1 nama fungsi.

Cara Pembuatan Fungsi dengan Variable Parameter

Sebuah fungsi dengan jumlah parameter yang tidak diketahui tampaknya agak aneh, namun fleksibilitas ini dapat digunakan untuk kasus-kasus pemograman khusus.

Sebagai contoh, saya akan membuat fungsi penambahan(), dimana fungsi ini akan menambahkan seluruh angka yang terdapat di dalam argumennya. Misalkan penambahan(2,6,8) akan menghasilkan 16, dan penambahan(1,2,3,4,5,6) akan menghasilkan nilai 21. Saya menginginkan fungsi ini mendukung berapapun jumlah argumen. Fungsi akan mengunakan fitur Variable Parameter.

Page 116: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk membuat sebuah fungsi dengan jumlah parameter yang tidak diketahui, PHP menyediakan 3 fungsi tambahan untuk mengakses argumen yang diinput pada saat fungsi dipanggil. Ketiga fungsi tersebut adalah:

func_get_args(): fungsi ini akan mengembalikan seluruh nilai argumen dalam sebuah fungsi. Hasilnya dalam bentuk array.

func_num_args(): fungsi ini akan mengembalikan banyaknya jumlah argumen dalam pemanggilan fungsi, apakah 1 argumen, 3 argumen, atau 10 argumen.

func_get_arg(no_urut_argumen): fungsi ini akan mengembalikan nilai dari argumen pada nomor urut yang diberikan kepadanya.

Agar mudah memahami fungsi ketiganya, langsung saja kita masuk ke dalam kode program:

<?php

function penambahan()

{

//ambil variable parameter

$array_argumen = func_get_args();

$jumlah_argumen = func_num_args();

$nilai_argumen_ke_2 = func_get_arg(1); //index dimulai dari 0

//tampilkan hasil variable parameter

echo "Jumlah argumen: $jumlah_argumen";

echo "<br />";

echo "Nilai argumen ke-2: $nilai_argumen_ke_2";

echo "<br />";

echo "Array Argumen: ";

var_dump($array_argumen);

echo "<br />";

echo "<br />";

Page 117: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

return;

}

echo "Rincian dari fungsi penambahan(1,2) : ";

echo "<br />";

penambahan(1,2);

echo "Rincian dari fungsi penambahan(5,4,3,2,1) : ";

echo "<br />";

penambahan(5,4,3,2,1);

echo "Rincian dari fungsi penambahan(0,6,8,19) : ";

echo "<br />";

echo penambahan(0,6,8,19);

?>

Page 118: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Mari kita membahas kode PHP diatas:

Pada baris ke-2, saya mendefenisikan fungsi penambahan() tanpa menggunakan parameter. Untuk membuat fungsi variable parameter (dimana jumlah parameternya yang tidak ditentukan) dalam pendefenisian fungsi, dibuat tanpa parameter sama sekali.

Pad baris 5-7, saya menjalankan ke-3 fungsi khusus yang telah dijelaskan sebelumnya. Fungsi-fungsi ini akan mengambil nilai-nilai dari argumen yang diinputkan pada saat pemanggilan fungsi. Lalu nilai ini saya simpan kedalam 3 variabel, yakni $array_argumen, $jumlah_argumen, dan$nilai_argumen_ke_2

Sebagai catatan, untuk mengambil nilai argumen ke-2, saya dapatkan nilainya dari fungsifunc_get_arg(1). Karena argumen dihitung dari angka 0, sehingga argumen kedua berada di index ke 1.

Selanjutnya dari baris 11-20 saya menampilkan hasil masing-masing variabel. Penulisan echo ”<br/>” digunakan semata-mata agar tampilan di browser lebih rapi dan mudah dilihat.

Pada saat pemanggilan fungsi penambahan() pada baris ke 26, 30 dan 34, saya memanggilnya dengan jumlah argumen yang berbeda-beda, dan anda dapat melihat hasil dari ke-3 fungsi khusus variabel parameter.

Dengan ke-3 fungsi khusus telah sukses di jalankan, untuk membuat fungsi penambahan() yang sebenarnya, saya tinggal membuat perulangan (looping) untuk menambahkan seluruh argumen-argumen yang ada. Berikut adalah kode program fungsi penambahan versi final:

<?php

Page 119: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

function penambahan()

{

//ambil variable parameter

$jumlah_argumen = func_num_args();

//proses penambahan

$nilai=0;

for ($i = 0; $i < $jumlah_argumen; $i++)

{

$nilai += func_get_arg($i);

}

return $nilai;

}

echo "penambahan(1,2) = ".penambahan(1,2);

echo "<br />";

echo "penambahan(5,4,3,2,1) = ".penambahan(5,4,3,2,1);

echo "<br />";

echo "penambahan(0,6,8,19,20,44,21) = ".penambahan(0,6,8,19,20,44,21);

?>

Page 120: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Fungsi penambahan() diatas akan memproses tiap-tiap argumen yang diberikan kepada fungsi tersebut. Perulangan for akan memproses perulangan sebanyak argumen yang dimiliki.

Fungsi Bawaan PHP

PHP memiliki ribuan fungsi-fungsi bawaan. Memahami cara kerja dan cara penggunaan fungsi bawaan PHP ini akan sangat membantu kita untuk membuat kode program yang efektif dan efisien. Pada bagian ini Duniailkom akan menyediakan pembahasan mengenai fungsi-fungsi bawaan PHP.

Tutorial PHP: Cara Mengubah Huruf Besar ke Kecil dan Sebaliknya (Case Conversion)

Dalam proses pembuatan program PHP, kadang kita butuh untuk mengubah huruf besar ke kecil dan sebaliknya, atau biasa disebut dengan case conversion. Dalam tutorial belajar PHP kali ini saya akan membahas 4 fungsi bawaan PHP yang bisa digunakan untuk keperluan ini: strtolower(), strtoupper(), ucfirst() dan ucwords().

Mengubah Huruf Besar ke Kecil

Untuk mengubah huruf besar ke kecil dalam sebuah string PHP, kita bisa menggunakan fungsistrtolower(). Fungsi ini membutuhkan 1 buah argumen, yakni string yang akan diubah.

Berikut contoh penggunaan fungsi strtolower():

<?php

$kalimat = "SAYA Sedang Belajar PHP di DUNIAILKOM";

$kalimat_new = strtolower($kalimat);

echo $kalimat_new;

// saya sedang belajar php di duniailkom

?>

Page 121: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Fungsi strtolower() sering digunakan dalam operasi perbandingan string, karena terkadang kita tidak bisa menentukan apakah variabel asal sudah dalam huruf kecil atau dalam huruf besar. Seperti contoh berikut:

<?php

$dari_user = "Andi";

$dari_database = "andi";

if ($dari_user == $dari_database) {

echo "Sama";

}

else {

echo "Tidak Sama";

}

// Hasil: Tidak Sama

?>

Kode diatas akan meberikan hasil: “Tidak Sama”. Jika kita ingin mengabaikan perbedaan huruf ini, bisa menkonversi terlebih dahulu kedua kata tersebut menggunakan fungsi strtolower():

<?php

$dari_user = "Andi";

$dari_database = "andi";

if (strtolower($dari_user) == strtolower($dari_database)) {

echo "Sama";

}

else {

echo "Tidak Sama";

}

// Hasil: Sama

Page 122: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Kali ini hasil akhirnya adalah: “Sama”.

Dalam kebanyakan kasus, sebuah hasil inputan dari user (biasanya berasal dari form), bisa dikonversi terlebih dahulu ke dalam huruf kecil, kemudian baru di simpan ke dalam database, biasanya ini diperlukan untuk pemrosesan username:

<?php

$user_name = strtolower($_GET["user_name"]);

// proses variabel user_name disini ?>

Mengubah Huruf Kecil ke Besar

Untuk mengubah huruf besar ke kecil di dalam PHP, bisa menggunakan fungsi strtoupper(). Cara penggunaannya hampir sama dengan fungsi strtolower().

Berikut adalah contoh penggunaan fungsi strtoupper() di dalam PHP:

<?php

$kalimat = "SAYA Sedang Belajar PHP di DUNIAILKOM";

$kalimat_new = strtoupper($kalimat);

echo $kalimat_new;

// SAYA SEDANG BELAJAR PHP DI DUNIAILKOM

?>

Mengubah Huruf Pertama Awal String

Fungsi ucfirst() berfungsi untuk mengubah huruf pertama awal string menjadi huruf besar. Langsung saja kita lihat menggunakan contoh kode program:

<?php

$kalimat = "saya sedang belajar PHP di Duniailkom";

$kalimat_new = ucfirst($kalimat);

echo $kalimat_new;

// Saya sedang belajar PHP di Duniailkom

?>

Perhatikan bahwa fungsi ucfirst() ‘tidak peduli’ dengan karakter lain selain karakter pertama. Dalam contoh diatas kata “PHP” menggunakan huruf besar, dan tidak akan terpengaruh oleh fungsi ini.

Selain itu, fungsi ucfirst() juga hanya mengubah karakter pertama string, bukan karakter pertama setiap kalimat (yang dipisah dengan tanda titik), seperti kasus berikut ini:

Page 123: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

<?php

$kalimat = "jangan diganggu! saya lagi serius belajar PHP. di duniailkom.";

$kalimat_new = ucfirst($kalimat);

echo $kalimat_new;

// Jangan diganggu! saya lagi serius belajar PHP. di duniailkom.

?>

Secara ‘teknis’, string diatas terdiri dari 3 kalimat, namun fungsi ucfirst() hanya ‘melihat’ karakter pertama string saja. Jika anda ingin mengubah huruf pertama setiap kalimat, harus membuat fungsi tersendiri.

Mengubah Huruf Pertama Setiap Kata

Apabila yang diinginkan adalah agar huruf pertama dalam setiap kata menjadi huruf besar, PHP menyediakan fungsi ucwords(). Berikut contoh penggunaannya:

<?php

$kalimat = "saya sedang belajar php di duniailkom";

$kalimat_new = ucwords($kalimat);

echo $kalimat_new;

// Saya Sedang Belajar Php Di Duniailkom

?>

Seperti yang terlihat, hasil akhirnya setiap huruf pertama setiap kata diubah menjadi huruf besar. Bagaimana jika string tersebut memiliki kombinasi huruf yang tidak sama? Mari kita coba:

<?php

$kalimat = "SAYA Sedang Belajar PHP di DUNIAILKOM";

$kalimat_new = ucwords($kalimat);

echo $kalimat_new;

// SAYA Sedang Belajar PHP Di DUNIAILKOM

?>

Hasilnya, fungsi ucwords() hanya fokus dengan huruf pertama setiap kata. Untuk huruf kedua dan seterusnya, fungsi ini tidak akan melakukan perubahan apapun.

Jika anda ingin agar semua karakter ‘seragam’ dimana huruf pertama setiap kata dalam huruf besar, dan kata lain dalam huruf kecil, kita bisa menkombinasikan fungsi strtolower() dengan fungsiucwords(), seperti berikut ini:

Page 124: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

<?php

$kalimat = "SAYA Sedang Belajar PHP di DUNIAILKOM";

$kalimat_kecil = strtolower($kalimat);

$kalimat_new = ucwords($kalimat_kecil);

echo $kalimat_new;

// Saya Sedang Belajar Php Di Duniailkom

?>

Hasilnya, seluruh string akan ditampilkan seragam, tidak peduli bagaimana kombinasi penulisan string awal.

Dalam tutorial belajar PHP kali ini kita telah membahas tentang case conversion, yakni fungsi untuk perubahan huruf di dalam PHP. Keempat fungsi ini cukup sederhana, tapi sangat sering digunakan untuk membuat kode program yang lebih kompleks.

Tutorial PHP: Cara Memotong atau Mengambil Sebagian String (fungsi substr)

Pada tutorial belajar PHP Duniailkom kali ini saya akan membahas sebuah fungsi sederhana yang cukup sering digunakan, yakni fungsi substr(). Fungsi substr() digunakan untuk memotong sebuah string atau mengambil sebagian nilai dari sebuah string di dalam PHP.

Mengenal Fungsi substr()

Fungsi substr() adalah fungsi PHP untuk memotong string, atau untuk mengambil sebagian nilai dari sebuah string. Fitur ini cukup sering digunakan dalam proses pembuatan program PHP, terutama yang membutuhkan manipulasi string.

Sebagai contoh, misalkan kita memiliki sebuah string berbentuk tanggal: “14-09-2015”. Bagaimana caranya untuk mengambil nilai bulan dari string tersebut, yakni karakter “09” ?

Contoh lain, katakan NIM seorang mahasiswa terdiri dari 8 digit: “12140001”. Dua digit pertama adalah tahun masuk mahasiswa, dua digit berikutnya kode jurusan, dan empat digit terakhir adalah no urut mahasiswa. Bagaimana cara memisahkan digit-digit ini?

Dalam kasus seperti inilah fungsi substr() diperlukan.

Fungsi substr() membutuhkan 2 buah argumen dan 1 argumen tambahan (opsional). Arguman pertama adalah string asal yang ingin diambil nilainya. Argumen kedua berupa posisi awal pemotongan, dan argumen ketiga diisi jumlah karakter yang akan diambil. Argumen kedua dan ketiga bertipe integer dan bisa positif maupun negatif.

PHP membuat penggunaan fungsi substr() dengan 6 kombinasi cara penulisan. Kita akan membahasnya satu persatu.

Cara Mengambil Karakter Dari Awal String

Page 125: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Penggunaan pertama fungsi substr() yang akan kita bahas adalah cara mengambil karakter yang dimulai dari awal string. Berikut contoh penggunaannya:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,3);

echo $sub_kalimat;

// ajar PHP di Duniailkom

?>

Dalam kode diatas, saya mengambil string $kalimat mulai dari index ke-3. Jika fungsi substr()ditulis dengan 2 argumen seperti ini, dan argumen kedua bernilai positif, maka fungsi substr() akan mengembalikan nilai string $kalimat mulai dari huruf ke-4, yakni huruf “a” hingga akhir string.

Perlu menjadi catatan bahwa index string di dalam PHP dimulai dari angka 0. Sehingga fungsisubstr($kalimat,3) akan mengembalikan nilai string $kalimat mulai dari huruf ke-4, dan bukan huruf ke-3.

Agar lebih yakin, anda bisa mencoba kode berikut ini:

<?php

$kalimat = "123456789";

$sub_kalimat = substr($kalimat,3);

echo $sub_kalimat;

// 456789

?>

Fungsi substr() juga memiliki argumen ketiga yang bersifat opsional (boleh diisi atau dikosongkan). Jika kita menambahkan argumen ketiga, nilai ini berfungsi sebagai penentu ‘berapa banyak jumlah karakter yang akan diambil’. Berikut contohnya:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,8,3);

echo $sub_kalimat;

// PHP

?>

Fungsi substr($kalimat,8,3) akan mengambil string $kalimat mulai dari index ke-8 (karakter ke-9) dan ambil sebanyak 3 karakter.

Page 126: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Kita juga bisa memberikan nilai negatif untuk argumen ke-3 ini, dan fungsinya akan berubah. Berikut contohnya:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,8,-3);

echo $sub_kalimat;

// PHP di Duniail

?>

Fungsi substr($kalimat,8,-3) akan mengembalikan string $kalimat mulai dari index ke-8 (karakter ke-9) hingga akhir string, kecuali 3 karakter terakhir. 3 karakter terakhir ini adalah “kom”, sehingga hasil akhir kode diatas adalah: “PHP di Duniail”.

Contoh lainnya, apabila kita ingin mengambil string $kalimat mulai dari index ke-10 hingga akhir string, kecuali 5 karakter terakhir, maka fungsinya adalah: substr($kalimat,10,-5).

Cara Mengambil Karakter Dari Akhir String

Selain dari awal string, kita juga bisa mengambil karakter mulai dari akhir string. Caranya adalah dengan memberikan nilai negatif pada argumen kedua fungsi substr(). Langsung saja kita lihat contoh penggunaannya:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,-10);

echo $sub_kalimat;

// Duniailkom

?>

Fungsi substr($kalimat,-10) berarti ambil 10 karakter terakhir dari string $kalimat.

Agar lebih spesifik, kita juga bisa menentukan jumlah karakter yang ingin diambil. Ini bisa didapat dengan menambahkan argumen ke-3:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,-10,5);

echo $sub_kalimat;

// Dunia

Page 127: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Kombinasi terakhir dari fungsi substr() adalah menggunakan angka minus untuk argumen ketiga, seperti contoh berikut:

<?php

$kalimat = "Belajar PHP di Duniailkom";

$sub_kalimat = substr($kalimat,-10,-3);

echo $sub_kalimat;

// Duniail

?>

Fungsi substr($kalimat,-10,-3) berarti ambil 10 karakter terakhir dari string $kalimat, kecuali 3 karakter terakhir, sehingga hasil kode programnya adalah: “Duniail”.

Dari beberapa contoh diatas, kita sudah melihat 6 jenis kombinasi penggunaan fungsi substr().Kombinasi tersebut di dapat dari perbedaan jumlah argumen dan apakah argumen tersebut bertipe positif dan negatif. Sebagai kesimpulan, berikut contoh kode seluruh kombinasi fungsi substr():

<?php

$kalimat = "Belajar PHP di Duniailkom";

echo substr($kalimat,8); // PHP di Duniailkom

echo "<br>";

echo substr($kalimat,8,6); // PHP di

echo "<br>";

echo substr($kalimat,8,-5); // PHP di Dunia

echo "<br>";

echo substr($kalimat,-10); // Duniailkom

echo "<br>";

echo substr($kalimat,-10,5); // Dunia

echo "<br>";

echo substr($kalimat,-10,-3); // Duniail

?>

Page 128: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengambilan sebagian nilai string cukup sering kita gunakan. PHP menyediakan fungsi substr()untuk keperluan ini. Dengan 6 kombinasi, fungsi substr() sangat praktis untuk memotong sebuah string atau mengambil sebagian nilai dari sebuah string di dalam PHP.

Tutorial PHP: Cara Menghapus Spasi di Awal dan Akhir String (Fungsi trim)

Dalam tutorial belajar PHP kali ini kita akan membahas fungsi trim() yang digunakan untukmenghapus spasi (whitespace) di awal dan akhir sebuah string PHP. Fungsi trim() juga memiliki 2 varian lain yakni ltrim() dan rtrim().

Pengertian Fungsi trim()

Secara default bawaan PHP, fungsi trim() digunakan untuk menghapus spasi atau karakter whitespace dari sebuah string. Karakter spasi yang akan dihapus bisa berada di awal maupun di akhir string.

Dalam prakteknya, fungsi trim() sering digunakan untuk ‘membersihkan’ hasil input form dari karakter spasi yang sengaja atau tidak sengaja ditambahkan pengguna.

Berikut adalah contoh penggunaan dasar fungsi trim() di dalam PHP:

<?php

$nama = " andi ";

$trim_nama = trim($nama);

echo $trim_nama; // "andi"

?>

Karena di HTML whitespace atau spasi tidak akan ditampilkan, penerapan kode diatas tidak terlalu jelas efeknya. Fungsi trim() akan lebih terlihat jika digunakan dalam operasi perbandingan, seperti contoh berikut:

<?php

$nama = "andi ";

$nama_juga = "andi";

if ($nama == $nama_juga) {

echo "Nama Sama";

}

else {

echo "Nama Beda";

}

// hasil: Nama Beda

?>

Page 129: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam operasi perbandingan diatas, tambahan sebuah spasi diakhir variabel $nama, yakni “andi ” akan membuat operasi perbandingan menghasilkan nilai FALSE, sehingga hasil akhirnya adalah “Tidak Sama”.

Dengan menambahkan fungsi trim(), kode program diatas akan menghasilkan nilai TRUE, karena spasi yang ada baik diawal dan diakhir string akan dihapus terlebih dahulu:

<?php

$nama = "andi ";

$nama_juga = "andi";

if (trim($nama) == trim($nama_juga)) {

echo "Nama Sama";

}

else {

echo "Nama Beda";

}

// hasil: Nama Sama

?>

Selain menghapus karakter spasi, fungsi trim() juga akan menghapus 5 karakter whitespace lainnya, seperti tab, new line, carriage return (karakter enter), null-byte, dan vertical tab. Dalam kode karakter ASCII, ke-6 karakter ini adalah sebagai berikut:

” ” (ASCII 32 (0x20)), : karakter spasi.

“\t” (ASCII 9 (0x09)), : karakter tab.

“\n” (ASCII 10 (0x0A)), : karakter new line (line feed).

“\r” (ASCII 13 (0x0D)), : karakter carriage return.

“\0” (ASCII 0 (0x00)), : karakter NULL-byte.

“\x0B” (ASCII 11 (0x0B)), : karakter vertical tab.

Berikut contoh penggunaannya:

<?php

$nama = "\t \t andi \n \r";

$nama_juga = " andi \t";

if (trim($nama) == trim($nama_juga)) {

echo "Nama Sama";

Page 130: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

else {

echo "Nama Beda";

}

// hasil: Nama Sama

?>

Untuk menulis karakter “tab”, tidak tersedia tombol khusus di dalam keyboard, oleh karena itu kita menggunakan escape karakter untuk tab, yakni “\t”.

Fungsi trim() ini sering digunakan untuk menfilter hasil imputan form. Berikut adalah contoh penggunaannya:

<?php

$nama = trim($_GET["nama"]);

// proses variabel nama disini

?>

Menambahkan Karakter yang akan Dihapus (character_mask)

Fungsi trim() juga memiliki argumen kedua yang bersifat opsional. Argumen kedua ini bertipe string yang jika ditulis akan ditambahkan kedalam daftar karakter yang ikut dihapus, atau istilah teknisnya disebuh dengan character_mask. Langsung saja kita lihat contoh penggunaannya:

<?php

$nama = "__andi__";

$trim_nama = trim($nama);

echo $trim_nama; // "__andi__"

echo "<br>";

$trim_nama = trim($nama,"_");

echo $trim_nama; // "andi"

?>

Dengan membuat fungsi trim($nama,”_”) maka karakter underscore “_” juga akan ikut dihapus.

Lebih jauh lagi, character_mask ini mendukung penulisan range atau jangkauan karakter, yang ditulis dengan “awal..akhir”.

Page 131: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai contoh, jika saya memiliki beberapa string yang dimulai dengan angka seperti: “1 kelereng”, “2 buah”, “3 orang”, saya bisa menggunakan fungsi trim() untuk menghapus seluruh angka awalan ini. Berikut contohnya:

<?php

$kata = "1 kelereng";

$trim_kata = trim($kata,"0..9");

echo $trim_kata; // "kelereng"

echo "<br>";

$kata = "2 buah";

$trim_kata = trim($kata,"0..9");

echo $trim_kata; // "buah"

echo "<br>";

$kata = "3 orang";

$trim_kata = trim($kata,"0..9");

echo $trim_kata; // "orang"

?>

Fungsi trim($kata,”0..9″) berarti: hapus whitespace yang ada di awal dan akhir string $kata, dan hapus karakter 0, 1, 2, 3 s/d 9 di awal dan diakhir string. Fitur untuk menghapus karakter tertentu ini cukup berguna ketika kita ingin ‘membersihakan’ sebuah string dari karakter yang tidak diinginkan.

Pengertian Fungsi rtrim() dan ltrim()

Fungsi rtrim() dan ltrim() adalah bentuk lain dari fungsi trim(), tapi hanya akan menghapus karakter whitespace yang ada disisi kanan (untuk rtrim) dan di sisi kiri string (untuk ltrim). Kedua fungsi ini juga bisa ditambahkan argumen ketiga seperti halnya fungsi trim().

Berikut contoh penggunaan fungsi rtrim() dan ltrim() dalam PHP:

<?php

$nama = " andi ";

$rtrim_nama = rtrim($nama);

echo $rtrim_nama; // " andi"

Page 132: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "<br>";

$ltrim_nama = ltrim($nama);

echo $ltrim_nama; // "andi "

echo "<br>";

$nama = "___andi___";

$rtrim_nama = rtrim($nama,"_");

echo $rtrim_nama; // "___andi"

echo "<br>";

$ltrim_nama = ltrim($nama,"_");

echo $ltrim_nama; // "andi___"

?>

Dapat terlihat bahwa fungsi rtrim() dan fungsi ltrim() hanya akan menghapus karakter pada satu sisi saja.

Fungsi trim(), rtrim() dan ltrim() yang kita pelajari disini cocok digunakan untuk operasi ‘pembersihan’ string, ini umumnya digunakan untuk menfilter hasil inputan form dari pengguna (user).

Tutorial PHP: Cara Konversi String Menjadi Array PHP (Fungsi explode)

Fungsi explode() adalah fungsi PHP yang digunakan untuk memecah sebuah string menjadi array, atau dengan kata lain mengkonversi string menjadi array. Dalam tutorial belajar PHP kali ini kita akan membahas cara penggunaan fungsi explode().

Pengertian Fungsi explode

Fungsi explode() dalam PHP digunakan untuk menkonversi string menjadi array. Dalam memecah sebuah string menjadi array, fungsi explode() membutuhkan beberapa argumen. Berikut adalah format dasar dari fungsi explode dalam PHP:

array explode (string $delimiter , string $string [, int $limit ] )

Penjelasan dari format diatas adalah:

Nilai kembalian fungsi explode berupa sebuah array.

Page 133: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Argumen pertama ($delimiter) diisi dengan string karakter yang digunakan sebagai ‘pemecah’ string menjadi array.

Argumen kedua ($string) diisi dengan string yang akan dikonversikan.

Argumen ketiga yang bersifat opsional ($limit) diisi dengan batasan jumlah array yang ingin dihasilkan. Argumen ketiga ini bertipe angka (integer) dan bisa berupa nilai positif atau negatif.

Sebagai contoh, dalam kode program berikut ini saya memecah string $kalimat = “satu dua tiga empat lima” menjadi array:

<?php

$kalimat = "satu dua tiga empat lima";

$arr_kalimat = explode (" ",$kalimat);

var_dump ($arr_kalimat);

// array(5) {

// [0]=> string(4) "satu" [1]=> string(3) "dua"

// [2]=> string(4) "tiga" [3]=> string(5) "empat"

// [4]=> string(4) "lima"

// }

?>

Dalam string $kalimat diatas, saya menggunakan ‘spasi’ sebagai pemisah kata sehingga untuk memecah string tersebut, spasi ini akan menjadi pembatas (delimeter) untuk fungsi explode.

Jika string awal dipisahkan dengan karakter koma, titik, atau yang lain, kita bisa menggunakannya sebagai karakter delimeter, seperti contoh berikut:

<?php

$kalimat = "satu, dua, tiga, empat, lima";

$arr_kalimat = explode (", ",$kalimat);

var_dump ($arr_kalimat);

// array(5) {

// [0]=> string(4) "satu" [1]=> string(3) "dua"

// [2]=> string(4) "tiga" [3]=> string(5) "empat"

Page 134: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

// [4]=> string(4) "lima"

// }

?>

Kali ini string $kalimat dipisah dengan tanda ‘spasi dan koma’, sehingga saya tinggal menulis fungsiexplode (“, “,$kalimat).

Argumen ketiga fungsi explode() bersifat opsional. Argumen ini bisa diisi dengan angka (integer) positif maupun negatif. Jika diisi dengan angka positif, maka angka disini menunjukkan jumlah batasan element array yang akan dihasilkan. Langsung saja kita praktek menggunakan contoh:

<?php

$kalimat = "satu, dua, tiga, empat, lima";

$arr_kalimat = explode (", ",$kalimat, 3);

var_dump ($arr_kalimat);

// array(3) {

// [0]=> string(4) "satu"

// [1]=> string(3) "dua"

// [2]=> string(17) "tiga, empat, lima"

// }

?>

Dapat anda perhatikan bahwa walaupun string $kalimat seharusnya bisa dipecah menjadi 5 element array, tapi hasil dari fungsi explode (“, “,$kalimat, 3) hanya menghasilkan 3 element array, sesuai dengan angka “3” dari argumen ketiga. Untuk element ke-3 array, PHP akan mengambil seluruh string hingga akhir.

Namun jika kita menginput nilai negatif, hasilnya akan berbeda:

<?php

$kalimat = "satu, dua, tiga, empat, lima";

$arr_kalimat = explode (", ",$kalimat, -3);

var_dump ($arr_kalimat);

// array(2) {

// [0]=> string(4) "satu"

Page 135: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

// [1]=> string(3) "dua"

// }

?>

Kali ini hanya 2 element array yang dihasilkan. Ini terjadi karena angka “–3” berarti: kurangi total element array sebanyak 3. Apabila saya menggunakan fungsi explode ‘biasa’, akan terdapat 5 element array yang bisa dihasilkan (seperti contoh pertama dalam tutorial ini), namun karena saya menambahkan nilai -3 pada argumen ke 3, hasil akhirnya akan dikurangi sebanyak 3 element (5 – 3 = 2 element).

Dalam tutorial belajar PHP di duniailkom kali ini, kita telah membahas pengertian dan cara pemakaian fungsi explode(). Fungsi explode sendiri digunakan untuk mengkonversi sebuah string menjadi array dalam PHP.

Tutorial PHP: Cara Memformat Tampilan Angka dalam PHP (Fungsi number_format)

PHP menyediakan beberapa fungsi bawaan untuk memformat tampilan angka. Dalam tutorial belajar PHP kali ini kita akan membahas salah satunya, yakni fungsi number_format(). Fungsi ini juga bisa digunakan untuk menformat angka agar sesuai dengan penulisan mata uang rupiah.

Pengertian Fungsi number_format

Fungsi number_format() adalah fungsi bawaan PHP yang bisa digunakan untuk memformat tampilan angka, baik itu angka integer maupun float. Dengan memformat tampilan angka, akan membuatnya lebih ‘cantik’ dan mudah dibaca. Selain itu fungsi ini juga akan membulatkan atau menambahkan angka “0” dibelakang koma jika dibutuhkan.

Fungsi number_format() memiliki 2 buah cara penulisan, yakni dengan 2 argumen atau 4 argumen. Untuk fungsi dengan 2 argumen, berikut adalah format dasar penulisannya:

string number_format ( float $number [, int $decimals = 0 ] )

Hasil akhir fungsi ini bertipe string.

Argumen pertama ($number) membutuhkan input nilai angka yang akan diformat. Argumen ini bertipe float, tapi bisa juga bisa diisi dengan nilai integer.

Argumen kedua ($decimals) bersifat opsional. Argumen ini menentukan berapa jumlah angka desimal (angka di belakang koma) yang dibutuhkan. Apabila tidak diisi, dianggap sebagai 0.

Langsung saja kita lihat contoh penggunaan fungsi number_format() ini:

<?php

$angka = 1999.12345;

$angka_format = number_format($angka);

echo $angka_format;

// 1,999

Page 136: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Dapat terlihat, fungsi number_format() akan “membuang” seluruh bagian desimal dari angka diatas. Ini terjadi karena secara default, fungsi ini menggunakan 0 sebagai jumlah digit desimal (angka di belakang koma).

Sebenarnya fungsi number_format() tidak benar-benar “membuang” nilai desimal, tetapi membulatkannya, seperti contoh berikut:

<?php

$angka = 1999.99;

$angka_format = number_format($angka);

echo $angka_format;

// 2,000

?>

Dapat terlihat bahwa nilai 1999.99 akan dibulatkan menjadi 2,000.

Dengan menambahkan argumen kedua, kita bisa menentukan berapa digit desimal yang diperlukan:

<?php

$angka = 1999.888;

$angka_format = number_format($angka,2);

echo $angka_format;

// 1,999.89

?>

Kali ini fungsi number_format() akan membatasi 2 digit desimal. Selain itu dapat anda lihat bahwa fungsi ini juga membulatkan nilai desimalnya.

Bagaimana jika angka awal tidak tidak memiliki angka desimal? Mari kita lihat:

<?php

$angka = 1999;

$angka_format = number_format($angka,3);

echo $angka_format;

// 1,999.000

?>

Page 137: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Hasilnya, string akhir akan ditambahkan angka “0” pada bagian desimalnya. Dengan demikian kita bisa membuat format angka dengan panjang seragam.

Perhatikan juga bahwa PHP tetap menggunakan tanda koma “ , ” sebagai pemisah nilai ribuan, dan titik “ . ” sebagai pemisah nilai desimal. Ini adalah aturan penulisan di Amerika. Nantinya, dengan fungsi number_format() kita juga bisa mengubah format ini agar sesuai dengan aturan penulisan angka di Indonesia, dimana tanda titik digunakan sebagai pemisah ribuan, dan tanda koma sebagai pemisah nilai desimal.

Bentuk penulisan lain dari fungsi number_format() membutuhkan 4 argumen. Berikut format dasar penulisannya:

string number_format ( float $number , int $decimals = 0 ,

string $dec_point = "." , string $thousands_sep = "," )

Format penulisan diatas terlihat rumit, namun sebenarnya cukup sederhana. Argumen ketiga dan keempat fungsi number_format() digunakan untuk menentukan karakter apa sebagai pemisah nilai ribuan dan nilai desimal.

Sebagai contoh, karena di Indonesia kita menggunakan karakter titik sebagai pemisah angka ribuan dan karakter koma sebagai pemisah desimal, saya bisa memformat angka tersebut dengan fungsinumber_format(), seperti contoh berikut:

<?php

$angka = 1999.12345;

$angka_format = number_format($angka,2,",",".");

echo $angka_format;

// 1.999,12

?>

Dapat terlihat sekarang, angka akan ditampilkan dalam format ‘umum’ yang kita gunakan sehari-hari. Lebih jauh lagi, kita bisa menambahkan string “Rp. ” sebagai awalan agar hasilnya pas untuk nilai mata uang rupiah. Berikut contohnya:

<?php

$angka = 3050145.756;

$angka_format = number_format($angka,2,",",".");

echo "Rp. ".$angka_format;

// Rp. 3.050.145,76

?>

Page 138: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam kode diatas saya menyambungkan awal “Rp. ” dengan string hasil fungsi number_format(). Tampilan tersebut cocok digunakan untuk hasil akhir angka mata uang untuk membuat laporan yang banyak melibatkan nilai uang.

Dalam tutorial PHP kali ini kita telah membahas salah satu fungsi praktis untuk memformat angka. Fungsi number_format() akan sering anda gunakan untuk mempercantik hasil akhir program yang melibatkan angka.

Tutorial PHP: Cara Mencari Posisi String PHP (Fungsi strpos)

Dalam pemrosesan string, kadang kita butuh untuk mencari posisi sebuah karakter di dalam string. Untuk keperluan ini PHP memiliki fungsi bawaan, yakni strpos(). Kali ini saya akan membahaspengertian fungsi strpos() dan cara penggunaan fungsi strpos() di dalam PHP. Selain itu kita juga membahas fungsi stripos().

Pengertian Fungsi strpos()

Fungsi strpos() adalah fungsi bawaan PHP yang bisa digunakan untuk mencari posisi sebuah karakter atau sebuah string di dalam string lainnya. Hasil akhir fungsi ini adalah angka yang menunjukkan posisi karakter/string yang ingin dicari.

Berikut format dasar penulisan fungsi strpos() di dalam PHP:

mixed strpos (string $haystack , mixed $needle [, int $offset = 0 ] )

Hasil akhir fungsi strpos adalah mixed, karena bisa berupa angka (posisi ditemukannya karakter yang ingin dicari), maupun FALSE jika fungsi ini tidak menemukan nilai apa-apa.

Argumen pertama ($haystack) berupa string asal dimana pencarian akan dilakukan. String ini bisa terdiri dari sebuah kalimat pendek hingga dokumen string panjang yang terdiri dari ribuan huruf.

Argumen kedua ($needle) diisi dengan karakter yang akan dicari. Karakter disini bisa berupa sebuah huruf/angka atau string lain seperti kalimat.

Argumen ketiga ($offset) bersifat opsional, digunakan untuk ‘melompati’ hasil pencarian dari posisi tertentu. Ini digunakan untuk mengabaikan beberapa kalimat awal pencarian.

Agar lebih mudah dipahami, langsung saja kita membahas contoh penggunaannya:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"e");

echo $posisi;

// 1

?>

Page 139: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Hasil angka 1 dari kode program diatas menunjukkan karakter ‘e’ pertama dalam string $kalimat. Perlu diingat bahwa di dalam PHP penomoran index string dimulai dari angka 0. Sehingga posisi 1 diatas sebenarnya berada pada karakter ke-2.

Selain menggunakan 1 karakter, kita juga bisa mencari sebuah kata atau string lain, seperti contoh berikut:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$cari="serius";

$posisi=strpos($kalimat,$cari);

echo $posisi;

// 7

?>

Dalam kode program diatas, saya menempatkan string “serius” di dalam sebuah variabel, dan mencari posisinya dengan fungsi strpos(). Hasilnya, kata “serius” di temukan dan berada pada index ke-7.

Bagaimana jika di dalam string tidak ditemukan apa-apa? Mari kita coba:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"CSS",9);

var_dump($posisi);

// bool(false)

?>

Hasilnya: FALSE. Saya sengaja menggunakan fungsi var_dump() karena jika menggunakan echo, tidak akan terdapat tampilan apa-apa. Ini terjadi karena perintah echo mengkonversi booleanFALSE menjadi string kosong dan menampilkannya.

Hasil FALSE ini bisa kita manfaatkan untuk membuat sebuah kondisi pemeriksaan apakah karakter yang ingin dicari ada di dalam string, seperti contoh berikut:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"CSS");

if ($posisi){

echo "Ketemu";

Page 140: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

else {

echo "Tidak ketemu";

}

// Tidak ketemu

?>

Dengan membuat kondisi seperti itu, kita bisa membuat kode program untuk menentukan ada tidaknya sebuah karakter. Akan tetapi, efek ‘konversi tipe data otomatis’ dari PHP bisa menimbulkan masalah tersendiri. Perhatikan kode berikut ini:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"Sedang");

if ($posisi){

echo "Ketemu";

}

else {

echo "Tidak ketemu";

}

// Tidak ketemu

?>

Hasilnya adalah: “Tidak ketemu” ! Padahal seperti yang kita lihat di dalam string asal, kata “Sedang” ada di posisi pertama string. Apa yang terjadi?

Ini karena efek ‘type juggling’ dimana PHP akan menkonversi sebuah tipe data ke tipe data lain secara otomatis. Hasil dari fungsi strpos($kalimat,”Sedang”) adalah 0, karena kata “Sedang” ditemukan di awal string, dan indexnya adalah 0. Namun sewaktu kita menggunakan hasil ini dalam kondisi IF, nilai 0 akan dikonversi menjadi FALSE, sehingga hasilnya adalah: “Tidak ketemu”.

Agar kode program kita bebas dari masalah ini, bisa mengubah kondisi pemeriksaan IF menjadi seperti berikut ini:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"css");

Page 141: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

if ($posisi !== FALSE){

echo "Ketemu";

}

else {

echo "Tidak ketemu";

}

// Ketemu

?>

Kali ini saya memaksa PHP untuk memeriksa apakah nilai variabel $posisi harus bertipe booleanFALSE. Kesalahan program seperti ini sering terjadi dan sangat susah untuk ditemukan, karena PHP tidak akan menampilkan pesan error apapun.

Kembali ke fungsi strpos(), kali ini saya akan mencoba menambahkan argumen ke-3:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"e",9);

echo $posisi;

// 15

?>

Argumen ketiga dari fungsi strpos() berfungsi untuk ‘melompati’ beberapa karakter awal. Dalam contoh diatas, karakter “e” yang ingin dicari sebenarnya sudah ditemukan pada index ke-1 dan ke-8. Namun karena saya menambahkan argumen ke-3 dengan nilai 9, maka proses pencarian baru dilakukan mulai dari index ke-9.

Pengertian Fungsi stripos()

Fungsi strpos() yang kita bahas disini bersifat case sensitif, yang berarti akan membedakan antara huruf besar dan huruf kecil. Sebagai contoh, kode program berikut akan menghasilkan nilai FALSE:

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=strpos($kalimat,"php",9);

var_dump($posisi);

// bool(false)

?>

Page 142: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Ini terjadi karena fungsi strpos() akan membedakan antara “php” dengan “PHP”. Kedua kata ini akan dianggap berbeda, sehingga karakter “php” tidak ditemukan.

Jika kita ingin untuk mengabaikan perbedaan ini, bisa menggunakan fungsi stripos(). Penambahan huruf ‘i’ disini menunjukkan bahwa fungsi stripos() bersifat case-insensitive. Yang berarti akan mengabaikan perbedaan huruf besar dan kecil. Fungsi stripos()juga mendukung argumen yang sama seperti fungsi strpos().

Berikut adalah hasil kode program diatas jika menggunakan fungsi stripos():

<?php

$kalimat="Sedang serius belajar PHP di duniailkom";

$posisi=stripos($kalimat,"php",9);

echo $posisi;

// 22

?>

Kali ini karakter ‘php’ ditemukan pada posisi index ke-22, dimana kata “PHP” berada.

Fungsi strpos() dan stripos() yang kita bahas disini sebenarnya cukup sederhana. Dalam prakteknya, fungsi ini biasa digabung dengan fungsi string lain, misalkan dengan fungsisubstr_replace() untuk membuat program pencari kata atau menambahkan fitur find and replace.

Tutorial PHP: Cara Menggabungkan (Konversi) Array Menjadi String (Fungsi implode)

Jika PHP memiliki fungsi explode() untuk menkonversi string menjadi array, maka fungsi implode()adalah kebalikannya, yakni menggabungkan atau menkonversi array menjadi sebuah string. Dalam tutorial PHP kali ini kita akan membahas pengertian dan cara penggunaan fungsi implode di PHP.

Pengertian Fungsi implode PHP

Fungsi implode() adalah fungsi bawaan PHP untuk menggabungkan array menjadi string. Berikut format dasar penulisan fungsi implode:

string implode ( string $glue , array $pieces )

Hasil akhir fungsi implode berupa string.

Argumen pertama diisi dengan string ($glue) yang berfungsi sebagai karakter penyatu array.

Argumen kedua diisi dengan array ($pieces), yakni array yang akan digabungkan.

Berikut contoh penggunaannya:

<?php

$arr_kata = ["satu", "dua", "tiga", "empat", "lima"];

Page 143: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$kalimat = implode(" ",$arr_kata);

echo $kalimat;

// satu dua tiga empat lima

?>

Pada kode diatas, variabel $arr_kata berisi array dengan 5 element, kemudian saya menggabungkannya menjadi string menggunakan fungsi implode(” “,$arr_kata). Hasilnya, setiap element array akan digabung dengan spasi.

Kita juga bisa menggunakan karakter lain untuk penggabungan ini, seperti contoh berikut:

<?php

$arr_kata = ["satu", "dua", "tiga", "empat", "lima"];

$kalimat = implode(", ",$arr_kata);

echo $kalimat;

// satu, dua, tiga, empat, lima

?>

<br>

<?php

$arr_kata = ["satu", "dua", "tiga", "empat", "lima"];

$kalimat = implode(" | ",$arr_kata);

echo $kalimat;

// satu | dua | tiga | empat | lima

?>

Dalam dua contoh diatas, saya menggunakan karakter “ ,” dan “ | ” sebagai pemisah string. Perhatikan juga bahwa fungsi implode() tidak menambahkan karater tersebut di awal dan akhir string, tapi hanya diantara element array.

Karena alasan historis, PHP juga membolehkan penulisan fungsi implode() hanya dengan 1 argumen, yakni array yang akan digabung:

<?php

$arr_kata = ["satu", "dua", "tiga", "empat", "lima"];

Page 144: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$kalimat = implode($arr_kata);

echo $kalimat;

// satuduatigaempatlima

?>

Fungsi implode() diatas sebenarnya sama dengan fungsi implode(“”, $arr_kata), dimana kita menggunakan string kosong untuk menggabungkan array. Hasil akhirnya, seluruh string digabung tanpa ada pemisah (menjadi 1 string panjang). Namun agar konsisten dengan fungsi explode(), sebaiknya kita tetap menggunakan 2 argumen untuk fungsi implode() ini.

Dalam tutorial belajar PHP ini kita telah membahas cara mengkonversi array menjadi string. Fungsi ini biasanya digunakan secara berpasangan dengan fungsi explode.

Tutorial PHP MySQL

Tutorial PHP MySQL ditujukan untuk membuat koneksi antara database MySQL

Server dengan bahasa pemrograman web PHP. Di dalam sesi ini kita akan membahas

secara detail cara menghubungkan PHP dengan MySQL. Secara garis besar, terdapat 3

metoda koneksi yang akan dibahas, yakni menggunakan mysql extension, mysqli

extension, dan dengan PDO.

PHP dan MySQL merupakan kombinasi bahasa pemrograman dan database paling poluler,

sehingga cara penggabungan keduanya merupakan hal yang wajib dikuasai.

Tutorial Belajar PHP Lanjutan: Cara Membuat Koneksi PHP ke Database MySQL

PHP dan MySQL adalah kombinasi bahasa pemograman dan database yang sangat populer. Situs duniailkom yang berbasis wordpress juga menggunakan kombinasi PHP dan MySQL.

Dalam bagian tutorial belajar PHP lanjutan ini, saya akan membuat tutorial mengenai cara membuat koneksi antara PHP dengan database MySQL.

Untuk dapat mengikuti tutorial ini, saya sarankan anda telah mengetahui dasar penulisan PHP, seperti perulangan, tipe data, dan pemanggilan fungsi, karena kita akan banyak menggunakannya dalam tutorial kali ini. Pengetahuan tentang query MySQL juga akan sangat membantu.

Jika anda belum paham keduanya, atau untuk sekedar me-refresh tentang PHP dan MySQL, duniailkom telah membuat tutorial lengkap tentang keduanya. Untuk Tutorial PHP Dasar, dapat anda baca di Tutorial Belajar PHP Dasar Untuk Pemula dan untuk Tutorial MySQL Dasar, dapat anda baca di Tutorial Belajar MySQL Dasar Untuk Pemula.

Page 145: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam halaman ini, saya akan mengindex seluruh Tutorial Cara Membuat Koneksi PHP ke Database MySQL. Semoga dengan tutorial ini anda bisa mengetahui dan paham cara menggabungkan PHP dengan MySQL.

Tutorial PHP MySQL Part 2: Jenis Koneksi PHP - MySQL: PDO, mysqli, dan mysql extension

Untuk dapat menggunakan dan mengakses database MySQL, PHP menyediakan 3 cara koneksi: menggunakan PDO (PHP Data Objects), mysqli extension dan mysql extension. Dalam tutorial belajar PHP kali ini kita akan membahas keunggulan masing-masing, dan perbedaan ketiganya.

Perkembangan Cara Koneksi PHP dan MySQL

PHP merupakan bahasa pemograman yang selalu di update dan berkembang mengikuti teknologi terbaru. Saat ini, Pemrograman Berorientasi Objek (Object Oriented Programming) merupakan trend pemrograman PHP, dan hal ini juga mempengaruhi cara mengakses database MySQL dari PHP.

PHP memiliki 3 cara pengaksesan MySQL, yakni melalui PDO (PHP Data Objects), mysqli extension dan mysql extension. PDO menggunakan pemrograman objek, mysqli extensiontersedia dalam bentuk objek dan prosedural (diakses melalui fungsi-fungsi) sedangkan mysql extension sepenuhnya menggunakan pemograman prosedural.

Mari kita bahas pengertian dan perbedaan ketiga metode ini:

1. Koneksi MySQL dengan mysql extension

Saat pertama kali mempelajari PHP MySQL sekitar tahun 2008 (atau jika anda pernah mempelajari PHP-MySQL beberapa tahun yang lalu), untuk mengakses MySQL dari PHP, kita menggunakan fungsi-fungsi seperti mysql_connect(), mysql_query(), dan mysql_fetch_array(). Fungsi-fungsi ini tergabung ke dalam mysql extension (saat itu PDO dan mysqli extension masih jarang digunakan)

Namun sekarang (tepatnya mulai PHP versi 5.5.0) PHP memutuskan untuk membuat mysql extension berstatus deprecated. Yang artinya pengaksesan database MySQL menggunakan fungsimysql extension sudah tidak disarankan lagi. Programmer PHP diharapkan pindah ke mysqli extension atau PDO yang berbasis objek.

Alasannya, MySQL versi terbaru memiliki fitur-fitur yang semakin lengkap dan kompleks, sehingga PHP memutuskan untuk membuat fungsi extension baru agar programmer PHP bisa menggunakan fitur-fitur ini.

2. Koneksi MySQL dengan mysqli extension

Sebagai pengganti mysql extension, PHP menyediakan mysqli extension (mysqli merupakan singkatan dari MySQL Improved). Mysqli extension ini pada dasarnya adalah perbaikan dari mysql extension dan dikembangkan untuk mendukung fitur-fitur terbaru untuk MySQL 4.1 keatas.

Hampir semua fungsi yang ada pada mysql extension juga tersedia pada mysqli. Syntax (aturan penulisan) mysqli sangat mirip dengan mysql extension. Sehingga jika anda telah lama menggunakan mysql extension, akan sangat mudah untuk beralih menggunakan mysqli extension.

Selain menggunakan mysql maupun mysqli extension, cara ketiga untuk pengaksesan database MySQL dari PHP adalah dengan menggunakan PHP Data Objects (atau sering disingkat denganPDO).

Page 146: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3. Koneksi MySQL dengan PDO (PHP Data Objects)

PDO (PHP Data Objects), adalah extension atau penambahan fitur dalam PHP yang dirancang sebagai interface universal untuk pengaksesan berbagai jenis database (tidak hanya MySQL). Contohnya, jika kita menggunakan PDO dalam menulis kode pemograman, lalu suatu saat website kita bertukar database dari MySQL ke Oracle, maka kita tidak perlu mengubah semua kode program, cukup mengubah cara pemanggilan PDO diawal program saja.

Dari ketiga cara koneksi PHP dengan MySQL ini, metode yang disarankan adalah menggunakanmysqli atau PDO.

Perbandingan antara mysqli, PDO dan mysql extension

Sebagai perbandingan fitur antara ketiga jenis koneksi PHP-MySQL ini, berikut adalah tabel perbandingan antara mysqli, PDO dan mysql extension yang bersumber dari manual resmi PHP:

Cara Penulisan mysql extension, mysqli extension, dan PDO (PHP Data Objects)

Untuk mengetahui secara sekilas perbedaan cara pengaksesan database MySQL menggunakanmysql extension, mysqli extension, dan PDO, berikut contoh kode PHPnya:

<?php

Page 147: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

// cara mengakses MySQL menggunakan mysql extension:

$link = mysql_connect("localhost", "root", "qwerty");

mysql_select_db("universitas");

$result = mysql_query("SELECT * FROM mahasiswa");

$row = mysql_fetch_assoc($result);

// cara mengakses MySQL menggunakan mysqli extension:

$mysqli = new mysqli("localhost", "root", "qwerty", "universitas");

$result = $mysqli->query("SELECT * FROM mahasiswa");

$row = $result->fetch_assoc();

// cara mengakses MySQL menggunakan PDO:

$pdo = new PDO('mysql:host=localhost;dbname=universitas', 'root', 'qwerty');

$statement = $pdo->query("SELECT * FROM mahasiswa");

$row = $statement->fetch(PDO::FETCH_ASSOC);

?>

Dalam contoh diatas, dianggap bahwa user MySQL adalah root, password ’qwerty’, dan nama database ’universitas’.

Anda tidak perlu memahami kode program diatas, karena kita akan membahasnya dengan lengkap dalam tutorial belajar PHP MySQL di duniailkom ini.

Untuk tahap pertama, saya akan menggunakan metode mysql extension yang berbasis fungsi terlebih dahulu. Walaupun metode ini tidak disarankan lagi, namun metode inilah yang paling mudah dipelajari dan telah dikenal luas.

Setelah selesai membahas mysql extension, selanjutnya kita akan beralih ke mysqli extensionyang bisa ditulis dengan procedural style (menggunakan fungsi-fungsi) ataupun dengan object style. Terakhir, kita akan membahas cara membuat koneksi PHP MySQL menggunakan PDO. Cara pengaksesan MySQL dengan PDO yang berbasis objek akan lebih mudah dipahami jika anda telah mempelajari pemrograman berbasis objek.

Dalam tutorial selanjutnya, kita akan membahas pengertian extension PHP, dan cara pengaturan PHP (setingan PHP) agar kita dapat menggunakan mysql extension, dalam tutorial Pengertian extension PHP dan cara setting mysql extension.

Tutorial PHP MySQL Part 3: Pengertian Extension PHP dan Cara Setting mysql extension

Page 148: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda mengistall PHP melalui XAMPP, maka mysql extension telah aktif secara default dan anda tidak perlu melakukan apa-apa. Namun jika anda menginstall PHP secara terpisah, kita harus mengaktifkan setingan PHP agar mendukung MySQL. Dalam tutorial kali ini kita akan membahas tentang pengertian extension dalam PHP dan cara setting mysql extension.

Pengertian Extension dalam PHP

Sampai dengan tutorial kali ini, beberapa kali saya menggunakan istilah extension. Namun apakah yang dimaksud dengan extension ini?

Extension di dalam PHP adalah istilah yang merujuk kepada kumpulan fungsi program tambahan yang membuat PHP dapat mendukung berbagai fitur baru.

PHP terdiri dari aplikasi inti (PHP core), dan fungsi tambahan (extension). Dalam aplikasi inti PHP, PHP tidak menyediakan fungsi yang menangani database MySQL. Penanganan untuk fungsi database ini dipisahkan menjadi fungsi tambahan (extension). Selain database, extension dalam PHP menyediakan berbagai fungsi lainnya untuk keperluan yang lebih khusus, seperti pembuatan gambar, kriptografi, penanganan email, pembuatan PDF, dan lain-lain.

Cara Setting mysql extension dengan php.ini

Untuk mengaktifkan extension dalam PHP, bisa dilakukan dari file setingan php.ini (cara membuka file php.ini telah kita pelajari pada tutorial Cara Mengubah File Konfigurasi PHP (php.ini)), lalu cariextension=php_mysql.dll dan extension=php_mysqli.dll, pastikan menghapus tanda titik koma di awal kedua extension ini untuk mengaktifkannya.

Masih pada file php.ini, pada bagian ini anda dapat melihat berbagai extension yang terdapat di dalam PHP, bahkan sebahagian besar tidak aktif secara default.

Page 149: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

File settingan php.ini menginstruksikan kepada PHP untuk mengaktifkan suatu extension, namun file extension itu sendiri juga harus ada di dalam PHP. Anda bisa membuka folder xampp\php\extuntuk melihat file-file extension yang digunakan untuk menambah fitur PHP.

Untuk memeriksa apakah setingan extension=php_mysql.dll sudah aktif, kita bisa menggunakan fungsi phpinfo(). Anda bisa menjalankan fungsi phpinfo() didalam sebuah file php, atau bisa juga dengan men-klik menu phpinfo() dari halaman localhost dari XAMPP. Dalam halaman phpinfo(),carilah bagian mysql seperti tampilan berikut:

Page 150: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika anda menemukan bagian mysql, berarti extension mysql telah aktif dan kita bisa mulaI membuat program untuk mengakses database melalui PHP.

Dalam tutorial belajar PHP MySQL berikutnya, kita akan mulai membuat kode program PHP agar bisa terhubung dengan MySQL dalam tutorial Cara Membuat Koneksi PHP-MySQL dengan fungsi mysql_connect.

Tutorial PHP MySQL Part 4: Cara Membuat Koneksi PHP dengan MySQL (mysql_connect)

Didalam tutorial kali ini kita akan mulai masuk dengan kode program untuk membuat koneksi antara PHP dengan MySQL. Seperti yang pernah kita bahas, PHP menyediakan 3 buah extension untuk koneksi PHP-MySQL. Mulai dari tutorial ini dan beberapa tutorial kedepan, saya akan membahas cara koneksi menggunakan mysql extension. Kali ini kita akan membahas cara membuat koneksi antara PHP dengan database MySQL. Proses koneksi ini menggunakan fungsimysql_connect().

Page 151: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Mengenal Fungsi koneksi PHP-MySQL: mysql_connect()

Untuk membuat koneksi antara PHP dengan MySQL menggunakan mysql extension, PHP menyediakan fungsi mysql_connect().

Fungsi ini diibaratkan sebagai cara untuk login kedalam MySQL Server. Fungsi mysql_connect()membutuhkan 3 argumen, dan mengembalikan nilai fungsi berupa ‘variabel koneksi’ ke MySQL.

Berikut adalah format dasar penulisan fungsi mysql_connect():

$link = mysql_connect(’mysql_host’, 'mysql_user', 'mysql_password');

$link merupakan variabel yang akan menampung hasil dari fungsi mysql_connect (). Jika berhasil terhubung dengan MySQL, $link akan berisi nilai yang berfungsi sebagai ’link koneksi’dengan MySQL. Link koneksi ini akan dibutuhkan sepanjang program PHP-MySQL nantinya. Di dalam PHP, variabel $link ini dikenal dengan istilah handler, yakni variabel yang meng-handlekoneksi ke MySQL.

mysql_host adalah argumen pertama dari fungsi mysql_connect(). Nilai mysql_host diisi dengan alamat komputer dimana MySQL Server berjalan. Jika anda menjalankan MySQL menggunakan XAMPP di komputer yang sama dengan tempat web server Apache berjalan, maka alamat ini bisa diisi dengan ’localhost’ atau ’127.0.0.1’. Namun jika MySQL server dijalankan dari komputer lain, argumen ini akan berisi IP address dari komputer tersebut.

mysql_user adalah nama user MySQL dimana kita akan login. Seperti ’root’, ’admin’, ’andi’dan lain-lain tergantung kepada user MySQL yang telah terdaftar di server. Cara membuat dan menghapus user MySQL telah saya bahas pada Tutorial Cara Membuat dan Menghapus User MySQL (CREATE USER). Jika anda menggunakan MySQL bawaan XAMPP, user ’root’ dapat digunakan.

mysql_password diisi dengan password dari user yang dibuat pada argumen mysql_user.

Variabel $link yang berisi link koneksi PHP-MySQL (hasil dari fungsi mysql_connect()), termasuk ke dalam kelompok tipe data khusus PHP yang disebut resources. Variabel Resources tidak bisa berdiri sendiri dan biasanya digunakan sebagai argumen untuk fungsi lain. Anda bebas mengganti nama variabel $link dengan nama lain, seperti $koneksi, $link_mysql, dll.

Jika koneksi dengan PHP gagal dilakukan, fungsi mysql_connect() akan mengembalikan nilai Boolean FALSE. Hasil FALSE ini akan disimpan dalam variabel $link dan bisa kita gunakan dalam perulangan IF untuk menampilkan error yang terjadi.

Cara Membuat Koneksi PHP dengan MySQL

Untuk mengetahui cara membuat koneksi antara MySQL dengan PHP, langsung saja kita masuk kedalam contoh kode program cara penggunaan fungsi mysql_connect().

Berikut adalah kode PHP untuk membuat koneksi dengan MySQL:

<?php

Page 152: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//buat koneksi MySQL untuk user: root, tanpa password, alamat: localhost

$link=mysql_connect('localhost','root','');

//cek apakah koneksi dengan MySQL berhasil

if ($link)

{

//koneksi berhasil

echo "Koneksi dengan MySQL berhasil";

}

else

{

//koneksi gagal

echo "Koneksi dengan MySQL gagal";

}

//memeriksa nilai dari $link

echo "<br />";

echo 'hasil var_dump variabel $link : ';

var_dump($link);

?>

Jika koneksi dengan MySQL berhasil, maka di dalam web browser akan tampil gambar seperti berikut ini:

Page 153: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pada bagian pertama kode program, saya membuat fungsi mysql_connect(‘localhost’,’root’,”). Fungsi ini berarti saya mencoba login dengan MySQL Server yang berada di alamat localhost(komputer yang sama dengan web server berada), nama user ’root’ dan password ’’ (string kosong, yang berarti tanpa password).

Fungsi mysql_connect() mengembalikan kondisi status koneksi ke dalam variabel $link. Variabel$link akan berisi link koneksi (bertipe resources) jika berhasil terkoneksi dengan MySQL, dan akan bernilai TRUE jika dikonversi menjadi Boolean.

Namun variabel $link akan berisi nilai Boolean FALSE jika PHP gagal login ke MySQL. Nilai $link ini selanjutnya bisa digunakan untuk pengecekan apakah koneksi berhasil atau tidak.

Jika terjadi kesalahan, misalkan saja saya mengubah password root menjadi ’123456’, maka tampilan web browser akan seperti berikut ini:

Page 154: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Seperti yang terlihat, PHP mengeluarkan pesan error mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES), yang berarti login ke MySQL gagal karena salah password untuk user root.

Agar lebih informatif, diakhir program saya tampilkan nilai dari variabel $link dengan menggunakan fungsi var_dump(). Anda akan melihat bahwa variabel $link bertipe data ’resources’ jika koneksi berhasil, dan bertipe data Boolean FALSE, jika koneksi gagal.

Mengenal fungsi die() dan exit() dalam PHP

Salah satu fungsi PHP yang sering digunakan pada saat melakukan koneksi dengan MySQL adalah fungsi die() dan exit().

Sesuai dengan namanya, fungsi ini bertujuan untuk ’membunuh’ atau ’keluar’ dari PHP. Kedua fungsi ini bertujuan untuk membuat proses PHP berhenti diproses pada saat itu juga (pada saat fungsi ini dipanggil).

Sebelum ’bunuh diri’, fungsi die() dan exit() bisa menampilkan “pesan terakhir”.

Berikut adalah penggunaan fungsi die() dalam membuat koneksi antara PHP dengan MySQL:

<?php

Page 155: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','123');

//cek apakah koneksi dengan MySQL berhasil

if ($link)

{

//koneksi berhasil

echo "Koneksi dengan MySQL berhasil";

}

else

{

//koneksi gagal

die("Koneksi dengan MySQL gagal");

echo "Pesan ini tidak akan pernah ditampilkan";

}

?>

Fungsi die() pada kode diatas akan menyebabkan proses PHP berhenti jika login ke database MySQL gagal dilakukan. Dengan menggunakan fungsi die(), kita bisa memastikan bahwa PHP tidak akan mengeksekusi perintah-perintah selanjutnya.

Apabila kita tidak menggunakan die(), maka PHP akan terus menjalankan proses berikutnya yang akan menghasilkan error (karena koneksi ke database memang tidak akan bisa dilakukan).

Menghentikan koneksi PHP MySQL dengan mysql_close()

Koneksi PHP dengan MySQL akan dihentikan secara otomatis pada saat eksekusi program selesai, yaitu pada saat halaman PHP selesai diproses, sehingga kita tidak perlu menghentikanya secara manual.

Namun jika anda ingin menghentikan koneksi dengan MySQL pada saat program PHP sedang berjalan, PHP menyediakan fungsi mysql_close(). Fungsi ini membutuhkan 1 buah argumen yang diisi dengan variabel ‘link koneksi’ hasil pemanggilan fungsi mysql_connect(). Variabel koneksi ini bersifat opsional, dan jika diabaikan maka PHP akan menggunakan koneksi mysql terakhir.

Berikut adalah contoh penggunaan fungsi mysql_close():

<?php

Page 156: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','123');

//...Kode Program PHP-MySQL

//...Kode Program PHP-MySQL

//...Kode Program PHP-MySQL

//menghentikan koneksi dengan MySQL

mysql_close($link);

//...Kode Program PHP

//...Kode Program PHP

?>

Dalam tutorial kali ini, kita telah berhasil membuat koneksi antara PHP dengan MySQL Server. Namun untuk ’berkomunikasi’ dengan database dalam MySQL, harus menggunakan “query”. Dalam tutorial berikutnya kita akan membahas cara menjalankan query MySQL dari PHP dengan fungsi mysql_query.

Tutorial PHP MySQL Part 5: Cara Menjalankan query MySQL dari PHP (mysql_query)

Jika koneksi antara PHP dan MySQL telah dibuat, langkah selanjutnya adalah menjalankan query MySQL. Dalam tutorial kali ini kita akan mempelajari Cara Menjalankan query MySQL dari PHP dengan fungsi mysql_query.

Mengenal Fungsi Query PHP-MySQL: mysql_query

Untuk menjalankan query MySQL, PHP menyediakan fungsi mysql_query(). Fungsi ini dijalankan setelah koneksi berhasil dilakukan dengan fungsi mysql_connect().

Fungsi mysql_query() merupakan fungsi yang akan sering kita gunakan, karena dengan fungsi inilah PHP akan melakukan ’percakapan’ dengan MySQL. Hampir seluruh perintah query MySQL yang kita bahas pada tutorial belajar MySQL Dasar, dapat dijalankan dengan fungsi mysql_query().

Fungsi mysql_query() membutuhkan 2 argumen, dimana argumen pertama diisi dengan query MySQL, dan argumen kedua diisi dengan link koneksi hasil fungsi mysql_connect(). Argumen kedua ini bersifat opsional.

Berikut adalah format dasar penulisan fungsi mysql_query() dalam PHP:

$result = mysql_query("query_mysql",[$link_koneksi_mysql]);

$result adalah variabel yang akan menampung hasil dari fungsi mysql_query(). Jika fungsimysql_query() berhasil dijalankan, variabel $result akan berisi hasil query, namun jika query gagal, variabel ini akan berisi nilai boolean FALSE. Variabel $result bertipe resources (sama dengan hasil dari fungsi mysql_conncect()). Nama dari

Page 157: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

variabel ini tidak harus ditulis sebagai$result, anda bebas jika ingin menggantinya dengan nama lain.

‘query_mysql’ adalah argumen pertama fungsi mysql_query(). Pada bagian inilah kita menulis query MySQL. Query tersebut selanjutnya akan dikirim kepada MySQL Server untuk diproses. Argumen ini harus pertipe string dan mengikuti aturan penulisan string didalam PHP. Contoh query ini, misalnya “SELECT * FROM mahasiswa”, atau “CREATE DATABASE universitas”.

$link_koneksi_mysql adalah argumen kedua dari fungsi mysql_query(). Argumen ini diisi dengan variabel hasil pemanggilan fungsi mysql_connect(). Argumen ini bersifat opsional, dan jika diabaikan PHP akan menggunakan variabel mysql_connect() yang sedang terkoneksi saat ini.

Cara Menjalankan query MySQL dari PHP

Untuk memahami cara penggunaan fungsi mysql_query(), langsung saja kita masuk kedalam contoh program. Dalam contoh program berikut, saya akan membuat query untuk menampilkan seluruh database yang ada di dalam MYSQL.

Berikut adalah contoh program penulisan fungsi mysql_query dalam PHP:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//jalankan query

$result=mysql_query('SHOW DATABASES',$link);

//tampilkan hasil query

Page 158: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

while ($row = mysql_fetch_row($result))

{

echo $row[0];

echo "<br />";

}

?>

Jika anda menjalankan perintah diatas, didalam web browser akan tampil semua nama database yang ada dalam MySQL.

Pada baris ke-3 dari program diatas, saya membuat koneksi dengan MySQL menggunakan fungsimysql_connect(). Fungsi ini menggunakan user ’root’ dan tanpa password. Hasil koneksi fungsi saya simpan ke dalam variabel $link.

Selanjutnya pada baris ke-6 saya memeriksa nilai dari koneksi mysql_connect() dengan cara membuat logika IF untuk variabel $link. Jika MySQL gagal diakses, maka fungsi die() akan memerintahkan PHP untuk menghentikan program.

Namun jika koneksi berhasil, pada baris ke-12 saya membuat fungsi mysql_query() untuk menjalankan query ’SHOW DATABASES’. Query ini adalah perintah untuk menampilkan seluruh nama database yang ada pada MySQL.

Kode program pada baris ke-15 digunakan untuk menampilkan hasil query. Fungsimysql_fetch_row() belum saya bahas, dan akan kita pelajari pada tutorial berikutnya.

Apabila query yang digunakan lebih panjang dan kompleks, anda bisa menyimpannya di dalam sebuah variabel terlebih dahulu, baru kemudian dijalankan dengan mysql_query(), seperti contoh berikut ini:

$query="SELECT * FROM mahasiswa WHERE IPK>5";

$result=mysql_query($query,$link);

Dengan memindahkan query kedalam variabel, akan membuat program kita menjadi lebih rapi.

Argumen kedua dari fungsi mysql_query() juga boleh tidak ditulis, dan PHP akan menggunakan link koneksi MySQL terakhir yang tersedia, seperti contoh berikut:

$query="SELECT * FROM mahasiswa WHERE IPK>5";

$result=mysql_query($query);

Fungsi mysql_connect() dan mysql_query() adalah fungsi paling dasar dalam koneksi PHP dengan MySQL. Untuk menampilkan hasil dari query tersebut, PHP menyediakan berbagai cara yang bisa digunakan untuk berbagai situasi. Cara pengaksesan ini akan kita pelajari pada artikel-artikel selanjutnya.

Dalam tutorial berikutnya, kita akan mempelajari cara Cara Menampilkan Hasil Query MySQL dari PHP dengan fungsi mysql_fetch_row().

Page 159: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial PHP MySQL Part 6: Cara Menampilkan Tabel MySQL dari PHP (mysql_fetch_row)

Setelah menjalankan fungsi mysql_connect() untuk membuat koneksi antara PHP dengan MySQL, dan menjalankan query MySQL dengan fungsi mysql_query(), pada tutorial kali ini kita akan membahas tentang fungsi mysql_fetch_row() yang digunakan untuk menampilkan tabel hasil query MySQL tersebut.

Menampilkan Data MySQL dengan fungsi mysql_fetch_row

Perintah SELECT adalah query MySQL yang paling sering gunakan. Query ini berfungsi untuk menampilkan data dari database. Data yang ditampilkan MySQL biasanya diberikan dalam bentuk tabel yang terdiri dari baris dan kolom.

Untuk menampilkan data MySQL di dalam PHP, hasil dari fungsi mysql_query() harus diproses lebih lanjut agar bisa ditampilkan di dalam web browser. PHP menyediakan banyak cara untuk menampilkan hasil query MySQL. Salah satunya akan kita bahas dalam tutorial kali ini dengan fungsi: mysql_fetch_row().

Fungsi mysql_fetch_row() digunakan untuk menampilkan tabel secara baris per baris. Fungsimysql_fecth_row() akan mengembalikan nilai 1 baris dari sebuah tabel pada setiap pemanggilan. Sehingga untuk dapat menampilkan seluruh isi tabel, fungsi mysql_fecth_row() harus dipanggil secara berulang.

Berikut adalah format dasar penulisan fungsi mysql_fetch_row() dalam PHP

$row = mysql_fetch_row($result)

$row adalah variabel yang akan menampung hasil fungsi mysql_fetch_row(). Hasil dari fungsimysql_fetch_row() berupa tipe data array dengan key merujuk kepada kepada urutan kolom, dan value-nya (nilai dari array) adalah isi dari kolom tersebut.

$result adalah variabel inputan query untuk fungsi mysql_fecth_row(). Variabel ini berasal dari fungsi mysql_query().

Cara pengambilan data dari variabel $row, penting untuk dipahami.

Variabel $row hasil fungsi mysql_fetch_row() bertipe array. Jika sebuah baris di dalam tabel MySQL terdiri dari 3 kolom, maka varibel $row akan berisi nilai sebagai berikut: $row[0]=nilai_kolom_1,$row[1]=nilai_kolom_2, dan $row[2]=nilai_kolom_3. Index array dimulai dari 0, dan karena itu kolom 1 berada pada index 0, bukan index 1.

Yang perlu menjadi perhatian, fungsi mysql_fetch_row() hanya membaca 1 baris pada sekali pemanggilan. Jika tabel kita terdiri dari 5 baris, maka fungsi mysql_fecth_row() harus diulang sebanyak 5 kali.

Cara Menampilkan Tabel MySQL dari PHP

Agar lebih mudah memahami cara kerja fungsi mysql_fetch_row(), kita akan langsung praktek dengan kode program.

Page 160: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Karena fungsi mysql_fetch_row() digunakan untuk menampilkan data, kita harus membuat datanya terlebih dahulu, yaitu berupa database MySQL beserta tabelnya.

Sebagai data contoh dan sarana latihan menggunakan query MySQL, saya akan membuat databaseuniversitas, dan tabel mahasiswa_ilkom. Database universitas dan tabel mahasiswa_ilkom ini akan saya gunakan pada tutorial PHP MySQL selanjutnya.

Berikut adalah kode yang diperlukan:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//buat database universitas

$result=mysql_query('CREATE DATABASE universitas');

if (!$result)

{

die("Database mahasiswa gagal dibuat");

}

//gunakan database universitas

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

Page 161: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//buat tabel mahasiswa_ilkom

$query= "CREATE TABLE mahasiswa_ilkom (nim CHAR(9) NOT NULL PRIMARY KEY,

nama CHAR(50), umur INT, tempat_lahir CHAR(50), IPK DECIMAL (3,2))";

$result=mysql_query($query);

if (!$result)

{

die("Tabel mahasiswa_ilkom gagal dibuat");

}

//tambahkan data ke dalam tabel mahasiswa_ilkom

$query="INSERT INTO mahasiswa_ilkom VALUES ('089045001', 'Andi Suryo',

23, 'Jakarta', 2.7)";

mysql_query($query);

$query="INSERT INTO mahasiswa_ilkom VALUES ('109245021', 'Santi Syanum',

21, 'Malang', 3.2)";

mysql_query($query);

$query="INSERT INTO mahasiswa_ilkom VALUES ('099145055', 'Neil Situmorang',

22, 'Medan', 1.9)";

mysql_query($query);

$query="INSERT INTO mahasiswa_ilkom VALUES ('089023013', 'Alex Supriyanto',

23, 'Surabaya', 2.9)";

mysql_query($query);

$query="INSERT INTO mahasiswa_ilkom VALUES ('109223041', 'Rani Sabrina',

21, 'Padang',3.7)";

mysql_query($query);

Page 162: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "Database universitas dan Tabel mahasiswa_ilkom berhasil dibuat";

?>

Kode PHP diatas sedikit panjang jika dibandingkan contoh-contoh kita sebelumnya, namun intinya perintah diatas adalah untuk membuat database universitas, dan tabel mahasiswa_ilkom. Setelah tabel terbentuk, kemudian saya menambahkan beberapa data kedalam tabel tersebut.

Dari contoh diatas, anda juga dapat melihat cara pembuatan database, pembuatan tabel, dan cara memasukkan nilai kedalam database. Semuanya dijalankan dengan fungsi mysql_query().

Jika anda sudah paham tentang query MySQL, perintah query diatas tentunya tidak terlalu sulit untuk dipahami. Namun jika ragu tentang instruksi query yang saya gunakan, anda bisa mempelajarinya di tutorial MySQL duniailkom.

Fungsi-fungsi PHP yang saya gunakan juga telah kita pelajari pada tutorial sebelumnya. Tambahan baru mungkin ada pada penggunaan logika IF untuk menangani fungsi yang gagal. Saya menggunakan instruksi (!$result) untuk masuk pada fungsi die() jika fungsi tersebut gagal dijalankan.

Sebagai contoh, jika anda menjalankan kode diatas sebanyak 2 kali, maka akan tampil pesan‘Database mahasiswa gagal dibuat’. Hal ini terjadi karena terdapat duplikasi database di dalamMySQL, sehingga kode PHP akan berhenti pada baris ke 15 karena fungsi die().

Cara Menampilkan Baris Tabel Dengan Fungsi mysql_fetch_row

Setelah tabel contoh selesai dibuat, saatnya kita mencoba menampilkan data dari tabelmahasiswa_ilkom dengan fungsi mysql_fetch_row().

Cara paling dasar untuk menampilkan data dari mysql adalah seperti kode program berikut ini:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//gunakan database universitas

Page 163: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

?>

Kode program dari baris 1 sampai baris 16 merupakan persiapan untuk mengkoneksikan MySQL dan memilih database universitas.

Perhatikan pada baris ke 12, dimana saya menjalankan query “USE universitas”. Query ini ditujukan untuk memberitahu MySQL bahwa kita akan menggunakan database mahasiswa. Alternatif penulisan mysql_query(‘USE universitas’) adalah dengan menggunakan fungsimysql_select_db(‘universitas’). Anda bebas ingin menggunakan salah satunya.

Pada baris ke-20 saya menjalankan query SELECT untuk menampilkan seluruh isi tabelmahasiswa_ilkom. Cara menjalankannya adalah dengan fungsi mysql_query() dengan perintah query: ‘SELECT * FROM mahasiswa_ilkom’. Hasil fungsi ditampung kedalam variabel $result.

Variabel $result selanjutnya diproses dengan fungsi mysql_fetch_row($result), dan disimpan dalam variabel $row.

Page 164: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Seperti yang telah kita pelajari, bahwa fungsi mysql_fetch_row() akan menyimpan hasil query sebagai array dengan key adalah urutan kolom mulai dari key ke-0 untuk kolom ke-1 tabel, $row[1] untuk kolom ke-2, dan begitu seterusnya. Karena tabel mahasiswa_ilkom hanya memiliki 5 kolom, maka $row[4] adalah kolom terakhir.

Cara Menampilkan Seluruh Tabel Dengan Fungsi mysql_fetch_row

Sesuai namanya, fungsi mysql_fetch_row() hanya akan menampilkan baris perbaris, jadi bagaimana caranya untuk menampilkan seluruh tabel mahasiswa_ilkom? Caranya adalah dengan mengulang fungsi mysql_fetch_row() sebanyak jumlah baris yang ingin ditampilkan.

Sehingga contoh program kita menjadi sebagai berikut:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas');

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

Page 165: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

?>

Pada contoh diatas, saya menghapus baris fungsi die() semata-mata agar contoh program kita tidak terlalu panjang.

Kode program diatas berjalan sebagaimana dengan seharusnya, karena pada setiap pemanggilan fungsi mysql_fetch_row(), PHP akan ‘menggeser’ penunjuk baris MySQL ke baris berikutnya di dalam tabel. Sehingga untuk pemanggilan mysql_fetch_row() ke-2 posisi pointer MySQL akan berada dibaris ke-2 dari tabel, dan begitu seterusnya hingga pemanggilan mysql_fetch_row() ke-5.

Menampilkan Tabel MySQL Dengan Perulangan For

Namun jika anda perhatikan, fungsi mysql_fetch_row() yang ditulis secara berulang-ulang pada contoh sebelumnya merupakan pekerjaan yang cocok untuk fungsi perulangan. Sehingga dengan menggunakan perulangan for, kode kita akan menjadi lebih mudah ditulis.

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

Page 166: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$result=mysql_query('USE universitas');

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

for ($i=1;$i<=5;$i++)

{

$row=mysql_fetch_row($result);

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Fungsi diatas akan menampilkan seluruh baris yang ada di dalam tabel mahasiswa_ilkomdenganmelakukan perulangan fungsi mysql_fetch_row() sebanyak 5 kali.

Namun masih ada 1 hal lagi yang bisa kita perbaiki dari program diatas.

Menampilkan Tabel MySQL Dengan Perulangan While

Perulangan for mengharuskan kita untuk menulis langsung jumlah perulangan yang harus dilakukan. Pada saat penulisan program, kita telah mengetahui bahwa tabel mahasiswa_ilkomberisi 5 baris, Namun bagaimana jika ternyata data di dalam tabel saat ini tidak lagi 5, tetapi sudah lebih dari itu?

Untuk perulangan dimana banyaknya perulangan tidak diketahui pada saat penulisan program, kita bisa beralih ke perulangan while (Tutorial Cara Penulisan Perulangan While dalam PHP ).

Untuk membuat hal ini menjadi lebih mudah, fungsi mysql_fetch_row() akan mengembalikan nilaiFALSE jika pointer telah berada di baris terakhir tabel MySQL. Nilai kembalian ini menjadi variabel yang tepat untuk ‘kondisi berhenti’ pada perulangan while.

Berikut adalah contoh program penggunaan mysql_fetch_row () dengan perulangan while:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas');

Page 167: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

while ($row=mysql_fetch_row($result))

{

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Konsep perulangan while seperti diatas akan sering anda lihat untuk menampilkan data dari database MySQL.

Selain menggunakan fungsi mysql_fetch_row(), PHP masih memiliki fungsi lainnya untuk menampilkan data tabel dari MySQL, salah satunya adalah fungsi mysql_fecth_array().

Fungsi mysql_fecth_array() lebih fleksibel karena kita tidak hanya bisa menggunakan angka, namun juga ‘nama’ kolom sebagai key array. Pembahasan tentang fungsi mysql_fecth_array() akan kita pelajari dalam tutorial selanjutnya: Cara Menampilkan Tabel MySQL dari PHP (mysql_fetch_array() .

Tutorial PHP MySQL Part 7: Cara Menampilkan Tabel MySQL dari PHP (mysql_fetch_array)

Selain menggunakan fungsi mysql_fetch_row(), PHP juga menyediakan fungsi lain untuk menampilkan data dari MySQL, yakni fungsi mysql_fetch_array(). Dalam tutorial kali ini kita akanmembahas cara penggunaan fungsi mysql_fetch_array(), dan perbedaanya denganmysql_fetch_row().

Menampilkan Tabel MySQL dengan fungsi mysql_fetch_array

Fungsi mysql_fetch_array() pada dasarnya hampir sama dengan fungsi mysql_fetch_row(), namun fungsi mysql_fetch_array() memberikan alternatif cara menampilkan data MySQL dengan lebih mudah.

Jika dalam fungsi mysql_fetch_row() hasil fungsinya berupa array dengan key atau  indexnya berupa angka, seperti : $row[1], $row[2] dan $row[3], maka di dalam mysql_fetch_array(), kita bisa menggunakan nama kolom dari tabel MySQL sebagai key atau index array seperti berikut ini:$row[‘nim’], $row[‘nama’] dan $row[‘umur’]. Cara penulisan seperti ini akan memudahkan pembuatan program.

Selain menggunakan nama kolom pada index array, fungsi mysql_fetch_array() juga bisa menggunakan index penomoran kolom seperti mysql_fetch_row(), atau bahkan keduanya sekaligus. Untuk mengatur fitur ini, fungsi mysql_fetch_array() membutuhkan parameter tambahan.

Berikut adalah format dasar penulisan fungsi mysql_fetch_array() dalam PHP:

$row= mysql_fetch_array($result,[’tipe_hasil’])

Page 168: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$row adalah variabel yang akan menampung hasil fungsi mysql_fetch_array(). Hasil dari fungsi mysql_fetch_array() berupa tipe data array dengan key yang bergantung kepada konstanta ‘tipe_hasil’.

$result adalah variabel hasil menjalankan query MySQL yang berasar dari fungsimysql_query().

’tipe_hasil’ merupakan konstanta opsional yang digunakan untuk mengatur index array dari hasil fungsi mysql_fetch_array(). Konstanta yang bisa digunakan adalah salah satu dari ketiga nilai berikut: MYSQL_NUM, MYSQL_ASSOC atau MYSQL_BOTH. Jika argumen ini tidak ditulis, nilai defaultnya adalah MYSQL_BOTH.

Perbedaan mysql_fetch_array: MYSQL_NUM, MYSQL_ASSOC dan MYSQL_BOTH

Cara mengakses array dari fungsi mysql_fetch_array() bergantung kepada argumen ‘tipe_hasil’. Argumen ‘tipe_hasil’ hanya bisa berisi satu dari 3 konstanta: MYSQL_NUM, MYSQL_ASSOC atau MYSQL_BOTH.

Jika argumen keduadari fungsi mysql_fetch_array() diisi MYSQL_NUM, maka index array akan menjadi angka (sama seperti hasil mysql_fetch_row()), dan bisa ditampilkan seperti: $row[1], $row[2] dan $row[3].

Jika argumen kedua diisi MYSQL_ASSOC, index array akan menjadi nama kolom, dan bisa ditampilkan seperti: $row[‘nim’], $row[‘nama’] dan $row[‘umur’].

Opsi ketiga, jika argumen diisi MYSQL_BOTH maka index array mendukung 2 pemanggilan, yakni berupa angka dan nama kolom.

Sama seperti fungsi mysql_fetch_row(), mysql_fetch_row() hanya membaca 1 baris pada sekali pemanggilan. Jika tabel kita terdiri dari 5 baris, maka fungsi mysql_fecth_array() harus diulang sebanyak 5 kali (atau menggunakan metoda perulangan while seperti yang kita lakukan pada tutorial mysql_fetch_row().

Cara Penggunaan Fungsi mysql_fecth_array()

Agar lebih mudah dipahami, langsung saja kita masuk kedalam contoh kode program. Masih menggunakan contoh database universitas yang dibuat pada tutorial mysql_fetch_row(), kali ini saya akan menggunakan fungsi mysql_fetch_array() untuk menampilkan hasilnya.

Berikut adalah contoh penggunaan fungsi mysql_fetch_array() dalam PHP:

<?php

//buat koneksi dengan MySQL

Page 169: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas');

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

while ($row=mysql_fetch_array($result, MYSQL_NUM))

{

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Dalam contoh diatas, baris 1-6 merupakan kode program untuk membuat koneksi dengan MySQL. Pada baris ke-9, saya membuat query ‘SELECT * FROM mahasiswa_ilkom’ yang akan mengembalikan seluruh isi tabel mahasiswa_ilkom.

Jika diperhatikan, kode program diatas sama persis dengan contoh terakhir pada tutorialmysql_fetch_row(), hanya pada baris ke 10 saya menggantinya dengan fungsimysql_fetch_array().

Konstanta MYSQL_NUM pada argumen ke-2 fungsi mysql_fetch_array(), menginstruksikan kepada PHP bahwa nilai kembalian untuk variabel $row adalah array dengan index angka, sehingga hasilnya sama

Page 170: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

persis dengan mysql_fetch_row() yang diakses dengan $row[0] untuk kolom pertama tabel, $row[1] untuk kolom kedua tabel, dan seterusnya.

Jika menggunakan konstanta MYSQL_NUM akan membuat fungsi mysql_fetch_array() sama denganmysql_fetch_row(), bagaimana dengan MYSQL_ASSOC? Dalam contoh berikut, saya akan mengubah konstanta fungsi mysql_fetch_array() dengan MYSQL_ASSOC :

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas');

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

while ($row=mysql_fetch_array($result,MYSQL_ASSOC))

{

echo $row['nim']." ".$row['nama']." ".$row['umur']." ";

echo $row['tempat_lahir']." ".$row['IPK'];

echo "<br />";

}

?>

Pada contoh kali ini, pada baris ke-10, fungsi mysql_fetch_array() saya panggil dengan konstantaMYSQL_ASSOC sebagai argumen kedua. Dengan cara ini, hasil kembalian query, berupa array dengan index nama kolom dari tabel MySQL.

Karena menggunakan konstanta MYSQL_ASSOC, cara pengaksesan nilai $row harus menggunakan index nama kolom tabel. Jika di dalam MySQL nama kolom adalah ‘nim’, maka untuk menampilkan data kolom tersebut, kita menggunakan $row[‘nim’]. Jika di dalam MySQL nama kolom adalah‘tempat_lahir’, untuk menampilkan data kolom tersebut, adalah dengan $row[‘tempat_lahir’], dan seterusnya.

Dengan cara ini, kita akan mudah untuk merancang tampilan tabel MySQL, terutama jika urutan kolom tidak ditampilkan secara berurutan.

Page 171: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk pilihan konstanta terakhir: MYSQL_BOTH, MySQL akan mengembalikan nilai $row yang bisa diakses baik dengan index angka maupun dengan index nama kolom. Berikut adalah contoh kode programnya:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas');

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

while ($row=mysql_fetch_array($result,MYSQL_BOTH))

{

echo $row[0]." ".$row['nama']." ".$row['umur']." ";

echo $row[3]." ".$row['IPK'];

echo "<br />";

Page 172: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

}

?>

Seperti yang terlihat, saya membuat perintah $row[0] dan $row[‘nama’] dalam pemanggilan yang sama, dan PHP dapat menampilkan hasil sesuai dengan yang diharapkan.

Pada dasarnya, pengaksesan MySQL melalui PHP, hanya membutuhkan 3 fungsi utama, yaknimysql_connect(), mysql_query(), dan mysql_fecth_array(). Sampai disini, kita telah mempelajari ketiga fungsi penting tersebut.

Dalam tutorial selanjutnya, kita akan mempelajari cara menampilkan pesan error dari MySQL ketika query yang dijalankan tidak sesuai.

Tutorial PHP MySQL Part 8: Cara Menampilkan Pesan Error MySQL (mysql_errno dan mysql_error)

Kedua fungsi yang akan kita bahas dalam tutorial kali ini berkaitan dengan cara penanganan kesalahan dari MySQL. Ketika sebuah query dijalankan, pesan error yang dihasilkan oleh MySQL tidak langsung ditampilkan PHP. Untuk menampilkan pesan kesalahan dari MySQL, kita harus memanggilnya menggunakan fungsi mysql_errno() dan mysql_error().

Cara Menampilkan Pesan Error MySQL dalam PHP

Agar lebih informatif, ketika query tidak berjalan dengan semestinya, PHP menyediakan 2 buah fungsi untuk menampilkan pesan error dari MySQL, yaitu fungsi mysql_errno() dan mysql_error(). Kedua fungsi ini membutuhkan 1 buah argumen yang bersifat opsional, yakni variabel hasil pemanggilan fungsi mysql_connect(). Tetapi, jika argumen tidak ditulis, PHP akan menggunakan koneksi MySQL terakhir yang tersedia.

Fungsi mysql_errno() akan menampilkan nomor atau kode error MySQL, sedangkan fungsimysql_error() akan menampilkan penjelasan error tersebut.

Contoh Penggunaan Fungsi mysql_errno dan mysql_error

Sebagai contoh penggunaan kedua fungsi tersebut, silahkan jalankan kode program berikut ini:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

Page 173: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//jalankan query

$query="DROP DATABASE tidak_ada";

$result=mysql_query($query,$link);

echo "Query yang dijalankan: $query";

echo "<br />";

echo "Kode error: ".mysql_errno($link);

echo "<br />";

echo "Pesan error: ".mysql_error();

?>

Pada kode diatas, saya mencoba menjalankan perintah untuk menghapus database ‘tidak_ada’ yang memang tidak tersedia di dalam MySQL. Jika kita menjalankan query tersebut tanpa bantuan fungsimysql_errno() dan mysql_error(), maka kita tidak tahu apa pesan error dari MySQL.

Perhatikan juga bahwa pada pemanggilan fungsi mysql_error() pada baris terakhir, saya tidak memberikan argumen, karena sifatnya yang opsional.

Page 174: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Fungsi mysql_errno() dan mysql_error() yang kita bahas disini sangat berguna di dalam proses pembuatan program, karena kita bisa mengetahui kenapa hasil dari MySQL tidak sesuai dengan apa yang kita inginkan.

Masih berkaitan dengan pemeriksaan hasil query, di dalam tutorial belajar PHP MySQL selanjutnya kita akan membahas tentang Cara Menampilkan Jumlah Baris Tabel MySQL menggunakan fungsi

Tutorial PHP MySQL Part 9: Cara Menampilkan Jumlah Baris Tabel MySQL (mysql_num_rows)

Dalam tutorial PHP MySQL kali ini kita akan membahas 2 fungsi (function) PHP yang digunakan untuk menampilkan jumlah baris dari Tabel MySQL . Fungsi yang akan kita bahas adalahmysql_num_rows dan mysql_affected_rows.

Cara Penggunaan Fungsi mysql_num_rows

Fungsi mysql_num_rows() digunakan untuk mengetahui berapa banyak jumlah baris hasil pemanggilan fungsi mysql_query(). Fungsi ini membutuhkan 1 buah argumen, yakni variabelresources hasil dari fungsi mysql_query().

Berikut adalah contoh penggunaannya:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//gunakan database universitas

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

Page 175: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//jalankan query

$result=mysql_query("SELECT * FROM mahasiswa_ilkom");

echo "Total mahasiswa berjumlah ".mysql_num_rows($result)." orang.";

?>

Jika kode diatas dijalankan, hasil yang didapat adalah sebagai berikut:

Total mahasiswa berjumlah 5 orang

Fungsi mysql_num_rows() ini cocok digunakan jika yang kita inginkan hanya konfirmasi mengenai ada atau tidak sebuah data di dalam database.

Cara Penggunaan Fungsi mysql_affected_rows

Fungsi mysql_affected_rows() digunakan untuk mengetahui jumlah baris tabel yang dikenai prosesoleh query MySQL. Hasil ini biasanya diperlukan jika kita ingin mengetahui dengan lebih detail tentang proses yang berlangsung.

Sebagai contoh, kita ingin melakukan operasi DELETE kepada sebuah tabel. Hal ini bisa dilakukan dengan fungsi mysql_query. Namun kita tidak bisa mengetahui berapa jumlah baris yang telah dihapus.

Jika menggunakan MySQL, informasi ini ditampilkan langsung setelah query:

Untuk mengambil informasi ini dari PHP, kita menggunakan fungsi mysql_affected_rows(). Berikut adalah contoh penggunaannya:

<?php

//buat koneksi dengan MySQL

Page 176: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//gunakan database universitas

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

//jalankan query

$result=mysql_query("DELETE FROM mahasiswa_ilkom WHERE umur='23'");

echo "Data yang di hapus sebanyak: ".mysql_affected_rows()." orang.";

?>

Dan, hasil yang ditampilkan adalah:

Data yang di hapus sebanyak: 2 orang.

Baik fungsi mysql_num_rows dan mysql_affected_rows sering digunakan di dalam situasi dimana kita membutuhkan informasi terkait query MySQL yang dijalankan. Kedua fungsi ini melengkapi fungsi-fungsi lain yang telah kita pelajari di dalam tutorial PHP MySQL ini.

Pada tutorial PHP MySQL selanjutnya, kita akan membahas cara menampilkan tabel MySQL dengan menggunakan objek (fungsi mysql_fetch_object).

Tutorial PHP MySQL Part 10: Cara Menampilkan Tabel MySQL dengan objek (mysql_fetch_object)

Page 177: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pemrograman berbasis objek sudah menjadi standar dalam pemrograman modern saat ini, termasuk PHP. Dalam tutorial belajar PHP MySQL kali ini kita akan membahas fungsimysql_fetch_object yang digunakan untuk menampilkan hasil tabel MySQL sebagai objek.

Penggunaan Objek untuk Menampilkan data MySQL

Fungsi mysql_fetch_row, mysql_fetch_assoc, dan mysql_fetch_array yang telah kita pelajari sebelumnya, menggunakan array untuk menampung hasil query MySQL. Sebagai contoh, untuk menampilkan hasil tabel mahasiswa_ilkom dengan fungsi mysql_fetch_assoc, kita bisa mengaksesnya dengan cara berikut:

$row['nim'], $row['nama'], $row['umur'], $row['tempat_lahir'], dan $row['IPK']

Dengan kata lain, nama kolom berfungsi sebagai “key” dari array $row.

Selain menggunakan array, PHP juga menyediakan fungsi mysql_fetch_object jika kita ingin mengakses hasil query menggunakan notasi objek. Nama kolom akan berfungsi sebagai propertydari objek $row. Menggunakan contoh tabel mahasiswa_ilkom ,maka cara mengaksesnya adalah sebagai berikut:

$row->nim, $row->nama, $row->umur, $row->tempat_lahir, dan $row->IPK

Karakter tanda panah (->) digunakan untuk mengakses property dari sebuah objek di dalam PHP.

Cara Penggunaan Fungsi mysql_fetch_object

Selain perbedaan cara akses diatas, penggunaan fungsi mysql_fetch_object untuk menampilkan tabel MySQL hampir sama dengan fungsi array seperti mysql_fetch_row atau mysql_fetch_array.

Berikut adalah modifikasi kode program yang sebelumnya kita gunakan pada tutorialmysql_fetch_array untuk menampilkan seluruh isi tabel mahasiswa_ilkom:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

Page 178: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

//gunakan database universitas

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

while ($row=mysql_fetch_object($result))

{

echo $row->nim." ".$row->nama." ".$row->umur." ";

echo $row->tempat_lahir." ".$row->IPK;

echo "<br />";

}

?>

Jika anda telah mempelajari tutorial mysql_fetch_array di duniailkom sebelumnya, maka kode diatas sangat mirip. Saya hanya mengubah fungsi mysql_fetch_array dengan mysql_fetch_object, lalu melakukan penyesuaian untuk pengaksesan property objek $row.

Pengaksesan dengan objek ini akan lebih lengkap apabila kita menggunakan extension mysqli atauPDO. Kedua metode ini akan kita pelajari dalam tutorial terpisah nantinya.

Menutup cara penggunaan mysql extension (sebelum kita masuk ke mysqli extension), dalam tutorial berikutnya saya akan mencoba mengkombinasikan HTML, CSS, PHP dan MySQL untuk menampilkan data dengan tampilan yang menarik. Selanjutnya dalam Tutorial PHP MySQL: Cara Penyajian Data MySQL dalam bentuk tabel HTML dengan CSS.

Tutorial PHP MySQL Part 11: Cara Penyajian Data MySQL dalam bentuk tabel HTML dengan CSS

Dari awal tutorial PHP MySQL di duniailkom, kita hanya fokus kedalam kode PHP yang digunakan untuk menampilkan tabel MySQL. Dalam tutorial kali ini, saya mencoba mengkombinasikan HTML dengan CSS untuk menampilkan data hasil query MySQL ke dalam bentuk tabel.

Menyajikan Data MySQL dengan Tabel HTML dan CSS

Page 179: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Umumnya, hasil query MySQL yang kita ambil dari database akan ditampilkan ke dalam bentuk tabel. Dengan mengkombinasikan PHP, MySQL, HTML dan CSS, kita bisa menampilkan data tabel MySQL dengan desain yang beragam. Dalam tutorial PHP MySQL ini, saya akan mencoba menampilkan tabel mahasiswa_ilkom dengan tampilan akhir seperti gambar berikut:

Tampilan diatas di dapat dengan mengkombinasikan PHP, MySQL, HTML dan CSS. Dan berikut adalah kode program yang digunakan:

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//jika koneksi gagal, langsung keluar dari PHP

if (!$link)

{

die("Koneksi dengan MySQL gagal");

}

//gunakan database universitas

Page 180: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$result=mysql_query('USE universitas');

if (!$result)

{

die("Database mahasiswa gagal digunakan");

}

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom');

?>

<!DOCTYPE html>

<head>

<meta charset="UTF-8">

<title>Belajar PHP MySQL</title>

<style>

h3{

text-align:center; }

table {

border-collapse:collapse;

border-spacing:0;

font-family:Arial, sans-serif;

font-size:16px;

padding-left:300px;

margin:auto; }

table th {

font-weight:bold;

padding:10px;

color:#fff;

background-color:#2A72BA;

border-top:1px black solid;

Page 181: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

border-bottom:1px black solid;}

table td {

padding:10px;

border-top:1px black solid;

border-bottom:1px black solid;

text-align:center; }

tr:nth-child(even) {

background-color: #DFEBF8; }

</style>

</head>

<body>

<h3>Penyajian Data MySQL dalam bentuk tabel HTML dengan CSS</h3>

<table>

<tr>

<th>NIM</th>

<th>Nama</th>

<th>Umur</th>

<th>Tempat Lahir</th>

<th>IPK</th>

</tr>

<?php

while ($row=mysql_fetch_array($result))

{

echo "<tr>";

echo "<td>".$row['nim']."</td>";

echo "<td>".$row['nama']."</td>";

echo "<td>".$row['umur']."</td>";

echo "<td>".$row['tempat_lahir']."</td>";

echo "<td>".$row['IPK']."</td>";

Page 182: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

echo "</tr>";

}

?>

</table>

</body>

</html>

Kode diatas terasa panjang, terutama karena dalam tutorial PHP MySQL sebelum ini saya tidak menggunakan HTML dan CSS.

Kode PHP yang saya gunakan dari kode program diatas sama persis dengan yang ada di dalamtutorial PHP MySQL tentang mysql_fetch_array. Akan tetapi kali ini hasilnya diletakkan di dalam tabel HTML.

Koneksi PHP dengan MySQL dan juga fungsi mysql_query() saya letakkan sebelum kode HTML. Hal ini umum digunakan untuk memisahkan PHP dengan HTML.

Kode CSS untuk tabel saya letakkan di bagian <head>. Kode CSS digunakan untuk mengubah border tabel, warna backgroud, padding, dan ukuran font. Yang cukup menarik adalah selector tr:nth-child(even). Selector CSS3 ini digunakan untuk mendapatkan efek “zebra” didalam tabel, atau dikenal dengan “stripped table”. Fitur ini digunakan agar setiap baris tabel bisa dibaca dengan mudah karena memiliki warna yang berbeda.

Di dalam perulangan mysql_fetch_array(), hasil dari tiap iterasi ditempatkan di dalam tag <td>, sehingga langsung menyatu dengan sel tabel.

Anda bisa berkreasi dengan mengubah-ubah kode HTML atau CSS diatas untuk mendapatkan hasil yang sesuai.

Tutorial kali ini mengakhiri sesi tutorial mengenai mysql extension di duniailkom. Dalam tutorial PHP MySQL berikutnya, kita akan mulai membahas tentang mysqli extension. Mari kita lihat mengenai perbedaan mysql dan mysqli extension dalam PHP.

Tutorial PHP MySQL Part 12: Perbedaan mysql dan mysqli extension PHP

Seperti yang pernah kita bahas dalam tutorial Jenis Koneksi PHP MySQL: PDO, mysqli, dan mysql extension, penggunaan mysql extension tidak lagi direkomendasikan (deprecated). Dalam tutorial PHP MySQL kali ini, kita akan membahas perbedaan mysql extension yang “lama” dengan versi barunya, yakni mysqli. Extension mysqli juga hadir dengan 2 jenis “rasa”: procedural dan object oriented.

Perbedaan Antara mysql extension Dengan mysqli extension

Page 183: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sepanjang tutorial PHP MySQL Part 4 sampai 11 di duniailkom ini, kita menggunakan extension mysql dari PHP untuk mengakses MySQL. Fungsi-fungsi yang kita pelajari tersebut (seperti fungsimysql_connect, mysql_query, dan mysql_fetch_array) memang sudah tidak disarankan lagi, tetapi saya tetap membahasnya sebagai dasar bagi kita untuk masuk ke extension yang lebih baru: mysqli danPDO.

Terhitung dari PHP versi 5.5, extension mysql tidak lagi disarankan penggunaannya dan berstatusdeprecated, yang berarti mungkin akan dihapus pada PHP versi berikutnya. Kita disarankan untuk mulai beralih menggunakan mysqli atau PDO. Mari kita bahas tentang mysqli terlebih dahulu.

Mysqli merupakan kependekan dari MySQL Improved Extension. Seperti yang terlihat dari namanya, extension ini merupakan versi perbaikan dan penambahan dari extension mysqlsebelumnya yang umum digunakan. Extension mysqli dibuat untuk mendukung fitur-fitur terbaru dari MySQL Server versi 4.1 keatas.

Secara garis besar, tidak ada perbedaan mencolok antara mysql extension dengan mysqli extension. Nama-nama fungsi didalam mysqli sebagian besar mirip dengan apa yang telah kita pelajari (extension mysql).

Sebagai contoh, untuk membuat koneksi dengan MySQL Server, di dalam mysql kita menggunakan fungsi mysql_connect(), sedangkan di dalam mysqli, kita menggunakan mysqli_connect(). Begitu juga dengan fungsi lain seperti mysql_query() menjadi mysqli_query().

Selain menambah huruf “i” di dalam nama fungsi, argumen-argumen yang dibutuhkan juga hampir mirip. Perbedaannya, jika di dalam extension mysql umumnya kita meletakkan argumen resourcesdi akhir fungsi, maka di dalam mysqli, argumen ini diteletakkan di awal.

Sebagai contoh, di dalam mysql kita menulis:

1 mysql_query("SELECT * FROM mahasiswa_ilkom", $link)

Sedangkan di dalam mysqli penulisannya menjadi:

1 mysqli_query($link, "SELECT * FROM mahasiswa_ilkom")

Namun perbedaan paling mendasar di dalam mysqli adalah: mysqli mendukung cara penulisanobject oriented programming.

Mengenal 2 jenis Mysqli Style: Procedural dan Object Oriented

Agar proses “migrasi” dari mysql ke mysqli tidak terlalu menyusahkan, PHP memberikan 2 alternatif cara penulisan mysqli.

Cara yang pertama adalah menggunakan procedural style. Cara ini mirip dengan extension mysql, dimana kita menggunakan fungsi-fungsi untuk mengakses database MySQL.

Cara kedua adalah dengan object oriented style. Dengan cara ini, kita menggunakan aturan penulisan pemrograman objek untuk berkomunikasi dengan MySQL.

Kedua jenis style pemrograman mysqli ini menggunakan nama fungsi dan method yang kurang lebih sama. Sebagai contoh, di dalam procedural style mysqli, terdapat fungsi mysqli_query(),sedangkan

Page 184: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

dalam OOP style mysqli, kita menggunakan method $mysqli->query(). Kita akan membahas lebih dalam tentang cara penggunaan 2 style ini nantinya.

Di dalam tutorial PHP MySQL kali ini kita telah membahas sekilas mengenai perbedaan extension mysql dengan extension mysqli yang lebih baru. Sesuai dengan instruksi dari manual MySQL, sebaiknya kita tidak menggunakan lagi extension mysql.

Dalam tutorial selanjutnya, kita akan mulai membahas cara penggunaan mysqli extension. Berikutnya dalam tutorial PHP MySQL duniailkom: Cara Menampilkan Data dengan mysqli PHP menggunakan procedural style.

Tutorial PHP MySQL Part 13: Cara Menampilkan Data dengan mysqli PHP (Procedural Style)

Dalam tutorial PHP MySQL kali ini kita akan membahas cara menampilkan data MySQL dengan menggunakan mysqli extension. Karena mysqli memiliki 2 cara penggunaan: procedural danobject-oriented, pada tutorial ini kita akan fokus pada penggunaan procedural style.

Secara garis besar, cara penggunaan mysqli secara procedural (menggunakan fungsi-fungsi) sangat mirip dengan mysql extension. Karena itu jika anda sudah memahami cara pemakaian mysql extension  (yang telah kita bahas), tidak akan kesulitan untuk beralih ke mysqli.

Cara Membuat Koneksi MySQL Dengan Fungsi mysqli_connect()

Untuk membuat koneksi antara PHP dengan MySQL Server, kita menggunakan fungsimysqli_connect(). Fungsi mysqli_connect() ini membutuhkan argumen yang sama dengan fungsimysql_connect(), yakni: alamat host, nama user, dan password user.

Sebagai contoh, untuk masuk kedalam MySQL di localhost menggunakan user root dan dengan password “qwerty”, kita menggunakan kode program sebagai berikut:

<?php

$link = mysqli_connect("localhost", "root", "qwerty");

?>

Sebagai fitur tambahan, fungsi mysqli_connect() memiliki argumen ke-4 yang bersifat opsional. Kita bisa menambahkan nama database yang ingin digunakan. Misalkan kita ingin sewaktu proses koneksi dengan MySQL, langsung memilih database “universitas”, maka contoh penulisannya adalah sebagai berikut:

<?php

$link = mysqli_connect("localhost", "root", "qwerty","universitas");

Page 185: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

?>

Cara Menutup Koneksi Dengan Fungsi mysqli_close()

Walaupun PHP akan menutup koneksi dengan MySQL pada saat halaman selesai diproses, kita bisa menutupnya secara manual menggunakan fungsi mysqli_close(). Fungsi ini membutuhkan 1 argumen, yakni variabel resources hasil pemanggilan fungsi mysqli_connect().

Berikut contoh penggunaan fungsi mysqli_close():

1

2

3

4

5

6

7

8

9

10

11

<?php

// buat koneksi dengan MySQL

$link = mysqli_connect("localhost", "root", "qwerty","universitas");

//.... proses PHP

//.... proses PHP

//.... proses PHP

// tutup koneksi

mysqli_close($link);

?>

Cara Menjalankan Query MySQL Dengan Fungsi mysqli_query()

Cara menjalankan query MySQL dengan mysqli extension juga mirip dengan mysql extension. Di dalam mysqli, kita menggunakan fungsi mysqli_query(). Namun berbeda dengan fungsimysql_query() yang meletakkan variabel resources hasil mysql_connect() sebagai argumen kedua dan bersifat opsional, di dalam fungsi mysqli_query(), variabel ini diletakkan sebagai argumen pertama dan harus ditulis.

Sebagai contoh, dengan menggunakan mysql_extension, kita biasa menulis kode PHP sebagai berikut:

1

2

3

4

5

6

7

<?php

//buat koneksi dengan MySQL

$link=mysql_connect('localhost','root','');

//gunakan database universitas

$result=mysql_query('USE universitas',$link);

Page 186: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

8

9

10

//tampilkan tabel mahasiswa_ilkom

$result=mysql_query('SELECT * FROM mahasiswa_ilkom',$link);

?>

Sedangkan dengan menggunakan mysqli extension, berikut adalah perubahan cara penggunaannya:

1

2

3

4

5

6

7

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect("localhost", "root", "", "universitas");

// jalankan query

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

?>

Perhatikan bahwa kita menggunakan format: mysqli_query($link, “query_MySQL”) untuk menjalankan query MySQL.

Cara Menampilkan Data MySQL Dengan mysqli

Untuk menampilkan hasil query MySQL, mysqli extension memiliki banyak fungsi. Kali ini kita akan membahas 3 fungsi yang paling sering digunakan: mysqli_fetch_row(), mysqli_fetch_array(), danmysqli_fetch_object().

Ketiga fungsi ini hampir sama cara penggunaannya dengan versi mysql extension yang telah kita bahas, yakni: mysql_fetch_row(), mysql_fetch_array(), dan mysql_fetch_object(). Jika anda perhatikan, perbedaan namanya hanya dengan menambah huruf “i”.

Langsung saja kita masuk ke contoh program, untuk memahami cara penggunaan ketiga fungsi ini. Di dalam contoh-contoh berikut saya menggunakan tabel mahasiswa_ilkom di dalam databaseuniversitas. Tabel ini kita buat sewaktu membahas tentang fungsi mysql_fetch_row.

Pertama, mari kita lihat cara menampilkan data MySQL dengan fungsi mysqli_fetch_row():

1

2

3

4

5

6

7

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect("localhost", "root", "", "universitas");

// jalankan query

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

Page 187: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

8

9

10

11

12

13

14

// tampilkan query

while ($row=mysqli_fetch_row($result))

{

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Fungsi mysqli_fetch_row() sama persis cara penggunaanya dengan fungsi mysql_fetch_row(), oleh karena itu saya tidak akan membahasnya lagi. Tapi jika anda ragu, bisa mengunjungi tutorialnya diCara Menampilkan Tabel MySQL dari PHP dengan fungsi mysql_fetch_row.

Berikutnya, kita bahas cara menampilkan data MySQL dengan fungsi mysqli_fetch_array():

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect("localhost", "root", "", "universitas");

// jalankan query

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=mysqli_fetch_array($result,MYSQLI_ASSOC))

{

echo $row['nim']." ".$row['nama']." ".$row['umur']." ";

echo $row['tempat_lahir']." ".$row['IPK'];

echo "<br />";

}

?>

Sedikit perbedaan antara fungsi mysqli_fetch_array() dengan fungsi “kembarannya”mysql_fetch_array(), kali ini string penentu metoda array berada pada argumen kedua. Argumen pertama adalah variabel resources hasil pemanggilan fungsi mysqli_query(). String MYSQLI_ASSOCdigunakan agar key array dapat diakses dengan nama. String lain yang bisa kita

Page 188: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

gunakan adalahMYSQL_NUM dan MYSQL_BOTH. Perbedaan ketiganya telah kita bahas lengkap dalam Tutorial PHP MySQL: Cara Menampilkan Tabel MySQL dari PHP dengan mysql_fetch_array.

Cara ketiga yang akan kita bahas adalah dengan menggunakan fungsi mysqli_fetch_object(). Fungsi ini sama dengan fungsi mysql_fetch_object(), dimana kita mengakses hasil query sebagai objek. Berikut adalah contoh kode PHPnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect("localhost", "root", "", "universitas");

// jalankan query

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=mysqli_fetch_object($result))

{

echo $row->nim." ".$row->nama." ".$row->umur." ";

echo $row->tempat_lahir." ".$row->IPK;

echo "<br />";

}

?>

Jika anda butuh penjelasan mengenai cara penggunaan mysqli_fetch_object(), silahkan kunjungiTutorial PHP MySQL : Cara Menampilkan Tabel dengan objek (mysql_fetch_object).

Dalam tutorial PHP MySQL kali ini kita telah membahas tentang cara penggunaan mysqli untuk menampilkan data dari database MySQL.

Seperti yang pernah kita bahas, mysqli memiliki 2 cara penulisan (2 jenis style). Selain dengan cara procedural seperti dalam tutorial ini, di dalam tutorial selanjutnya kita akan membahas cara penggunaan mysqli dengan object oriented style.

Tutorial PHP MySQL Part 14: Cara Menampilkan Data dengan mysqli PHP (Object Style)

Jika dalam tutorial sebelumnya kita mempelajari mysqli dengan menggunakan fungsi-fungsi atau dikenal dengan procedural style mysqli, dalam tutorial PHP MySQL kali ini kita akan membahas tentang object style mysqli.

Cara Penulisan Object Style mysqli

Page 189: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai cara koneksi yang lebih baru daripada mysql extension, mysqli memiliki 2 jenis style, yakniprocedural style dan object-oriented style. Kecendrungan pemrograman saat ini lebih banyak menggunakan objek. Untuk hal inilah PHP juga menyediakan mysqli dengan “rasa” objek.

Pemrograman berbasis objek lebih banyak disukai karena cenderung rapi dan mudah dikembangkan, terutama jika kita mengerjakan proyek besar yang butuh ribuan baris program. Konsep OOP seperti inheritance, encapsulation dan polymorfism membuat program menjadi lebih tertata.

Langsung saja kita lihat bagaimana cara penggunaan objek di dalam mysqli.

Cara Membuat Koneksi dengan MySQL (mysqli constructor)

Untuk membuat koneksi MySQL dengan PHP menggunakan mysqli object style, caranya adalah dengan menggunakan mysqli constructor. Constructor mysqli adalah sejenis fungsi yang digunakan untuk membuat object baru dari class mysqli.

Argumen di dalam construktor mysqli ini sama persis dengan argumen fungsi mysqli_connect(), yakni lokasi komputer, nama user, dan password user.

Berikut adalah cara membuat koneksi mysqli di localhost untuk user “root” dengan password “qwerty”:

1

2

3

<?php

$link = new mysqli("localhost", "root", "qwerty");

?>

Pada kode diatas, saya membuat objek $link dari class mysqli. Di dalam OOP, keyword newdigunakan untuk membuat objek baru. Dengan objek $link hasil mysqli constructor  inilah proses query MySQL nantinya kita jalankan.

Page 190: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sama seperti fungsi mysqli_connect(), constructor mysqli juga memiliki argumen tambahan, yakni nama database yang ingin digunakan. Jika kita ingin langsung mengakses database “universitas”, maka kode programnya menjadi:

1

2

3

<?php

$link = new mysqli("localhost", "root", "qwerty", "universitas");

?>

Cara Menutup Koneksi MySQL Dengan Method mysqli::close()

Walaupun PHP akan lansung menutup koneksi ke MySQL jika halaman telah selesai di proses, namun kita juga bisa menutupnya secara manual menggunakan method close() dari objek mysqli,atau biasa ditulis sebagai mysqli::close(). Berikut contoh penggunaannya:

1

2

3

4

5

6

7

8

9

10

11

<?php

// buat koneksi dengan MySQL

$link = new mysqli("localhost", "root", "qwerty","universitas");

//.... Proses PHP

//.... Proses PHP

//.... Proses PHP

// tutup koneksi

$link->close();

?>

Cara Menjalankan Query MySQL Dengan Method mysqli::query()

Jika di dalam penulisan procedural kita menggunakan fungsi mysqli_query() untuk menjalankan query MySQL, maka di dalam objek style, kita mengaksesnya menggunakan methodmysqli::query().

Agar lebih mudah dipahami, langsung saja kita masuk kedalam contoh kode program:

1

2

3

4

5

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = new mysqli("localhost", "root", "qwerty", "universitas);

// jalankan query

Page 191: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

6

7

$result = $link->query("SELECT * FROM mahasiswa_ilkom");

?>

Perhatikan bahwa di dalam proses pemanggilan method query(), kita membutuhkan 1 argumen, yakni query MySQL yang akan dijalankan.

Cara Menampilkan Data MySQL Dengan mysqli object style

Untuk menampilkan hasil query MySQL, mysqli object memiliki banyak method. Kali ini kita akan membahas 3 cara yang paling sering digunakan, yakni method fetch_row(), fetch_array() danfetch_object(). Cara penggunaan ketiga method ini hampir sama dengan padanan fungsinya di procedural style, yakni dengan fungsi mysqli_fetch_row(), mysqli_fetch_array(), danmysqli_fetch_object().

Agar lebih jelas, langsung saja kita masuk ke dalam contoh kode program untuk menampilkan seluruh isi data dari tabel mahasiswa_ilkom.

Pembahasan pertama, yakni cara menampilkan data mysqli dengan method fetch_row(). Berikut adalah contoh kode programnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = new mysqli("localhost", "root", "qwerty", "universitas");

// jalankan query

$result = $link->query("SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row= $result->fetch_row())

{

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Dalam contoh diatas, saya mengunakan method fetch_row() dari objek $result yang merupakan objek hasil pemanggilan method query(). Method fetch_row() ini tidak memerlukan argumen apapun, sehingga kita memanggilnya dengan cara $result->fetch_row().

Page 192: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara kedua untuk menampilkan data mysqli adalah dengan method fetch_array(). Berikut contoh kode programnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = new mysqli("localhost", "root", "qwerty", "universitas");

// jalankan query

$result = $link->query("SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=$result->fetch_array(MYSQLI_ASSOC))

{

echo $row['nim']." ".$row['nama']." ".$row['umur']." ";

echo $row['tempat_lahir']." ".$row['IPK'];

echo "<br />";

}

?>

Sama seperti method fetch_row(), method fetch_array() juga diakses dari objek $result yang merupakan hasil pemanggilan query.

Method fetch_array() membutuhkan 1 argumen, berupa string yang berisi bagaimana cara array hasil method akan diakases. String ini bisa dipilih dari salah satu nilai: MYSQLI_NUM, MYSQLI_ASSOC atau MYSQLI_BOTH. Lebih lengkap tentang perbedaan ketiga nya telah kita bahas dalam tutorial mengenai fungsi mysql_fetch_array().

Cara ketiga yang akan kita bahas untuk menampilkan data mysqli, adalah dengan methodfetch_object(). Berikut contoh pengunaanya:

1

2

3

4

5

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = new mysqli("localhost", "root", "qwerty", "universitas");

// jalankan query

Page 193: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

6

7

8

9

10

11

12

13

14

15

$result = $link->query("SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=$result->fetch_object())

{

echo $row->nim." ".$row->nama." ".$row->umur." ";

echo $row->tempat_lahir." ".$row->IPK;

echo "<br />";

}

?>

Cara penggunaan method fetch_object() hampir sama dengan method-method sebelumnya, yakni di akses dari objek $result hasil menjalankan query MySQL.

Dalam tutorial PHP MySQL kali ini kita telah membahas cara penggunaan mysqli extension yang berbasis object. Tutorial mysqli ini dan juga tutorial sebelumnya tentang mysqli procedural saya buat sesingkat mungkin tanpa menggunakan prosedur untuk penanganan kesalahan. Misalnya, bagaimana mengecek apakah koneksi dengan MySQL sudah terhubung atau belum.

Dalam tutorial berikutnya, akan kita bahas secara mendalam mengenai beberapa fungsi dan method mysqli yang digunakan untuk penanganan kesalahan.

Tutorial PHP MySQL Part 15: Cara Menampilkan Pesan Kesalahan (Error) mysqli Extension

Jika dalam 2 tutorial sebelumnya kita membahas tentang cara menampilkan data MySQL menggunakan procedural style mysqli dan object style mysqli, dalam tutorial PHP MySQL kali ini kita akan mempelajari fungsi dan property yang bisa digunakan untuk menampilkan pesan kesalahan (error) di dalam mysqli.

Pesan kesalahan atau error yang dimaksud dalam tutorial kali ini adalah pesan error dari MySQL yang bisa ditampilkan apabila terjadi kesalahan koneksi atau kesalahan penulisan query MySQL. Pesan error dari PHP kadang tidak mencukupi, atau tidak bisa ditampilkan langsung kepada pengguna.

Karena itu, kita perlu sebuah cara untuk mengetahui apa yang terjadi. Misalkan apakah MySQL Server sudah berjalan, atau apakah kita salah menuliskan password user, database belum ada, salah penulisan query, dll. Dalam tutorial ini kita akan membahasnya dengan lebih dalam.

Page 194: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Menampilkan Pesan Kesalahan (Error) Procedural Style mysqli

Untuk menampilkan pesan kesalahan dalam procedural style mysqli, kita akan menggunakan fungsi-fungsi. Beberapa diantaranya adalah fungsi mysqli_connect_errno(), mysqli_connect_ error (), mysqli_errno(), dan mysqli_error(). Agar mudah dipahami, kita akan langsung membahasnya menggunakan contoh kode program.

Pertama kali, saya akan mencoba membuat contoh kode program untuk menampilkan kesalahan pada saat proses koneksi dengan MySQL Server. Berikut adalah kode program PHPnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// cek koneksi

if (!$link) {

die('Koneksi Error : '.mysqli_connect_errno()

.' - '.mysqli_connect_error());

}

// koneksi berhasil

echo 'Koneksi Berhasil : '.mysqli_get_host_info($link)."<br />";

// tutup koneksi

mysqli_close($link);

?>

Pada kode program diatas, setelah proses koneksi dengan fungsi mysqli_connect(), saya memeriksa hasil koneksi dengan kondisi if(!$link). Fungsi mysqli_connect() akan mengembalikan link koneksi apabila koneksi ke MySQL sukses dilakukan. Tetapi jika koneksi gagal, fungsi ini akan mengembalikan nilai FALSE. Nilai kembalian inilah yang bisa kita manfaatkan untuk memeriksa apakah koneksi berhasil atau gagal. Karena kondisi IF baru akan berjalan jika kondisi bernilai TRUE, maka saya menambahkan tanda ! untuk membalik nilai FALSE menjadi TRUE. Kondisi if(!$link) baru akan dieksekusi ketika fungsi mysqli_connect() mengalami kegagalan.

Jika kondisi if(!link) menjadi TRUE (terdapat error), maka fungsi die() akan menghentikan proses PHP yang sedang berjalan. Selanjutnya, saya menampilkan pesan kesalahan menggunakan fungsimysqli_connect_errno() dan mysqli_connect_ error(). Fungsi mysqli_connect_errno() akan

Page 195: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

menampilkan nomor kode error, sedangkan fungsi mysqli_connect_error() akan menampilkanpesan error.)

Sebagai contoh, jika saya sengaja mengubah username menjadi “teman_root” (yang memang tidak ada di MySQL), maka kita bisa melihat error yang terjadi:

1

2

Koneksi Error : 1044

- Access denied for user ''@'localhost' to database 'universitas'.

Atau jika database saya ganti jadi “universitas_tetangga”:

1 Koneksi Error : 1049 - Unknown database 'universitas_tetangga'.

Pesan error yang dihasilkan ini selanjutnya bisa dikirim ke user agar bisa memperbaiki kesalahan tersebut.

Apabila koneksi berhasil, fungsi mysqli_get_host_info() bisa digunakan untuk menampilkan keterangan mengenai jenis koneksi apa yang saat ini diakses, apakah dari localhost atau alamat IP.

Jika kita menggunakan fungsi mysqli_connect(‘localhost’, ‘root’, ”, ‘universitas’), maka hasil pemanggilan fungsi mysqli_get_host_info() adalah:

1 Koneksi berhasil : localhost via TCP/IP

Jika saya mengubahnya menjadi mysqli_connect(‘127.0.0.1’, ‘root’, ”, ‘universitas’), hasilnya menjadi:

1 Koneksi berhasil : 127.0.0.1 via TCP/IP

Selanjutnya, bagaimana cara menampilkan pesan error yang terjadi pada saat query di jalankan? Kita bisa menggunakan fungsi mysqli_errno() dan mysqli_error(). Berikut adalah contoh cara penggunaannya:

1

2

3

4

5

6

7

8

9

10

11

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// cek koneksi

if (!$link) {

die('Koneksi Error : '.mysqli_connect_errno().

' - '.mysqli_connect_error());

}

// koneksi berhasil

Page 196: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

echo 'Koneksi Berhasil : '.mysqli_get_host_info($link)."<br />";

// jalankan query

$result = mysqli_query($link,"SELECT * FROM mahasiswa_ilkom");

// cek hasil query

if (!$result) {

die('Query Error : '.mysqli_errno($link).

' - '.mysqli_error($link));

}

// tampilkan query

while ($row=mysqli_fetch_row($result)) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup koneksi

mysqli_close($link);

?>

Dalam kode program diatas saya melakukan pengecekan apakah query berjalan sukses atau tidak dengan kondisi if (!$result). Jika di dalam query terdapat kesalahan, maka fungsi die() akan dijalankan. Sama seperti fungsi mysqli_connect(), fungsi mysqli_query() juga akan mengembalikan nilai FALSE jika query gagal dijalankan.

Fungsi mysqli_errno() digunakan untuk menampilkan nomor kode error, dan fungsimysqli_error() digunakan untuk menampilkan pesan error yang terjadi.

Sebagai contoh, jika saya mengganti query menjadi SELECT * FROM mahasiswa_mipa, maka hasilnya adalah sebagai berikut:

1 Query Error : 1146 - Table 'universitas.mahasiswa_mipa' doesn't exist

Page 197: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dimana dalam database universitas yang saya gunakan, memang tidak terdapat tabelmahasiswa_mipa. Pesan kesalahan ini sangat berguna terutama jika kita membuat program dimana user bisa menginput query sendiri.

Dalam 2 contoh kode program diatas, saya menampilkan pesan kesalahan menggunakan mysqli dengan procedural style. Bagaimana dengan object style mysqli? Mari kita lihat cara penulisannya.

Cara Menampilkan Pesan Kesalahan (Error) Object Style mysqli

Untuk menampilkan pesan kesalahan dengan menggunakan object style mysqli, kita tidak lagi menggunakan fungsi, tetapi dengan memeriksa property error dari objek mysqli. Property yang digunakan untuk menampilkan pesan kesalahan ini memiliki nama yang mirip dengan fungsi yang digunakan pada procedural style mysqli.

Berikut adalah contoh kode program untuk menampilkan kesalahan MySQL menggunakan mysqli dengan object style:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$mysqli = new mysqli("localhost", "root", "","universitas");

// cek koneksi

if ($mysqli->connect_errno) {

die('Koneksi Error: '.$mysqli->connect_errno.

' - '. $mysqli->connect_error);

}

// koneksi berhasil

echo 'Koneksi Berhasil : '.$mysqli->host_info."<br />";

// jalankan query

$result = $mysqli->query("SELECT * FROM mahasiswa_ilkom");

// cek hasil query

if ($mysqli->errno) {

Page 198: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

19

20

21

22

23

24

25

26

27

28

29

die('Query Error : '.$mysqli->errno.' - '.$mysqli->error);

}

// tampilkan query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup koneksi

$mysqli->close();

?>

Perhatikan bahwa untuk mengecek apakah suatu koneksi dan proses query berhasil atau tidak, kita bisa mengujinya dengan mengecek “isi” dari property $mysqli->connect_errno dan $mysqli->errno. Kedua property ini tidak akan berisi apa-apa jika tidak ada kesalahan, dan baru akan berisi nilai jika terdapat error pada koneksi MySQL atau query MySQL.

Dengan kata lain, untuk memeriksa apakah pada saat koneksi MySQL terjadi kesalahan, kita bisa mengujinya dengan kondisi if ($mysqli->connect_errno). Sedangkan untuk mengecek query, bisa menggunakan if ($mysqli->errno).

Anda bisa menguji kode diatas dengan melakukan “kesalahan”, dan melihat apakah kode program diatas bisa menangkap error yang terjadi.

Dalam tutorial belajar PHP MySQL kali ini kita telah membahas cara menangani dan menampilkan pesan kesalahan jika terjadi error pada saat koneksi MySQL maupun pada saat query dijalankan. Pesan error ini akan berguna jika kita membuat program dimana user bisa menginput query sendiri. Sehingga jika terjadi salah penulisan query, kita bisa menampilkan pesan yang sesuai.

Page 199: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial PHP MySQL berikutnya kita akan membahas tentang Pengertian dan Cara Penggunaan Prepared Statements di dalam mysqli.

Tutorial PHP MySQL Part 16: Pengertian dan Cara Penggunaan Prepared Statements mysqli

Salah satu fitur baru yang tersedia di dalam mysqli extension yang tidak ada pada mysql extension adalah dukungan untuk prepared statements MySQL. Dalam tutorial belajar PHP MySQL kali ini kita akan membahas tentang pengertian prepared statements dan cara penggunaan prepared statements dengan mysqli.

PHP mendukung fitur prepared statements pada mysqli extension dan PDO. Fitur ini juga umum digunakan di dalam pemrograman PHP lanjutan seperti framework PHP. Karena hal ini, penting juga bagi kita untuk memahami cara penggunaannya.

Pengertian Prepared Statements MySQL

Prepared statements adalah sebuah fitur yang disediakan MySQL (dan juga beberapa aplikasi database lainnya), dimana kita bisa mengirim query (perintah) secara terpisah antara query inti dengan “data” dari query. Tujuannya, agar query menjadi lebih aman dan cepat (jika perintah yang sama akan digunakan beberapa kali).

Sebagai perbandingan, untuk menampilkan data MySQL menggunakan fungsi mysqli_query(), kita membuat seluruh query dalam 1 string dan langsung mengirimkannya ke MySQL Server, sebagai berikut:

1

2

$result=mysqli_query("SELECT * FROM mahasiswa_ilkom WHERE

nama='Neil Situmorang'");

Dengan prepared statements, query tersebut akan dipisah antara perintah query: “SELECT…” dengan ‘data’-nya yakni “Neil Situmorang”.

Proses Pembuatan Prepared Statement MySQL

Proses pembuatan prepared statements membutuhkan 3 langkah: Prepared, Bind, dan Execute.

Pada proses pertama: prepared, kita mempersiapkan query yang akan dijalankan, tetapi tanpa ‘data’. Bagian dimana ‘data’ berada digantikan dengan tanda tanya (?), seperti berikut ini:

1 "SELECT * FROM mahasiswa_ilkom WHERE nama=?"

atau

1 "INSERT INTO mahasiswa_ilkom VALUES (?, ?, ?, ?, ?)"

Secara teknis, query diatas akan langsung di kirim PHP ke MySQL Server. Di dalam MySQL, perintah tersebut disimpan untuk sementara menunggu proses berikutnya: bind.

Proses kedua adalah bind. Dalam tahap ini, kita akan mengirimkan data yang telah ditandai dalam proses prepare. Data disini adalah bagian yang diberi tanda “?”. Jika di dalam proses prepare hanya butuh 1 data, kita mengirimkan 1 data. Tetapi jika kita butuh 5 data, kita mengirimkan 5 data (sesuai dengan query yang ditulis dalam tahap prepare).

Page 200: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah proses prepare dan bind, berikutnya adalah menjalankan prepared statement (execute).

Kenapa Harus Menggunakan Prepared Statements?

Keuntungan terbesar dari penggunaan prepared statements adalah dalam hal keamanan. Untuk aplikasi ‘nyata’, bagian “data” dari suatu query biasanya berasal dari user. Seorang user yang jahil bisa saja menambahkan perintah SQL pada kotak inputan user name. Metoda ini dikenal juga dengan SQL Injection.

Dengan memisahkan perintah query dengan datanya, kita bisa mencegah penyisipan query.

Cara Penggunaan Prepared Statements mysqli

Pembahasan mengenai prepared statements cukup panjang dan akan saya bahas secara bertahap dalam 2 tutorial berikutnya. Sebagai gambaran, berikut adalah contoh kode program untuk menampilkan data mahasiswa dari tabel mahasiswa_ilkom menggunakan prepared statementmysqli (procedural style). Penjelasan mengenai kode program ini akan kita bahas lengkap pada tutorial berikutnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// cek koneksi

if (!$link) {

die('Koneksi Error : '.mysqli_connect_errno().

' - '.mysqli_connect_error());

}

// buat prepared statements

$stmt = mysqli_prepare($link, "SELECT * FROM mahasiswa_ilkom WHERE nama=?");

// siapkan "data" query

$nama_mhs="Neil Situmorang";

Page 201: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// hubungkan "data" dengan prepared statements: bind

mysqli_stmt_bind_param($stmt, "s", $nama_mhs);

// jalankan query: execute

mysqli_stmt_execute($stmt);

// cek hasil query

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).

' - '.mysqli_error($link));

}

// ambil hasil query

$result=mysqli_stmt_get_result($stmt);

// tampilkan hasil query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

mysqli_stmt_close($stmt);

// tutup koneksi

mysqli_close($link);

?>

Jika kode program diatas dijalankan, hasilnya adalah sebagai berikut:

1 099145055 Neil Situmorang 22 Medan 1.90

Page 202: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam program diatas, saya menggunakan prepared statements untuk menampilkan datamahasiswa_ilkom dengan nama = “Neil Situmorang”. Saya akan membahas kode program diatas secara detail dalam tutorial berikutnya: Cara Menampilkan Data MySQL Menggunakan Prepared Statements mysqli.

Tutorial PHP MySQL Part 17: Cara Menampilkan Data dengan mysqli Prepared Statements

Dalam tutorial belajar PHP MySQL kali ini kita akan membahas tentang penggunaan prepared statements, yakni cara menampilkan data MySQL menggunakan mysqli prepared statements.

Cara Menampilkan Data MySQL Menggunakan Prepared Statements mysqli

Setelah membahas teori tentang pengertian prepared statements pada tutorial sebelumnya, kita akan langsung praktek mengenai cara penggunaan prepared statements untuk menampilkan sebuah data dari database MySQL.

Kali ini saya akan mencoba menampilkan tabel mahasiswa_ilkom dengan prepared statements. Tabel ini kita buat pada tutorial PHP MySQL: Cara Menampilkan Tabel MySQL dari PHP (mysql_fetch_row).

Seperti yang telah dibahas, untuk membuat prepared statements, kita membutuhkan 3 langkah:prepared, bind, dan excecute.

Langkah pertama: prepared

Sebagai contoh, saya ingin menampilkan seluruh kolom dari tabel mahasiswa_ilkom dimana nama mahasiswanya adalah “Neil Situmorang”. Sesuai dengan fungsinya, di dalam proses prepared ini kita hanya butuh mempersiapkan query MySQL, tanpa ada data.

Untuk proses prepared, mysqli PHP menyediakan fungsi mysqli_prepare(). Fungsi ini membutuhkan 2 argumen, yakni variabel hasil pemanggilan fungsi mysqli_connect(), dan prepared query yang akan dijalankan. Berikut adalah contoh penulisannya:

1

2

3

4

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

Page 203: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

5

6

7

// buat prepared statements

$stmt = mysqli_prepare($link, "SELECT * FROM mahasiswa_ilkom WHERE nama=?");

?>

Hasil pemanggilan fungsi mysqli_prepare() selanjutnya disimpan kedalam variabel $stmt. Variabel ini akan kita gunakan di dalam proses bind, execute dan dalam proses menampilkan data. Anda bebas jika ingin menukar variabel ini dengan nama lain.

Langkah kedua: bind

Pada proses bind, kita akan mengirimkan data kepada MySQL. Data yang akan dikirim adalah untuk menggantikan tanda “?” yang sebelumnya dibuat pada proses prepared. Di dalam mysqli PHP, proses bind dilakukan menggunakan fungsi mysqli_stmt_bind_param(). Fungsi ini membutuhkan setidaknya 3 buah argumen, berikut contohnya:

1

2

3

4

5

6

7

<?php

// siapkan "data" query

$nama_mhs="Neil Situmorang";

// hubungkan "data" dengan prepared statements

mysqli_stmt_bind_param($stmt, "s", $nama_mhs);

?>

Argumen pertama dari fungsi mysqli_stmt_bind_param() adalah variabel hasil pemanggilan fungsimysqli_prepare(), dalam contoh kita adalah varabel $stmt.

Argumen kedua adalah string yang menunjukkan jenis tipe data argumen ketiga, yakni data yang akan diinput kedalam query (kita akan membahas isi argumen kedua ini sesaat lagi).

Argumen ketiga adalah data yang akan menggantikan tanda “?” dari query, dalam contoh kita adalah “Neil Situmorang”. Tetapi karena fungsi mysqli_stmt_bind_param() membutuhkan data dalam bentuk variabel, saya harus menyimpannya terlebih dahulu ke dalam variabel $nama_mhs.

Argumen kedua dari fungsi mysqli_stmt_bind_param() membutuhkan pembahasan tersendiri. Argumen ini berisi data string yang menunjukkan jenis tipe data argumen ketiga. PHP menyediakan 4 jenis tipe data:

i = variabel bertipe integer

Page 204: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

d = variabel bertipe double

s = variabel bertipe string

b = variabel bertipe blob (binary)

Karena di dalam contoh saya mengunakan variabel $nama_mhs yang bertipe string, maka di dalam argumen kedua ditulis: “s”. Tetapi apabila saya mengganti variabel ketiga menjadi umur yang bertipe integer, maka argumen kedua ini menjadi “i”.

Langkah ketiga: execute

Setelah proses bind selesai, langkah berikutnya adalah menjalankan query dengan menggunakan fungsi mysqli_stmt_execute(). Fungsi ini membutuhkan 1 buah argumen, yakni variabel hasil pemanggilan fungsi mysqli_prepare():

1

2

3

<?php

mysqli_stmt_execute($stmt);

?>

Fungsi mysqli_stmt_execute() menginstruksikan kepada MySQL untuk segera menjalankan perintah prepared statement yang telah dibuat. Sampai disini proses menjalankan perintah query telah terkirim ke MySQL. Selanjutnya, kita akan menampilkan data hasil query.

Menampilkan data hasil query

Untuk menampilkan hasil query, kita mengambil data MySQL dengan fungsimysqli_stmt_get_result(). Fungsi ini membutuhkan 1 argumen berupa variabel hasil fungsimysqli_prepare(). Fungsi ini juga mengembalikan nilai bertipe resources yang selanjutnya bisa digunakan untuk menampilkan data.

1

2

3

4

<?php

// ambil hasil query

$result=mysqli_stmt_get_result($stmt);

?>

Selanjutnya, untuk menampilkan data kita bisa menggunakan cara biasa menggunakanmysql_fetch_row() atau mysql_fetch_array():

1

2

3

4

5

6

<?php

// tampilkan hasil query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

Page 205: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

7 ?>

Langkah terakhir yang bersifat opsional (pilihan) adalah menutup proses prepared statement dengan fungsi mysqli_stmt_close(). Tetapi sama dengan fungsi mysqli_close(), jika kita tidak menulisnya, PHP secara otomatis akan menutup koneksi ke MySQL saat halaman selesai di proses.

Dengan menggabungkan seluruh fungsi-fungsi prepared statements yang telah kita bahas, berikut adalah contoh kode programnya secara lengkap:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// cek koneksi

if (!$link) {

die('Koneksi Error : '.mysqli_connect_errno().

' - '.mysqli_connect_error());

}

// buat prepared statements

$stmt = mysqli_prepare($link, "SELECT * FROM mahasiswa_ilkom WHERE nama=?");

// cek query

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).

' - '.mysqli_error($link));

}

// siapkan "data" query

$nama_mhs="Neil Situmorang";

// hubungkan "data" dengan prepared statements

Page 206: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

mysqli_stmt_bind_param($stmt, "s", $nama_mhs);

// jalankan query

mysqli_stmt_execute($stmt);

// ambil hasil query

$result=mysqli_stmt_get_result($stmt);

// tampilkan hasil query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

mysqli_stmt_close($stmt);

// tutup koneksi

mysqli_close($link);

?>

Jika kode program diatas dijalankan, hasilnya adalah sebagai berikut:

1 099145055 Neil Situmorang 22 Medan 1.90

Selain fungsi-fungsi yang kita bahas pada tutorial kali ini, saya juga menambahkan fungsi untuk memeriksa kesalahan seperti yang pernah kita bahas pada tutorial cara menampilkan pesan kesalahan (error) mysqli, yakni fungsi mysqli_errno dan mysqli_error().

Prepared Statement mysqli Object Style

Sebagai alternatif, berikut adalah cara penulisan prepared statement menggunakan object style mysqli. Method yang digunakan relatif hampir sama dengan procedural style yang kita bahas diatas.

1 <?php

Page 207: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// buat koneksi dengan MySQL, gunakan database: universitas

$mysqli = new mysqli("localhost", "root", "","universitas");

// cek koneksi

if ($mysqli->connect_errno) {

die('Koneksi gagal: ' .$mysqli->connect_errno.

' - '.$mysqli->connect_error);

}

// buat prepared statements

$stmt = $mysqli->prepare("SELECT * FROM mahasiswa_ilkom WHERE nama=?");

// cek query

if (!$stmt) {

die('Query Error : '.$mysqli->errno.

' - '.$mysqli->error);

}

// siapkan "data" query

$nama_mhs="Neil Situmorang";

// hubungkan "data" dengan prepared statements

$stmt->bind_param("s", $nama_mhs);

// jalankan query

$stmt->execute();

// hubungkan hasil query

Page 208: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

30

31

32

33

34

35

36

37

38

39

40

41

42

43

$result = $stmt->get_result();

// tampilkan query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

$stmt->close();

// tutup koneksi

$mysqli->close();

?>

Dalam tutorial PHP MySQL kali ini kita telah membahas tentang cara penggunaan prepared statements MySQL untuk menampilkan data. Pada tutorial berikutnya kita akan bahas cara menggunakan mysqli prepared statement untuk proses input data kedalam database MySQL.

Tutorial PHP MySQL Part 18: Cara Menginput Data dengan mysqli Prepared Statements

Jika dalam tutorial PHP MySQL sebelumnya kita membahas tentang cara menampilkan data dengan mysqli prepared statements, dalam tutorial kali ini kita akan mempelajari cara menginput data menggunakan mysqli prepared statements.

Cara Menginput Data dengan mysqli Prepared Statements

Perbedaan antara cara menginput data dan menampilkan data menggunakan prepared statements terletak pada cara penanganan query. Apabila dalam menampilkan data kita menggunakan perintah SELECT, maka untuk menginput data kita menggunakan query INSERT.

Fitur keamanan yang diberikan oleh prepared statements membuatnya cocok digunakan untuk perintah yang akan mengubah isi tabel seperti perintah INSERT atau UPDATE. Selain itu, penggunaan prepared statement untuk proses input data yang berulang juga akan mempercepat proses eksekusi.

Dalam contoh kasus kita kali ini, saya akan menambahkan 1 buah data tambahan kedalam tabelmahasiswa_ilkom. Saya juga tidak akan membahas secara mendalam fungsi-fungsi prepared statement yang digunakan, karena kita telah membahasnya pada tutorial sebelumnya.

Page 209: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Proses pertama: prepared

Untuk menginput data kedalam tabel mahasiswa_ilkom, kita akan menggunakan query INSERT…VALUES (Jika anda ingin mempelajari cara-cara menginput data kedalam MySQL, silahkan kunjungitutorial MySQL: Cara menambahkan data kedalam tabel).

Berikut adalah fungsi mysqli_prepare() untuk proses penambahan data:

1

2

3

4

5

6

7

8

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// buat prepared statements

$stmt = mysqli_prepare($link, "INSERT INTO mahasiswa_ilkom

VALUES (?, ?, ?, ?, ?)");

?>

Perhatikan cara penulisan query INSERT diatas. Karena fungsi prepared statements yang memisahkan query dengan data, maka di kolom VALUES, kita tidak langsung menuliskan data yang akan ditambahkan, tetapi menggunakan tanda “?” sebanyak 5 kali untuk penanda data yang akan diinput. Kelima data ini selanjutnya akan ditambahkan pada saat proses bind.

Proses kedua: bind

Proses pengiriman data (bind) dilakukan dengan fungsi mysqli_stmt_bind_param(). Karena query INSERT kita membutuhkan 5 variabel, maka fungsi mysqli_stmt_bind_param() juga harus menyertakan kelima variabel ini (untuk mengganti karakter (?, ?, ?, ?, ?)).

Sebelumnya, kita harus menuliskan masing-masing isian ke dalam variabel terpisah, lalu kemudian baru diinput kedalam fungsi mysqli_stmt_bind_param(). Berikut adalah contoh kode program dimana saya akan men-bind data ke dalam prepared statement:

1

2

3

4

5

6

7

8

<?php

// hubungkan "data" dengan prepared statements

mysqli_stmt_bind_param($stmt, "ssisd",

$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);

// siapkan "data" query

$nim_mhs="089023020";

$nama_mhs="Naira Alika";

Page 210: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

9

10

11

12

$umur_mhs=20;

$tempat_lahir_mhs="Padang";

$ipk_mhs=3.9;

?>

Dalam contoh diatas, fungsi mysqli_stmt_bind_param() memiliki 7 argumen. Argumen pertama adalah variabel $stmt hasil fungsi mysqli_prepare(), argumen kedua adalah string yang menunjukkan 5 tipe data. Argumen ke-3 sampai ke-7 adalah variabel yang akan berisi data yang ingin diinput.

Untuk argumen kedua saya menulis “ssisd”, yang merupakan singkatan dari “string string stringinteger string decimal”. String ini akan berpasangan dengan variabel inputan ke-3 sampai ke-7:

$nim_mhs = “089023020” (string).

$nama_mhs = “Naira Alika” (string).

$umur_mhs = 20 (integer).

$tempat_lahir_mhs = Padang (string).

$ipk_mhs = 3.9 (decimal / float).

Setelah penulisan fungsi mysqli_stmt_bind_param(), saya kemudian membuat data sample mahasiswa dengan nama “Naira Alika”. Perhatikan bahwa isi data ini diinput ke dalam variabel yang sama dengan yang digunakan pada fungsi mysqli_stmt_bind_param() untuk argumen ke-3 s/d ke-7.

Data-data inilah yang nantinya di-bind dengan query asal, sehingga query kita akan menjadi:

1

2

INSERT INTO mahasiswa_ilkom VALUES

("089023020", "Naira Alika", 20, "Padang", 3.9)

Proses ketiga: execute

Setelah query dan data selesai diinput, kita tinggal menjalankan query dengan fungsimysqli_stmt_execute():

1

2

3

4

<?php

// jalankan query: execute

mysqli_stmt_execute($stmt);

?>

Memeriksa Hasil Query

Untuk memeriksa apakah hasil query INSERT yang dijalankan berhasil atau tidak, bisa dilakukan dengan memeriksa variabel $stmt dan fungsi mysqli_stmt_affected_rows(), seperti contoh berikut:

1 <?php

Page 211: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

4

5

6

7

8

9

// cek hasil query

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).' - '.mysqli_error($link));

}

else {

echo "Penambahan ".mysqli_stmt_affected_rows($stmt)." data berhasil<br />";

}

?>

Kondisi if (!$stmt) akan menjadi TRUE ketika query gagal, sehingga fungsi die() akan menghentikan proses dan menampilkan error yang terjadi. Tetapi jika query sukses, bagian else yang akan dijalankan.

Fungsi mysqli_stmt_affected_rows() mirip dengan fungsi mysql_ affected_rows() yang pernah kita bahas, dan akan menampilkan berapa jumlah baris yang diupdate. Karena pada contoh kali ini kita hanya menambahkan 1 buah data, maka hasilnya adalah: 1.

Agar lebih yakin, saya kemudian akan menampilkan seluruh tabel mahasiswa_ilkom dengan kode berikut:

1

2

3

4

5

6

7

8

9

10

<?php

// jalankan query untuk memeriksa hasil inputan

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=mysqli_fetch_row($result)) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

?>

Kode diatas sudah sering kita gunakan, sehingga saya tidak akan membahasnya lagi.

Terakhir adalah fungsi opsional untuk memutus koneksi dengan MySQL Server:

1

2

<?php

// tutup statements

Page 212: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

6

7

mysqli_stmt_close($stmt);

// tutup koneksi

mysqli_close($link);

?>

Dengan menggabungkan seluruh pembahasan kita diatas, berikut adalah contoh kode program PHP lengkap mengenai cara menginput data MySQL menggunakan mysqli prepared statement:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// buat prepared statements

$stmt = mysqli_prepare($link, "INSERT INTO mahasiswa_ilkom

VALUES (?, ?, ?, ?, ?)");

// hubungkan "data" dengan prepared statements

mysqli_stmt_bind_param($stmt, "ssisd",

$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);

// siapkan "data" query

$nim_mhs="089023020";

$nama_mhs="Naira Alika";

$umur_mhs=20;

$tempat_lahir_mhs="Padang";

$ipk_mhs=3.9;

// jalankan query

mysqli_stmt_execute($stmt);

Page 213: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

// cek hasil query

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).' - '.mysqli_error($link));

}

else {

echo "Penambahan ".mysqli_stmt_affected_rows($stmt). " data berhasil<br />";

}

// jalankan query untuk memeriksa hasil inputan

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=mysqli_fetch_row($result)) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

mysqli_stmt_close($stmt);

// tutup koneksi

mysqli_close($link);

?>

Apabila dijalankan, maka hasil yang didapat adalah sebagai berikut:

1

2

3

4

Penambahan 1 data berhasil

089023013 Alex Supriyanto 23 Surabaya 2.90

089023020 Naira Alika 20 Padang 3.90

089045001 Andi Suryo 23 Jakarta 2.70

Page 214: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

5

6

7

099145055 Neil Situmorang 22 Medan 1.90

109223041 Rani Sabrina 21 Padang 3.70

109245021 Santi Syanum 21 Malang 3.20

Bisa terlihat bahwa data mahasiswa baru: “Naira Alika” telah masuk kedalam tabelmahasiswa_ilkom.

Cara Menginput Multiple Data dengan mysqli Prepared Statements

Masih berkaitan dengan pembahasan kita, saya akan memodifikasi sedikit kode program untuk menampilkan cara menginput banyak data (multiple data) menggunakan mysqli prepared statement:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect('localhost', 'root', '', 'universitas');

// buat prepared statements

$stmt = mysqli_prepare($link, "INSERT INTO mahasiswa_ilkom

VALUES (?, ?, ?, ?, ?)");

// hubungkan "data" dengan prepared statements

mysqli_stmt_bind_param($stmt, "ssisd",

$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);

// siapkan "data" query 1

$nim_mhs="089023023";

$nama_mhs="Alika Shanum";

$umur_mhs=21;

$tempat_lahir_mhs="Medan";

$ipk_mhs=3.8;

// jalankan query 1

mysqli_stmt_execute($stmt);

Page 215: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// cek hasil query 1

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).' - '.mysqli_error($link));

}

else {

echo "Penambahan ".mysqli_stmt_affected_rows($stmt)." data berhasil<br />";

}

// siapkan "data" query 2

$nim_mhs="089023026";

$nama_mhs="Rina Melita";

$umur_mhs=22;

$tempat_lahir_mhs="Lampung";

$ipk_mhs=3.5;

// jalankan query 2

mysqli_stmt_execute($stmt);

// cek hasil query 2

if (!$stmt) {

die('Query Error : ' .mysqli_errno($link).' - '.mysqli_error($link));

}

else {

echo "Penambahan ".mysqli_stmt_affected_rows($stmt)." data berhasil<br />";

}

// siapkan "data" query 3

Page 216: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

$nim_mhs="089023031";

$nama_mhs="Joni Halim";

$umur_mhs=21;

$tempat_lahir_mhs="Palembang";

$ipk_mhs=3.6;

// jalankan query 3

mysqli_stmt_execute($stmt);

// cek hasil query 3

if (!$stmt) {

die('Query Error : '.mysqli_errno($link).' - '.mysqli_error($link));

}

else {

echo "Penambahan ".mysqli_stmt_affected_rows($stmt)." data berhasil<br />";

}

// jalankan query untuk memeriksa hasil inputan

$result = mysqli_query($link, "SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row=mysqli_fetch_row($result)) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

mysqli_stmt_close($stmt);

Page 217: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

78

79

80

81

// tutup koneksi

mysqli_close($link);

?>

Kode diatas sedikit panjang, tetapi jika anda sudah memahami konsep prepared statement, fungsi-fungsi yang ada bisa dipahami dengan mudah.

Perhatikan bahwa ketika kita menginput banyak data, kita tidak perlu lagi mengirimkan query ke MySQL Server, tetapi cukup dengan mengubah variabel data dan menjalankan fungsimysqli_stmt_execute(). Untuk situasi inilah prepared statement menjadi lebih efisien dari pada metoda mysqli ‘biasa’.

Jika anda menjalankan kode program diatas, berikut adalah hasil yang didapat:

1

2

3

4

5

6

7

8

9

10

11

12

Penambahan 1 data berhasil

Penambahan 1 data berhasil

Penambahan 1 data berhasil

089023013 Alex Supriyanto 23 Surabaya 2.90

089023020 Naira Alika 20 Padang 3.90

089023023 Alika Shanum 21 Medan 3.80

089023026 Rina Melita 22 Lampung 3.50

089023031 Joni Halim 21 Palembang 3.60

089045001 Andi Suryo 23 Jakarta 2.70

099145055 Neil Situmorang 22 Medan 1.90

109223041 Rani Sabrina 21 Padang 3.70

109245021 Santi Syanum 21 Malang 3.20

Cara Menginput Data dengan mysqli Prepared Statements (object style)

Dalam pembahasan diatas, saya menggunakan procedural style mysqli, kali ini kita akan melihat modifikasi kode programnya jika menggunakan object style mysqli:

1

2

3

4

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$mysqli = new mysqli("localhost", "root", "","universitas");

Page 218: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// cek koneksi

if ($mysqli->connect_errno) {

die('Koneksi gagal: ' .$mysqli->connect_errno.

' - '.$mysqli->connect_error);

}

// buat prepared statements

$stmt = $mysqli->prepare("INSERT INTO mahasiswa_ilkom

VALUES (?, ?, ?, ?, ?)");

// hubungkan "data" dengan prepared statements

$stmt->bind_param("ssisd",

$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);

// siapkan "data" query

$nim_mhs="089023020";

$nama_mhs="Naira Alika";

$umur_mhs=20;

$tempat_lahir_mhs="Padang";

$ipk_mhs=3.9;

// jalankan query

$stmt->execute();

// cek query

if (!$stmt) {

die('Query Error : '.$mysqli->errno.

' - '.$mysqli->error);

Page 219: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

}

else {

echo "Penambahan ".$stmt->affected_rows. " data berhasil<br />";

}

// jalankan query untuk memeriksa hasil inputan

$result = $mysqli->query("SELECT * FROM mahasiswa_ilkom");

// tampilkan query

while ($row= $result->fetch_row()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

echo "<br />";

}

// tutup statements

$stmt->close();

// tutup koneksi

$mysqli->close();

?>

Dalam tutorial belajar PHP MySQL kali ini kita telah mempelajari cara menggunakan mysqli prepared statement untuk menginput data kedalam database. Tutorial kali ini menutup sesi pembahasan tentang mysqli. Dalam tutorial berikutnya kita akan berkenalan dengan extension ketiga PHP-MySQL, yakni PDO: PHP Data Object.

Tutorial PHP MySQL Part 19: Pengertian PDO dan Cara Mengaktifkan PDO (PHP Data Objects)

Apabila anda mengikuti seluruh tutorial belajar PHP MySQL di duniailkom, hingga saat ini kita telah mempelajari cara menggunakan mysql extension dan mysqli extension. Selain kedua metode ini, terdapat 1 lagi cara untuk menghubungkan antara PHP dengan MySQL, yakni menggunakan PDO extension. Dalam tutorial kali ini (dan beberapa tutorial berikutnya) kita akan membahas lebih dalam tentang PDO.

Page 220: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengertian PDO (PHP Data Objects)

PDO (PHP Data Objects) adalah interface universal yang disediakan PHP untuk “berkomunikasi” dengan database server. Maksud istilah “interface universal” disini adalah bahwa PDO tidak terikat dengan aplikasi database tertentu. Apabila saat ini kita menggunakan database MySQL dan dikemudian hari ingin bermigrasi menggunakan PostgreSQL, kita hanya tinggal mengganti cara pemanggilan awal PDO dan seluruh kode program yang ada bisa langsung digunakan untuk database baru.

Kondisi ini berbeda jika menggunakan mysql extension atau mysqli extension. Kedua extension ini hanya bisa bekerja dengan database MySQL. Karena alasan inilah banyak sebaiknya kita mulai beralih menggunakan PDO dibandingkan mysqli.

Secara teknis, apabila menggunakan mysql atau mysqli extension, PHP langsung berhubungan dengan MySQL Server, tetapi jika menggunakan PDO, ia tidak berhubungan langsung dengan database, tetapi hanya sebagai “interface”. Konsep PDO ini dapat digambarkan sebagai berikut:

PHP PDO –> Database Driver –> Database Server

PDO bekerja dengan metode yang disebut “data-access abstraction layer”. Artinya, apapun jenis database server yang digunakan, kode PHP yang ditulis akan tetap sama. PDO menyediakan“abstraction layer” untuk berkomunikasi dengan database server.

Untuk menggunakan PDO, kita harus mengaksesnya menggunakan object. PDO tidak menyediakan cara penulisan procedural style seperti mysqli atau mysql extension. Karena itu, jika anda kurang paham tentang istilah pemrograman object seperti class, method, dan property, silahkan mempelajarinya pada Tutorial Pemrograman Object PHP untuk pemula yang telah tersedia di duniailkom.

Jenis Database Server yang didukung PDO

Hingga saat penulisan tutorial ini (PHP versi 5.6) PDO mendukung setidaknya 12 jenis Interface/Database Server:

CUBRID

MS SQL Server

Firebird

IBM

Informix

MySQL

MS SQL Server

Oracle

Page 221: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

ODBC and DB2

PostgreSQL

SQLite

4D

List ini dapat anda lihat dari http://php.net/manual/en/pdo.drivers.php.

Dapat dilihat bahwa PDO mendukung banyak aplikasi database populer seperti: Oracle, Microsoft SQL Server, dan PostgreSQL. Dengan membuat kode PHP menggunakan PDO, secara tidak langsung kita juga membuka kemungkinan untuk menggunakan database server selain MySQL, sehingga menjadi lebih fleksibel.

Cara Mengaktifkan PDO Extension

Walaupun PDO Extension telah aktif secara “default” pada PHP versi 5.1 keatas, tetapi tidak semua database driver bisa digunakan. Dengan kata lain, untuk alasan performa, PHP me-nonaktifkan beberapa driver database seperti Oracle atau PostgreSQL di dalam PDO.

Untuk melihat driver database apa saja yang telah aktif dan bisa langsung digunakan, bisa menggunakan fungsi (lebih tepatnya: static method) PDO::getAvailableDrivers():

1

2

3

<?php

print_r(PDO::getAvailableDrivers());

?>

Ketika saya menjalankan perintah tersebut pada PHP 5.6 bawaan XAMPP, berikut adalah hasil yang didapat:

1 Array ( [0] => mysql [1] => sqlite )

Dari tampilan diatas, dapat dilihat bahwa driver PDO bawaan PHP yang aktif (dan yang bisa digunakan) hanyalah MySQL dan SQLite. Jadi bagaimana cara mengaktifkan driver untuk database lainnya? Caranya adalah mengubah setingan php.ini.

File php.ini adalah file konfigurasi yang digunakan PHP. Saya telah membahas sekilas tentang cara menemukan dan mengakses file php.ini dalam tutorial Cara Mengubah File Konfigurasi PHP (php.ini). Karena saya menggunakan PHP yang diinstall dari XAMPP di drive D, lokasinya adalah:D:\xampp\php\php.ini.

Silahkan buka file php.ini dengan aplikasi text editor, kemudian search kata “pdo”. Dalam versi PHP yang saya gunakan, hasil pencarian “pdo” akan tampil pada baris ke-1010, seperti gambar dibawah:

Page 222: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pada baris inilah kita mengaktifkan driver database PDO. Perhatikan library yang diawali dengan “php_pdo“, inilah driver-driver database PDO yang tersedia di dalam PHP. Dapat dilihat driver yang telah aktif hanya php_pdo_mysql.dll dan php_pdo_sqlite.dll.

Untuk mengaktifkannya, silahkan hapus tanda titik koma (;) dari awal baris nama driver yang ingin digunakan. Sebagai contoh, saya akan mengaktifkan extension=php_pdo_pgsql.dll yang merupakan driver dari database PostgreSQL:

Selanjutnya, save file php.ini, kemudian restart web server Apache (matikan dan hidupkan kembali melalui XAMPP Control Panel).

Untuk memastikan apakah driver telah aktif atau belum, kita kembali menjalankan methodPDO::getAvailableDrivers(), dan berikut adalah hasil yang didapat:

1 Array ( [0] => mysql [1] => pgsql [2] => sqlite )

Seperti yang terlihat, driver PostgreSQL untuk PDO telah aktif dan bisa langung digunakan.

Page 223: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial PHP MySQL kali ini kita telah membahas tentang pengertian PDO dan cara mengaktifkan driver database agar bisa diakses menggunakan PDO. Pada tutorial selanjutnya, kita akan mulai masuk kedalam kode program yang digunakan untuk menghubungkan PHP dengan database MySQL menggunakan PDO dalam tutorial Cara Membuat Koneksi PHP MySQL Menggunakan PDO.

Tutorial PHP MySQL Part 20: Cara Membuat Koneksi PHP MySQL dengan PDO

Setelah membahas tentang pengertian PDO dan cara mengaktifkan driver PDO di dalam PHP, pada tutorial PHP MySQL kali ini kita akan membahas cara membuat koneksi PHP MySQL dengan PDO (PHP Data Object).

Membuat koneksi PHP MySQL dengan PDO constructor

Karena PDO adalah fungsi/fitur PHP yang ditulis menggunakan objek, maka untuk membuat koneksi antara PHP dengan MySQL, kita menggunakan PDO constructor, yakni dengan membuat objek baru dari class PDO (menggunakan keyword: new).

Berikut adalah struktur dasar cara penulisan PDO constructor untuk database MySQL:

1

2

$dbh = new PDO('mysql:host=lokasi_db;dbname=nama_database',

"nama_user", "password_user");

Variabel $dbh adalah variabel yang akan menjadi object PDO. Object ini biasa disebut sebagai“Database Handler”. Object inilah yang nantinya akan kita gunakan untuk menjalankan perintah-perintah PDO. Nama variabel boleh bebas, dan tidak harus $dbh.

Page 224: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Argumen dari constructor PDO terdiri dari 3 bagian, bagian pertama berisi nama database server(misalnya:mysql) kemudian diikuti dengan alamat server dan nama database, semuanya di dalam 1 string. Untuk argumen kedua diisi dengan nama user, dan argumen ketiga berisi password user.

Sebagai contoh, untuk masuk ke dalam MySQL server di komputer localhost, dengan user root,password: 12345, nama database: universitas, kode PDO yang digunakan adalah sebagai berikut:

1

2

3

<?php

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "12345");

?>

Setelah membuat koneksi PDO, untuk menghapus koneksi kita tinggal memberikan nilai “null” kepada variabel “Database Handler” sebagai berikut:

1

2

3

<?php

$dbh = null;

?>

Sama seperti mysqli, proses penutupan koneksi ini bersifat opsional, dan PHP secara otomatis akan menghapus koneksi pada saat halaman PHP selesai dijalankan.

Cara Menampilkan Pesan Kesalahan (error) pada PDO

Karena PDO menggunakan object, penanganan kesalahan akan lebih baik jika menggunakan blokTRY…CATCH, atau dikenal dengan “exceptions”.

Untuk menampilkan pesan kesalahan dengan exceptions pada PDO, terdapat 3 pilihan metode. Ketiga metode ini menggunakan method PDO::setAttribute(PDO::ATTR_ERRMODE):

Page 225: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

PDO::ERRMODE_SILENT adalah pilihan default. Jika kita tidak mengubah setingan error, pilihan inilah yang digunakan. Untuk mengecek error, kita bisa menggunakan method PDO::errorCode()dan PDO::errorInfo().

PDO::ERRMODE_WARNING digunakan untuk menampilkan error berupa warning PHP, kemudian PHP akan melanjutkan proses eksekusi program. Pilihan ini cocok untuk proses debugging.

PDO::ERRMODE_EXCEPTION digunakan untuk menampilkan error dengan exceptions. Pilihan inilah yang sering digunakan untuk menampilkan error dengan TRY…CATCH.

Dengan menggunakan penanganan kesalahan (exceptions), berikut adalah modifikasi kode PHP untuk koneksi PDO dengan MySQL:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

// hapus koneksi

$dbh = null;

}

catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "Koneksi atau query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Sebagai contoh, jika saya mengganti nama user menjadi “user_tetangga” yang memang tidak ada di dalam database, berikut tampilan error yang terjadi:

Page 226: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

1

2

Koneksi atau query bermasalah: SQLSTATE[HY000] [1044]

Access denied for user ''@'localhost' to database 'universitas'

Didalam block TRY…CATCH inilah nantinya kita akan menjalankan query-query MySQL seperti menampilkan data, maupun menginput data baru ke dalam tabel MySQL. Untuk cara menampilkan data tabel MySQL menggunakan PDO, akan kita bahas dalam tutorial berikutnya: Cara Menampilkan data MySQL menggunakan PDO (PHP Data Object).

Tutorial PHP MySQL Part 21: Cara Menampilkan data MySQL menggunakan PDO PHP

Setelah mempelajari cara membuat koneksi database MySQL dengan PDO, pada tutorial belajar PHP MySQL kali ini kita akan membahas cara menampilkan data MySQL menggunakan PDO (PHP Data Object).

Cara Menampilkan Data MySQL dengan PDO

Walaupun terkesan “rumit”, menjalankan query dan menampilkan hasilnya menggunakan PDO PHPtidaklah sulit. Bahkan sangat mirip dengan mysqli. PHP juga menyediakan beragam cara untuk menampilkan hasil query MySQL dengan PDO.

Sama seperti mysql extension dan mysqli extension, untuk menjalankan dan menampilkan data dari MySQL dengan PDO, kita membutuhkan 3 langkah: buat koneksi, jalankan query, dantampilkan hasil.

Agar lebih mudah dipahami, berikut adalah contoh kode program untuk menampilkan seluruh tabelmahasiswa_ilkom dengan menggunakan PDO:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

// jalankan query

$result = $dbh->query('SELECT * FROM mahasiswa_ilkom');

// tampilkan data

while($row = $result->fetch()) {

echo "$row[0] $row[1] $row[2] $row[3] $row[4]";

Page 227: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

15

16

17

18

19

20

21

22

23

24

25

26

echo "<br />";

}

// hapus koneksi

$dbh = null;

}

catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "Koneksi atau query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Dalam contoh diatas, saya menjalankan PDO di dalam block TRY…CATCH agar bisa menampilkan pesan kesalahan (error). Selanjutnya, saya membuat koneksi dengan MySQL Server dan menyimpan hasil koneksi ke dalam variabel $dbh. Kita telah membahas tentang hal ini dalam tutorial sebelumnya.

Kode program $dbh->setAttribute digunakan untuk men-set kode error yang dihasilkan agar bisa “ditangkap” oleh block CATCH.

Untuk menjalankan query dengan PDO, kita bisa menggunakan method $dbh->query(). Method ini membutuhkan 1 argumen bertipe string, yakni query yang akan dijalankan. Dalam contoh diatas, saya menggunakan query ‘SELECT * FROM mahasiswa_ilkom’ untuk menampilkan seluruh tabelmahasiswa_ilkom.

Method $dbh->query() akan mengembalikan nilai berupa objek baru yang digunakan untuk proses berikutnya. Object ini saya tampung ke dalam variabel $result.

Kemudian, untuk menampilkan hasil query saya menggunakan method $result->fetch(). Method ini akan mengembalikan nilai berupa array yang bisa ditampilkan dengan perulangan while seperti biasa.

Apabila anda menjalankan perintah tersebut, isi tabel mahasiswa_ilkom akan ditampilkan di web browser:

1

2

3

4

5

089023013 Alex Supriyanto 23 Surabaya 2.90

089023020 Naira Alika 20 Padang 3.90

089023023 Alika Shanum 21 Medan 3.80

089023026 Rina Melita 22 Lampung 3.50

089023031 Joni Halim 21 Palembang 3.60

Page 228: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Mengubah Cara Menampilkan Data PDO

Jika anda perhatikan, dalam contoh diatas kita mengakses hasil query menggunakan array dengan penomoran index. Selain dengan index array, PDO menyediakan berbagai cara untuk menampilkan data sesuai kebutuhan.

Untuk mengubah cara menampilkan data PDO, kita tinggal menambahkan 1 argumen ke dalam method $result->fetch(). Misalkan untuk menampilkan hasil query menggunakan nama kolom sebagai index array, kita bisa menggunakan PDO::FETCH_ASSOC sebagai berikut:

1

2

3

4

5

6

7

8

9

10

11

12

<?php

// kode program untuk koneksi dan menjalankan query

// ...

// ...

// tampilkan data

while($row = $result->fetch(PDO::FETCH_ASSOC)) {

echo $row['nim']." ".$row['nama']." ".$row['umur']." ";

echo $row['tempat_lahir']." ".$row['IPK'];

echo "<br />";

}

?>

Dan jika ingin menampilkan dengan pengaksesan objek, bisa menggunakan PDO::FETCH_OBJ:

1

2

3

4

5

6

7

8

9

<?php

// kode program untuk koneksi dan menjalankan query

// ...

// ...

// tampilkan data

while($row = $result->fetch(PDO::FETCH_OBJ)) {

echo $row->nim." ".$row->nama." ".$row->umur." ";

echo $row->tempat_lahir." ".$row->IPK;

Page 229: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

10

11

12

echo "<br />";

}

?>

Selain dengan settingan PDO::FETCH_ASSOC dan PDO::FETCH_OBJ, PDO PHP juga menyediakan beberapa pilihan lain:

PDO::FETCH_BOTH: mengembalikan nilai berupa array yang bisa di tampilkan menggunakan index angka maupun index nama kolom. Ini adalah pilihan default jika method $result->fetch() ditulis tanpa argumen.

PDO::FETCH_NUM: mengembalikan nilai berupa array yang bisa di tampilkan dengan index angka.

PDO::FETCH_CLASS: mengembalikan nilai ke dalam class yang telah disiapkan.

PDO::FETCH_LAZY: mengkombinasikan PDO::FETCH_BOTH dan PDO::FETCH_OBJ, sehingga bisa dipanggil dengan array maupun objek.

Dalam tutorial belajar PHP MySQL kali ini, kita telah membahas tentang cara menampilkan data query MySQL menggunakan PDO. Dalam tutorial berikutnya kita akan membahas cara menginput data ke MySQL menggunakan PDO PHP.

Tutorial PHP MySQL Part 22: Cara Menginput Data MySQL dengan PDO (PHP Data Object)

Setelah membahas tentang cara menampilkan hasil MySQL dengan PDO, berikutnya dalam tutorial PHP MySQL kali ini kita akan membahas tentang cara menginput data MySQL menggunakan PDO.

Cara Menginput data MySQL dengan PDO

Secara garis besar, proses menginput data MySQL dengan PDO tidak jauh berbeda dengan cara menampilkan data dengan PDO yang telah kita bahas pada tutorial sebelumnya.

PHP menyediakan banyak cara untuk menginputkan data kedalam MySQL menggunakan PDO extension. Pada tutorial ini kita akan membahas 2 diantaranya, yakni menggunakan method PDO->query() dan PDO->exec().

Menginput data MySQL dengan PDO->query()

Untuk menginput data MySQL dengan method PDO->query(), kita tinggal menambahkan query INSERT atau UPDATE kedalam method ini.

Sebagai contoh, saya ingin menambahkan 1 data baru ke dalam tabel mahasiswa_ilkom. Berikut adalah contoh kode programnya:

1

2

<?php

try {

Page 230: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query= 'INSERT INTO mahasiswa_ilkom VALUES

("099023022", "Ayla Ramadhani", 20, "Aceh", 3.1)';

// jalankan query

$result = $dbh->query($query);

// tampilkan hasil proses query

echo $result->rowCount()." data berhasil ditambahkan";

// hapus koneksi

$dbh = null;

} catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Sebagian besar function dan method diatas sudah kita pelajari dalam beberapa tutorial sebelum ini.

Setelah proses koneksi dan men-set error display, saya membuat sebuah string untuk menampung query INSERT, yakni di dalam variabel $query. Kemudian query dijalankan dengan method $dbh->query($query).

Setelah query di jalankan, kita bisa mengetahui berapa baris tabel MySQL yang ditambahkan menggunakan method $result->rowCount().

Page 231: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Apabila anda menjalankan perintah diatas, hasil yang ditampilkan adalah:

1 1 data berhasil ditambahkan

Sebagai latihan, silahkan anda tambahkan kode program diatas untuk menampilkan data tabelmahasiswa_ilkom setelah proses input data.

Menginput data MySQL dengan PDO->exec()

Selain menggunakan method PDO->query(), kita juga bisa menggunakan method PDO->exec()untuk menjalankan query MySQL. Cara penulisan method PDO->exec() juga sangat mirip dengan method PDO->query().

Mari kita lihat bagaimana cara menambahkan 1 data ke dalam tabel mahasiswa_ilkommenggunakan method PDO->exec():

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query= 'INSERT INTO mahasiswa_ilkom VALUES

("109013027", "Siska Rosiana", 19, "Bengkulu", 2.9)';

// jalankan query

$result = $dbh->exec($query);

// tampilkan hasil proses query

echo $result." data berhasil ditambahkan";

// hapus koneksi

$dbh = null;

Page 232: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

21

22

23

24

25

26

} catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Dari kode diatas, method $dbh->exec($query) akan menjalankan query yang disimpan dari variabel $query. Untuk menampilkan jumlah data yang ditambahkan, kita bisa langsung menggunakan variabel $result hasil method $dbh->exec($query).

Jika anda menjalankan kode diatas, maka hasil yang didapat adalah sebagai berikut:

1 1 data berhasil ditambahkan

Setelah mempelajari cara menampilkan dan menginput data menggunakan PDO PHP, dalam tutorial berikutnya kita akan membahas fitur PDO yang lebih ‘advanced‘, yakni Cara Menggunakan Prepared Statement dengan PDO PHP.

Tutorial PHP MySQL Part 23: Cara Menggunakan Prepared Statements dengan PDO PHP

Dalam 2 tutorial PDO PHP sebelumnya, kita telah membahas cara menampilkan dan menginput data MySQL dengan cara “normal”. Pada tutorial belajar PHP MySQL kali ini kita akan membahas cara menjalankan query MySQL dengan metoda yang lebih advanced menggunakan prepared statements dengan PDO.

Cara Menginput Data MySQL dengan Prepared Statement PDO

Pembahasan mengenai apa itu prepared statement telah saya bahas dengan lengkap dalamTutorial PHP MySQL: Pengertian dan Cara Penggunaan Prepared Statements mysqli. Kali ini kita akan lihat bagaimana cara menggunakannya di dalam extension PDO.

Langsung saja kita masuk kedalam contoh program. Kali ini saya ingin menambahkan 1 data kedalam tabel mahasiswa_ilkom menggunakan prepared statement dengan PDO:

1

2

3

4

5

6

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

Page 233: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// siapkan query (prepare)

$stmt = $dbh->prepare('INSERT INTO mahasiswa_ilkom

VALUES (?, ?, ?, ?, ?)');

// hubungkan data dengan variabel (bind)

$stmt->bindParam(1, $nim_mhs);

$stmt->bindParam(2, $nama_mhs);

$stmt->bindParam(3, $umur_mhs);

$stmt->bindParam(4, $tempat_lahir_mhs);

$stmt->bindParam(5, $ipk_mhs);

// siapkan "data" query

$nim_mhs="109023031";

$nama_mhs="Jerry Kurniawan";

$umur_mhs=23;

$tempat_lahir_mhs="Malang";

$ipk_mhs=3.1;

// jalankan query (execute)

$stmt->execute();

// tampilkan hasil proses query

echo $stmt->rowCount()." data berhasil ditambahkan";

// hapus koneksi

$dbh = null;

Page 234: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

35

36

37

38

39

40

41

} catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Seperti yang pernah kita bahas pada mysqli extension, untuk menjalankan prepared statement, kita membutuhkan 3 langkah: prepare, bind dan execute.

Proses prepare dijalankan menggunakan method $dbh->prepare(). Method ini membutuhkan 1 argumen berupa perintah query yang akan dijalankan. Hasil dari method kemudian disimpan kedalam variabel $stmt. Variabel inilah yang akan kita gunakan selama menjalankan proses prepared statement.

Proses bind dilakukan menggunakan method $stmt->bindParam(). Method ini membutuhkan 2 argumen. Argumen pertama adalah angka urutan dari “tempat data” yang ditulis pada prosesprepare. Karena pada proses prepare saya menuliskan: ‘INSERT INTO mahasiswa_ilkom VALUES (?, ?, ?, ?, ?)’, maka setiap tanda “?” harus di bind. Urutan tanda “?” inilah yang digunakan dalam argumen pertama method $stmt->bindParam().

Untuk argumen kedua method $stmt->bindParam() adalah variabel penampung yang nantinya akan diisi data. Selanjutnya setiap variable yang di defenisikan akan saya input nilai yang sesuai.

Setelah seluruh data diinput kedalam variabel, kita tinggal menjalankan method $stmt->execute()untuk menjalankan query prepared statement.

Jika anda menjalankan kode program diatas, hasilnya adalah sebagai berikut:

1 1 data berhasil ditambahkan

Agar lebih yakin, anda bisa menambahkan kode program diatas untuk menampilkan seluruh isi tabel mahasiswa_ilkom.

Selain menggunakan tanda “?” untuk menandakan bagian dari data, PDO PHP juga menyediakan cara lain, yakni dengan menuliskan ‘nama untuk data’ atau dikenal dengan “named parameters prepared statements”.

Berikut adalah revisi contoh program menggunakan named parameters prepared statemant:

1

2

3

4

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

Page 235: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// set error mode

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// siapkan query (prepare)

$stmt = $dbh->prepare('INSERT INTO mahasiswa_ilkom VALUES

(:nim_mhs, :nama_mhs, :umur_mhs, :tempat_lahir_mhs, :ipk_mhs)');

// hubungkan data dengan variabel (bind)

$stmt->bindParam(':nim_mhs', $nim_mhs);

$stmt->bindParam(':nama_mhs', $nama_mhs);

$stmt->bindParam(':umur_mhs', $umur_mhs);

$stmt->bindParam(':tempat_lahir_mhs', $tempat_lahir_mhs);

$stmt->bindParam(':ipk_mhs', $ipk_mhs);

// siapkan "data" query

$nim_mhs="109023031";

$nama_mhs="Jerry Kurniawan";

$umur_mhs=23;

$tempat_lahir_mhs="Malang";

$ipk_mhs=3.1;

// jalankan query (execute)

$stmt->execute();

// tampilkan hasil proses query

echo $stmt->rowCount()." data berhasil ditambahkan";

Page 236: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

33

34

35

36

37

38

39

40

41

// hapus koneksi

$dbh = null;

} catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Perbedaan dari kode program sebelumnya adalah pada cara penulisan query dan argumen methodbindParam(). Kali ini kita menggunakan named variable (diawali dengan tanda “:”), seperti:nim_mhs, :nama_mhs, atau :umur_mhs. Named variable ini selanjutnya menjadi argumen pertama method $stmt->bindParam().

Versi penulisaan terakhir prepared statement yang akan kita pelajari adalah dengan menggabungkan proses bind dan execute sekaligus. Agar cara ini bisa dijalankan, data dari prepared statement harus dibuat dalam bentuk array. Berikut contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

try {

// buat koneksi dengan database

$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// siapkan query (prepare)

$stmt = $dbh->prepare('INSERT INTO mahasiswa_ilkom VALUES

(:nim_mhs, :nama_mhs, :umur_mhs, :tempat_lahir_mhs, :ipk_mhs)');

// siapkan "data" query

$nim_mhs="109023031";

Page 237: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

$nama_mhs="Jerry Kurniawan";

$umur_mhs=23;

$tempat_lahir_mhs="Malang";

$ipk_mhs=3.1;

// jalankan query (execute)

$stmt->execute(array(':nim_mhs' => $nim_mhs, ':nama_mhs' => $nama_mhs,

':umur_mhs' => $umur_mhs, ':tempat_lahir_mhs' => $tempat_lahir_mhs,

':ipk_mhs' => $ipk_mhs ));

// tampilkan hasil proses query

echo $stmt->rowCount()." data berhasil ditambahkan";

// hapus koneksi

$dbh = null;

} catch (PDOException $e) {

// tampilkan pesan kesalahan jika koneksi gagal

print "koneksi/query bermasalah: " . $e->getMessage() . "<br/>";

die();

}

?>

Perbedaan dalam kode program diatas terletak dalam $stmt->execute(). Kali ini method $stmt->execute() kita input dengan array sebagai argumen yang akan menjadi ‘data’ untuk query. Dengan cara ini kita tidak perlu menggunakan method $stmt->bindParam().

Metode prepared statement yang kita pelajari disini bisa menjadi alternatif dari cara menjalankan query MySQL dengan metode biasa menggunakan $dbh->query(). Prepared statements mungkin masih relatif jarang anda jumpai, namun metoda ini menawarkan keamanan yang lebih dan banyak digunakan di dalam aplikasi PHP yang lebih luas seperti framework PHP.

Page 238: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial Form PHP

Dalam Tutorial Form PHP ini duniailkom akan membahas cara menangani form HTML dengan PHP. Penggunaan form di dalam sebuah website adalah hal yang wajib. Mulai dari form search, form login, hingga form registrasi.

Metoda pengiriman form seperti GET dan POST akan kita bahas secara mendalam, termasuk tentang aspek keamanan sebuah form.

Tutorial Form PHP: Cara Membuat dan Memproses Form HTML dengan PHP

Dalam sesi tutorial PHP lanjutan kali ini, kita akan membahas tentang Cara Membuat dan Memproses Form HTML dengan PHP.

Form adalah fitur yang sangat penting dalam sebuah website. Hampir seluruh situs modern membutuhkan form sebagai fitur utama, seperti form pendaftaran, form login, form register peserta,form pembayaran dan lain-lain.

Untuk dapat memproses data dari form, kita membutuhkan perpaduan antara kode HTML dengan kode PHP. HTML digunakan untuk menampilkan form, sedangkan PHP digunakan untuk memproses form. CSS dan JavaScript biasanya juga digunakan untuk mempercantik halaman dan memudahkan interaksi, namun dalam tutorial ini saya tidak akan membahas CSS dan JavaScriptagar kita bisa fokus membahas pemrosesan Form dengan PHP.

Tutorial Form PHP Part 1: Cara Menampilkan Hasil Form HTML dengan PHP

Langkah pertama untuk dapat memproses hasil form HTML, adalah mempelajari cara ‘mengambil’nilai dari form dan menampilkannya. Dalam tutorial kali ini, kita akan membahas Cara Menampilkan Hasil Form HTML dengan PHP.

Mengenal Struktur Dasar Form HTML (atribut action dan method)

Tutorial mengenai cara membuat form menggunakan HTML telah saya bahas lengkap di tutorial form HTML, dalam tutorial form PHP kali ini kita hanya fokus kepada bagian form yang berkaitan dengan PHP. Berikut adalah struktur dasar form sederhana dalam HTML:

1

2

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

Page 239: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

6

7

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

Jika anda menjalankan form HTML tersebut, akan ditampilkan form sederhana dengan 2 buah kotak inputan dan sebuah tombol “Proses Data” yang berfungsi untuk submit form. Dari struktur dasar tersebut, di dalam tag <form> terdapat 2 buah atribut. Yakni atribut action dan atribut method. Kita akan membahas kedua atribut ini secara lebih rinci.

Atribut pertama adalah action. Atribut action ini diisi dengan nilai berupa alamat halaman PHP dimana kita akan memproses isi form tersebut. Dalam contoh diatas, saya membuat nilaiaction=”proses.php”, yang berarti saya harus menyediakan sebuah file dengan nama: proses.phpuntuk memproses form tersebut.

Isi atribut action sebenarnya adalah alamat dari halaman PHP. Karena atribut action pada contoh diatas ditulis action=”proses.php”, maka file proses.php harus berada di dalam 1 folder dengan halaman HTML yang berisi form ini. Namun anda bisa dengan bebas mengubah alamat proses.phpini tergantung dimana file tersebut berada, misalnya menjadi alamat relatif sepertiaction=”file_php/proses.php”, ataupun alamat absolut sepertiaction=”http://www.duniailkom.com/proses.php”.

Atribut kedua yang berkaitan dengan pemrosesan form HTML adalah atribut method. Atribut inilah yang akan menentukan bagaimana cara form ‘dikirim’ ke dalam halaman proses.php. Nilai dari atribut method hanya bisa diisi dengan1 dari 2 pilihan, yakni get atau post.

Jika seperti contoh diatas saya membuat nilai method=”get”, maka nilai dari form akan dikirim melalui alamat URL website. Namun jika nilai method diubah menjadi method=”post”, maka nilai form tidak akan terlihat di dalam alamat URL. Perbedaan antara method get dan post akan kita bahas secara mendalam dalam tutorial selanjutnya. Nilai dari atribut method ini juga akan mempengaruhi cara kita memproses nilai dari form.

Setelah membuat tag pembuka form dengan atribut action dan method, isi form selanjutnya adalah 2 buah tag <input type=”text”> yang akan menampilkan kotak isian form. Hal yang paling penting diperhatikan adalah atribut name dari masing-masing tag <input>. Nilai dari name inilah yang menjadi penanda masing-masing objek form agar dapat diproses dengan PHP.

Setelah 2 buah text input, objek form terakhir adalah tombol submit yang apabila di klik akan mengirimkan data dari form ke halaman proses.php untuk diproses. Atribut penting disini adalah atribut type=”submit”, yang akan otomatis mengirim isian form ketika tombol ini di klik.

Cara Mengirimkan Nilai Form HTML ke dalam PHP

Page 240: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk memahami Cara Mengirimkan Nilai Form HTML ke dalam PHP, kita akan langsung praktek dengan membuat 2 buah file, yakni halaman HTML yang berisi form dengan nama file form.html, dan halaman PHP yang akan berisi kode untuk menampilkan hasil form dengan nama file:proses.php.

Karena kita akan mengeksekusi kode PHP, kedua file ini harus dijalankan dengan XAMPP dan berada di dalam folder htdoc. Untuk contoh kali ini saya akan membuat folder belajar_form di dalam folder htdoc XAMPP, sehingga untuk mengakses kedua halaman adalah dari alamat :http://localhost/belajar_form/form.html dan http://localhost/belajar_form/proses.php (mengenai cara install dan menggunakan XAMPP telah saya bahas pada tutorial Cara Menjalankan File PHP dengan XAMPP)

Sebagai langkah pertama, kita akan membuat file form.html yang berisi kode HTML sebagai berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<!DOCTYPE html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Belajar Form PHP</title>

</head>

<body>

<h2>Tutorial Belajar Form HTML - PHP </h2>

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

</body>

</html>

Page 241: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Kode HTML diatas hanya berisi struktur kode HTML sederhana dengan 1 buah form yang berisi 2 text inputan untuk nama dan e-mail. Struktur form ini persis sama dengan form kita bahas pada bagian awal tutorial ini.

Sebelum membuat halaman proses.php, kita akan mencoba melakukan sedikit percobaan dengan form HTML ini. Silahkan coba input kedua kotak isian form ini dengan nilai apapun dan klik tombolsubmit. Ketika anda men-klik tombol submit, anda akan mendapati halaman error seperti berikut ini:

Halaman error tersebut memberitahu kita bahwa halaman proses.php tidak ditemukan (yang memang belum kita buat), namun perhatikan alamat URL pada address bar web browser, kita bisa melihat ada penambahan seperti berikut ini:

http://localhost/belajar_form/proses.php?nama=duniailkom&email=duniailkom%40gmail.com

Perhatikan bahwa alamat URL sekarang telah berganti menjadi proses.php, yang kemudian diikuti dengan ?nama=duniailkom&email=duniailkom%40gmail.com. Pesan inilah yang sebenarnya di kirim oleh halaman form.html sewaktu kita men-klik tombol submit.

Page 242: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tanda ? menandakan awal dari data form, dan kemudian diikuti dengan nama dari objek form dan nilainya, dalam contoh ini, nilai yang akan dikirim adalah nama=duniailkom. Karakter “&” digunakan sebagai tanda pemisah nilai objek form yang 1 dengan yang lain, kemudian diikuti dengan nilai kedua email=duniailkom%40gmail.com. Tanda %40 dalam kode ini adalah kode karakter HTML untuk karakter @ yang biasa digunakan di dalam email.

Jika anda menambahkan objek form ketiga, maka alamat URL akan semakin panjang. Kita bisa melihat data yang dikirim karena pada saat pembuatan form, saya menggunakan method=get. Namun jika anda merubah form HTML kita dengan menggunakan method=post, maka anda tidak akan melihat karakter-karakter ini di dalam URL.

Selanjutnya kita akan mencoba menampilkan nilai ini dengan PHP pada halaman proses.php.

Cara Menampilkan nilai Form HTML dengan PHP ($_GET dan $_POST)

Setelah membuat halaman form.html yang berisi form HTML, kita akan membuat halamanproses.php yang berisi kode PHP untuk menangani nilai dari form ini.

Silahkan buat file proses.php dengan kode program sebagai berikut, dan savelah di dalam folder yang sama dengan form.html berada:

1

2

3

4

5

<?php

echo $_GET['nama'];

echo "<br />";

echo $_GET['email'];

?>

Sebelum kita membahas kode program PHP tersebut, silahkan buka kembali halaman form.html, isi kotak input nama dan email, lalu klik tombol Proses Data. Apabila tidak ada error, maka akan tampil hasil berikut ini:

Page 243: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tampilan diatas adalah hasil dari 3 baris kode program PHP yang kita buat di dalam halamanproses.php.

Untuk mengambil nilai form HTML, PHP menyediakan 2 buah variabel global yaitu variabel $_GETdan $_POST. Kita menggunakan variabel $_GET jika pada saat pembuatan form menggunakan atribut method=get, dan menggunakan variabel $_POST jika form dibuat dengan method=post.

Kedua variabel ini sebenarnya adalah array, sehingga cara mengakses nilai dari form adalah dengan cara: $_GET[‘nama_objek_form’].

‘nama_objek_form’ adalah nilai dari atribut name di dalam form. Jika kita memiliki tag dengan kode HTML <input type=”text” name=”nama” />, maka untuk mengakses nilainya adalah dengan$_GET[‘nama’], dan untuk tag <input type=”text” name=”email” /> diakses dengan nilai$_GET[’email’].

Sebagai latihan, silahkan anda mengganti atribut method dalam file form.html menjadi:

<form action="proses.php" method="post">

Lalu ubah juga file proses.php menjadi:

1

2

3

4

5

<?php

echo $_POST['nama'];

echo "<br />";

echo $_POST['email'];

?>

Dan PHP akan menampilkan hasil yang sama, namun kali ini form dikirim menggunakanmethod=post.

Di dalam tutorial kali ini kita telah membahas dasar Cara Menampilkan Hasil Form HTML dengan PHP, namun apa yang kita bahas disini hanya cara paling dasar untuk menampilkan nilai form dengan PHP. Dalam tutorial Form PHP selanjutnya kita akan membahas lebih dalam tentang perbedaan pengiriman form dengan method GET dan POST.

Tutorial Form PHP Part 2: Perbedaan Metode Pengiriman Form GET dan POST dalam PHP

Salah satu pertimbangan dasar dalam membuat dan memproses form PHP adalah apakah form tersebut dikirim menggunakan method=get atau method=post. Dalam tutorial kali ini kita akan membahas dan mempelajari keunggulan dan kelemahan masing-masing metode pengiriman form ini.

Keunggulan dan Kelemahan Method Form ‘GET’

Kelemahan yang paling jelas jika kita menggunakan method=get adalah nilai dari form dapat dilihat langsung di dalam URL yang dikirimkan. Jika anda membuat form untuk data-data yang sensitif seperti password, maka form dengan method=get bukanlah pilihan yang tepat.

Page 244: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Form dengan method=get disarankan untuk form yang berfungsi menampilkan data, yaitu dimana hasil isian form hanya digunakan untuk menampilkan data, sesuai dengan arti kata get yang bisa berarti: ‘ambil’. Sehingga method=get sebaiknya digunakan untuk form yang ‘mengambil’ data dari database.

Salah satu penggunaan method=get yang umum digunakan adalah pada form pencarian (form search). Dengan membuat hasil inputan form terlihat jelas dalam URL, pengunjung web bisa dengan mudah menebak ‘alur kerja’ dari situs kita. Bahkan pengunjung bisa membuat aplikasi pencarian sendiri dengan memanfaatkan fasilitas ini.

Sebagai contoh, di dalam situs duniailkom, kotak input search di kanan atas halaman ini dibuat dengan method=get. Misalkan kita ingin mencari seluruh postingan yang berkaitan dengan ‘Form PHP’, maka kita bisa mengetikkan kata ‘Form PHP’, kemudian men-klik tombol enter di keyboard. Beberapa saat kemudian, hasil pencarian akan ditampilkan. Jika diperhatikan alamat URL pada web browser, akan berubah menjadi:

http://www.duniailkom.com/?s=form+php&submit=Search

Hasil URL ini merupakan query pencarian default yang digunakan oleh wordpress (CMS yag digunakan di duniailkom).

Setelah nama domain www.duniailkom.com, selanjutnya kita melihat karakter ?s=form+php&submit=Search. Karakter-karakter ini adalah hasil format form dengan metode=get. Tanda ? menandakan awal nilai form, tanda + untuk menandakan spasi, dan tanda & untuk memisahkan objek form. Dengan memanfaatkan keterangan ini, kita bisa melakukan pencarian hanya melalui URL secara lansung, tanpa harus melalui form.

Sebagai contoh, jika anda ingin mencari semua postingan dengan kata kunci ‘Integer dalam PHP’, maka anda bisa menggunakan link berikut:

http://www.duniailkom.com/?s=integer+dalam+php&submit=Search

Untuk mengujinya, silahkan copy–paste text tersebut ke address bar web browser, dan situsduniailkom akan langsung menampilkan hasil pencarian dengan kata kunci ‘Integer dalam PHP’. Hal ini membuat halaman web menjadi lebih fleksibel.

Untuk contoh lainnya, jika anda mengikuti tutorial Form HTML ini dari Part 1, maka kita memiliki fileproses.php yang berfungsi untuk memproses hasil form. Fleksibilitas yang diberikan oleh variabel$_GET membuat kita bisa menampilkan nilai dalam proses.php tanpa menggunakan form sama sekali.

Jika isi dari file proses.php adalah:

1

2

3

4

<?php

echo $_GET['nama'];

echo "<br />";

echo $_GET['email'];

Page 245: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

5 ?>

Kita bisa membuat langkah yang sama seperti contoh di dalam pencarian ‘Integer dalam PHP’sebelumnya. Sekarang copy paste URL berikut ini kedalam address bar web browser (pastikan aplikasi XAMPP sudah berjalan dan file proses.php berada di dalam folder belajar_form):

http://localhost/belajar_form/proses.php?nama=fajar&email=fajar%40gmail.com

Dan hasil tampilan halaman proses.php akan menampilkan nama fajar dan alamat [email protected]. Hasil ini didapat hanya dengan menginput nama tersebut dengan URL (tanpa form).

Dari contoh ini kita bisa melihat bahwa PHP mendeteksi nilai dari method=get, hanya berdasarkan URL yang diberikan. Cara ‘mengakali’ variabel $_GET tanpa form ini sering digunakan sebagai sarana untuk mengirim sebuah nilai dari satu halaman PHP ke halaman lainnya (sering digunakan untuk menampilkan pesan error kepada user).

Karena sifat method=get yang harus menggunakan URL untuk mengirim data form, PHP membatasi hanya bisa memproses 1024 karakter saja. Sehingga jika anda memiliki form yang isinya kemungkinan akan melebihi 1024 karakter, sebaiknya menggunakan method=post.

Keunggulan dan Kelemahan Method Form ‘POST’

Keuntungan mengunakan method=post dalam pembuatan form PHP adalah bahwa isi dari form tidak ditampilkan di URL, sehingga method ini sesuai untuk data-data yang bersifat sensitif sepertiusername dan password.

Sesuai dengan namanya, method=post disarankan digunakan untuk form yang digunakan untuk menambah data (posting data) atau sebuah proses yang akan mengubah isi database, seperti query Insert, Delete. Contoh penggunaan method=post ini sering digunakan untuk form register danform login yang diaggap bersifat rahasia.

Jika kita membuat form untuk keperluan upload file (menggunakan tag <input type=file>), maka kita harus membuat form dengan method=post.

Page 246: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai kesimpulan terakhir, pilihan antara method=get dengan method=post bergantung kepada tingkat sensitifitas data. Untuk data yang sensitif seperti password atau yang melakukan suatu perubahan ke database, sebaiknya menggunakan method=post. Namun untuk data yang ditujukan untuk menampilkan, atau mengambil sesuatu dari database, sebaiknya menggunaan method=get.

Tutorial Form PHP Part 3: Pengertian Variabel SuperGlobals $_GET, $_POST dan $_REQUEST

Dalam tutorial tentang Cara Menampilkan Hasil Form HTML dengan PHP, kita telah membahas sekilas tentang variabel $_GET dan $_POST yang digunakan untuk menampilkan hasil Form HTML, serta perbedaan metoda pengiriman GET dan POST. Dalam tutorial kali ini kita akan membahas lebih dalam tentang pengertian variabel superglobal $_GET, $_POST dan juga $_REQUEST yang digunakan untuk memproses Form dalam PHP.

Pengertian Variabel SuperGlobal dalam PHP

Variabel $_GET dan $_POST (dan juga $_REQUEST) di dalam PHP termasuk ke dalam kelompok variabel yang dikenal dengan ‘Variabel SuperGlobal’.

Variabel SuperGlobals adalah variabel khusus di dalam PHP yang bisa diakses dari halaman PHP manapun tanpa perlu mendefinisikannya terlebih dahulu, dan untuk mengakses variabel ini kita juga tidak perlu menggunakan keyword global (sebagaimana variabel global pada umumnya)

Selain variabel $_GET, $_POST dan $_REQUEST, PHP masih memiliki beberapa variabel supergloballainnya seperti $_COOKIE, $_SESSION, dan $_SERVER. Ciri khusus untuk variabel global di dalam PHP, diawali dengan tanda $_. Namun pada tutorial ini kita hanya fokus kepada variabel $_GET, $_POST dan $_REQUEST.

Variabel $_GET, $_POST dan $_REQUEST merupakan tipe data array, sehingga untuk mengakses nilainya, kita menggunakan cara akses array yakni dengan menggunakan kurung siku seperti:$_GET[‘nama’] dimana nama adalah nilai dari atribut name pada objek form yang akan diakses.

Perbedaan variabel global $_GET, $_POST dan $_REQUEST

Seperti yang telah kita praktekkan dalam tutorial Cara Menampilkan Hasil Form HTML dengan PHP, kita telah mengetahui bahwa jika form dikirim menggunaan method=get maka di dalam PHP kita mengaksesnya dengan variabel $_GET, namun jika form dibuat menggunakan method=post, kita mengaksesnya dengan variabel $_POST.

Bagaimana jika pada saat memproses form kita tidak mengetahui dengan pasti apakah form dikirim dengan GET atau POST? PHP menyediakan variabel $_REQUEST sebagai salah satu solusinya. Variabel $_REQUEST menampung nilai form yang dikirim dengan method=get, maupunmethod=post secara bersamaan.

Untuk mencobanya, silahkan jalankan file form.html dengan isi kode HTML sebagai berikut:

1

2

<!DOCTYPE html>

<head>

Page 247: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Belajar Form PHP</title>

</head>

<body>

<h2>Tutorial Belajar Form HTML - PHP </h2>

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

</body>

</html>

Halaman form.html diatas persis sama dengan yang kita gunakan pada tutorial sebelumnya, namun untuk halaman proses.php, kita akan modifikasi dengan menggunakan variabel$_REQUEST:

1

2

<?php

echo $_REQUEST['nama'];

Page 248: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

echo "<br />";

echo $_REQUEST['email'];

?>

Jika anda menjalankan form.html dan men-klik tombol ‘Proses Data’, maka hasil form akan ditampilkan sebagaimana mestinya. Anda juga bisa mengubah method form menjadi post, dan variabel $_REQUEST akan tetap menampilkan hasil form.

Jadi, variabel apa yang sebaiknya digunakan? apakah $_GET, $_POST atau $_REQUEST? Jawabannya tergantung kepada desain kode program yang dirancang. Jika anda dapat memastikan bahwa form akan dikirim dengan method=get, maka gunakan variabel $_GET, jika from anda menggunakanmethod=post, maka gunakan $_POST, namun jika metodanya tidak dapat dipastikan, variabel superglobal $_REQUEST bisa menjadi solusi.

Tutorial Form PHP Part 4: Pengertian Register Global dan Register Long Array (deprecated)

Selain menggunakan variabel S uperGlobals $_GET, $_POST dan $_REQUEST , PHP masih menyediakan cara lain untuk mengakses nilai dari form. Dalam tutorial kali ini kita akan MengenalPengertian Register Global dan Register Long Array.

Pengertian Register Global dan Register Long Array

Register Global dan Register Long Array adalah metode lain dalam PHP yang bisa digunakan untuk menampilkan hasil form, namun kedua metode ini sekarang sudah menyandang status ‘deprecated’ yang berarti tidak disarakan digunakan dan kemungkinan tidak akan didukung olehPHP pada masa mendatang. Kedua metode ini adalah metode ’legacy’ atau warisan yang digunakan pada versi PHP terdahulu.

Saya membahas Register Global dan Register Long Array hanya sebagai menambah pengetahuan, karena mungkin saja kita masih mendapati kode PHP lama (terutama versi PHP 4 kebawah) yang masih menggunakan kedua metode ini.

Baik Register Global dan Register Long Array sudah tidak disarankan untuk digunakan karena memiliki celah keamanan yang mudah dibobol. Anda disarankan untuk menggunakan variabel$_GET, $_POST atau $_REQUEST.

Page 249: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Mengakses Nilai Form dengan Register Global

Register Global adalah sebuah metode dalam PHP yang ‘memudahkan’ pengambilan nilai form dengan cara menjadikan atribut nama dari objek form secara otomatis menjadi variabel di dalam PHP.

Misalkan kita memiliki objek form sebuah inputan dengan kode HTML sebagai berikut:

<input type="text" name="user_name" />

Maka di dalam halaman PHP, akan langsung tersedia sebuah variabel $user_name yang berisi nilai dari objek form tersebut dan siap untuk diakses, terlepas dengan cara apa form tersebut dikirim (apakah get atau post)

Dalam versi PHP 5.5 bawaan XAMPP yang saya gunakan, Register Global sudah tidak didukung lagi. Namun jika anda menggunakan PHP versi lama dan ingin mencobanya, maka kita harus mengubah sebuah settingan PHP dalam file php.ini. (cara mengubah setingan file php.ini pernah dibahas dalam Cara Merubah File Konfigurasi php.ini)

Bukalah file php.ini, lalu cari temukan baris setingan berikut:

register_globals=off

Kemudian aktifkan fasilitas ini menjadi:

register_globals=on

Page 250: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah diubah, save file php.ini, dan matikan web server apache (dari XAMPP Control panel), lalu aktifkan lagi (restart). Hal ini diperlukan agar web server Apache dapat membaca perubahan setingan PHP yang baru saja kita lakukan.

Selanjutnya, mari kita gunakan kembali halaman form.html sebagai contoh form. Jika anda belum membuah file tersebut, berikut adalah kode HTML yang dibutuhkan:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<!DOCTYPE html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Belajar Form PHP</title>

</head>

<body>

<h2>Tutorial Belajar Form HTML - PHP </h2>

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

</body>

Page 251: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

16 </html>

Dalam percobaan Register Global ini, kita tidak akan melakukan perubahan apa-apa pada halamanform.html, namun pada file proses.php, ubahlah menjadi:

1

2

3

4

5

<?php

echo $nama;

echo "<br />";

echo $email;

?>

Silahkan mencoba form tersebut, dan jika setingan register_globals telah aktif, maka hasil form akan tampil sebagaimana contoh-contoh kita sebelumnya. Anda juga bisa mengubah metode pengiriman form dari method=get menjadi method=post dan halaman proses.php akan menampilkan hasilnya dengan sukses.

Sepintas cara pengaksesan nilai form seperti ini sangat memudahkan penulisan program, namun register global memiliki celah keamanan yang bisa berdampak fatal. Hal ini terjadi karena pengunjung website bisa ‘memasukkan’ variabel PHP ke dalam halaman kita.

Misalkan kita memiliki sebuah halaman login.php yang berfungsi untuk memproses hak akses untuk bisa masuk ke situs, dan kode PHP nya adalah sebagai berikut:

1

2

3

4

<?php

// cek apakah user ada di database

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

mysql_select_db("mahasiswa");

Page 252: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$user_db="SELECT * FROM tabel_user WHERE user='$user_name'";

$match = mysql_num_rows($user);

//jika user valid, ubah variabel $hak_akses menjadi true

if ($match)

{

$hak_akses=true;

}

//jika hak akses true, masuk ke proses utama

if ($hak_akses==true)

{

// kode program jika user valid

}

?>

Sekarang, jika register_global = on, seseorang bisa ‘melompati’ bagian validasi tersebut dengan menuliskan alamat URL berikut:

login.php?hak_akses=true

Dengan mengetikkan alamat tersebut, variabel $hak_akses akan langsung bernilai true di dalam halaman login.php, sehingga seseorang bisa mengakses sistem kita tanpa melalui proses validasiuser. Karena hal inilah, mengaktifkan register global dianggap berbahaya dan tidak disarankan.

Cara Mengakses Nilai Form dengan Register Long Array

Cara lain untuk mengambil nilai dari form adalah menggunakan Register Long Array. Sesuai dengan namanya, Register Long Array memiliki nama variabel yang lebih panjang jika dibandingkan variabel biasa (variabel $_GET dan $_POST).

Untuk mengambil nilai form yang dikirim dengan method=get, kita menggunakan$HTTP_GET_VARS, dan untuk method=post menggunakan $HTTP_POST_VARS.

Sama seperti Register Globals, Register Long Array tidak didukung lagi untuk PHP versi terbaru. Jika anda memiliki PHP versi lama dan ingin mencobanya, lakukan perubahan settingan php.iniuntuk pilihan register_long_arrays=on, seperti gambar berikut ini:

Page 253: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah itu, restart web server apache menggunakan XAMPP Control Panel.

Sebagai contoh, masih menggunakan halaman form.html, kali ini saya akan mengubah halamanproses.php menjadi:

1

2

3

4

5

<?php

echo $HTTP_GET_VARS['nama'];

echo "<br />";

echo $HTTP_GET_VARS['email'];

?>

Dan jika tidak ada masalah, kode program tersebut akan menampilkan hasil inputan form dari halaman form.html.

Register Long Array tidak disarankan lagi karena PHP telah memperkenalkan metoda variabel$_GET dan $_POST yang lebih praktis.

Dalam tutorial kali ini, kita telah mempelajari cara mengakses nilai form menggunakan Register Globals dan Register Long Array. Kedua cara ini sudah tidak digunakan lagi, dan saya membahasnya karena mungkin kita masih menemukan kode PHP lama yang masih menggunakannya.

Dalam tutorial form PHP selanjutnya, kita akan menggunakan variabel super global $_GET dan$_POST untuk menampilkan hasil form.

Tutorial Form PHP Part 5: Cara Membuat Validasi Form PHP (fungsi isset dan empty)

Setelah berhasil mengambil dan menampilkan nilai dari form, hal berikutnya yang harus kita lakukan terhadap data tersebut adalah melakukan proses validasi. Proses validasi dilakukan terhadap nilai yang dimasukkan melalui form.

Page 254: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial kali ini kita akan membahas Cara Membuat Validasi Form dengan PHP menggunakan fungsi isset() dan fungsi empty().

Pentingnya Melakukan Validasi Nilai Form

Nilai yang telah diinput oleh user atau pengunjung web, tidak bisa begitu saja di simpan langsung ke dalam database. Karena kita tidak tahu apakah nilai tersebut telah sesuai dengan nilai yang kita kehendaki. Misalkan apakah nilai tersebut harus berupa angka, atau hanya bisa berupa huruf, atau apakah hanya bisa diinput dalam range tertentu saja.

Dalam kasus yang ekstrim, seorang user bisa saja memasukkan kode script atau tag HTML yang bisa merusak situs kita, hal ini dikenal dengan Cross-site Scripting. Sebuah proses validasi nilai merupakan hal yang sangat penting dalam merancang form. Khusus untuk validasi mencegahCross-site Scripting dan juga HTML injection ini akan saya bahas pada tutorial form PHP berikutnya.

Dalam pembahasan tutorial validasi form ini, saya masih menggunakan contoh halaman form.htmlyang pernah kita buat pada tutorial sebelumnya, berikut adalah kode HTML untuk halaman form.html:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<!DOCTYPE html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Belajar Form PHP</title>

</head>

<body>

<h2>Tutorial Belajar Form HTML - PHP </h2>

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

</body>

</html>

Page 255: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Memeriksa Ketersediaan Variabel Form dengan Fungsi isset()

Validasi pertama yang paling sederhana dan ‘hampir’ selalu ada dalam tiap proses validasi form dalam PHP adalah memeriksa apakah objek form tersebut sudah tersedia atau tidak. Sebagai contoh sederhananya: apakah variabel $_GET[‘nama’] tersedia untuk diproses atau tidak.

Proses memeriksa ‘ketersediaan’ variabel ini menjadi penting karena PHP akan mengeluarkan pesan peringatan jika kita mengakses nilai sebuah variabel yang belum didefenisikan terlebih dahulu.

Sebagai contoh, jika kita mengakses langsung halaman proses.php (tanpa melalui halamanform.html) dan tanpa menambahkan URL (seperti pembahasan pada tutorial Perbedaan Metode Pengiriman Form GET dan POST) PHP akan menampilkan pesan peringatan seperti berikut ini:

Page 256: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Notice: Undefined index adalah pesan error yang terjadi karena kita langsung menampilkan variabel $_GET[’nama’] dan $_GET[’email’] yang memang belum diset sebelumnya.

Untuk memeriksa apakah sebuah objek form telah didefenisikan atau telah di-set sebelumnya, kita bisa menggunakan fungsi bawaan PHP: isset(). Fungsi isset() akan menghasilkan nilai true jika sebuah variabel telah didefenisikan, dan false jika variabel tersebut belum dibuat.

Sebagai langkah antisipasi, saya akan membuat proses validasi untuk menangani variabel $_GETyang belum di-set, berikut adalah modifikasi file proses.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

if (isset($_GET['nama']))

{

echo $_GET['nama'];

}

echo "<br />";

if (isset($_GET['email']))

{

echo $_GET['email'];

}

?>

Sekarang, file proses.php tidak akan menghasilkan error apabila diakses tanpa melalui form.html. Namun perubahan kode tersebut tidak terlalu berguna karena tidak memberikan pesan error yang jelas. Berikut adalah modifikasi file proses.php agar lebih informatif:

1

2

3

4

5

6

7

<?php

if (isset($_GET['nama']) AND isset($_GET['email']))

{

echo $_GET['nama'];

echo $_GET['email'];

}

else

Page 257: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

8

9

10

11

{

echo "Maaf, anda harus mengakses halaman ini dari form.html";

}

?>

Pada kode PHP diatas saya mengharuskan nilai $_GET[‘nama’] dan $_GET[’email’] tersedia, baru nilai ditampilkan, namun jika tidak ada, akan ditampilkan pesan bahwa halaman ini hanya bisa diakses dari form.html.

Memeriksa Apakah Variabel Form Telah Diisi

Fungsi isset() yang kita bahas sebelumnya hanya memeriksa apakah sebuah objek form ada atau tidak. Fungsi isset() tetap bernilai true meskipun user tidak mengisi form sama sekali (variabel form bernilai kosong, namun variabel tersebut dianggap telah di-set).

Untuk memeriksa apakah sebuah objek form telah diisi atau tidak, kita bisa menggunakan fungsi:empty().

Fungsi empty() akan menghasilkan nilai false jika sebuah variabel telah diisi, dan bernilai true jika variabel tersebut belum diisi. Dengan menggunakan stuktur IF dan fungsi empty(), kita bisa membuat logika validasi objek form mana saja yang dianggap perlu (harus diisi) dan mana yang boleh dikosongkan. Dan kemudian menampilkan pesan error yang sesuai.

Sebagai contoh, saya akan memodifikasi file proses.php agar menampilkan pesan error jika kotak input nama tidak diisi. Berikut adalah kode PHP pada halaman proses.php:

1

2

3

4

5

<?php

if (isset($_GET['nama']) AND isset($_GET['email']))

{

$nama=$_GET['nama'];

$email=$_GET['email'];

Page 258: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

}

else

{

die("Maaf, anda harus mengakses halaman ini dari form.html");

}

if (!empty($nama))

{

echo "Nama: $nama <br /> Email: $email";

}

else

{

die("Maaf, anda harus mengisi nama");

}

?>

Dalam kode PHP diatas, saya memodifikasi beberapa bagian kode program.

Pada logika IF pertama, saya melakukan pengecekan apakah variabel $_GET[‘nama’] dan$_GET[‘email’] tersedia atau tidak. Jika tersedia maka pindahkan nilainya ke variabel $nama dan$email agar lebih mudah untuk diproses. Namun jika tidak, fungsi die() akan menghentikan proses dan menampilkan pesan kesalahan.

Pada logika IF kedua, saya memeriksa apakah variabel $nama kosong atau tidak dengan fungsi!empty(). Fungsi !empty($nama) akan menghasilkan nilai true hanya jika variabel $nama tidak kosong (perhatikan tanda ! sebagai pembalik logika empty()). Namun jika $nama ternyata kosong (tidak diisi), maka tampilkan pesan kesalahan.

Page 259: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Menyeleksi Tipe Data Objek Form

Setelah objek form dipastikan tersedia, tidak kosong, validasi berikutnya yang biasanya dilakukan adalah memastikan tipe data dan range data yang diinput oleh user.

Untuk mengecek tipe data sebuah variabel, PHP menyediakan beberapa fungsi tergantung tipe datanya, yakni fungsi is_string(), is_int(),is_float(),is_numeric(),is_bool(), is_array(), danis_object(). Sesuai dengan namanya, masing-masing fungsi tersebut akan mengecek tipe data dari variabel yang ditest.

Diantara fungsi-fungsi diatas, fungsi is_numeric() mungkin butuh sedikit penjelasan. Fungsiis_numeric() akan mengecek apakah sebuah tipe data merupakan angka baik itu float atauinteger.

Khusus objek form variabel angka seperti umur, biasanya selain menyeleksi apakah nilainya berupa angka integer, kita mungkin juga menambahkan aturan bahwa nilai umur harus diatas 17 tahun. Untuk menambahkan fungsi ini, fungsi is_int() dapat dikombinasikan dengan struktur IF.

Sebagai contoh saya akan menambahkan validasi untuk tag input nama bahwa nama tidak boleh diisi dengan angka. Untuk keperluan ini saya akan menggunakan fungsi is_numeric(). Berikut adalah modifikasi file proses.php:

1

2

3

4

5

6

7

8

<?php

if (isset($_GET['nama']) AND isset($_GET['email']))

{

$nama=$_GET['nama'];

$email=$_GET['email'];

}

else

{

Page 260: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

die("Maaf, anda harus mengakses halaman ini dari form.html");

}

if(empty($nama))

{

die("Maaf, anda harus mengisi nama");

}

else

{

if (is_numeric($nama))

{

die("Maaf, nama harus berupa huruf");

}

else

{

echo "Nama: $nama <br /> Email: $email";

}

}

?>

Dalam kode diatas, saya menambahkan 1 lagi logika IF untuk menyeleksi apakah variabel $namaberisi angka numerik (integer atau float). Jika $nama bertipe numerik, maka tampilkan pesan error.

Page 261: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Di dalam tutorial form PHP kali ini kita telah mempelajari cara menvalidasi nilai inputan form. Namun apa yang telah kita pelajari disini hanya sebagian kecil dari proses validasi yang sebenarnya harus dilakukan. Misalnya, untuk menfilter variabel $nama diatas, akan lebih cocok menggunakanregular expression daripada fungsi is_numeric(), namun yang penting kita telah bisa ’menangkap’cara pembuatan validasi form.

Di dalam tutorial berikutnya, masih berkaitan dengan proses validasi form, kita akan mempelajari tentang Cara Mencegah Cross-site Scripting dan HTML injection.

Tutorial Form PHP Part 6: Validasi Form untuk Mencegah Cross-site Scripting dan HTML injection

Di dalam tutorial Form PHP sebelumnya, kita telah membahas cara melalakukan pengecekan variabel form apakah telah tersedia untuk diproses (dengan fungsi isset()), apakah variabel tersebut kosong (dengan fungsi empty()), atau apakah variabel form tersebut memiliki tipe data tertentu.

Masih berkaitan dengan proses validasi form, kali ini kita akan membahas tentang cara mencegah user untuk memasukkan kode ’khusus’ seperti JavaScript atau kode HTML kedalam form. Dalam tutorial kali ini kita akan mempelajari Cara Validasi Form untuk Mencegah Cross-site Scripting dan HTML injection.

Pengertian Cross-site Scripting dan HTML injection

Cross-site Scripting atau sering disingkat dengan XSS adalah jenis serangan ke sebuah situs dengan cara ’menyisipkan’ kode script (biasanya JavaScript) ke dalam sebuah situs. Hal ini hanya akan berhasil jika situs tersebut memiliki fitur untuk menampilkan kembali isian form ke web browser, seperti form komentar. Sedangkan HTML injection adalah istilah yang lebih spesifik kepada cara ’menyisipkan’ kode HTML kedalam sebuah situs.

Sebagai programmer web, penanganan untuk Cross-site Scripting maupun HTML injectionmerupakan hal yang sangat penting, terutama dalam pembuatan kode form dengan PHP. Karena form pada dasarnya dapat diinput oleh siapa saja, maka kita perlu memproteksi situs dari kode-kode berbahaya yang bisa diinput oleh user melalui form.

Contoh Cross-site Scripting dan HTML injection

Agar lebih memahami maksud dari Cross-site Scripting dan HTML injection, kita akan coba menginputnya melalui contoh halaman form.html dan proses.php dari tutorial sebelumnya.

Silahkan buka halaman form kita (form.html), lalu input kode dibawah ini kedalam dalam salah satu kotak inputan form:

<script>alert('Selamat datang di duniailkom')</script>

Dan anda akan mendapati tampilan berikut:

Page 262: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tampilan tersebut adalah hasil dari kode JavaScript yang baru saja kita input melalui form. Kode tersebut dapat berjalan karena pada halaman proses.php kita langsung menampilkan data yang diinput oleh user tanpa melakukan proses filter.

Hal ini sangat berbahaya karena dengan kode JavaScript seseorang bisa melakukan ’hampir segalanya’ dengan situs kita. Tidak hanya sekedar menampilkan ucapan selamat seperti kode diatas, tetapi seseorang juga bisa merubah background, mengubah tampilan seluruh web, bahkan mengarahkan pengunjung ke situs lain (redirect).

Sebagai contoh lainnya, seseorang bisa menginput kode berikut ke dalam kotak input nama:

Dunia <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> Ilkom

Page 263: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Walaupun kode diatas tidak mengandung script, namun kode HTML tersebut akan membuat tampilan hasil form menjadi berantakan (bayangkan jika kita memiliki halaman yang berisi tabel berisi nama-nama seluruh user, dan kode diatas akan menghancurkan desain web yang telah dirancang).

Cara Mencegah Cross-site Scripting dan HTML injection

Salah satu cara sederhana untuk menghindari Cross-site Scripting dan HTML injection adalah dengan membuat karakter-karakter yang memiliki ’makna’ di dalam HTML dan JavaScript untuk diubah menjadi named entity, yaitu menkonversi karakter khusus seperti < menjadi &lt;, dan karakter > menjadi &gt;. Atau cara lainnya adalah dengan menghilangkan sama sekali seluruh tag HTML atau script dari inputan user.

Untuk kedua keperluan ini, PHP memiliki fungsi htmlspecialchars() dan fungsi strip_tags().

Fungsi htmlspecialchars() akan mengkonversi 4 karakter ’khusus’ HTML menjadi named entitysehingga tidak akan di ’proses’ oleh web browser. Keempat karakter tersebut adalah: <, >, & dan “. Keempat karakter khusus inilah yang membuat web browser akan menerjemahkan sebuah string menjadi kode HTML/JavaScript.

Sedangkan fungsi strip_tags() akan menghapus seluruh tag HTML dari inputan user.

Page 264: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai contoh, kita akan mengupdate halaman proses.php agar bisa mencegah seseorang menyisipkan Cross-site Scripting dan HTML injection. Berikut adalah perintah PHP pada file proses.php:

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

<?php

if (isset($_GET['nama']) AND isset($_GET['email']))

{

$nama=$_GET['nama'];

$email=$_GET['email'];

$nama=htmlspecialchars($nama);

$email=strip_tags($email);

}

else

{

die("Maaf, anda harus mengakses halaman ini dari form.html");

}

if(empty($nama))

{

die("Maaf, anda harus mengisi nama");

}

else

{

if (is_numeric($nama))

{

die("Maaf, nama harus berupa huruf");

}

else

{

echo "Nama: $nama <br /> Email: $email";

}

Page 265: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

28

29

}

?>

Di dalam kode diatas, saya hanya menambahkan fungsi htmlspecialchars() untuk variabel $nama, dan fungsi strip_tags () untuk variabel $email.

Untuk mengujinya, silahkan anda coba memasukkan kode JavaScript kita sebelumnya ke dalam kotak input nama, yakni:

<script> alert('Selamat datang di duniailkom')</script>

dan nilai berikut ke dalam kotak input email:

Dunia <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> Ilkom

Kemudian perhatikan hasil tampilan dari proses.php. Seperti yang dirancang, kali ini hasil inputan tersebut akan

Page 266: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

difilter agar lebih aman.

Jika anda melihat kode yang dihasilkan, maka akan terlihat bahwa fungsi htmlspecialchars() akan mengubah

<script> alert('Selamat datang di duniailkom')</script>

menjadi

&lt;script&gt; alert('Selamat datang di duniailkom')&lt;/script&gt;

Perhatikan bahwa karakter khusus seperti < dan > telah diubah menjadi named entity.

Sedangkan untuk kotak inputan email, seluruh tag <br> telah di filter dan dihapus secara otomatis.

Validasi dengan htmlspecialchars atau strip_tags?

Pilihan apakan menggunakan fungsi htmlspecialchars() atau strip_tags() tergantung kepada alur logika form yang kita buat. Untuk isian form seperti user_name, email, dan alamat akan lebih aman jika kita tidak membolehkan tag HTML sama sekali (menggunakan fungsi strip_tags()), namun untuk kotak form komentar, mungkin kita akan membolehkan beberapa tag untuk diproses seperti tag <b>, tag <i>, atau mungkin juga tag <a>.

Fungsi strip_tags() memiliki argumen kedua yang bisa diisi dengan tag-tag HTML apa saja yang ’dibolehkan’. Jika kita membolehkan tag <a>, <b> dan tag <i> untuk variabel $komentar, maka penulisannya bisa dibuat menjadi:

$komentar=strip_tags($komentar, '<a><b><i>').

Page 267: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sedangkan untuk fungsi htmlspecialchars(), jika anda ingin karakter tanda kutip ( ’ ) juga diubah menjadi named entity, kita bisa menambahkan 1 argumen optional untuk fungsihtmlspecialchars(), dengan pilihan ENT_QUOTES. Sehingga dalam contoh variabel $nama, kita bisa menulisnya menjadi:

$nama=htmlspecialchars($nama, ENT_QUOTES);

Dengan demikian, jika diinput:

<script>alert('Selamat datang di duniailkom')</script>

Akan diproses menjadi:

&lt;script&gt; alert(&#039;Selamat datang di duniailkom&#039;)&lt;/script&gt;

Perhatikan bahwa karakter kutip ( ‘ ) diganti menjadi kode &#039.

Mengenal Fungsi htmlentities()

Selain fungsi htmlspecialchars() dan fungsi strip_tags(), dalam pembahasan mengenai validasi dan karakter entity HTML, PHP masih memiliki 1 lagi fungsi yang sering dipakai, yakni fungsihtmlentities().

Fungsi htmlentities() akan mengkonversi seluruh karakter khusus di dalam sebuah string menjadi entity, tidak hanya karakter <, >, & dan ” seperti pada fungsi htmlspecialchars(). Fungsihtmlentities() akan memproses karakter khusus lain seperti: ™, ©, ®, atau Σ menjadi named entity.

Sebagai contoh, berikut adalah hasil konversi fungsi htmlentities():

1

2

3

4

<?php

$string = "Hâäållòó Dunìaîlkom™©";

echo htmlentities($string);

?>

Dan berikut adalah hasilnya:

Page 268: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Seperti yang terlihat bahwa fungsi htmlentities() akan mengubah seluruh karakter khusus menjadi named entity HTML.

Dalam tutorial kali ini, kita telah membahas penggunaan fungsi htmlspecialchars(), fungsistrip_tags() dan fungsi htmlentities() untuk membuat form kita lebih aman. Dalam tutorial berikutnya, kita akan membahas trik dalam menampilkan pesan kesalahan di halaman form.html, bukan di halaman proses.php seperti yang kita tampilkan pada tutorial ini dan tutorial form PHP sebelumnya.

Tutorial Form PHP Part 7: Cara Mengirim Variabel (Pesan) Antar Halaman PHP

Dari cara penanganan objek form dengan method=GET, kita dapat melihat bahwa HTMLmengirimkan ’isi’ form melalui alamat URL. Cara pengiriman seperti ini bisa kita manfaatkan sebagai sarana mengirim pesan (dalam bentuk variabel ) antar halaman PHP . Jika ditambah dengan fungsiheader(), kita bisa memanfaatkan fitur ini untuk menampilkan pesan kesalahan dari sebuah form.

Cara Mengirim Variabel Antar Halaman PHP

Dalam PHP terdapat beberapa cara untuk mengirim variabel antar halaman. Salah satunya adalah dengan memanfaatkan cara pengiriman form dengan method=GET. Jika kita mengirim form dengan metode GET, maka hasil dari form akan ditambahkan di dalam menggunakan variabel superglobal $_GET.

Sebagai contoh, jika di dalam form terdapat kotak input dengan atribut name=user_name yang diisi dengan ’duniailkom’, maka ketika dikirim untuk diproses ke halaman proses.php, di dalamURL akan menjadi:

proses.php?user_name=duniailkom

dan didalam halaman proses.php, variabel $_GET[’user_name’] akan berisi ’duniailkom’.

Page 269: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dengan cara ini kita bisa mengirim variabel dari sebuah halaman ke halaman lain. Misalkan kita membuat sebuah kondisi logika dengan PHP, dan jika logikanya salah maka tampilkan sebuah link yang menyatakan bahwa alamat tidak lengkap. Pengiriman pesan ini bisa ditulis sebagai berikut:

proses.php?pesan=alamat+tidak+lengkap.

Ketika user men-klik link tersebut, pada halaman proses.php akan memiliki sebuah variabel$_GET[’pesan’] yang berisi: ’alamat tidak lengkap’.

Kita bisa memanfaatkan ini untuk berbagai hal, dan dalam tutorial kali ini kita akan menggunakan cara ini untuk menampilkan pesan kesalahan dari form.

Redirect halaman dengan fungsi header(Location:)

Fungsi header() di dalam PHP digunakan untuk memproses HTTP header. Fungsi header()memiliki banyak fitur, namun yang akan kita manfaatkan adalah fitur untuk mengirim user ke halaman lain atau dikenal dengan istilah: redirect.

Untuk ’mengirim’ user ke sebuah halaman, kita menggunakan Location:halaman.html sebagai argumen fungsi header(). Misalkan kita ingin mengirim user ke halaman pendaftaran.html pada situs duniailkom.com, maka penulisan fungsi header() adalah sebagai berikut:

header("Location: http://www.duniailkom.com/pendaftaran.html")

Halaman yang dituju tidak harus berupa halaman HTML, tetapi juga halaman PHP, atau bahkan file multimedia seperti gambar. Fitur ini akan kita manfaatkan untuk menampilkan pesan kesalahan form dalam PHP.

Cara Menampilkan Pesan Kesalahan Form

Dalam tutorial sebelumnya tentang Validasi Form untuk Mencegah Cross-site Scripting dan HTML injection, kita telah membuat proses validasi form dan menampilkan pesan kesalahan form berdasarkan kondisi yang terjadi. Namun pesan kesalahan tersebut hanya ditampilkan pada halaman proses.php. Jika user ingin mengubah isian form, ia terpaksa kembali kehalamanform.html untuk memperbaiki kesalahan form tersebut dengan cara mengetik manual di web browser.

Page 270: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Salah satu fitur pengisian form yang umum digunakan adalah ketika isian form ditemukan kesalahan, maka user akan dikembalikan ke halaman awal form, beserta pesan kesalahan. Untuk menghasilkan fitur seperti ini, kita akan memanfaatkan fungsi PHP: header().

Kembali menggunakan halaman form.html dan proses.php yang kita gunakan dalam tutorial-tutorial sebelumnya, kali ini saya akan memodifikasi halaman proses.php agar bisa memanfaatkan fungsi header(). Berikut adalah modifikasi file proses.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

if (isset($_GET['nama']) AND isset($_GET['email']))

{

$nama=$_GET['nama'];

$email=$_GET['email'];

$nama=htmlspecialchars($nama);

$email=strip_tags($email);

}

else

{

header("Location:form.php?error=variabel_belum_diset");

}

if(empty($nama))

{

header("Location:form.php?error=nama_kosong");

}

else

{

if (is_numeric($nama))

{

header("Location:form.php?error=nama_harus_huruf");

}

else

Page 271: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

25

26

27

28

29

{

echo "Nama: $nama <br /> Email: $email";

}

}

?>

Dari kode proses.php kita sebelumnya, saya hanya mengubah bagian error menggunakan fungsiheader(). Namun perhatikan bahwa saya mengirimkan variabel error kepada halaman form.php, pesan inilah yang akan diproses pada halaman form.php.

Untuk halaman form.html, saya akan mengubah nama file menjadi form.php. Perubahan ini diperlukan karena pada halaman form.html memerlukan proses PHP untuk menangani variabel error yang dikirim dari halaman proses.php.

Berikut adalah kode dari halaman form.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

//ambil nilai variabel error

if (isset($_GET['error']))

{

$error=$_GET['error'];

}

else

{

$error="";

}

//siapkan pesan kesalahan

$pesan="";

if ($error=="variabel_belum_diset")

{

$pesan="<h3>Maaf, anda harus mengakses halaman ini dari form.php</h3>";

}

if ($error=="nama_kosong")

Page 272: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

{

$pesan="<h3>Maaf, anda harus mengisi nama</h3>";

}

if ($error=="nama_harus_huruf")

{

$pesan="<h3>Maaf, nama harus berupa huruf</h3>";

}

?>

<!DOCTYPE html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Belajar Form PHP</title>

</head>

<body>

<h2>Tutorial Belajar Form HTML - PHP </h2>

<?php

echo $pesan;

?>

<form action="proses.php" method="get">

Nama: <input type="text" name="nama" />

<br />

E-Mail: <input type="text" name="email" />

<br />

<input type="submit" value="Proses Data" >

</form>

</body>

</html>

Page 273: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pada halaman form.php saya menambahkan beberapa kode PHP di awal halaman. Kode PHP ini berfungsi untuk menangani variabel error yang dikirimkan dari halaman proses.php.

Setelah memindahkan variabel $_GET[‘error’] ke dalam variabel $error agar mudah diakses, selanjutnya saya membuat beberapa logika IF untuk memeriksa pesan error, dan memberikan ‘pesan kesalahan’ yang ingin ditampilkan kedalam variabel $pesan.

Variabel $pesan ini kemudian akan disisipkan di awal tag form.

Untuk mengujinya, silahkan anda mencoba form.php tersebut dan klik tombol ‘Proses Data’ tanpa memberikan input apa-apa di dalam form, dan sekarang pesan kesalahan akan tampil di halamanform.php.

Penanganan cara kesalahan form seperti ini membuat form menjadi lebih user friendly. Jika anda memahami CSS, biasanya pesan kesalahan ini ditampilkan dengan style yang berbeda dari judul form agar lebih ‘pas’, namun dalam tutorial ini anda setidaknya telah mengetahui trik untukmenampilkan pesan kesalahan form dengan PHP. Silahkan berekplorasi dan menambahkan objek-objek form lain sebagai bahan latihan.

Page 274: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial Pemograman Berbasis Objek PHP

Pemograman Berbasis Objek atau Object Oriented Programming (OOP) merupakan standar pemograman modern saat ini. PHP sebagai bahasa pemograman web paling populer juga memiliki fitur lengkap dalam pemograman Objek.

Object Oriented Programming (OOP)  terkesan sukar dipelajari, namun duniailkom mencoba menyajikan tutorial lengkap mengenai OOP di dalam PHP. Kita akan mulai mempelajari pengertianObject, Class, Property dan Method, kemudian akan masuk membahas konsep OOP yang lebih spesifik seperti encapsulation, inheritance, dan polymorfisme.

Tutorial Belajar OOP PHP: Pemrograman Berbasis Objek PHP

Dalam sesi tutorial PHP kali ini, kita akan membahas salah satu aspek terpenting dalam PHP, yakni tentang Pemrograman Berbasis Objek (Object Oriented Programming), atau sering disingkat denganOOP PHP.

Apa itu Pemrograman Berbasis Objek?

Object Oriented Programming atau dalam bahasa indonesia diartikan Pemrograman Berbasis Objek, adalah salah satu cara membuat program (programming paradigm) dengan memecah alur program menjadi modul-modul sederhana yang disebut dengan objek. Setiap objek akan memiliki fungsi dan tugas tersendiri. OOP berbeda dengan prosedural programming yang memecah program menjadi fungsi-fungsi/prosedural.

Pemrograman Berbasis Objek dengan PHP

Saat ini, Object Oriented Programming (OOP) telah menjadi standar dalam dunia pemograman, termasuk PHP. Walaupun kita bisa membuat program PHP tanpa menggunakan OOP sama sekali, namun untuk membuat aplikasi ‘real world’ yang fleksibel, programmer PHP akan beralih menggunakan OOP.

Jika anda telah menguasai pemrograman PHP dasar seperti tipe data, array, dan  fungsi, mempelajaripemrograman objek PHP adalah langkah berikutnya. Fitur dan desain kode yang ditawarkan dengan membuat program menggunakan objek akan sangat memudahkan kita dalam merancang aplikasi website modern dan memiliki fleksibilitas yang tinggi.

Terlebih jika anda memang ‘serius’ menguasai PHP, memahami pengertian dan cara penggunaan OOP dalam PHP sangat penting. Aplikasi framework PHP seperti Code Igniter, Yii Framework, Symfonydan Laravel, semuanya menggunakan OOP.

Duniailkom akan mencoba menyajikan tutorial dasar tentang Object Oriented Programming atauPemrograman Berbasis Objek PHP. Semoga tutorial ini dapat menjadi bahan referensi untuk mempelajari pemrograman Objek, khususnya pemrograman Objek dengan PHP.

Berikut adalah index daftar tutorial belajar Pemrograman Berbasis Objek PHP:

Page 275: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Tutorial OOP PHP: Pemrograman Berbasis Objek PHP

Tutorial OOP PHP Part 1: Pengertian Pemrograman Berbasis Objek

Tutorial OOP PHP Part 2: Pengertian Class, Object, Property dan Method

Tutorial OOP PHP Part 3: Cara Membuat dan Mengakses Objek dalam PHP

Tutorial OOP PHP Part 4: Pengertian Enkapsulasi Objek (Public, Protected dan Private)

Tutorial OOP PHP Part 5: Pengertian dan Fungsi Variabel $this dalam Pemrograman Objek

Tutorial OOP PHP Part 6: Cara Penggunaan Pseudo-Variable $this dalam Objek PHP

Tutorial OOP PHP Part 7: Cara Membuat Method dalam Pemrograman Objek PHP

Tutorial OOP PHP Part 8: Pengertian Constructor dan Destructor

Tutorial OOP PHP Part 9: Pengertian Inheritance (Pewarisan)

Tutorial OOP PHP Part 10: Cara Mengakses Property dan Method Parent Class

Tutorial OOP PHP Part 11: Cara Mengakses Constructor dan Destructor Parent Class

Tutorial OOP PHP Part 12: Pengertian Static Property dan Static Method

Tutorial OOP PHP Part 13: Pengertian Konstanta Class dalam Pemrograman Objek

Tutorial OOP PHP Part 14: Pengertian Final Method dan Final Class Pemrograman Objek

Tutorial OOP PHP Part 15: Pengertian Abstract Class dan Abstract Method PHP

Tutorial OOP PHP Part 16: Pengertian Object Interface Dalam Pemrograman Berbasis Objek

Tutorial OOP PHP Part 17: Pengertian Polimorfisme dalam Pemrograman Objek PHP

Tutorial Belajar OOP PHP Part 1: Pengertian Pemrograman Berbasis Objek

Jika anda telah biasa membuat program secara prosedural, yakni menulis program-program dari baris pertama sampai dengan baris terakhir secara berurutan, konsep pemrograman berbasis objekmungkin sedikit susah dipahami. Dalam tutorial pertama tentang OOP PHP ini, kita akan membahas pengertian Pengertian Pemrograman Berbasis Objek dalam PHP.

Pengertian Pemrograman Berbasis Objek

Pemrograman Berbasis Objek atau Object Oriented Programming (OOP) adalah sebuah tata cara pembuatan program (programming paradigm) dengan menggunakan konsep “objek” yang memiliki data (atribut yang menjelaskan tentang objek) dan prosedur (function) yang dikenal denganmethod. (http://en.wikipedia.org/wiki/Object-oriented_programming)

Dalam pengertian sederhananya, OOP adalah konsep pembuatan program dengan memecah permasalahan program dengan menggunakan objek. Objek dapat diumpamakan dengan ‘fungsi 

Page 276: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

khusus’ yang bisa berdiri sendiri. Untuk membuat sebuah aplikasi, berbagai objek akan saling bertukar data untuk mencapai hasil akhir.

Berbeda dengan konsep fungsi atau ‘function’ di dalam pemrograman, sebuah objek bisa memiliki data dan function tersendiri. Setiap objek ditujukan untuk mengerjakan sebuah tugas, dan menghasilkan nilai akhir untuk selanjutnya dapat ditampilkan atau digunakan oleh objek lain.

Fungsi Pemrograman Berbasis Objek dalam PHP

PHP bukan bahasa pemrograman yang ‘murni’ berbasis objek seperti Java. Bahkan, konsep OOPdalam PHP baru hadir dalam PHP versi 4, dan disempurnakan oleh PHP versi 5. Dengan kata lain,OOP di PHP merupakan ‘fitur tambahan’. Anda bisa membuat situs web dengan PHP tanpa menggunakan objek sama sekali.

Dalam studi pemrograman, pembuatan program dalam PHP tanpa menggunakan objek disebut juga dengan pemrograman prosedural atau pemrograman fungsional. Dikenal dengan pemrograman prosedural, karena kita memecah kode program menjadi bagian-bagian atau fungsi-fungsi kecil, kemudian menyatukannya untuk menghasilkan nilai akhir.

Dengan membuat program secara prosedural, aplikasi bisa dibuat dengan cepat dan mudah dipelajari jika dibandingkan dengan pemrograman berbasis objek (bagi anda yang pernah mempelajari Java, tentu telah ‘melewati’ hal ini :) ). Keuntungan pemrograman berbasis objek baru terasa ketika program tersebut telah ‘besar’ atau kita bekerja dengan tim untuk membagi tugas. Konsep ‘objek’ untuk memisahkan program menjadi bagian-bagian yang berdiri sendiri akan memudahkan dalam membuat program.

Saya tidak akan panjang lebar menjelaskan tentang keuntungan atau kerugian menggunakan OOP. Sebagai programmer web, OOP adalah salah satu makanan wajib. Pembuatan website modern saat ini akan lebih mudah jika menggunakan template kode program yang dikenal dengan framework. Daripada kita membuat situs mulai dari awal, menggunakan framework akan mempercepat proses kerja. Dan, framework PHP hampir semuanya dibuat menggunakan OOP.

Dalam tutorial pertama tentang OOP PHP ini, kita telah mempelajari tentang pengertian pemrograman berbasis objek. Dalam tutorial selanjutnya, kita akan mempelajari tentang pengertian class, object, property dan method dalam PHP.

Tutorial Belajar OOP PHP Part 2: Pengertian Class, Object, Property dan Method

Pemrograman berbasis objek tidak hanya berisi ‘object’. Dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang pengertian class, object, property dan method. Keempat ‘keyword’ inilah yang menjadi pondasi dasar dari Pemrograman Berbasis Objek. Selain pengertian, kita juga akan mempelajari cara penulisannya dengan PHP.

Page 277: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pengertian Class dalam Pemrograman Berbasis Objek

Class adalah ‘cetak biru’ atau ‘blueprint’ dari object. Class digunakan hanya untuk membuat kerangka dasar. Yang akan kita pakai nantinya adalah hasil cetakan dari class, yakni object.

Sebagai analogi, class bisa diibaratkan dengan laptop atau notebook. Kita tahu bahwa laptopmemiliki ciri-ciri seperti merk, memiliki keyboard, memiliki processor, dan beberapa ciri khas lain yang menyatakan sebuah benda tersebut adalah laptop. Selain memiliki ciri-ciri, sebuah laptop juga bisa dikenakan tindakan, seperti: menghidupkan laptop atau mematikan laptop.

Class dalam analogi ini adalah gambaran umum tentang sebuah benda. Di dalam pemrograman nantinya, contoh class seperti: koneksi_database dan profile_user.

Di dalam PHP, penulisan class diawali dengan keyword class, kemudian diikuti dengan nama dari class. Aturan penulisan nama class sama seperti aturan penulisan variabel dalam PHP, yakni diawali dengan huruf atau underscore untuk karakter pertama, kemudian boleh diikuti dengan huruf, underscore atau angka untuk karakter kedua dan selanjutnya. Isi dari class berada dalam tanda kurung kurawal.

Berikut adalah contoh penulisan class dalam PHP:

1

2

3

4

5

<?php

class laptop {

// isi dari class laptop...

}

?>

Pengertian Property dalam Pemrograman Berbasis Objek

Property (atau disebut juga dengan atribut) adalah data yang terdapat dalam sebuah class. Melanjutkan analogi tentang laptop, property dari laptop bisa berupa merk, warna, jenis processor, ukuran layar, dan lain-lain.

Jika anda sudah terbiasa dengan program PHP, property ini sebenarnya hanyalah variabel yang terletak di dalam class. Seluruh aturan dan tipe data yang biasa diinput kedalam variabel, bisa juga diinput kedalam property. Aturan tata cara penamaan property sama dengan aturan penamaanvariabel.

Berikut adalah contoh penulisan class dengan penambahan property:

1 <?php

Page 278: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

4

5

6

7

8

class laptop {

var $pemilik;

var $merk;

var $ukuran_layar;

// lanjutan isi dari class laptop...

}

?>

Dari contoh diatas, $merk, $ukuran_layar dan $jenis_processor adalah property dari class laptop. Seperti yang kita lihat, penulisan property di dalam PHP sama dengan cara penulisan variabel, yakni menggunakan tanda dollar ($). Sebuah class tidak harus memiliki property.

Pengertian Method dalam Pemrograman Berbasis Objek

Method adalah tindakan yang bisa dilakukan didalam class. Jika menggunakan analogi class laptopkita, maka contoh method adalah: menghidupkan laptop, mematikan laptop, mengganti cover laptop, dan berbagai tindakan lain.

Method pada dasarnya adalah function yang berada di dalam class. Seluruh fungsi dan sifat function bisa diterapkan kedalam method, seperti argumen/parameter, mengembalikan nilai (dengan keyword return), dan lain-lain.

Berikut adalah contoh penulisan class dengan penambahan method:

1

2

3

4

5

6

7

8

9

10

11

<?php

class laptop {

function hidupkan_laptop() {

//... isi dari method hidupkan_laptop

}

function matikan_laptop() {

//... isi dari method matikan_laptop

}

... //isi dari class laptop

Page 279: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

12

13

}

?>

Dari contoh diatas, function hidupkan_laptop() dan function matikan_laptop() adalah method dari class laptop. Seperti yang kita lihat, bahwa penulisan method di dalam PHP sama dengan cara penulisan function. Sebuah class tidak harus memiliki method.

Pengertian Object dalam Pemrograman Berbasis Objek

Object atau Objek adalah hasil cetak dari class, atau hasil ‘konkrit’ dari class. Jika menggunakan analogi class laptop, maka objek dari class laptop bisa berupa: laptop_andi, laptop_anto, laptop_duniailkom, dan lain-lain. Objek dari class laptop akan memiliki seluruh ciri-ciri laptop, yaituproperty dan method-nya.

Proses ‘mencetak’ objek dari class ini disebut dengan ‘instansiasi’ (atau instantiation dalam bahasainggris). Pada PHP, proses instansiasi dilakukan dengan menggunakan keyword ‘new’. Hasil cetakanclass akan disimpan dalam variabel untuk selanjutnya digunakan dalam proses program.

Sebagai contoh, berikut adalah cara membuat objek laptop_andi dan laptop_anto yang dibuat dariclass laptop:

1

2

3

4

5

6

7

8

<?php

class laptop {

//... isi dari class laptop

}

$laptop_andi = new laptop();

$laptop_anto = new laptop();

?>

Dari contoh diatas, $laptop_andi dan $laptop_anto merupakan objek dari class laptop. Kedua objek ini akan memiliki seluruh property dan method yang telah dirancang dari class laptop.

Dalam tutorial kali ini kita telah membahas tentang pengertian dan cara penggunaan class, property, method, dan object. Dalam tutorial OOP PHP berikutnya kita akan membahas lebih dalam tentang cara membuat dan mengakses objek dalam PHP.

Tutorial Belajar OOP PHP Part 3: Cara Membuat dan Mengakses Objek dalam PHP

Page 280: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Melanjutkan tutorial belajar Objek Oriented Programming (OOP) PHP, jika sebelumnya kita telah mempelajari Pengertian Class, Object, Property dan Method, kali ini kita akan membahas Cara Membuat dan Mengakses Objek dalam PHP.

Cara Membuat Objek dalam PHP

Istilah Objek dalam Objek Oriented Programming (OOP), sebenarnya terdiri dari class, property, method dan object. Keempat istilah ini telah kita pelajari dalam tutorial sebelumnya. Merangkum apa yang telah kita pelajari, berikut adalah contoh cara pembuatan objek di dalam PHP:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

var $pemilik;

var $merk;

var $ukuran_layar;

// buat method untuk class laptop

function hidupkan_laptop() {

return "Hidupkan Laptop";

}

function matikan_laptop() {

return "Matikan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

?>

Page 281: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam kode diatas, kita telah membuat sebuah class dengan nama laptop, lengkap dengan propertydan menthod-nya. Kemudian saya membuat 1 buah objek dari class laptop dengan nama$laptop_anto pada baris terakhir.

Walaupun dalam kode diatas kita telah membuat objek, objek tersebut belum menampilkan apa-apa, karena class laptop belum berisi data apapun. Kita akan segera mempelajari cara mengakses ‘isi’ dari class dalam PHP.

Cara Mengakses Objek dalam PHP

Cara mengakses objek yang saya maksud sebenarnya adalah cara untuk mengakses ‘isi’ dari sebuahobjek, yakni property dan method-nya. Agar lebih mudah dipahami, berikut adalah revisi contohclass laptop sebelumnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

var $pemilik;

var $merk;

var $ukuran_layar;

// buat method untuk class laptop

function hidupkan_laptop() {

return "Hidupkan Laptop";

}

Page 282: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

function matikan_laptop() {

return "Matikan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

// set property

$laptop_anto->pemilik="Anto";

$laptop_anto->merk="Asus";

$laptop_anto->ukuran_layar="15 inchi";

// tampilkan property

echo $laptop_anto->pemilik;

echo "<br />";

echo $laptop_anto->merk;

echo "<br />";

echo $laptop_anto->ukuran_layar;

echo "<br />";

// tampilkan method

echo $laptop_anto->hidupkan_laptop();

echo "<br />";

echo $laptop_anto->matikan_laptop();

?>

Jika anda menjalankan kode program di atas, berikut adalah hasil yang didapat:

1 Anto

Page 283: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

4

5

Asus

15 inchi

Hidupkan Laptop

Matikan Laptop

Mari kita bahas kode program diatas:

1 class laptop {

Baris awal contoh kode program kita adalah pendefenisian sebuah class dengan nama laptop. Kurung kurawal menandakan awal dari class.

1

2

3

var $pemilik;

var $merk;

var $ukuran_layar;

Selanjutnya, tiga baris diatas merupakan pendefenisian variabel class, atau dikenal denganproperty. Property tidak lain hanya variabel biasa yang berada di dalam class. Keyword vardigunakan untuk deklarasi variabel di dalam class.

function hidupkan_laptop() {

return "Hidupkan Laptop";

}

function matikan_laptop() {

return "Matikan Laptop";

}

2 buah fungsi diatas adalah method dari class. Jika anda telah mengenal cara pembuatan function, kedua contoh ini hanyalah fungsi biasa yang akan mengembalikan nilai berupa string. Pembahasan

Page 284: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

tentang cara penggunaan function di dalam PHP pernah kita bahas pada Tutorial PHP Cara Penulisan dan Pembuatan Fungsi PHP.

1 $laptop_anto = new laptop();

Baris ini merupakan perintah untuk pembuatan objek dari class laptop (dikenal dengan prosesinstansiasi). Variabel $laptop_anto saat ini berisi objek dari class laptop. Kita akan mengaksesproperty dan method class laptop melalui objek $laptop_anto ini.

1

2

3

$laptop_anto->pemilik="Anto";

$laptop_anto->merk="Asus";

$laptop_anto->ukuran_layar="15 inchi";

3 baris diatas adalah cara untuk men-set nilai kedalam property dari objek $laptop_anto. Perhatikan bahwa kita menggunakan tanda panah (->) untuk mengakses property dari objek. Tanda panah ini adalah operator khusus objek yang dikenal dengan istilah ‘Object Operator’. Penulisan nama propertyjuga dilakukan tanpa menggunakan tanda $, sehingga property $pemilik, diakses dengan: $laptop_anto->pemilik.

1

2

3

4

5

6

echo $laptop_anto->pemilik;

echo "<br />";

echo $laptop_anto->merk;

echo "<br />";

echo $laptop_anto->ukuran_layar;

echo "<br />";

Kode program diatas digunakan untuk menampilkan nilai property dari objek $laptop_anto yang sebelumnya telah di-set nilainya. Sama seperti pada saat men-set nilai property, kita juga menggunakan tanda panah  (->), kemudian diikuti nama property tanpa tanda $.

Perintah echo ditambahkan agar PHP menampilkan nilai property ke dalam web browser. Agar tampilan di web browser lebih rapi, saya menambahkan echo “<br />” diantara hasil tampilanproperty.

1

2

3

echo $laptop_anto->hidupkan_laptop();

echo "<br />";

echo $laptop_anto->matikan_laptop();

Page 285: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Kode terakhir dari contoh kita kali ini adalah cara pemanggilan method dari objek $laptop_anto. Cara pengaksesannya sama dengan cara mengakses property, namun karena method adalah fungsi, kita menambahkan tanda kurung diakhir pemanggilan fungsi.

Objek Sebagai Entitas Terpisah

Dalam contoh kode diatas, saya hanya menggunakan 1 buah objek yang berasal dari class laptop. Namun pada dasarnya sebuah class bisa digunakan untuk membuat berapapun banyak objek. Setiap objek merupakan bagian terpisah, namun tetap memiliki property dan method yang berasal dari class laptop.

Berikut adalah contoh pembuatan beberapa objek dari class laptop:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

var $pemilik;

// buat method untuk class laptop

function hidupkan_laptop() {

return "Hidupkan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

$laptop_andi = new laptop();

$laptop_dina = new laptop();

// set property

$laptop_anto->pemilik="Anto";

Page 286: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

21

22

23

24

25

26

27

28

29

30

31

$laptop_andi->pemilik="Andi";

$laptop_dina->pemilik="Dina";

// tampilkan property

echo $laptop_anto->pemilik; // Anto

echo "<br />";

echo $laptop_andi->pemilik; // Andi

echo "<br />";

echo $laptop_dina->pemilik; // Dina

echo "<br />";

?>

Class  laptop diatas saya sederhanakan agar lebih singkat. Setelah pembuatan class, saya kemudian membuat 3 buah objek dari class laptop, yakni $laptop_anto, $laptop_andi dan $laptop_dina. Ketiga objek ini memiliki struktur yang sama (sama-sama berasal dari class laptop), namun memiliki isi data yang berbeda-beda.

Agar lebih paham, silahkan anda mencoba menambahkan beberapa property dan method untukclass laptop diatas.

Dalam tutorial kali ini kita telah membahas tentang Cara Membuat dan Mengakses Objek dalam PHP. Sampai disini semoga anda telah memahami konsep class, property, method dan objek. Dalamtutorial belajar OOP PHP berikutnya, kita akan membahas tentang pengertian enkapsulasi dalam pemrograman objek.

Tutorial Belajar OOP PHP Part 4: Pengertian Enkapsulasi Objek (Public, Protected dan Private)

Setelah memahami cara membuat dan mengakses objek dalam PHP, dalam tutorial kali ini kita akan membahas salah satu aspek terpenting dalam Pemrograman Berbasis Objek (OOP), yakniEnkapsulasi (bahasa inggris: Encapsulation). Proses enkapsulasi diterapkan dengan menggunakan 3 jenis hak akses: Public, Protected dan Private.

Kita akan mempelajari Pengertian Enkapsulasi (Public, Protected dan Private) dalam PHP.

Pengertian Enkapsulasi (Encapsulation)

Enkapsulasi (encapsulation) adalah sebuah metoda untuk mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut.

Page 287: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Struktur class yang dimaksud adalah property dan method. Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’.

Dengan enkapsulasi, kita bisa memilih property dan method apa saja yang boleh diakses, dan mana yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubah propertytertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika seseorang ‘mencoba’ mengubahnya. Programmer yang merancang class bisa menyediakan property dan method khusus yang memang ditujukan untuk diakses dari luar.

Melanjutkan analogi tentang class laptop, perusahaan pembuat laptop telah menyediakan ‘method’khusus untuk menghidupkan laptop, yakni dengan cara menekan tombol on. Di dalam laptop sendiri, banyak ‘method-method’ lain yang akan dijalankan ketika kita menyalakan laptop, contohnya: mengirim sinyal booting ke processor, mengirim data dari processor ke memory, dan mengirim sinyal listrik ke LED di monitor. Akan tetapi, proses ini adalah method internal laptop dimana kita tidak perlu memahaminya untuk menghidupkan laptop.

Enkapsulasi Objek: Public, Protected dan Private

Untuk membatasi hak akses kepada property dan method di dalam sebuah class, Objek Oriented Programming menyediakan 3 kata kunci, yakni Public, Protected dan Private. Kata kunci ini diletakkan sebelum nama property atau sebelum nama method. Berikut adalah pembahasannya:

Pengertian Hak Akses: Public

Ketika sebuah property atau method dinyatakan sebagai public, maka seluruh kode program di luar class  bisa mengaksesnya, termasuk class turunan. Berikut adalah contoh penulisan public propertydan public method dalam PHP:

1

2

3

4

5

6

7

8

9

10

11

<?php

// buat class laptop

class laptop {

// buat public property

public $pemilik;

// buat public method

public function hidupkan_laptop() {

return "Hidupkan Laptop";

Page 288: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

// set property

$laptop_anto->pemilik="Anto";

// tampilkan property

echo $laptop_anto->pemilik; // Anto

// tampilkan method

echo $laptop_anto->hidupkan_laptop(); // "Hidupkan Laptop"

?>

Perhatikan penambahan kata public sebelum nama property dan nama method. Kode diatas pada dasarnya sama dengan contoh class laptop kita dalam tutorial sebelum ini.

Jika hak akses property dan method tidak ditulis, maka PHP menganggapnya sebagai public.

Pengertian Hak Akses: Protected

Page 289: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika sebuah property atau method dinyatakan sebagai protected, berarti property atau methodtersebut tidak bisa diakses dari luar class, namun bisa diakses oleh class itu  sendiri atau turunan class tersebut.

Apabila kita mencoba mengakses protected property atau protected method dari luar class, akan menghasilkan error, seperti contoh berikut ini:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

// buat class laptop

class laptop {

// buat protected property

protected $pemilik;

// buat protected method

protected function hidupkan_laptop() {

return "Hidupkan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

// set protected property akan menghasilkan error

$laptop_anto->pemilik="Anto";

// Fatal error: Cannot access protected property laptop::$pemilik

// tampilkan protected property akan menghasilkan error

echo $laptop_anto->pemilik;

// Fatal error: Cannot access protected property laptop::$pemilik

Page 290: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

25

26

27

28

29

30

// jalankan protected method akan menghasilkan error

echo $laptop_anto->hidupkan_laptop();

// Fatal error: Call to protected method laptop::hidupkan_laptop()

// from context

?>

Dalam contoh diatas, pemanggilan property $pemilik dan method hidupkan_laptop() dari luar class akan menghasilkan error.

Walaupun akses level protected tidak bisa diakses dari luar class, namun bisa diakses dari dalam class itu sendiri, berikut adalah contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?php

// buat class laptop

class laptop {

// buat protected property

protected $pemilik="Anto";

public function akses_pemilik() {

return $this->pemilik;

}

protected function hidupkan_laptop() {

return "Hidupkan Laptop";

}

public function paksa_hidup() {

return $this->hidupkan_laptop();

}

}

Page 291: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

20

21

22

23

24

25

26

27

28

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

// jalankan method akses_pemilik()

echo $laptop_anto->akses_pemilik(); // "Anto"

// jalankan method paksa_hidup()

echo $laptop_anto->paksa_hidup(); // "Hidupkan Laptop"

?>

Hampir sama dengan contoh kita sebelumnya, property $pemilik di deklarasikan sebagai protected, sehingga pengaksesan dari luar class akan menghasilkan error. Oleh karena itu, saya membuat sebuah public method yang akan menampilkan hasil property $pemilik, yakni methodakses_pemilik().

Begitu juga dengan method hidupkan_laptop() yang tidak bisa diakses secara langsung. Saya menambahkan method paksa_hidup() yang secara internal akan mengakses methodhidupkan_laptop().

Selain dari dalam class itu sendiri, property dan method dengan hak

akses protected juga bisa diakses dari class turunan (Kita akan membahas

tentang penurunan class dalam tutorial lain):1

2

3

4

5

6

7

8

9

<?php

// buat class komputer

class komputer{

   // property dengan hak akses protected

   protected $jenis_processor = "Intel Core i7-4790 3.6Ghz";

}

 

// buat class laptop

Page 292: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

10

11

12

13

14

15

16

17

18

19

20

21

22

class laptop extends komputer{

   public function tampilkan_processor() {

     return $this->jenis_processor;

   }

}

 

// buat objek dari class laptop (instansiasi)

$laptop_baru = new laptop();

 

// jalankan method

echo $laptop_baru->tampilkan_processor(); // "Intel Core i7-4790 3.6Ghz"

?>

Pada kode diatas, walaupun method $jenis_processor di set

sebagai protected pada class komputer, tetapi masih bisa diakses dari class

laptop yang merupakan turunan dari class komputer.

Pengertian Hak Akses: Private

Hak akses terakhir dalam konsep enkapsulasi adalah private. Jika

sebuah property atau method di-set sebagai private, maka satu-satunya yang bisa

mengakses adalah class itu sendiri. Class lain tidak bisa mengaksesnya, termasuk class

turunan.

Sebagai contoh, berikut adalah hasil yang di dapat jika kita

mengakses property dan method dengan level private:1

2

3

4

5

6

<?php

// buat class komputer

class komputer {

  

   // property dengan hak akses protected

Page 293: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

   private $jenis_processor = "Intel Core i7-4790 3.6Ghz";

  

   public function tampilkan_processor() {

     return $this->jenis_processor;

   }

}

 

// buat class laptop

class laptop extends komputer{

 

   public function tampilkan_processor() {

     return $this->jenis_processor;

   }

}

 

// buat objek dari class laptop (instansiasi)

$komputer_baru = new komputer();

$laptop_baru = new laptop();

 

// jalankan method dari class komputer

echo $komputer_baru->tampilkan_processor(); // "Intel Core i7-4790 3.6Ghz"

 

// jalankan method dari class laptop (error)

echo $laptop_baru->tampilkan_processor();

// Notice: Undefined property: laptop::$jenis_processor

?>

Dalam kode diatas, saya membuat 2 buah class, yakni class komputer, dan class

laptop. Class laptopmerupakan turunan dari class komputer. Di dalam class

komputer terdapat property $jenis_processordengan akses level private. Di

Page 294: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

dalam class komputer dan class laptop, saya

membuat methodtampilkan_processor() yang digunakan untuk mengakses

property $jenis_processor.

Pengaksesan method tampilkan_processor() dari objek $komputer_baru sukse

ditampilkan karena berada di dalam satu class dimana property

$jenis_processor berada.

Akan tetapi, jika method tampilkan_processor() diakses dari objek $laptop_baru yang

merupakan turunan dari class komputer, PHP akan mengeluarkan error karena

property $jenis_processor tidak dikenal.

Akses level private sering digunakan untuk

menyembunyikan property dan method agar tidak bisa diakses di luar class.

Dalam tutorial kali ini, kita telah membahas tentang pengertian

enkapsulasi dalam objek oriented programming (OOP), mengenal 3 hak

akses: public, protected, dan private, serta melihat contoh cara penggunaannya di

dalam PHP.

Dalam tutorial belajar OOP PHP berikutnya, kita akan membahas tentang pengertian dan

fungsi variabel $this dalam PHP.

Tutorial Belajar OOP PHP Part 5: Pengertian dan Fungsi Variabel $this dalam Pemrograman Objek

Setelah dalam tutorial OOP PHP sebelumnya kita mempelajari tentang Pengertian Enkapsulasi Objek (Public, Protected dan Private), dalam tutorial kali ini kita akan membahas Pengertian dan Fungsi Variabel $this dalam Object Oriented Programming PHP.

Pengertian dan Fungsi Variabel $this dalam OOP

Variabel $this adalah sebuah variabel khusus dalam OOP PHP yang digunakan sebagai penunjuk kepada objek, ketika kita mengaksesnya dari dalam class. Dalam manual PHP, $this disebut dengan istilah: pseudo-variable.

Untuk lebih memudahkan pemahaman, kita akan bahas menggunakan contoh.

Berikut adalah class laptop dengan beberapa property dan method.

Page 295: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

public $pemilik;

public $merk;

public $ukuran_layar;

// buat method untuk class laptop

public function hidupkan_laptop() {

return "Hidupkan Laptop";

}

public function matikan_laptop() {

return "Matikan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

$laptop_andi = new laptop();

?>

Dalam kode diatas, saya membuat class laptop dengan 3 property, yakni: $pemilik, $merk dan$ukuran_layar. Ketiga property ini belum memiliki nilai. Di dalam class laptop juga terdapat 2 buahmethod, yakni hidupkan_laptop() dan matikan_laptop(), kedua method ini akan mengembalikan nilaistring. Seluruh property dan method dari class laptop memiliki hak akses public, sehingga bisa diakses dari luar class.

Page 296: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah membuat class, saya kemudian men-instansiasi-nya kedalam 2 buah objek $laptop_anto dan$laptop_andi.

Jika anda menjalankan kode program diatas, di dalam web browser belum tampil apa-apa, karena saya belum memanggil method atau property apapun dari kedua objek.

Selanjutnya, saya ingin menambahkan isi property $pemilik kepada kedua objek, berikut adalah kode yang diperlukan:

1

2

$laptop_anto->pemilik = "Anto";

$laptop_andi->pemilik = "Andi";

Dengan perintah diatas, property $pemilik pada masing-masing objek telah berisi nilai. Untuk menampilkan nilai dari objek tersebut, kita tinggal mengaksesnya dengan kode berikut:

1 echo $laptop_anto->pemilik; // “Anto”

Sampai disini, kita telah memahami cara mengakses property objek dari objek itu sendiri , yakni dengan menggunakan format:

1 $nama_objek->nama_property

Bagaimana jika property tersebut telah di-set nilainya dari dalam class? Berikut adalah perubahanclass laptop:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

public $pemilik="Andi";

// buat method untuk class laptop

public function hidupkan_laptop() {

return "Hidupkan Laptop";

}

}

// buat objek dari class laptop (instansiasi)

Page 297: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

15

16

17

$laptop_baru = new laptop();

$laptop_lama = new laptop();

?>

Class laptop diatas saya revisi sehingga hanya memiliki 1 property dan 1 method. Perhaatikan bahwa property $pemilik telah diisi pada level class, sehingga pada saat pembuatan objek (instansiasi), seluruh objek akan memiliki nilai ini.

Objek $laptop_baru dan $laptop_lama sama-sama berasal dari class laptop, dan nilai property $pemilik sama- sama berisi “Andi”.

1

2

echo $laptop_baru->pemilik; // Andi

echo $laptop_lama->pemilik; // Andi

Lebih jauh lagi, pemanggilan method juga akan menghasilkan nilai yang sama:

1

2

echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop"

echo $laptop_lama->hidupkan_laptop(); // "Hidupkan Laptop"

Jika anda masih bersama saya :), kita akan masuk kedalam bagian terpenting. Bagaimana jika saya ingin ketika method hidupkan_laptop() dipanggil, yang akan ditampilkan adalah : “Hidupkan Laptop Andi“?

Jika anda telah mempelajari dasar-dasar PHP, tentunya cara paling jelas adalah dengan mengubahreturn string di dalam method hidupkan_laptop() sebagai berikut:

1

2

3

public function hidupkan_laptop() {

return "Hidupkan Laptop Andi";

}

Cara tersebut tidak salah, dan akan menghasilkan nilai “Hidupkan Laptop Andi” pada saat pemanggilan method hidupkan_laptop(). Tetapi, bukankah kita telah memiliki property $pemilikdengan nilai “Andi”? kita bisa menggunakan property ini dan menambahkannya ke dalam methodhidupkan_laptop.

Untuk mencoba ide tersebut, silahkan ubah contoh class laptop sebelumnya menjadi berikut:

1

2

3

4

5

6

7

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

public $pemilik="Andi";

public $merk;

Page 298: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

8

9

10

11

12

13

14

15

16

17

18

19

// buat method untuk class laptop

public function hidupkan_laptop() {

return "Hidupkan Laptop $pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_baru = new laptop();

echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop"

?>

Jika anda menjalankan kode diatas, hasil yang didapat adalah:

1

2

Notice: Undefined variable: pemilik in

D:\xampp\htdocs\oop_php\belajar_objek.php on line 11 Hidupkan Laptop

Dari penjelasan error PHP, dinyatakan bahwa “variabel pemilik tidak terdefinisi pada baris 11”. Baris tersebut adalah baris dimana kita menampilkan “Hidupkan Laptop $pemilik” dengan methodhidupkan_laptop().

Apa yang terjadi? Bukankah $pemilik=”Andi” telah terdefenisi pada property class?

Inilah yang dimaksud dalam awal tutorial kali ini, kita sedang mencoba mengakses property objek dari dalam class. Jika anda bingung dengan pengertian ini, anda tidak sendiri. Saya juga kesulitan dalam memahami konsep ini pada pertama kali belajar OOP.

Untuk memahaminya, kita harus ingat bahwa class hanyalah sebuah “blue print” atau kerangka. Seluruh property dan method nantinya akan diakses dari dalam objek, bukan dari dalam class. Pada saat proses instansiasi class, seluruh property dan method akan “dicopy” kedalam objek.

Perintah: $laptop_baru = new laptop() akan membuat objek $laptop_baru memiliki property $pemilikdan method hidupkan_laptop() (sesuai dengan kerangka dari class laptop). Seluruh perintah lanjutan yang kita lakukan berada di dalam objek $laptop_baru, bukan di dalam class laptop.

Ketika kita menjalankan method hidupkan_laptop(), objek $laptop_baru akan menemui baris perintah:

1 “Hidupkan Laptop $pemilik”

variabel $pemilik disini tidak terdefenisi karena $pemilik berada di dalam konteks class, bukan objek.

Page 299: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk mengatasi masalah ini, kita harus mengubah defenisi method hidupkan_laptop() menjadi:

1 "Hidupkan Laptop $this->pemilik";

Variabel $this merujuk kepada objek yang sedang menginstansiasi class.

Jika di dalam class laptop kita membuat:

1 "Hidupkan Laptop $this->pemilik";

Maka di dalam objek $laptop_baru, akan menjadi:

1 "Hidupkan Laptop $laptop_baru->pemilik";

Jika kita memiliki objek lain misalkan $laptop_lama, maka perintah tersebut akan dijalankan menjadi:

1 "Hidupkan Laptop $laptop_lama->pemilik";

Perhatikan bahwa pada level objek, variabel $this ‘dijalankan’ menjadi objek saat ini.

Untuk menguji pemahaman kita, silahkan pelajari kode berikut ini:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

public $pemilik="Andi";

// buat method untuk class laptop

public function hidupkan_laptop() {

return "Hidupkan Laptop $this->pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_baru = new laptop();

echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop Andi";

Page 300: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

18

19

20

21

22

23

24

25

26

27

//ubah isi property $pemilik pada objek $laptop_baru

$laptop_baru->pemilik="Arie";

echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop Arie";

// buat objek baru dari class laptop dan panggil hidupkan_laptop()

$laptop_lama = new laptop();

echo $laptop_lama->hidupkan_laptop();

?>

Tanpa menjalani kode program tersebut, silahkan tebak apa hasil yang akan ditampilkan dari perintah: echo $laptop_lama->hidupkan_laptop() yang berada pada baris terakhir, dan kenapa hasilnya bukan “Hidupkan Laptop Arie” ?

Jika anda bisa menebak hasil akhir dengan benar dan bisa menjelaskan kenapa hasilnya bukan“Hidupkan Laptop Arie”, maka anda telah memahami salah satu konsep terpenting dalam Pemrograman berbasis objek.

Jika di dalam tutorial kali ini kita membahas pengertian dan fungsi variabel $this, dalam tutorial berikutnya kita akan membahas variabel $this secara lebih jauh, dan melihat cara penggunaan pseudo-variable $this dalam pemrograman objek PHP.

Tutorial Belajar OOP PHP Part 6: Cara Penggunaan Pseudo-Variable $this dalam Objek PHP

Jika dalam tutorial sebelumnya kita telah memahami pengertian dan fungsi dari variabel $this, dalam tutorial kali ini saya akan membahas cara penggunaan pseudo-variable $this dalam pemrograman Objek PHP. Tutorial kali ini hanya untuk memperjelas konsep variabel $this yang telah kita pelajari sebelumnya.

Arti Pseudo-Variable $this dalam Pemrograman Objek PHP

Melanjutkan tutorial mengenai variabel $this, kali ini kita akan melihat cara penggunaannya melalui contoh program PHP yang lebih lengkap.

Dalam contoh berikut, saya membuat class laptop dengan method yang saling memanggil methodlain menggunakan variabel $this, silahkan anda pahami alur kerja dari class dan objek dibawah ini:

1 <?php

Page 301: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// buat class laptop

class laptop {

// buat property untuk class laptop

public $pemilik;

public $merk;

// buat method untuk class laptop

public function hidupkan_laptop() {

return "Hidupkan Laptop $this->merk punya $this->pemilik";

}

public function matikan_laptop() {

return "Matikan Laptop $this->merk punya $this->pemilik";

}

public function restart_laptop() {

$matikan=$this->matikan_laptop();

$hidupkan= $this->hidupkan_laptop();

$restart=$matikan."<br />".$hidupkan;

return $restart;

}

}

// buat objek dari class laptop (instansiasi)

$laptop_anto = new laptop();

// isi property objek

Page 302: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

$laptop_anto->pemilik="Anto";

$laptop_anto->merk="Asus";

echo $laptop_anto->hidupkan_laptop();

// hasil: "Hidupkan Laptop Asus punya Anto";

echo "<br />";

echo $laptop_anto->matikan_laptop();

// hasil: "Matikan Laptop Asus punya Anto";

echo "<br />";

echo $laptop_anto->restart_laptop();

// hasil:

// "Matikan Laptop Asus punya Anto";

// "Hidupkan Laptop Asus punya Anto";

?>

Contoh class laptop diatas, mirip dengan contoh-contoh kita sebelumnya, dengan beberapa modifikasi. Saya membuat 2 property: $pemilik dan $merk, kemudian membuat 3 method:hidupkan_laptop(), matikan_laptop(), dan  restart_laptop().

Dalam method hidupkan_laptop(), dan saya memanggil property $pemilik dan $merk. Karena property ini nantinya akan dipanggil dari objek, maka kita harus menggunakan variabel $this:

1 "Hidupkan Laptop $this->merk punya $this->pemilik";

Variabel $this nantinya akan ‘merujuk’ kepada objek yang memanggil method. Misalkan kita memiliki objek $laptop_anto, maka hasil yang dijalankan adalah:

1 "Hidupkan Laptop $laptop_anto ->merk punya $laptop_anto->pemilik";

Method matikan_laptop() juga menggunakan pola perintah yang sama.

Page 303: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk method restart_laptop(), di dalam struktur method ini saya memanggil methodmatikan_laptop() dan hidupkan_laptop(). Karena alasan yang sama dengan property $pemilik dan$merk, saya juga menggunakan variabel $this untuk memanggil method. Hasil pemanggilan kedua method, kemudian disambung dan disimpan kedalam variabel $hasil.

1

2

3

4

5

6

public function restart_laptop() {

$matikan=$this->matikan_laptop();

$hidupkan= $this->hidupkan_laptop();

$restart=$matikan."<br />".$hidupkan;

return $restart;

}

Tutorial kali ini ditujukan untuk melengkapi pemahaman variabel $this dari tutorial sebelumnya. Dalam tutorial OOP PHP selanjutnya, kita akan membahas cara membuat method dalam pemrograman objek PHP.

Tutorial Belajar OOP PHP Part 7: Cara Membuat Method dalam Pemrograman Objek PHP

Setelah memahami arti dan fungsi variabel $this dalam 2 tutorial sebelumnya, dalam sesi tutorial belajar OOP PHP kali ini, kita akan mempelajari lebih dalam tentang cara membuat method di dalam pemrograman objek PHP. Method di dalam PHP juga bisa ditambahkan dengan argumen/parameter seperti layaknya function.

Cara Membuat Method dengan Argumen/Parameter

Karena method pada dasarnya hanyalah function yang berada di dalam sebuah class, maka kita bisa memberikan argumen/parameter ke dalam method tersebut.

Langsung saja kita lihat struktur dasar pembuatan parameter di dalam method PHP:

1

2

3

4

hak_akses nama_method ($argumen1, argumen2, dst...)

{

//... isi dari method

}

Dengan menggunakan contoh method hidupkan_laptop(), kita bisa membuatnya menjadi:

Page 304: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

1

2

3

4

public hidupkan_laptop($pemilik, $merk)

{

//... isi dari method

}

Sehingga apabila metod itu dipanggil dari objek, kita tinggal mengisi argumen dengan nilai yang diinginkan, seperti contoh berikut:

1 $laptop_andi(‘Andi’,’Lenovo’);

Cara Membuat Argumen dalam Method Class

Sebagai contoh tutorial, saya akan kembali memodifikasi class laptop dengan menambahkan fitur argumen dalam method:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat class laptop

class laptop {

// buat method untuk class laptop

public function hidupkan_laptop($pemilik,$merk) {

return "Hidupkan Laptop $merk punya $pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop();

echo $laptop_andi->hidupkan_laptop("Andi", "Lenovo");

// hasil: "Hidupkan Laptop Lenovo punya Andi";

?>

Dalam contoh diatas, saya memanggil method hidupkan_laptop() dengan 2 argumen, yakni “Andi” dan “Lenovo”. Kedua nilai ini akan diproses oleh method hidupkan_laptop().

Perhatikan bahwa saya tidak menggunakan variabel $this, karena argumen tersebut ‘milik’ method, perhatikan bedanya jika saya mengubah class laptop menjadi berikut ini:

Page 305: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

<?php

// buat class laptop

class laptop {

// buat property untuk class laptop

private $pemilik="Anto";

private $merk="Acer";

// buat method untuk class laptop

public function hidupkan_laptop($pemilik,$merk) {

return "Hidupkan Laptop $merk punya $pemilik";

}

public function hidupkan_laptop_anto() {

return "Hidupkan Laptop $this->merk punya $this->pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop();

echo $laptop_andi->hidupkan_laptop("Andi", "Lenovo");

// hasil: "Hidupkan Laptop Lenovo punya Andi";

echo $laptop_andi->hidupkan_laptop_anto();

// hasil: "Hidupkan Laptop Acer punya Anto";

?>

Pada class laptop diatas, saya menambahkan 2 property: $pemilik dan $merk, kemudian memberikan nilai “Anto” dan “Acer”. Jika yang kita inginkan adalah nilai dari variabel ini, maka di dalam method, kita harus menggunakan $this.

Page 306: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Semua fitur function, juga bisa diterapkan di dalam method, termasuk default parameter seperti yang pernah kita bahas pada Tutorial Belajar PHP: Cara Pembuatan Default Parameter pada Fungsi PHP, seperti contoh berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

// buat class laptop

class laptop {

// buat method untuk class laptop

public function hidupkan_laptop($pemilik="Joko",$merk="Samsung") {

return "Hidupkan Laptop $merk punya $pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop();

echo $laptop_andi->hidupkan_laptop();

// hasil: "Hidupkan Laptop Samsung punya Joko";

echo "<br />";

echo $laptop_andi->hidupkan_laptop("Andi", "Lenovo");

// hasil: "Hidupkan Laptop Lenovo punya Andi";

?>

Pada contoh kode program PHP diatas, dengan membuat method sebagai berikut:

1 public function hidupkan_laptop($pemilik="Joko",$merk="Samsung")

Maka, ketika method tersebut dipanggil tanpa menambahkan argumen, nilai “Joko” dan “Samsung” akan digunakan sebagai nilai default, namun jika argumen ditulis, nilai argumen yang diinput akan menimpa nilai default ini.

Page 307: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial belajar PHP Objek Oriented Programming kali ini, kita telah membahas cara membuat method di dalam PHP dengan menggunakan argumen / parameter. Kesimpulannya, karena methodadalah sebutan lain untuk function di dalam class, maka seluruh fitur function bisa digunakan untukmethod.

Dalam tutorial OOP PHP berikutnya, kita akan membahas tentang pengertian constructor dan destructor dalam pemrograman objek PHP.

Tutorial Belajar OOP PHP Part 8: Pengertian Constructor dan Destructor

Melanjutkan tutorial Belajar Object Oriented Programming (OOP) PHP, kali ini kita akan membahas tentang Pengertian Constructor dan Destructor dalam Pemrograman Objek, khususnya OOP PHP.

Pengertian Constructor dalam OOP

Constructor (bahasa indonesia: konstruktor) adalah method khusus yang akan dijalankan secara otomatis pada saat sebuah objek dibuat (instansiasi), yakni ketika perintah “new” dijalankan.

Constructor biasa digunakan untuk membuat proses awal dalam mempersiapkan objek, seperti memberi nilai awal kepada property, memanggil method internal dan beberapa proses lain yang digunakan untuk ‘mempersiapkan’ objek.

Dalam PHP, constructor dibuat menggunakan method : __construct().

Pengertian Destructor dalam OOP

Destructor (bahasa indonesia: destruktor) adalah method khusus yang dijalankan secara otomatis pada saat sebuah objek dihapus. Di dalam PHP, seluruh objek secara otomatis dihapus ketika halaman PHP dimana objek itu berada selesai diproses. Tetapi kita juga dapat menghapus objek secara manual.

Destructor biasanya digunakan untuk ‘membersihkan’ beberapa variabel, atau menjalankan proses tertentu sebelum objek dihapus.

Dalam PHP, destructor dibuat menggunakan method : __destruct().

Page 308: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Cara Penggunaan Destructor dan Constructor dalam PHP

Sebagai tutorial kita kali ini, berikut adalah contoh penggunaan constructor dan destructor dalam PHP:

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

<?php

// buat class laptop

class laptop {

private $pemilik = "Andi";

private $merk = "Lenovo";

public function __construct(){

echo "Ini berasal dari Constructor Laptop";

}

public function hidupkan_laptop(){

return "Hidupkan Laptop $this->merk punya $this->pemilik";

}

public function __destruct(){

echo "Ini berasal dari Destructor Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop();

echo "<br />";

echo $laptop_andi->hidupkan_laptop();

echo "<br />";

Page 309: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

27 ?>

Dalam contoh diatas, saya membuat class laptop dengan 3 method:

Method __construct() merupakan constructor dari class laptop. Method  ini akan dipanggil secara otomatis ketika class laptop di instansiasi.

Method hidupkan_laptop() merupakan method ‘biasa’ yang akan menampilkan hasil string. Untuk menggunakan method ini, kita memanggilnya dari objek.

Method ketiga adalah __destruct() yang merupakan destructor dari class laptop. Method ini akan dipanggil saat objek dihapus.

Setelah pendefinisian class, saya membuat objek $laptop_andi, dan memanggil methodhidupkan_laptop(). Berikut adalah hasil yang didapat:

1

2

3

Ini berasal dari Constructor Laptop

Hidupkan Laptop Lenovo punya Andi

Ini berasal dari destructor Laptop

Seperti yang terlihat, method __construct() dan __destruct() secara otomatis dipanggil saat objekdibuat dan saat objek dihapus. Untuk mencoba menghapus objek $laptop_andi secara manual, kita bisa menggunakan fungsi isset() sebagai berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

// buat class laptop

class laptop {

private $pemilik = "Andi";

private $merk = "Lenovo";

public function __construct(){

echo "Ini berasal dari Constructor Laptop";

}

public function hidupkan_laptop(){

return "Hidupkan Laptop $this->merk punya $this->pemilik";

Page 310: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

}

public function __destruct(){

echo "Ini berasal dari Destructor Laptop";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop();

echo "<br />";

echo $laptop_andi->hidupkan_laptop();

echo "<br />";

// hapus objek $laptop_andi

unset($laptop_andi);

echo "<br />";

echo "Objek Telah Dihancurkan";

?>

Jika kita menjalankan kode diatas, berikut adalah hasil yang didapat:

1

2

3

4

Ini berasal dari Constructor Laptop

Hidupkan Laptop Lenovo punya Andi

Ini berasal dari Destructor Laptop

Objek Telah Dihancurkan

Setelah memanggil method $laptop_andi->hidupkan_laptop(), saya kemudian menghapus objek$laptop_andi secara manual menggunakan fungsi unset($laptop_andi).

Untuk membuktikan bahwa destructor $laptop_andi sudah dijalankan, saya menambahkan perintahecho “Objek Telah Dihancurkan” diakhir halaman. Sehingga kita bisa melihat bahwa destructor objek$laptop andi di jalankan sebelum dihapus otomatis oleh PHP. Silahkan anda coba

Page 311: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

hapus perintahunset($laptop_andi), maka string “Objek Telah Dihancurkan” akan tampil sebelum destructor objek$laptop_andi.

Sebagai contoh terakhir dalam tutorial kali ini, saya akan membuat contoh constructor yang sering digunakan untuk membuat objek dengan nilai awal. Konsep ini sering digunakan dalam pemrograman objek. Berikut adalah contoh penggunaannya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

// buat class laptop

class laptop {

private $pemilik;

private $merk;

// constructor sebagai pembuat nilai awal

public function __construct($pemilik, $merk) {

$this->pemilik = $pemilik;

$this->merk = $merk;

}

public function hidupkan_laptop() {

return "Hidupkan Laptop $this->merk punya $this->pemilik";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_andi= new laptop("Andi", "Lenovo");

Page 312: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

22

23

24

25

26

27

28

echo $laptop_andi->hidupkan_laptop();

echo "<br />";

$laptop_anto= new laptop("Anto", "Acer");

echo $laptop_anto->hidupkan_laptop();

?>

Pada kode diatas, saya menggunakan constructor sebagai pembuat nilai awal dari objek. Methodconstructor menerima 2 buah argumen yang kemudian disimpan kedalam property internal objek.

Berikut adalah hasil yang didapat dari kode program diatas:

1

2

Hidupkan Laptop Lenovo punya Andi

Hidupkan Laptop Acer punya Anto

Dalam tutorial kali ini, kita telah membahas tentang pengertian constructor dan destructor dalam Pemrograman objek PHP. Kemudian kita juga telah melihat contoh pembuatan class dan objekmenggunakan constructor dan destructor. Dalam tutorial belajar OOP PHP berikutnya, kita akan membahas konsep penting lainnya di dalam OOP, yakni penurunan/pewarisan (inheritance) dalam Pemrograman objek.

Tutorial Belajar OOP PHP Part 9: Pengertian Inheritance (Pewarisan)

Setelah mempelajari tentang Pengertian Constructor dan Destructor dalam OOP PHP, melanjutkan tutorial belajar pemrograman objek, kali ini kita akan membahas dan mempelajari Pengertian Inheritance atau Pewarisan dalam Pemrograman Objek, serta melihat contoh penggunaannya.

Pengertian Inheritance (Pewarisan) dalam OOP

Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code reuse’ untuk menghindari duplikasi kode program.

Page 313: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atauheir class.

Tidak semua property dan method dari class induk akan diturunkan. Property dan method dengan hak akses private, tidak akan diturunkan kepada class anak. Hanya property dan method dengan hak akses protected dan public saja yang bisa diakses dari class anak.

Cara Penggunaan Inheritance dalam PHP

Di dalam PHP, inheritance / penurunan dari sebuah class kepada class lain menggunakan kata kunci: ‘extends’, dengan penulisan dasar sebagai berikut:

1

2

3

4

5

6

7

8

9

class induk {

//...isi class induk

}

class anak extends induk

{

//... class anak bisa mengakses

//... property dan method class induk

}

Agar lebih mudah dipahami, kita akan langsung masuk kedalam contoh program penggunaaninheritance/penurunan di dalam PHP:

1

2

3

4

5

6

7

8

9

<?php

// buat class induk: komputer

class komputer {

public $merk;

public $processor;

public $memory;

public function beli_komputer() {

Page 314: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

return "Beli komputer baru";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

public function lihat_spec() {

return "merk: $this->merk, processor: $this->processor,

memory: $this->memory";

}

}

// buat objek dari class laptop (instansiasi)

$laptop_baru = new laptop();

// isi property objek

$laptop_baru->merk = "acer";

$laptop_baru->processor ="intel core i5";

$laptop_baru->memory = "2 GB";

//panggil method objek

echo $laptop_baru->beli_komputer();

echo "<br />";

echo $laptop_baru->lihat_spec();

?>

Dalam contoh kode diatas, saya membuat class komputer dengan beberapa property dan sebuahmethod. Property class komputer belum berisi nilai apa-apa.

Page 315: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dibawah class komputer, saya membuat class laptop extends class komputer. Disini saya menurunkanclass komputer kedalam class laptop. Di dalam class laptop, kita bisa mengakses seluruh property danmethod apapun dari class komputer selama memiliki hak akses public atau protected.

Untuk membuktikan hal tersebut, saya membuat objek $laptop_baru dari class  laptop. Perhatikan bahwa kita bisa mengakses property $merk, $processor, dan$memory yang semuanya adalah milikclass komputer, bukan class laptop. Method beli_komputer() juga sukses diakses dari objek $laptop baru. Inilah yang dimaksud dengan inheritance/penurunan class dalam OOP.

PHP tidak membatasi berapa banyak ‘penurunan objek’ yang bisa dilakukan, dalam contoh berikut, saya membuat 3 buah class yang saling ‘menurunkan’:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

// buat class komputer

class komputer {

protected function beli_komputer() {

return "Beli komputer baru";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

protected function beli_laptop() {

return "Beli laptop baru";

}

}

// turunkan class laptop ke chromebook

class chromebook extends laptop {

protected function beli_chromebook() {

return "Beli chromebook baru";

}

Page 316: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

public function beli_semua(){

$a = $this->beli_komputer();

$b = $this->beli_laptop();

$c = $this->beli_chromebook();

return "$a <br /> $b <br /> $c";

}

}

// buat objek dari class laptop (instansiasi)

$gadget_baru = new chromebook();

//panggil method objek

echo $gadget_baru->beli_semua();

// $gadget_baru->beli_komputer();

// Fatal error: Call to protected method komputer::beli_komputer()

?>

Dalam contoh diatas, saya membuat class komputer yang diturunkan kepada class laptop, dan kemudian diturunkan lagi kepada class chromebook. Dari dalam class chromebook ini kemudian saya memanggil method dari class diatasnya.

Jika anda perhatikan, setiap method selain method beli_semua(), memiliki hak akses protected. Hak akses protected ini ‘menghalangi’ kode program lain untuk mengaksesnya, selain class turunan.

Pada baris terakhir, saya menyisipkan kode program untuk mencoba mengakses methodbeli_komputer() . Kode ini sengaja saya beri tanda komentar. Jika anda menghapus tanda komentar, PHP akan mengeluarkan error yang menyatakan kita tidak bisa mengakses method dengan hak akses protected:

1

2

3

4

<?

$gadget_baru->beli_komputer();

// Fatal error: Call to protected method komputer::beli_komputer()

?>

Page 317: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Inilah yang dimaksud dengan enkapsulasi dalam OOP. Membatasi method yang tidak boleh diakses akan membuat kode program menjadi lebih terstruktur.

Dalam tutorial belajar OOP PHP kali ini, kita telah mempelajari konsep inheritance atau pewarisan di dalam pemrograman objek. Dalam beberapa tutorial selanjutnya, kita akan memperdalam konsep inheritance.

Penurunan class ini akan memberikan permasalahan tersendiri ketika terdapat property ataumethod dengan nama yang sama pada parent class dan child class. Mengenai hal ini akan kita bahas dalam tutorial belajar OOP PHP berikutnya: Cara Mengakses Property dan Method Parent Class.

Tutorial Belajar OOP PHP Part 10: Cara Mengakses Property dan Method Parent Class

Melanjutkan tutorial OOP PHP mengenai Inheritance, kali ini kita akan mempelajari cara mengakses property dan method dari parent class, serta pengertian Scope Resolution Operator.

Cara Mengakses Property dan Method Parent Class

Konsep pewarisan/inheritance dimana sebuah class bisa memiliki property dan method dari class lain, bisa menjadi permasalahan ketika property atau method dari class anak memiliki nama yang sama dengan class induk, atau dikenal dengan istilah overridden property dan overridden method.

Untuk memahami pengertian overridden property dan overridden method, perhatikan contoh kode program berikut ini:

1

2

3

4

5

6

7

8

9

10

<?php

// buat class komputer

class komputer {

public function lihat_spec() {

return "Spec Komputer: Acer,

Processor Intel core i7, Ram 4GB";

}

}

Page 318: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

11

12

13

14

15

16

17

18

19

20

21

22

23

24

// turunkan class komputer ke laptop

class laptop extends komputer {

public function lihat_spec() {

return "Spec Laptop: Asus,

Processor Intel core i5, Ram 2GB";

}

}

// buat objek dari class laptop (instansiasi)

$gadget_baru = new laptop();

//panggil method lihat_spec()

echo $gadget_baru->lihat_spec();

?>

Pada kode program diatas, saya membuat 2 buah class: komputer dan laptop. Saya menurunkanclass komputer kedalam class laptop, sehingga seluruh property dan method dari class komputer bisa diakses dari class laptop.

Namun perhatikan bahwa method pada class komputer memiliki nama yang sama dengan method dalam class laptop. Ketika kita memanggil method lihat_spec(), method manakah yang akan dijalankan?

Jika anda menjalankan kode diatas, maka hasilnya adalah:

1 Spec Laptop: Asus, Processor Intel core i5, Ram 2GB

Berdasarkan hasil yang di dapat, terlihat bahwa method yang dijalankan adalah method milik classlaptop.

Di dalam PHP, ketika nama property atau nama method child class memiliki nama yang sama denganparent class, maka yang dijalankan adalah property atau method milik child class.

Jadi, bagaimana cara mengakses property dan method milik class komputer? PHP mengatasi hal ini dengan menggunakan ‘Scope Resolution Operator’.

Pengertian Scope Resolution Operator PHP

Scope Resolution Operator adalah operator khusus di dalam PHP yang memungkinkan kita untuk mengakses ‘informasi khusus‘ dari dalam class.

Page 319: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Informasi khusus ini terdiri dari: overridden property atau overridden method, static property ataustatic method, serta constanta class. Untuk saat ini, kita akan fokus kepada overridden property atauoverridden method. Mengenai static property, static method, dan konstanta class akan kita bahas dalam tutorial lainnya.

Scope Resolution Operator ditulis dengan tanda dua kali titik dua (double colon), yakni “::”. Untuk mengakses property dan method dari class induk, kita mengaksesnya dengan perintah:

1

2

parent::nama_property;

parent::nama_method();

Kembali kepada contoh program, kali ini kita ingin menampilkan method lihat_spec() dari classkomputer:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

// buat class komputer

class komputer {

public function lihat_spec() {

return "Spec Komputer: Acer,

Processor Intel core i7, Ram 4GB";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

public function lihat_spec() {

return "Spec Laptop: Asus,

Processor Intel core i5, Ram 2GB";

}

public function lihat_spec_komputer() {

return parent::lihat_spec();

Page 320: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

21

22

23

24

25

26

27

28

29

30

31

32

33

}

}

// buat objek dari class laptop (instansiasi)

$gadget_baru = new laptop();

//panggil method lihat_spec()

echo $gadget_baru->lihat_spec();

echo "<br />";

//panggil method lihat_spec_komputer()

echo $gadget_baru->lihat_spec_komputer();

?>

Kode program diatas adalah revisi dari contoh kita sebelumnya. Saya menambahkan sebuahmethod lihat_spec_komputer() kedalam class laptop. Method ini selanjutkan akan memanggil methodclass komputer, dengan perintah parent::lihat_spec().

Hasilnya adalah:

1

2

Spec Laptop: Asus, Processor Intel core i5, Ram 2GB

Spec Komputer: Acer, Processor Intel core i7, Ram 4GB

Contoh diatas adalah cara mengakses method parent class dari child class. Lalu bagaimana dengan cara mengakses parent property dari child class? Jika anda berfikir sama seperti saya, maka kita bisa tebak bahwa caranya adalah menggunakan parent::nama_property, apakah bisa? mari kita coba:

1

2

3

4

5

6

7

8

<?php

// buat class komputer

class komputer {

public $merk = "acer";

public function lihat_spec() {

return "Spec Komputer: Acer,

Page 321: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

Processor Intel core i7, Ram 4GB";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

public $merk = "asus";

public function lihat_spec() {

return "Spec Laptop: Asus,

Processor Intel core i5, Ram 2GB";

}

public function lihat_spec_komputer() {

return parent::lihat_spec();

}

public function lihat_merk_komputer() {

return parent::$merk;

}

}

// buat objek dari class laptop (instansiasi)

$gadget_baru = new laptop();

//panggil method lihat_spec()

echo $gadget_baru->lihat_spec();

echo "<br />";

Page 322: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

37

38

39

40

41

42

//panggil method lihat_spec_komputer()

echo $gadget_baru->lihat_spec_komputer();

//panggil method lihat_merk_komputer()

echo $gadget_baru->lihat_merk_komputer();

?>

Dalam kode program diatas, saya menambahkan sebuah method baru: lihat_merk_komputer() yang akan menjalankan perintah return parent::$merk. Jika kita menjalankan program diatas, hasilnya adalah:

1

2

3

Spec Laptop: Asus, Processor Intel core i5, Ram 2GB

Spec Komputer: Acer, Processor Intel core i7, Ram 4GB

<b>Fatal error</b>: Access to undeclared static property: komputer::$merk

Apa yang terjadi?

Error diatas juga membuat saya bingung saat pertama kali mencobanya. Kode error diatas berarti kita mencoba mengakses property static $merk dari class komputer, bukan property public $merk dariclass komputer sebagaimana kode error (Property static tidak sama dengan property biasa, kita akan mempelajarinya sesaat lagi di: Pengertian static property dan static method).

Pengertian static property belum kita pelajari sampai tutorial kali ini, dan akan saya bahas lengkap pada tutorial tersendiri. Namun berdasarkan kode error tersebut dan membaca beberapa sumber, saya mendapati bahwa kita tidak bisa mengakses property parent class secara langsung.

Jadi, bagaimana caranya?

Yang perlu menjadi perhatian disini adalah bahwa kode kita disini memiliki nama method dan property yang sama baik di child class dan juga pada parent class. Solusi yang paling mudah adalah: tidak menggunakan nama property dan method yang sama. Dengan demikian, kode program akan menjadi lebih jelas dan lebih mudah untuk dipahami.

Dalam tutorial kali ini, kita telah mempelajari cara mengakses property dan method parent classdengan Scope Resolution Operator, atau tanda ‘::’.

Dalam tutorial selanjutnya, masih berkaitan dengan inheritance, kita akan mempelajari efek penurunan ini kedalam constructor dan destructor. Kita akan mempelajari cara mengakses constructor dan destructor parent class.

Tutorial Belajar OOP PHP Part 11: Cara Mengakses Constructor dan Destructor Parent Class

Page 323: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Setelah membahas cara mengakses property dan method parent class, dalam tutorial belajar OOP PHP kali ini akan membahas cara mengakses constructor dan destructor parent class. Tutorial kali ini masih berkaitan dengan efek pewarisan (inheritance) dalam pemrograman objek.

Efek Inheritance dalam Constructor dan Destructor

Seperti yang telah kita pelajari dalam tutorial Tutorial Belajar OOP PHP: Pengertian Constructor dan Destructor, construktor dan destructor adalah method khusus yang dijalankan secara otomatis ketika sebuah class di instansiasi ke dalam sebuah objek, dan ketika objek tersebut dihapus.

Konsep inhertitance atau pewarisan class memiliki efek khusus dalam construktor dan destructor. Terutama construktor dan destructor dari parent class.

Mari kita jelaskan dengan menggunakan contoh:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?php

// buat class komputer

class komputer {

// buat constructor class komputer

public function __construct() {

echo "Constructor dari class komputer <br />";

}

// buat destructor class komputer

public function __destruct() {

echo "Destructor dari class komputer <br />";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

}

Page 324: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

20

21

22

23

24

25

26

27

// turunkan class laptop ke chromebook

class chromebook extends laptop {

}

// buat objek dari class chromebook (instansiasi)

$gadget_baru = new chromebook();

echo "Belajar OOP PHP <br />";

?>

Pada kode diatas, saya membuat class komputer dengan construktor dan destructor. Class komputerkemudian diturunkan kepada class laptop, kemudian diturunkan kembali kepada class chromebook. Baik class laptop maupun class chromebook tidak memiliki property maupun method. Classchromebook inilah yang akan kita instansiasi kedalam objek $gadget_baru.

Ketika program itu dijalankan, berikut adalah hasil yang didapat:

1

2

3

Constuctor dari class komputer

Belajar OOP PHP

Destructor dari class komputer

Dari hasil tersebut terlihat bahwa constructor dan destructor class komputer tetap dijalankan walaupun kita membuat objek dari class chromebook.

Pengertian Overridden Constructor dan Overridden Destructor

Dalam kode program diatas, saya tidak membuat constructor dan destructor untuk class laptop danclass chromebook. Tapi bagaimana jika ketiga class ini juga memiliki constructor dan destructor? Mari kita coba:

1

2

3

4

5

6

7

<?php

// buat class komputer

class komputer {

// buat constructor class komputer

public function __construct() {

echo "Constructor dari class komputer <br />";

Page 325: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

}

// buat destructor class komputer

public function __destruct() {

echo "Destructor dari class komputer <br />";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

// buat constructor class laptop

public function __construct() {

echo "Constructor dari class laptop <br />";

}

// buat destructor class laptop

public function __destruct() {

echo "Destructor dari class laptop";

}

}

// turunkan class laptop ke chromebook

class chromebook extends laptop {

// buat constructor class chromebook

public function __construct() {

echo "Constructor dari class chromebook <br />";

Page 326: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

36

37

38

39

40

41

42

43

44

45

46

47

}

// buat destructor class chromebook

public function __destruct() {

echo "Destructor dari class chromebook <br />";

}

}

// buat objek dari class chromebook (instansiasi)

$gadget_baru = new chromebook();

echo "Belajar OOP PHP <br />";

?>

Kode diatas memiliki constructor dan destructor pada masing-masing class, mari kita lihat hasilnya:

1

2

3

Constuctor dari class chromebook

Belajar OOP PHP

Destructor dari class chromebook

Kemana constructor dan destructor class lainnya?

Di dalam PHP, ketika child class memiliki constructor dan destructor sendiri, maka PHP akan melewatkan constructor dan destructor parent class, kasus ini disebut dengan Overridden Constructordan Overridden Destructor. Karena di dalam contoh kita class chromebook memiliki constructor dandestructor, maka constructor dan destructor class induknya tidak dijalankan.

Bagaimana jika kita ingin constructor dan destructor parent class tetap dijalankan?

Solusinya, kita harus memanggil constructor dan destructor parent class secara manual denganScope Resolution Operator, yakni: parent::__construct() dan parent::__desctruct().

Berikut adalah modifikasi kode program kita diatas:

1

2

3

4

<?php

// buat class komputer

class komputer {

public function __construct() {

Page 327: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

echo "Constructor dari class komputer <br />";

}

public function __destruct() {

echo "Destructor dari class komputer <br />";

}

}

// turunkan class komputer ke laptop

class laptop extends komputer {

public function __construct() {

parent::__construct();

echo "Constructor dari class laptop <br />";

}

public function __destruct() {

echo "Destructor dari class laptop <br />";

parent::__destruct();

}

}

// turunkan class laptop ke chromebook

class chromebook extends laptop {

public function __construct() {

parent::__construct();

echo "Constructor dari class chromebook <br />";

}

Page 328: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

33

34

35

36

37

38

39

40

41

42

43

public function __destruct() {

echo "Destructor dari class chromebook <br />";

parent::__destruct();

}

}

// buat objek dari class chromebook (instansiasi)

$gadget_baru = new chromebook();

echo "Belajar OOP PHP <br />";

?>

Hasil yang kita dapat adalah:

1

2

3

4

5

6

7

Constructor dari class komputer

Constructor dari class laptop

Constructor dari class chromebook

Belajar OOP PHP

Destructor dari class chromebook

Destructor dari class laptop

Destructor dari class komputer

Dengan memanggil manual perintah parent::__construct() dan parent::__desctruct(), kita bisa menjalankan seluruh constructor dan destructor dari parent class.

Dalam tutorial belajar Object Oriented Programming (OOP) PHP kali ini, kita telah mempelajari cara kerja constructor dan destructor jika sebuah class diturunkan dari class lain (inheritance).

Constructor dan destructor parent class akan dijalankan jika child class tidak mendefenisikanconstructor dan destructor sendiri. Namun jika child class juga memiliki constructor dan desctructor, maka kita harus memanggil constructor dan destructor parent class secara manual.

Dalam tutorial OOP PHP berikutnya, kita akan mempelajari pengertian static property dan static method dalam pemrograman objek.

Tutorial Belajar OOP PHP Part 12: Pengertian Static Property dan Static Method

Page 329: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam lanjutan tutorial belajar OOP PHP kali ini, kita akan mempelajari tentang Pengertian Static Property dan Static Method dalam Pemrograman Objek, kemudian kita akan melihat cara penggunaannya di dalam PHP.

Pengertian Static Property dan Static Method

Jika di awal tutorial Pemrograman objek PHP ini saya menjelaskan bahwa seluruh property danmethod hanya bisa diakses dari objek, maka static property dan static method adalah pengecualiannya.

Static property dan static method adalah property (variabel) dan method (function) yang melekat kepada class, bukan kepada objek. Konsep static property memang ‘agak keluar’ dari konsep objek sebagai tempat melakukan proses, karena sebenarnya class hanya merupakan ‘blueprint’ saja.

Untuk membuat static property dan static method, kita menambahkan keyword ‘static’ setelah penulisan akses level property atau method, seperti contoh berikut:

1

2

3

4

5

6

7

// static property

public static $harga_beli;

// static method

public static function beli_laptop() {

//...isi method

}

Dalam contoh diatas, saya menggunakan hak akses public, tetapi kita juga bisa menggunakan hak akses lain seperti private dan protected untuk static property dan  static method.

Karena static property dan static method adalah milik class, maka kita tidak perlu membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama class dan menggunakan operator ‘::’, berikut adalah contoh pengaksesan static property dan static method dari class laptop:

1

2

echo laptop::$harga_beli;

echo laptop::beli_laptop();

Tutorial Cara Penggunaan Static Property dan Static Method

Agar lebih memahami cara penggunaan static property dan static method, langsung saja kita masuk ke dalam kode program:

1 <?php

Page 330: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// buat class laptop

class laptop {

public $merk;

public $pemilik;

// static property

public static $harga_beli;

//static method

public static function beli_laptop() {

return "Beli Laptop";

}

}

// set static property

laptop::$harga_beli=4000000;

// get static property

echo "harga beli : Rp".laptop::$harga_beli;

echo "<br />";

// panggil static method

echo laptop::beli_laptop();

?>

Dalam kode diatas, saya membuat class laptop dengan 2 property ‘biasa’, 1 static property dan 1 static method. Perhatikan cara mengkases keduanya tanpa membuat objek.

Cara Mengakses Static Property dan Static Method Dari Class Itu Sendiri

Page 331: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Jika kita menggunakan variabel $this untuk mengakses property dan method ‘normal’ dari dalam class, maka untuk mengakses static property dan static method, kita menggunakan keyword “self::”. Berikut contoh penggunaannya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

// buat class laptop

class laptop {

public $merk;

public $pemilik;

// static property

public static $harga_beli;

//static method

public static function beli_laptop() {

return "Beli laptop seharga Rp".self::$harga_beli;

}

}

// set static property

laptop::$harga_beli=4000000;

// panggil static method

echo laptop::beli_laptop();

?>

Pada kode program PHP diatas, saya menggunakan perintah self::$harga_beli, untuk memanggilstatic property dari dalam class laptop itu sendiri.

Cara Mengakses Static Property dan Static Method Parent Class

Page 332: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Untuk class dengan penurunan (inheritance), kita bisa menggunakan keywordparent::nama_property dan parent::nama_method untuk mengakses static property dan static method dari parent class.

Misalnya class laptop adalah turunan dari class komputer, kita bisa menggunakan perintahparent::beli_komputer() untuk mengakses static method pada class komputer dari dalam class laptop.

Berikut adalah contoh pengaksesan static method milik parent class:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?php

// buat class komputer

class komputer {

// protected static method

protected static function beli_komputer(){

return "Beli Komputer Baru";

}

}

// turunkan class komputer ke class laptop

class laptop extends komputer{

// private static method

private static function beli_laptop(){

return "Beli Laptop Baru";

}

// public static method

public static function beli_semua(){

echo parent::beli_komputer();

echo "<br />";

echo self::beli_laptop();

Page 333: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

24

25

26

27

28

29

30

31

32

33

34

}

}

// panggil static method

laptop::beli_semua();

// coba panggil private static method

// laptop::beli_laptop();

// Fatal error: Call to private method laptop::beli_laptop()

?>

Pada kode diatas, saya membuat class komputer dengan sebuah static method beli_komputer(). Method ini memiliki hak akses protected, sehingga hanya bisa diakses dari dalam class itu sendiri atau dari dalam class turunan.

Class komputer kemudian ‘diturunkan’ kepada class laptop. Di dalam class laptop, saya membuat dua buah static method. Static method beli_laptop() di set dengan hak akses private, sehingga tidak bisa diakses dari luar class laptop.

Dalam method beli_semua(), saya memanggil method beli_komputer() milik class komputermenggunakan perintah parent::beli_komputer(). Ini adalah cara pemanggilan static method milikparent class. Kemudian masih di dalam method beli_semua(), saya memanggil method beli_laptop()dengan perintah self::beli_laptop(), karena method ini ada di dalam class leptop itu sendiri.

Untuk menguji apakah method beli_semua() sukses dijalankan, saya kemudian memanggilnya dengan perintah laptop::beli_semua().

Perhatikan juga pada bagian komentar di akhir kode diatas. Jika kita mencoba memanggil method laptop::beli_laptop(), PHP akan mengeluarkan error karena method beli_laptop() memiliki hak aksesprivate, sehingga tidak bisa diakses dari luar class.

Dalam membuat program berbasis objek, penggunaan static property (dan juga static method) sebaiknya dibatasi, karena static method cenderung susah dideteksi jika terjadi kesalahan. Namun konsep property dan method yang melekat kepada class ini banyak juga digunakan untuk membuatdesign pattern. Bahkan di dalam framework PHP seperti laravel, static method merupakan mekanisme utama untuk menjalankan sebagian besar kode program.

Page 334: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial selanjutnya, kita akan mempelajari pengertian konstanta class dalam pemrograman objek.

Tutorial Belajar OOP PHP Part 13: Pengertian Konstanta Class dalam Pemrograman Objek

Dalam tutorial belajar object oriented programming PHP kali ini, kita akan mempelajari pengertian konstanta class. Cara pengaksesan konstanta class dalam PHP, mirip dengan cara mengakses static property yang telah kita pelajari dalam tutorial sebelumnya.

Pengertian Konstanta Class

Konstanta Class atau class constant adalah konstanta yang berada di dalam class. Selain memilikiproperty dan method, PHP juga membolehkan kita menggunakan konstanta (constant) di dalam class.

Sebagaimana sifat konstanta reguler, class constant juga tidak bisa diubah nilainya ketika sudah didefenisikan. Untuk membuat class constant di dalam PHP, kita menggunakan perintah: const.

Berikut adalah contoh kode program pembuatan constanta di dalam class:

1

2

3

class nama_class {

const NAMA_KONSTANTA = nilai_konstanta;

}

Penulisan nama konstanta dengan huruf besar bukan keharusan, namun lebih kepada kebiasaan programmer PHP agar mudah dibedakan dengan variabel yang umumnya ditulis dengan huruf kecil.

Di dalam PHP, class constant seolah-olah berprilaku sebagai static property. Class constant juga terikat kepada class, bukan objek. Oleh karena itu, untuk mengakses nilai konstanta, kita menggunakan operator yang sama seperti static property, yakni menggunakan double colon ‘::’.

Jika kita memiliki class laptop dan konstanta MERK, maka cara mengaksesnya adalah sebagai berikut:

1 laptop::MERK;

Cara Penulisan Konstanta Class dalam PHP

Untuk melihat cara penulisan dan penggunaan konstanta class, kita akan langsung menggunakan kode program. Berikut adalah contoh class laptop dengan sebuah konstanta DOLLAR:

1 <?php

Page 335: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

4

5

6

7

8

9

10

11

// buat class laptop

class laptop {

// buat konstanta

const DOLLAR = '12000';

}

// panggil konstanta class

echo "Harga dollar saat ini = Rp. ".laptop::DOLLAR;

// hasil: Harga dollar saat ini = Rp. 12000

?>

Perhatikan bahwa untuk mengakses class constant DOLLAR milik class laptop, kita menggunakan perintah laptop::DOLLAR.

Selain mengakses konstanta dengan menggunakan nama class, PHP juga memiliki cara lain, yakni dengan mengaksesnya dari objek. Fitur ini hanya bisa digunakan untuk PHP versi 5.3 keatas. Berikut contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// buat class laptop

class laptop {

// buat konstanta

const DOLLAR = '12000';

}

// buat objek dari class laptop (instansiasi)

$laptop_baru = new laptop();

// panggil konstanta class

echo "Harga dollar saat ini = Rp ".$laptop_baru::DOLLAR;

// hasil: Harga dollar saat ini = Rp. 12000

Page 336: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

14 ?>

Dalam kode diatas, kita mengakses nilai kontanta class dari objek $laptop_baru menggunakan perintah $laptop_baru::DOLLAR.

PHP versi 5.3 keatas juga membolehkan pemanggilan property dengan nama class yang berada di dalam variabel. Berikut contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat class laptop

class laptop {

// buat konstanta

const DOLLAR = '12000';

}

// buat variabel dengan nama class

$nama = "laptop";

// panggil konstanta class

echo "Harga dollar saat ini = Rp. ".$nama::DOLLAR;

// hasil: Harga dollar saat ini = Rp. 12000

?>

Pada kode program diatas, saya tidak menggunakan objek, tetapi membuat variabel $nama dan memberikannya nilai laptop. Karena nama class kita juga adalah laptop, maka PHP membolehkan pemanggilan kosntanta DOLLAR dengan $nama::DOLLAR. Nama variabel yang digunakan boleh bebas, selama nilainya cocok dengan nama class tempat konstanta itu berada.

Cara Mengakses Konstanta Class dari dalam Class itu Sendiri

Untuk mengakses class constant dari dalam class itu sendiri, PHP menggunakan cara yang sama dengan static property, yaitu dengan perintah self::nama_konstanta. Berikut contohnya:

1

2

<?php

// buat class laptop

Page 337: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

class laptop {

// buat konstanta

const DOLLAR = '12000';

// buat method

public function beli_laptop($harga) {

return "Beli Komputer Baru, Rp. ".$harga*self::DOLLAR;

}

}

// buat objek dari class laptop (instansiasi)

$laptop_baru=new laptop();

echo $laptop_baru->beli_laptop(400);

// hasil: Beli Komputer Baru, Rp. 4800000

?>

Saya membuat class laptop dengan sebuah method beli_laptop(). Method beli_laptop() digunakan untuk menghitung harga laptop dengan mengalikan konstanta class DOLLAR dengan parameter$harga. Perhatikan bahwa kita mengakses class constant dengan perintah self::DOLLAR.

Cara Mengakses Konstanta Class milik Parent Class

Pewarisan class (class inheritance) dari sebuah class kedalam class lain, juga akan menurunkan konstanta. Jika kebetulan class yang diturunkan (child class) memiliki nama konstanta yang sama dengan parent class, konstanta tersebut akan ‘tertimpa’.

PHP menggunakan operator parent::nama_konstanta untuk mengakses konstanta milik parent class.

Agar lebih mudah, berikut adalah contoh kode program penggunaan operatorparent::nama_konstanta:

1

2

3

<?php

// buat class komputer

class komputer {

Page 338: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

// buat konstanta class komputer

const DOLLAR = '11000';

}

// turunkan class komputer ke class laptop

class laptop extends komputer {

// buat konstanta class laptop

const DOLLAR = '12000';

// buat method dengan konstanta class komputer

public function beli_komputer($harga){

return "Beli Komputer Baru, Rp .".$harga*parent::DOLLAR;

}

// buat method dengan konstanta class laptop

public function beli_laptop($harga){

return "Beli Komputer Baru, Rp .".$harga*self::DOLLAR;

}

}

// buat objek dari class laptop (instansiasi)

$laptop_baru=new laptop();

echo $laptop_baru->beli_laptop(400);

echo "<br />";

echo $laptop_baru->beli_komputer(400);

?>

Saya membuat konstanta DOLLAR di dalam class komputer. Class komputer kemudian diturunkan ke dalam class laptop. Di dalam class laptop, saya mendefenisikan kembali konstanta DOLLAR. Karena

Page 339: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

kedua konstanta ini memiliki nama yang sama, maka saya harus menggunakan perintahparent::DOLLAR untuk memanggil konstanta DOLLAR miliki class komputer.

Dalam tutorial OOP PHP kali ini kita telah mempelajari tentang pengertian konstanta class dan cara penggunaan konstanta class dalam PHP. Walaupun konstanta class jarang digunakan di dalam pemograman umum, namun fitur yang ditawarkan mungkin bisa membantu untuk penyelesaian kasus-kasus tertentu.

Dalam tutorial OOP PHP berikutnya, kita akan mempelajari Pengertian Final Method dan Final Class Pemrograman Objek PHP.

Tutorial Belajar OOP PHP Part 14: Pengertian Final Method dan Final Class Pemrograman Objek

Setelah sebelumnya mempelajari tentang class constant, dalam tutorial belajar OOP PHP kali ini kita akan membahas pengertian final method dan final class dalam pemrograman objek PHP.

Pengertian Final Method dan Final Class

Dalam membuat desain class, kita sering menurunkan sebuah class kepada class lain, atau yang dikenal dengan inheritance/pewarisan. Pemrograman objek juga membolehkan kita untuk ‘menimpa’method milik parent class dengan method milik child class. Proses menimpa method atau dikenal dengan istilah overridden method ini dilakukan dengan cara membuat nama method yang sama dengan nama method yang ada di dalam parent class.

Bagaimana jika kita menginginkan sebuah mekanisme untuk melarang class anak untuk membuat method yang akan menimpa method class induk? Atau bahkan melarang sebuah class untuk diturunkan sama sekali? Untuk keperluan ini, pemrograman objek PHP menggunakan keyword:final.

Dengan menambahkan keyword final kepada sebuah method, maka method tersebut tidak dapat didefenisikan ulang di dalam child class. Dan jika sebuah class ditambahkan keyword final, makaclass tersebut tidak bisa diturunkan sama sekali. Inilah pengertian dari final method dan final class.

Untuk membuat final method, kita tinggal menambahkan kata final sebelum keyword hak akses, seperti berikut ini:

1 final public function nama_method(){

Page 340: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

//... isi method

}

Sedangkan untuk membuat final class, kita menambahkan kata final sebelum nama class, seperti contoh berikut ini:

1

2

3

final class nama_class {

//... isi class

}

Cara Penggunaan Final Method dan Final Class dalam PHP

Untuk membahas cara menggunakan final method dan final class, pertama kali mari kita lihat cara penulisan dan penggunaan final method dalam PHP.

Dalam contoh berikut, saya membuat class komputer dengan sebuah final method, kemudian saya mencoba menimpa method ini dari class laptop:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

class komputer{

final public function lihat_spec(){

return "Lihat Spesifikasi Komputer";

}

}

class laptop extends komputer{

public function lihat_spec(){

return "Lihat Spesifikasi Laptop";

}

}

$laptop_baru=new laptop();

// Fatal error: Cannot override final method

// komputer::lihat_spec()

Page 341: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

17 ?>

Pada kode program diatas, class komputer memiliki method lihat_spec() yang di-set sebagai final. Kemudian class komputer ini saya turunkan kepada class laptop. Di dalam class laptop, saya mendefenisikan ulang method lihat_spec(), sehingga method lihat_spec() milik class komputer akan tertimpa oleh method lihat_spec() milik class laptop.

Saat saya membuat objek $laptop_baru dari class laptop, PHP akan mengeluarkan error: Cannot override final method komputer::lihat_spec(). Error ini menjelaskan bahwa kita tidak bisa menimpa method lihat_spec() milik  class komputer, karena method tersebut telah di set sebagai final.

Jika sebuah final method tidak bisa ditimpa nilainya, maka sebuah final class tidak bisa diturunkan kepada class lain. Sebagai contoh kedua kita, berikut adalah kode PHP dimana saya mencoba menurunkan final class:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

final class komputer{

function lihat_spec(){

return "Lihat Spesifikasi Komputer";

}

}

class laptop extends komputer{

}

$laptop_baru=new laptop();

// Fatal error: Class laptop may not inherit

// from final class (komputer)

?>

Saya membuat sebuah final  class komputer, kemudian mencoba menurunkannya kepada class laptop. Saat proses pembuatan objek: $laptop_baru=new laptop(), PHP akan komplain dan mengeluarkan error: Fatal error: Class laptop may not inherit from final class (komputer). Dari hasil error yang didapat, PHP melarang kita untuk menurunkan class komputer, karena telah di set sebagai final class.

Sebagai contoh ketiga, walaupun PHP memang tidak memiliki final property, namun mari kita coba membuatnya:

1 <?php

Page 342: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

2

3

4

5

6

7

8

9

class komputer {

final $merk;

}

$laptop_baru=new komputer();

// Fatal error: Cannot declare property komputer::$merk final,

// the final modifier is allowed only for methods and classes

?>

Dari hasil error yang didapat, ternyata PHP memang tidak mendukung final property :)

Final method dan final class bisa digunakan untuk membuat desain class yang terstruktur. Dalam tutorial OOP PHP selanjutnya, kita akan membahas tentang Pengertian Abstract Class dan Abstract Method dalam Pemrograman Objek PHP.

Tutorial Belajar OOP PHP Part 15: Pengertian Abstract Class dan Abstract Method PHP

Dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang pengertian abstract class dan abstract method dalam pemrograman objek, serta cara pembuatan abstract class dan abstract method dengan PHP.

Pengertian Abstract Class dan Abstract Method

Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak bisa dibuat menjadi objek) dan berperan sebagai ‘kerangka dasar’ bagi class turunannya. Di dalam abstract class umumnya akan memiliki abstract method.

Abstract Method adalah sebuah ‘method dasar’ yang harus diimplementasikan ulang di dalam class anak (child class). Abstract method ditulis tanpa isi dari method, melainkan hanya ‘signature’-nya saja. Signature dari sebuah method adalah bagian method yang terdiri dari nama method dan parameternya (jika ada).

Abstract class digunakan di dalam inheritance (pewarisan class) untuk ‘memaksakan’ implementasi method yang sama bagi seluruh class yang diturunkan dari abstract class. Abstract class digunakan untuk membuat struktur logika penurunan di dalam pemrograman objek.

Konsep abstract class dan abstract method akan lebih mudah dipahami dengan menggunakan contoh.

Misalkan kita ingin membuat class yang terdiri dari berbagai jenis komputer seperti class laptop,class PC, class netbook, dan lain-lain. Seluruh class ini tentunya memiliki sifat-sifat komputer, sepertimemiliki 

Page 343: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

spesifikasi, memiliki processor, dan membutuhkan listrik. Dalam implementasinya, kita bisa membuat seluruh class ini diturunkan dari class komputer.

Agar lebih seragam, kita ingin seluruh class yang diturunkan dari class komputer, memiliki method yang ‘pasti’ ada dalam setiap class anak. Setiap komputer tentunya memiliki spesifikasi, sehingga kita ingin setiap class yang diturunkan dari class komputer memiliki method lihat_spec().

Bagaimana caranya ‘memaksa’ setiap class agar memiliki method lihat_spec()? Untuk kebutuhan ini, kita bisa membuat class komputer sebagai abstract class, dan method lihat_spec() sebagai abstract method.

Lebih lanjut, abstract method tidak hanya membuat setiap class memiliki method lihat_spec(), tetapi memaksa setiap method mengimplementasikan method lihat_spec() dengan isi method di serahkan kepada masing-masing class. Tentunya spesifikasi class laptop akan berbeda dengan spesifikasi class PC.

Abstract class memiliki aturan yang membedakannya dengan class biasa. Kita akan membahas aturan-aturan tersebut dengan menggunakan contoh program PHP.

Cara Membuat Abstract Class

Karena kita ingin membuat class komputer sebagai abstract class, maka berikut adalah cara penulisannya di dalam PHP:

1

2

3

4

5

<?php

abstract class komputer {

// isi dari class komputer

}

?>

Untuk membuat abstract class di dalam PHP, kita tinggal menambahkan keyword abstract sebelum nama class. Sebuah abstract class bisa memiliki property dan method biasa layaknya sebuah class ‘normal’, namun juga bisa memiliki abstract method.

Cara Membuat Abstract Method

Jika sebuah method dinyatakan sebagai abstract method, maka kita tidak perlu membuat isi methodnya, tetapi hanya signature dari method tersebut. Signature terdiri dai nama method dan parameternya (jika ada) seperti contoh berikut:

1

2

abstract public function lihat_spec();

abstract public function lihat_spec($merk);

Kenapa kita tidak perlu membuat isi dari method? Ini karena jika sebuah method dinyatakan sebagaiabstract method, isi dari method tersebut akan dibuat dalam class turunan. Abstract method harusberada di dalam abstract class.

Page 344: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Sebagai contoh, berikut adalah cara penulisan abstract method lihat_spec() di dalam abstract classkomputer:

1

2

3

4

5

<?php

abstract class komputer {

abstract public function lihat_spec();

}

?>

Perhatikan bahwa kita tidak perlu (baca:tidak bisa) membuat isi dari abstract method.

Abstract Class Tidak Bisa Diinstansiasi

Sesuai dengan sifatnya, kita tidak bisa membuat objek dari abstract class. Abstract class digunakan hanya sebagai ‘blueprint’ untuk class-class lain, bukan untuk digunakan langsung.

1

2

3

4

5

6

7

8

abstract class komputer {

abstract public function lihat_spec($pemilik);

}

}

$komputer_baru=new komputer();

// Fatal error: Cannot instantiate abstract class komputer

?>

Error diatas terjadi karena kita mencoba membuat objek dari abstract class. Untuk menggunakan class komputer, kita harus menurunkannya kepada class lain.

Abstract Class Bisa Memiliki Property dan Method ‘biasa’

Jika sebuah class dinyatakan sebagai abstract class, class tersebut juga bisa memiliki property danmethod ‘normal’. Namun kita hanya bisa mengakses property dan method ini dari class turunan, karena abstract class tidak bisa diinstansiasi.

1

2

3

<?php

// buat abstract class

abstract class komputer{

Page 345: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

4

5

6

7

8

9

10

11

12

13

// buat abstract method

abstract public function lihat_spec($pemilik);

// buat method ‘biasa’

public function hidupkan_komputer(){

echo "Hidupkan Komputer";

}

}

?>

Class Turunan Harus Mengimplementasikan Abstract Method

Jika sebuah class diturunkan dari abstract class, maka class tersebut harus membuat ulang seluruh abstract method yang terdapat dalam abstract class, dan juga harus sesuai dengan signature-nya.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function lihat_spec();

}

class laptop extends komputer{

public function beli_laptop(){

return "Beli Laptop...";

}

}

// buat objek dari class laptop

$laptop_baru = new laptop();

Page 346: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

16

17

18

19

20

// Fatal error: Class laptop contains 1 abstract method

// and must therefore be declared abstract or implement

// the remaining methods (komputer::lihat_spec)

?>

Dalam contoh diatas, saya menurunkan class komputer kepada class laptop. Karena class komputeradalah abstract class dan memiliki abstract method lihat_spec(), maka di dalam class laptop kita harus membuat ulang method lihat_spec(). Jika tidak, akan terjadi kode error seperti diatas. Untuk mengatasinya, mari kita revisi kode diatas menjadi berikut ini :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function lihat_spec();

}

class laptop extends komputer{

// implementasi abstract method

public function lihat_spec(){

return "Lihat Spec Laptop...";

}

// method 'biasa'

public function beli_laptop(){

return "Beli Laptop...";

}

}

Page 347: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

21

22

23

24

25

26

27

28

29

30

// buat objek dari class laptop

$laptop_baru = new laptop();

echo $laptop_baru->lihat_spec();

// Lihat Spec Laptop...

echo "<br />";

echo $laptop_baru->beli_laptop();

// Beli Laptop...

?>

Dalam kode diatas, method lihat_spec() telah kita implementasikan di dalam class laptop. Fitur inilah yang menjadi fungsi dari abstract method, yakni ‘memaksa’ setiap class turunan untuk memilikimethod lihat_spec().

Implementasi dari abstract method, juga harus sesuai dengan signaturenya, yakni nama methodbeserta parameter. Jika kita membuat abstract method lihat_spec($merk), maka di dalam class turunan, kita juga harus membuat $merk sebagai parameter method. Jika tidak, maka PHP akan menghasilkan error sebagai berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function lihat_spec($pemilik);

}

class laptop extends komputer{

public function lihat_spec(){

return "Lihat Spec Laptop...";

}

}

Page 348: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

14

15

16

17

18

19

// buat objek dari class laptop

$laptop_baru = new laptop();

// Fatal error: Declaration of laptop::lihat_spec()

// must be compatible with komputer::lihat_spec($pemilik)

?>

Abstract Class Bisa Memiliki Static Method

Salah satu fitur ‘khusus’ untuk abstract class di dalam PHP, adalah: abstract class bisa memiliki static method. Berikut contohnya:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function lihat_spec($pemilik);

public static function hidupkan_komputer(){

echo "Hidupkan Komputer";

}

}

echo komputer::hidupkan_komputer();

// Hidupkan Komputer

?>

Fungsi Abstract Class dan Abstract Method

Abstract class dan abstract method berfungsi untuk membuat ‘kerangka’ bagi seluruh class dibawahnya. Seperti contoh-contoh kita diatas, setiap class yang diturunkan dari class komputer, ‘pasti’ akan memiliki method lihat_spec().

Page 349: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial ini saya menyederhanakan contoh kode program dengan hanya 1 abstract method. Kita bisa membuat beberapa abstract method di dalam abstract class, seperti contoh berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function lihat_spec();

abstract public function lihat_processor();

abstract public function lihat_harddisk();

abstract public function lihat_pemilik();

}

class laptop extends komputer{

// .. isi class laptop

}

class pc extends komputer{

// .. isi class pc

}

class netbook extends komputer{

// .. isi class netbook

}

?>

Dengan membuat class komputer sebagai abstract, maka kita bisa menebak bahwa di dalam class laptop, class pc dan  class netbook, pasti memiliki method lihat_spec(), lihat_processor(), lihat_harddisk() dan lihat_pemilik(). Dengan demikian, kita bisa membuat program yang lebih terstruktur.

Page 350: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Dalam tutorial OOP PHP berikutnya, kita akan membahas tentang Object Interfaces atau dikenal dengan sebutan Interface saja. Interface di dalam pemograman objek sangat mirip dengan abstract class. Kita akan membahas pengertian, cara penggunaan serta perbedaan Object Interface dengan Abstract Class.

Tutorial Belajar OOP PHP Part 16: Pengertian Object Interface Dalam Pemrograman Berbasis Objek

Setelah dalam tutorial sebelumnya kita mempelajari tentang abstract class dan abstract method, dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang Objek Interface dalam pemrograman berbasis objek. Object Interface ini sangat mirip dengan Abstract class.

Pengertian Object Interface

Secara sederhana, Object Interface adalah sebuah ‘kontrak’ atau perjanjian implementasi method.

Bagi class yang menggunakan object interface, class tersebut harus mengimplementasikan ulang seluruh method yang ada di dalam interface. Dalam pemrograman objek, penyebutan object interfacesering disingkan dengan ‘Interface’ saja.

Jika anda telah mempelajari abstract class, maka interface bisa dikatakan sebagai bentuk lain dariabstract class. Walaupun secara konsep teoritis dan tujuan penggunaannya berbeda.

Sama seperti abstract class, interface juga hanya berisi signature dari method, yakni hanya namamethod dan parameternya saja (jika ada). Isi dari method akan dibuat ulang di dalam class yang menggunakan interface.

Jika kita menganggap abstract class sebagai ‘kerangka’ atau ‘blue print’ dari class-class lain, makainterface adalah implementasi method yang harus ‘tersedia’ dalam sebuah objek. Interface tidak bisa disebut sebagai ‘kerangka’ class.

Menyambung analogi kita tentang class komputer, interface bisa dicontohkan dengan ‘mouse’, atau ‘keyboard’. Di dalam interface mouse, kita bisa membuat method seperti klik_kiri(), klik_kanan(), dandouble_klik(). Jika class laptop ‘menggunakan’ interface mouse, maka class tersebut harus membuat ulang method klik_kiri(), klik_kanan(), dan double_klik().

Cara Membuat Interface dalam PHP

Untuk membuat Interface di dalam PHP, kita menulisnya mirip seperti membuat class, tetapi menggunakan keyword interface, seperti contoh berikut:

1

2

3

4

5

<?php

interface mouse

{

//...isi dari interface mouse

}

Page 351: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

6 ?>

Isi dari interface adalah signature method (nama dan parameter method):

1

2

3

4

5

6

7

8

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

public function scroll();

public function double_klik();

}

?>

Untuk menggunakan method kedalam class, kita menggunakan keyword implements, seperti contoh berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

class laptop implements mouse{

//... isi dari class laptop

}

class pc implements mouse{

//... isi dari class pc

}

?>

Interface adalah ‘perjanjian method’, dimana jika sebuah class menggunakan interface, maka di dalam class tersebut harus tersedia implementasi dari method tersebut.

Jika di dalam interface mouse terdapat signature method klik_kanan(), maka di dalam class laptop yang menggunakan interface mouse, harus terdapat method klik_kanan(). Berikut contoh kode PHPnya:

Page 352: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

class laptop implements mouse{

public function klik_kanan(){

return "Klik Kanan...";

}

public function klik_kiri(){

return "Klik Kiri...";

}

}

$laptop_baru = new laptop();

echo $laptop_baru->klik_kanan();

// Klik Kanan...

?>

Apabila kita tidak membuat ulang salah satu method yang ada di interface, PHP akan mengeluarkanerror:

1

2

3

4

5

6

7

8

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

class laptop implements mouse{

public function klik_kanan(){

Page 353: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

9

10

11

12

13

14

15

16

17

return "Klik Kanan...";

}

}

$laptop_baru = new laptop();

// Fatal error: Class laptop contains 1 abstract method

// and must therefore be declared abstract

// or implement the remaining methods (mouse::klik_kiri)

?>

Method Interface Harus di set Sebagai Public

Sesuai dengan tujuannya untuk membuat interface/antar muka bagi class, method di dalam perancangan interface harus memiliki hak akses public, atau tidak ditulis sama sekali (dimana PHP akan menganggapnya sebagai public). Jika kita mengubah hak akses method di dalam interfacemenjadi private atau protected, PHP akan mengeluarkan error:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

interface mouse{

public function klik_kanan();

protected function klik_kiri();

}

class laptop implements mouse{

public function klik_kanan(){

return "Klik Kanan...";

}

public function klik_kiri(){

return "Klik Kiri...";

}

}

Page 354: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

15

16

17

18

19

$laptop_baru = new laptop();

// Fatal error: Access type for interface

// method mouse::klik_kiri() must be omitted

?>

Di dalam class yang menggunakan interface, method yang berasal dari interface juga harus memiliki hak akses public. Kita tidak bisa mengubahnya menjadi protected atau private.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

class laptop implements mouse{

public function klik_kanan(){

return "Klik Kanan...";

}

protected function klik_kiri(){

return "Klik Kiri...";

}

}

$laptop_baru = new laptop();

// Fatal error: Access level to laptop::klik_kiri()

// must be public (as in class mouse)

?>

Dalam contoh diatas, saya mengubah hak akses method klik_kiri() menjadi protected di dalam class laptop. Hal ini akan menghasilkan error.

Page 355: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Interface bisa di Turunkan (Inherit)

Di dalam PHP, interface bisa diturunkan kedalam interface lain. Prosesnya mirip dengan penurunanclass, yakni dengan menggunakan kata kunci extends:

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

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

interface mouse_gaming extends mouse{

public function ubah_dpi();

}

class laptop implements mouse_gaming{

public function klik_kanan(){

return "Klik Kanan...";

}

public function klik_kiri(){

return "Klik Kiri...";

}

public function ubah_dpi(){

return "Ubah settingan DPI mouse";

}

}

$laptop_baru = new laptop();

Page 356: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

26

27

28

echo $laptop_baru->ubah_dpi();

// Ubah settingan DPI mouse

?>

Interface Bisa Memiliki Konstanta

Dalam PHP, Interface bisa memiliki konstanta . Berikut adalah contoh penggunaan konstanta di dalam interface:

1

2

3

4

5

6

7

8

9

10

<?php

interface mouse{

const JENIS = "Laser Mouse";

public function klik_kanan();

public function klik_kiri();

}

echo mouse::JENIS;

// Laser Mouse

?>

Untuk mengakses konstanta dari interface, kita menggunakan perintah nama_interface::nama_konstanta.

Interface Tidak Bisa Memiliki Method ‘normal’

Salah satu yang membedakan interface dengan abstract class adalah kita tidak bisa membuat method biasa di dalam Interface. Contoh berikut akan menghasilkan error:

1

2

3

4

5

6

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri(){

return "Klik Kiri...";

}

Page 357: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

7

8

9

10

11

12

13

14

15

16

17

18

}

class laptop implements mouse{

public function klik_kanan(){

return "Klik Kanan...";

}

}

$laptop_baru = new laptop();

// Fatal error: Interface function

// mouse::klik_kiri() cannot contain body

?>

Sebuah Class Bisa Menggunakan Banyak Interface

Perbedaan lain antara Interface dengan Abstract Class adalah: Sebuah class bisa menggunakan lebih dari 1 interface, sedangkan untuk abstract class, kita hanya bisa menggunakan 1 abstract class dalam sekali penurunan class.

Untuk menggunakan lebih dari 1  interface, kita tinggal menuliskan semua interface setelah keywordimplements. Setiap nama interface dipisahkan dengan tanda koma. Berikut contoh penggunaan 2 buah interface di dalam PHP:

1

2

3

4

5

6

7

8

9

10

<?php

interface mouse{

public function klik_kanan();

public function klik_kiri();

}

interface keyboard{

public function tekan_enter();

}

Page 358: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

class laptop implements mouse, keyboard{

public function klik_kanan(){

return "Klik Kanan...";

}

public function klik_kiri(){

return "Klik Kiri...";

}

public function tekan_enter(){

return "Tekan Tombol Enter...";

}

}

$laptop_baru = new laptop();

echo $laptop_baru->tekan_enter();

// Tekan Tombol Enter...

?>

Dalam contoh diatas saya membuat dua buah interface, yakni mouse dan keyboard. Kedua interfaceini kemudian digunakan oleh class laptop.

Fungsi Interface dalam Pemrograman Objek

Jika anda telah mempelajari abstract class dalam tutorial kita sebelumnya, sedikit banyak kita bisa memahami fungsi interface jika dibandingkan dengan fungsi abstract class. Kedua konsep ini sering membuat bingung karena mirip dalam implementasinya.

Interface lebih berperan untuk menyeragamkan method. Ia tidak masuk kedalam struktur class seperti abstract class. Jika kita menggunakan abstract class komputer sebagai ‘konsep class’ untuk kemudian diturunkan kepada class lain seperti class laptop, class pc, dan  class netbook, maka interface hanya ‘penyedia method’. Interface tidak termasuk kedalam pewarisan class.

Page 359: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Object Interface dan Abstract Class merupakan implementasi dari konsep pemrograman objek yang disebut sebagai Polimorfisme. Pengertian Polimorfisme atau polymorphism, akan kita bahas dalam tutorial OOP PHP selanjutnya.

Tutorial Belajar OOP PHP Part 17: Pengertian Polimorfisme dalam Pemrograman Objek PHP

Abstract Class dan Object Interfaces yang kita pelajari dalam 2 tutorial sebelum ini merupakan implementasi dari konsep pemrograman berbasis objek yang dinamakan Polimorfisme. Dalam tutorial OOP PHP kali ini, kita akan membahas pengertian polimorfisme dalam pemrograman objek PHP, disertai contoh penggunaannya.

Pengertian Polimorfisme

Dari segi bahasa, Polimorfisme (bahasa inggris: Polymorphism) berasal dari dua kata bahasa latin yakni poly dan morph. Poly berarti banyak, dan morph berarti bentuk. Polimorfisme berarti banyak bentuk (wikipedia).

Di dalam pemrograman objek, polimorfisme adalah konsep dimana terdapat banyak class yang memiliki  signature method yang sama. Implementasi dari method-method tersebut diserahkan kepada tiap class, akan tetapi cara pemanggilan method harus sama. Agar kita dapat ‘memaksakan’signature method yang sama pada banyak class, class tersebut harus diturunkan dari sebuahabstract class atau object interface.

Sebagai contoh, berikut adalah kode PHP yang mengimplementasikan konsep polimorfisme:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function booting_os();

}

class laptop extends komputer{

public function booting_os(){

return "Proses Booting Sistem Operasi Laptop";

}

}

Page 360: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

class pc extends komputer{

public function booting_os(){

return "Proses Booting Sistem Operasi PC";

}

}

class chromebook extends komputer{

public function booting_os(){

return "Proses Booting Sistem Operasi Chromebook";

}

}

// buat objek dari class diatas

$laptop_baru = new laptop();

$pc_baru = new pc();

$chromebook_baru = new chromebook();

// buat fungsi untuk memproses objek

function booting_os_komputer($objek_komputer){

return $objek_komputer->booting_os();

}

// jalankan fungsi

echo booting_os_komputer($laptop_baru);

echo "<br />";

echo booting_os_komputer($pc_baru);

echo "<br />";

Page 361: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

42

43

echo booting_os_komputer($chromebook_baru);

?>

Contoh kode diatas cukup panjang, namun jika anda mengikuti tutorial OOP PHP sebelumnya (tentang abstract class), maka kode diatas akan bisa dipahami dengan baik.

Pada awal program, saya membuat abstract class komputer yang kemudian diturunkan kedalam 3 class lain, yakni: class laptop, class pc dan  class chromebook. Abstract class komputer memiliki abstract method booting_os(), yang harus diimplementasikan ulang pada tiap class yang diturunkan dari class komputer. Setelah pendefenisian class, saya membuat 3 objek dari masing-masing class.

Perhatikan bahwa setelah pembuatan objek dari masing-masing class, saya membuat fungsibooting_os_komputer(). Fungsi ini berperan untuk memanggil method-method dari setiap class.

Konsep polimorfisme dari contoh diatas adalah, fungsi booting_os_komputer() akan selalu berhasil dijalankan, selama argumen yang diberikan berasal dari class yang diturunkan dari class abstract komputer.

Peran Abstract Class dan Interface dalam Polimorfisme

Baik abstract class maupun interface bisa digunakan untuk membuat banyak class dengan method yang sama. Bahkan keduanya sering digunakan secara bersama-sama.

Berikut adalah revisi kode program kita sebelumnya dengan menggunakan abstract class daninterface:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// buat abstract class

abstract class komputer{

// buat abstract method

abstract public function booting_os();

}

interface mouse{

public function double_klik();

}

class laptop extends komputer implements mouse{

public function booting_os(){

Page 362: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

return "Proses Booting Sistem Operasi Laptop";

}

public function double_klik(){

return "Double Klik Mouse Laptop";

}

}

class pc extends komputer implements mouse{

public function booting_os(){

return "Proses Booting Sistem Operasi PC";

}

public function double_klik(){

return "Double Klik Mouse PC";

}

}

class chromebook extends komputer implements mouse{

public function booting_os(){

return "Proses Booting Sistem Operasi Chromebook";

}

public function double_klik(){

return "Double Klik Mouse Chromebook";

}

}

// buat objek dari class diatas

$laptop_baru = new laptop();

$pc_baru = new pc();

Page 363: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

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

68

69

$chromebook_baru = new chromebook();

// buat fungsi untuk memproses objek

function booting_os_komputer($objek_komputer){

return $objek_komputer->booting_os();

}

function double_klik_komputer($objek_komputer){

return $objek_komputer->double_klik();

}

// jalankan fungsi

echo booting_os_komputer($laptop_baru);

echo "<br />";

echo double_klik_komputer($laptop_baru);

echo "<br />";=-?

echo "<br />";

echo booting_os_komputer($pc_baru);

echo "<br />";

echo double_klik_komputer($pc_baru);

echo "<br />";

echo "<br />";

echo booting_os_komputer($chromebook_baru);

echo "<br />";

echo double_klik_komputer($chromebook_baru);

?>

Page 364: Projek Print Tutorial Belajar PHP Part 13

http://www.duniailkom.com_____________________________________________________________

Pada kode program diatas, saya membuat 1 abstract class: komputer, dan 1 interface: mouse. Keduanya kemudian di turunkan kepada 3 class: class laptop, class pc, dan  class chromebook.

Selama sebuah class diturunkan dari abstract class komputer, dan menggunakan interface mouse, fungsi booting_os_komputer() dan fungsi double_klik_komputer() akan selalu berhasil di jalankan, terlepas dari apapun nama objek dan implementasi method yang digunakan.

Konsep polimorfisme yang kita bahas dalam tutorial ini bertujuan untuk membuat struktur pola dari class dan turunannya. Lebih jauh lagi, polimorfisme menekankan alur kode program yang terorganisir untuk mengurangi adanya perulangan kode program.