Anda di halaman 1dari 228

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/325101821

Buku pintar pemograman PHP

Book · May 2008

CITATIONS READS

4 4,684

1 author:

Dodit Suprianto
Politeknik Negeri Malang
13 PUBLICATIONS   7 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Machine learning and IOT View project

All content following this page was uploaded by Dodit Suprianto on 12 May 2018.

The user has requested enhancement of the downloaded file.


BAB 1
INSTALASI PERANGKAT LUNAK

1.1 INSTALASI PERANGKAT LUNAK


PHP tidak bisa bekerja dan digunakan secara mandiri, tetapi masih memerlukan beberapa perangkat lunak
tambahan yang harus diinstall. Adapaun perangkat lunak pendukung yang harus diinstal antara lain:

 Apache Server versi 2.0


Merupakan web server yang digunakan oleh PHP, berfungsi untuk menampilkan hasil dari proses
script PHP ke kompter browser dalam bentuk tag HTML.

 PHP versi 5
Berfungsi sebagai mesin penterjemah saat halaman HTML yang mengandung script PHP dikirm ke
server.

 MySQL versi 5
Merupakan database server yang paling sering digunakan dalam pemrograman PHP. Berfungsi untuk
menyimpan data dalam database, serta memanipulasi data-data yang diperlukan.

 PHPMyAdmin
Adalah kakas untuk pengelolaan database yang berbasis web. PHPMyAdmin bukan merupakan suatu
keharusan, bisa juga manpulasi data digantikan dengan kakas yang lain misalnya MySQL Console
(berbasis teks). Dengan PHPMyAdmin pengelolaan atau manipulasi database menjadi lebih mudah.

Setiap platform yang berbeda, memiliki distribusi perangkat lunak pendukung yang berbeda pula.
Misalnya, untuk platform Windows, maka Apache, PHP, dan MySQL yang akan diinstall harus dipilih
dari distribusi perangkat lunak yang mendukung dengan platform Windows. Begitu pula dengan platform
LINUX, paket perangkat lunak yang diinstall harus sesuai dengan jenis platform LINUX.

Perangkat lunak Apache, PHP, MySQL, dan PHPMyAdmin bisa didownload secara gratis di situs
resminya masing-masing. Dalam situs resminya telah disediakan distribusi perangkat lunak untuk semua
platform misalnya Windows, OS X, LINUX, Mac Apple, UNIX dan lain-lain, dari situ bisa didownload
perangkat lunak yang sesuai dengan system operasi yang kita gunakan, termasuk dokumentasi bagaimana
tata cara instalasinya.

Penulis berkeyakinan bahwa pembaca sebagian besar menggunakan sistem operasi windows dalam
pengoperasiannya, oleh karena itu perangkat lunak yang digunakan dalam buku ini hanya yang
mendukung dengan sistem operasi Windows saja.

Untuk menginstall perangkat lunak di atas bisa dilakukan dengan cara manual yaitu mengkopi file-file
yang dibutuhkan kemudian mengubah beberapa baris kode di file php.ini, httpd.conf dan mysql.ini. Untuk
seorang pemula hal tersebut tentu cukup merepotkan, oleh karena itu penulis menyarankan untuk
menggunakan perangkat lunak WAMP5 yang bisa didownload gratis. Perangkat lunak tersebut berisi
kumpulan beberapa perangkat lunak yang dibutuhkan, antara lain PHP, Apache, MySQL dan
PHPMyAdmin.

Jika dilihat dari about aplikasi WAMP5 dibuat oleh Romain Bourdan dan didukung oleh Anaska :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dengan Wamp5 maka cukup sekali install maka semua perangkat lunak yang dibutuhkan sudah bisa
dioperasikan, karena semua perangkat lunak yang dibutuhkan akan terinstall secara otomatis di hard disk,
termasuk pengaturan file-file yang diperlukan.

Alamat situs dimana perangkat lunak tersebut bisa didownload :

Perangkat lunak Alamat URL


Apache Server http://httpd.apache.org
MySQL Database http://www.mysql.com
PHP http://www.php.net
PHPMyAdmin http://www.phpmyadmin.net
WAMP5 http://www.wampserver.com

1.2 LANGKAH-LANGKAH INSTALASI WAMP5


Perlu dicatat bahwa WAMP5 hanya bisa bekerja di sistem operasi Windows XP.
Adapun langkah-langkah instalasi WAMP5 sangatlah mudah, ikuti perintah-perintah berikut ini:

1. Buka folder WAMP5 dan jalankan file wamp5_1.6.4a selanjutnya akan tertampil form selamat
datang, kemudian tekan tombol Next.

2. Selanjutnya akan muncul form License Agreement, pilih option yang bertuliskan I accept the
agreement kemudian tekan tombol Next.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3. Kemudian pilih tujuan file yang akan diinstall, secara default file-file akan ditempatkan di folder
C:\wamp, tetapi bisa juga diletakkan ditempat lain sesuai keinginan, dengan cara menekan tombol
Browse, jika posisinya dianggap tetap maka lanjutkan dengan menekan tombol Next.

4. Tekan tombol Next saja sampai selesai, jika dinginkan wamp5 selalu aktif setiap kali komputer
dihidupkan maka pilih auto start, dengan cara memberi tanda centang pada pernyataan tersebut, atau
sebaliknya jika wamp5 hanya aktif saat dibutuhkan saja, maka biarkan auto start off dengan tidak
memberi tanda centang pada pernyataan tersebut.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
5. Jika semua langkah telah dilakukan maka tekan tombol Finish dan untuk mengetahui apakah wamp5
sukses terinstall atau tidak, maka buka menu localhost di tray icon wamp5 yang berada di taskbar.
Tampilannya akan sebagai berikut :

6. Jika suskses maka tampilan browsernya adalah sebagai berikut:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
1.3 MENU WAMP5

Perangkat lunak Wamp5 merupakan salah satu penyelesaian yang mudah dalam menginstalasi perangkat
lunak pendukung PHP (PHP, MySQL, Apache, dan PHPMyAdmin), karena di dalamnya telah tertanam
beberapa perangkat lunak yang dibutuhkan secara terpadu (terintegrasi).

Layanan apa saja disediakan oleh Wamp 5?, bisa dilihat di tray icon pada taskbar windows sebelah kanan
bawah dari sistem operasi Windows. Di dalamnya telah disediakan semua fitur-fitur yang diperlukan,
termasuk mengaktifkan pustaka (library) PHP yang dibutuhkan tanpa mengedit file php.ini terlebih
dahulu.

1.3.1 Menu Localhost

localhost adalah menu yang akan membuka web browser (Misalnya: Mozzila, IE, Opera, atau FireFox,
tergantung standar web browser yang digunakan dalam system windows) dan secara default akan menuju
ke halaman web index dari aplikasi Wamp.

Adapun isi dari halaman index wamp5 antara lain :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Save Configuration
Berisi semua keterangan yang berhubungan dengan PHP, misalnya library apa saja yang telah
diaktifkan, versi PHP, Apache dan versi MySQL yang digunakan.

 Tools
Tools berisi daftar link ke web kakas/tools yang telah disertakan, antara lain :
 Link ke phpinfo()
Berisi keterangan detail PHP yang digunakan beserta konfigurasinya.
 Link ke PHPmyadmin 2.8.1
Merupakan kakas berbasis web yang berguna untuk mempermudah pengelolaan database,
manipulasi table, membuat query, membuat grant user, dan lain-lain.
 Link ke SQLitemanager 1.2.0
Kakas ini fungsinya hampir sama dengan phpmyadmin, yaitu untuk pengaturan database, Dalam
buku ini, SQL Lite tidak termasuk dalam pembahasan.

 Your Projects
Your project adalah menu yang akan menuju folder-folder dimana proyek PHP diletakkan. Secara
default, folder proyek PHP diletakkan secara fisik di hardisk dengan alamat path c:\wamp\www.

 Your Aliases
Aliases merupakan jalan pintas (shortcut) menuju web bersangkutan secara langsung.

1.3.2 Menu PHPMyAdmin

Menu ini akan langsung menuju ke web PHPMyAdmin. Sedangkan pembahasan PHPMyAdmin akan
dipaparkan tersendiri di bab “Aplikasi PHPMyAdmin”.

1.3.3 Menu SQLLiteManager


Menu ini akan langsung menuju ke web SQLLiteManager. SQLLiteManager tidak akan dibahas dalam
buku ini.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
1.3.4 Menu WWW Directory

Menu ini akan menuju ke folder dimana area kerja php diletakkan secara fisik, secara standar berada di
c:\wamp\www, tetapi alamat tersebut tidak harus sama, tergantung saat pertama kali instalasi wamp5
dilakukan.

1.3.5 Menu Log Files

Log file berfungsi untuk mencatat kesalahan-kesalahan yang telah terjadi, dan disimpan dalam bentuk file
teks. Menu Log File memiliki tiga sub menu yang terbagi berdasarkan tempat kesalahannya.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Jika kesalahan terjadi disisi web server, maka file error akan diletakkan di sub menu Apache error log.
Jika kesalahan terjadi disisi PHP maka file error akan diletakkan di sub menu php error log. Dan jika
kesalahan terjadi disisi Database MySQL maka file error akan diletakkan di sub menu mysql error log.
1.3.6 Menu Config Files

Menu Config Files merupakan menu yang akan menuju ke file konfigurasi PHP (file php.ini), Apache
(file conf.httpd.conf) dan MySQL (mysql.ini). Perubahan terhadap ketiga file tersebut akan meyebabkan
perubahan kinerja PHP. Penulis menyarankan untuk tidak merubah isi dari ketiga file tersebut, karena
dikhawatirkan malah mengacaukan system yang ada.

1.3.7 Menu Apache Modules

Menu untuk mengkonfigurasi Web Server Apache tanpa harus mengkonfigurasi file httpd.conf, tapi
cukup dengan cara memilih salah satu menu yang ada. Dalam penulisan buku ini tidak perlu pengaturan
tambahan lagi.

1.3.8 Menu PHP Extensions


PHP Extensions merupakan kumpulan file-file pustaka (library) yang telah disediakan oleh PHP dan
diletakkan di folder C:\wamp\php\ext. Kumpulan file-file pustaka tersebut tidak semua diaktifkan oleh
PHP secara otomatis. (Misalnya: untuk membuat script PHP yang berhubungan dengan pengolahaan
gambar(image) maka dibutuhkan library php_gd2.dll, untuk membuat script PHP yang berhubungan
dengan penyandian berjenis MHASH, maka perlu mengaktifkan php_mhash.dll).
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Jika file pustaka tidak diaktifkan maka PHP tidak akan mengenali beberapa fungsi yang kita gunakan.
Sehingga untuk mengaktifkan file pustaka yang dibutuhkan, maka pilih salah satu file pustaka di menu
PHP Extensions, seperti terlihat menu di bawah ini :

1.3.9 Menu Apache


Menu Apache berfungsi untuk mematikan dan menghidupkan layanan web server Apache. Bisa juga
untuk menguji apakah port 80 yang biasa digunakan oleh web server siap digunakan.

Pengujian sangat berguna ketika dalam satu komputer terdapat dua web server yang akan menimbulkan
konflik, misalnya antara web server Apache dengan web server IIS dari Microsoft, dimana keduanya
menggunakan port 80.

Pada kondisi normal Menu Apache tidak perlu digunakan karena tidak memerlukan konfigurasi
tambahan.

1.3.10 Menu MySQL

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Editor dimana
perintah Query
MySQL ditulis.

Menu MySQL berfungsi untuk mematikan dan menghidupkan layanan database server MySQL, namun
pada kondisi normal hal tersebut tidak perlu di ubah kondisinya.

Yang perlu diperhatikan dalam menu MySQL adalah sub menu “MySQL console”. Sub menu tersebut
sangat berguna sebagai editor dalam memberikan perintah-perintah query database MySQL.

Contoh penggunaan editor MySQL console: bagaimana memberi perintah query untuk menampilkan
database apa saja yang tersimpan dalam server MySQL :

1.3.11 Menu “Start All Services”, “Stop All Services”, “Restart All Services”
Ketiga menu tersebut berfungsi untuk memulai dan mengakhiri semua layanan WAMP5 secara manual.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 2
DASAR PEMROGRAMAN PHP

PHP merupakan singkatan dari Hypertext Preprocessor, tergolong sebagai perangkat lunak open source
yang diatur dalam aturan general purpose licences (GPL).

Pemrograman PHP sangat cocok untuk dikembangkan dalam lingkungan web, karena PHP bisa
dilekatkan pada script HTML atau sebaliknya. PHP dikhususkan untuk pengembangan web dinamis,
maksudnya adalah bahwa PHP mampu menghasilkan website yang secara terus-menerus bisa berubah-
rubah hasilnya sesuai dengan pola yang diberikan, hal tersebut tergantung dari permintaan client
browsernya (bisa menggunakan browser opera, internet explorer, mozzila, dan lain-lain). Dan biasanya
pembuatan web dinamis dengan PHP berhubungan erat dengan database sebagai sumber data yang akan
ditampilkan.

PHP tergolong juga sebagai bahasa pemrograman yang berbasis server (server side scripting), ini berarti
bahwa semua script PHP diletakkan di server dan diterjemahkan oleh web server terlebih dahulu ,
kemudian hasil terjemahan di kirim ke browser client. Tentu hal tersebut berbeda dengan JavaScript,
dimana kode program javascript harus didownload terlebih dahulu di komputer client, selanjutnya
diterjemahkan oleh browser internet. Oleh karena itu kode program JavaScript selalu nampak di halaman
web bersangkutan.

Secara teknologi bahasa pemrograman PHP memiliki kesamaan dengan bahasa ASP (Active Server
Page), Cold Fusion, JSP (Java Server Page) ataupun Perl.

2.1. SINTAKS DASAR

2.1.1 HTML ESCAPING


Ketika PHP menerima suatu file, maka PHP akan mencari tags pembuka (“<?php”) dan tags penutup
(“?>”), ini juga berarti sebagai pemberitahuan agar PHP mulai menterjemahkan baris-baris kode PHP
tersebut, serta mengakhiri penterjemahannya sampai bertemu dengan tags penutup. Baris-baris kode yang
berada diluar pasangan penanda “<?php … ?>” akan diabaikan (tidak diterjemahkan) oleh PHP.
Sebagian besar baris-baris perintah PHP disisipkan dalam tags-tags HTML atau berlaku sebaliknya,
contoh sederhana adalah sebagai berikut :

<p>Ini akan diabaikan.</p>


<?php echo 'Yang ini akan diparse atau diterjemahkan.'; ?>
<p>Yang ini akan diabaikan juga.</p>

Contoh lain yang lebih rumit:

<?php
if ($expression) {
?>
<strong>Pernyataan benar karena expression bernilai
benar.</strong>
<?php
} else {
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<strong>Pernyataan salah karena expression bernilai
salah.</strong>
<?php
}
?>

Ada empat jenis pasangan tags pembuka dan penutup berbeda yang bisa digunakan oleh PHP. Antara lain
:

 <?php...?> dan <script language="php">...</script>, kedua bentuk tags tersebut


telah tersedia dalam PHP dan bisa langsung digunakan.
 Short tags (<?...?>) dan ASP style tags. Kedua bentuk tags tersebut dapat diaktifkan atau
dimatikan penggunaannya, tergantung pada pengaturan PHP di file php.ini. Dua jenis tags terakhir
tidak disarankan penggunaannya karena beberapa server tidak mengenalinya.

Contoh penggunaan tags pembuka dan penutup dalam PHP yang disarankan :

<?php echo 'Tulis seperti ini, jika menangani XHTML atau XML'; ?>

<script language="php">
echo 'Beberapa editor (seperti FrontPage) tidak bisa memproses
instruksi ini';
</script>

Contoh penggunaan tags pembuka dan penutup dalam PHP yang tidak disarankan :

<? echo 'ini paling sederhana, untuk memroses instruksi SGML'; ?>
<?= expression ?> Ini merupakan cara pintas untuk "<? echo expression
?>"

<% echo 'Anda bisa menggunakan ASP-style tags'; %>


<%= $variable; # Ini merupakan cara pintas untuk "<% echo . . ." %>

Catatan :
Jika penanganan dokumen berhubungan dengan XHTML atau XML, maka gunakan
perintah tags pembuka dan penutup <?php…?> sebagai standarnya. Agar Short
Tags dan ASP-style bisa digunakan, aturlah file php.ini pada bagian short_open_tag
dan asp_tags jadikan statusnya menjadi enabled

2.1.2 PEMISAHAN INSTRUKSI


Seperti bahasa C atau Perl, PHP membutuhkan penghentian baris pernyataan, serta memisahkan antara
baris satu dengan baris lain dengan cara memberi tanda titik koma (“;”) diakhir setiap baris pernyataan.

Kode tag penutup (“?>”) dari sebuah blok PHP secara otomatis akan berimplikasi sebagai titik koma
(“;”) , sehingga tidak diperlukan lagi adanya titik koma penghenti perintah di akhir baris suatu blok PHP.

<?php echo 'Ini hanya sebuah test'; ?>


<?php echo ' Ini hanya sebuah test ' ?>
<?php echo 'Kita mengabaikan tag penutup akhir';

Catatan:
Tag penutup pada blok PHP yang berada di akhir file bersifat pilihan (boleh ada
atau tidak), dan pada beberapa kasus pengabaian tag penutup sangat membantu
ketika menggunakan fungsi include() atau require(), sehingga spasi kosong yang
tidak diinginkan tidak akan muncul di akhir file.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
2.1.3 KOMENTAR ATAU REMARKS
PHP mendukung pemberian komentar seperti yang ada di 'C', 'C++' dan Unix shell-style (Perl style).

Terkadang dibutuhkan beberapa baris kalimat untuk memberi keterangan pada suatu baris program, hal
ini sering disebut remarks. Dimana remarks tidak akan ikut dieksekusi oleh server. Jika remarks hanya
satu baris maka gunakanlah (“//”) atau (“#”), jika remarks terdiri dari beberapa baris secara berurutan
lebih efektif jika menggunakan (“/*...*/”)

Lihat contoh berikut ini :

<?php
echo 'Ini hanyalah test';
// Ini komentar satu baris, model komentar C++
/* Ini komentar untuk baris lebih dari satu.
Dan diakhiri dengan tanda */
echo 'Ini masih test yang lain';
echo 'Satu lagi test terakhir';
# Komentar satu baris, model shell-style
?>

<?php
<h1>Ini hanya sebuah <?php # echo 'sederhana';?> contoh.</h1>
<p>Header di atas akan tercetak 'Ini hanya sebuah contoh'.</p>
?>

Contoh yang salah:

<?php
/*
echo 'Ini hanya sebuah test'; /* Komentar ini menyebabkan kesalahan
*/
*/
?>

2.2 TIPE DATA


PHP tidak memerlukan pendeklarasian tipe data suatu variable secara eksplisit, tetapi lebih ditentukan
oleh runtime program PHP, tergantung dari konteks bagaimana variable tersebut digunakan.

Untuk mengetahui jenis tipe data suatu variable saat dilakukan penelusuran (debugging) program
gunakan fungsi gettype(). Sedangkan untuk memeriksa kebenaran suatu tipe data apakah sesuai dengan
yang dimaksud, maka bisa gunakan fungsi is_type.

<?php
$a_bool = TRUE; // type boolean
$a_str = "foo"; // type string
$a_str2 = 'foo'; // type string
$an_int = 12; // type integer

echo gettype($a_bool); // akan tercetak: boolean


echo gettype($a_str); // akan tercetak: string

// Jika type data integer, maka akan ditambah dengan empat.


if (is_int($an_int)) {
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$an_int += 4;
}

// Jika $a_bool adalah type string, maka akan dicetak.


// (Maka tidak mencetak apapun, karena $a_bool adalah boolean).
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>

2.2.1 JENIS TIPE DATA


PHP mendukung delapan jenis tipe data, antara lain:

 Tipe scalar, tipe scalar tidak bisa dipecah lagi menjadi bagian yang lebih kecil, boleh dikatakan
merupakan tipe dasar.
o Boolean
o Integer
o Float (floating point, „double‟)
o String
 Tipe compound / Tipe campuran
o Array
o Object (tidak dibahas di buku ini)
 Tipe special / Tipe khusus
o Resource (tidak dibahas di buku ini)
o Null

2.2.2 TIPE BOOLEAN


Boolean adalah jenis tipe data yang paling sederhana, banyak digunakan untuk mencari nilai kebenaran.
Boolean bisa bernilai TRUE atau FALSE dan keduanya bersifat case-insensitive.

<?php
$foo = True; // Memberi nilai TRUE pada variable $foo
?>

Biasanya digunakan semacam operator untuk mengembalikan nilai boolean, kemudian melewatkannya
pada suatu struktur kontrol.

<?php
// == adalah sebuah operator yang digunakan untuk
// menguji persamaan dan mengembalikan nilai boolean
if ($action == "show_version") {
echo "Versinya adalah 1.23";
}

// pernyataan ini tidak diperlukan...


if ($show_separators == TRUE) {
echo "<hr>\n";
}

// ...karena bisa dituliskan lebih sederhana


if ($show_separators) {
echo "<hr>\n";
}
?>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
2.2.3 TIPE INTEGER
Integer adalah sederet angka dimana dituliskan sebagai set Z = {..., -2, -1, 0, 1, 2, ...}. Penulisan bilangan
integer bisa dalam notasi decimal (10-based), hexadecimal (16-based) atau octal (8-based), termasuk
penanda (- atau +).

Jika digunakan notasi octal maka penulisan harus didahului dengan angka 0 (nol) dan jika digunakan
notasi hexadesimal maka penulisan harus didahului dengan angka 0x.

Penulisan yang benar adalah sebagai berikut :

<?php
$a = 1234; # angka desimal postif
$a = -123; # angka desimal negatif
$a = 0123; # angka oktal (sama dengan nilai 83 desimal)
$a = 0x1A; # angka hexadesimal (sama dengan 26 desimal)
?>

Besarnya ukuran integer bergantung pada platformnya, meskipun maksimum nilai integer berkisar dua
milyard (32 bits signed/positif). Besar ukuran maksimal integer ditentukan dari PHP_INT_SIZE (melalui
pengaturan di file php.ini) , dan maksimal nilainya ditentukan dari pengaturan PHP_INT_MAX.

2.2.4 TIPE PECAHAN / FLOATING POINT


Jenis floating point merupakan bilangan pecahan dengan presisi tinggi, dan yang termasuk dalam floating
point antara lain float, double, dan real. Besar ukuran tipe data float bergantung pada platform yang
digunakan, secara umum adalah ~1.8e308 atau 1.8 X 10 308 dengan tingkat presisi 14 digit desimal, ini
mengacu pada standar format 64 bit IEEE.

Contoh penulisannya adalah sebagai berikut :

<?php
$a = 1.234;
$a = 1.2e3;
$a = 7E-10;
?>

Terkadang tipe floating point menghasilkan nilai yang tidak sesuai dengan yang diharapkan, misalnya
saja:

<?php
echo floor((0.1+0.7)*10); // Tercetak: 7
?>

Pembulatan dengan fungsi floor() di atas seharusnya menghasilkan nilai 8, tetapi yang tercetak adalah
nilai 7. Ini disebabkan nilai pecahan dalam notasi decimal seperti 0.1 atau 0.7 tidak bisa dikonversikan
dan dicarikan padanannya tanpa harus kehilangan ketelitiannya.

Contoh lain: misalnya 1/3 dalam decimal akan menghasilkan nilai 0.3333333…., sehingga sangat
disarankan agar tidak menggunakan angka floating point sebagai perbandingan persamaan.

2.2.5 TIPE STRING

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
String boleh dikatakan sebagai serangkaian character. Dimana besarnya character sama dengan byte. Ada
tiga cara penulisan string, antara lain:

 Single quoted / petik tunggal


Penulisan string dengan single quoted harus diawali dan diakhiri petik tunggal (karakter '). Cara ini
sedikit membingungkan jika ada karakter-karakter khusus (escaped character) yang disertakan.
Misalnya, jika ada karakter petik tunggal yang akan disisipkan maka sebelum karakter petik tunggal
harus didahului dengan backslash (\)

<?php
echo 'Ini contoh string sederhana';
echo 'Anda juga bisa menambahkan baris baru dalam strings,
seperti cara berikut.';
echo 'Hari Jum\'at aku akan datang di kota Malang';

// output: ... "Hari Jum'at aku akan …"


?>

 Double quoted / petik ganda


Penulisan string dengan doubled quoted harus diawali dan diakhiri petik ganda (karakter "). Pada
dasarnya cara penulisan double quoted hampir sama dengan single quoted, tetapi double quoted lebih
fleksibel dan memiliki lebih banyak escaped character yang bisa disisipkan.

Urutan Escape Pengertian


\n linefeed (LF or 0x0A (10) dalam ASCII)
carriage return (CR or 0x0D (13) dalam
\r
ASCII)
horizontal tab (HT or 0x09 (9) dalam
\t
ASCII)
\\ Backslash
\$ dollar sign
\" Petik ganda (double-quote)
Urutan character yang sesuai dengan
\[0-7]{1,3}
regular ekspression, dalam notasi oktal.
Urutan character yang sesuai dengan
\x[0-9A-Fa-f]{1,2}
regular ekspression, dalam notasi
atau \x00 s/d \xFF
hexadecimal.
Tabel Escaped Character

Jika kita menuliskan karakter khusus (escaped character) selain yang terdaftar dalam tabel di atas,
maka akan menyebabkan karakter backslash (\) akan ikut tercetak.

<?php
$minuman = 'Juice';
echo "$minuman's rasanya enak";
// Bisa bekerja, tetapi nilai variable tidak tampil, karena
karakter (') pada $minuman's salah jika digunakan sebagai nama
variabel.

echo "Dia minum segelas $minumans";


// Salah, karena 's' pada variable $minumans bukan nama variable
yang sesungguhnya.

echo "Dia minum segelas ${minuman}s ";


// Benar
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Sintaks Heredoc
Cara lain untuk memenggal penulisan string kemudian disambung ke baris berikutnya adalah dengan
menggunakan Sintaks Heredoc ("<<<").

Adapun struktur heredoc adalah sebagai berikut:

<<<nama_heredoc
string
nama_heredoc;

Aturan penulisan Heredoc Sintaks adalah sebagai berikut :

 Baris pertama diawali dengan tanda “<<<nama_heredoc”.


 String, berada di baris berikutnya.
 Baris terkahir diakhiri dengan “nama_heredoc;”.

Contoh yang benar penggunaan Sintaks heredoc :


<?php
$var1="penulisan";
$var2="kesalahan";

$str = <<<EOD
Heredoc sesuai untuk
$var1 string yang panjang
tanpa mengalami $var2
EOD;

echo $str;
?>

2.2.6 TIPE ARRAY


Array adalah sekumpulan data yang disimpan dalam suatu variable dengan nama yang sama, dan untuk
membedakan antara data satu dengan data yang lain digunakan index atau keys. Sedangkan masing-
masing data dalam array disebut dengan element.

Array dalam PHP sedikit berbeda dengan array pada bahasa pemrograman yang lain. Pada umumnya
setiap element array harus memiliki kesamaan tipe, tetapi hal tersebut tidak berlaku bagi PHP. Di dalam
PHP diperbolehkan adanya perbedaan jenis tipe data di setiap element dalam array, karena perlu diingat
bahwa PHP tidak memerlukan pendeklarasian variable, termasuk variable array. Dengan kata lain,
masing-masing element array bisa memiliki berbagai macam jenis tipe data yang tidak sejenis dalam satu
nama variable array.

2.2.6.1 MENCIPTAKAN ARRAY DENGAN “ARRAY()”


Array bisa diciptakan dengan pernyataan array() yang disertai dengan “key=>value” dan diletakkan
diantara tanda kurung array(). Jika jumlah “key=>value” lebih dari satu, maka disetiap
“key=>value” harus pisahkan dengan tanda koma (“,”).

Adapun strukturnya adalah sebagai berikut :

array( key => value


, ...
)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
“key” bisa bertipe integer atau string, namun jika key bertipe float maka key akan dipenggal menjadi
integer. Sedangkan “value” bisa bermacam-macam tipe walaupun satu sama lain tidak se-tipe.

<?php
$arr = array("foo" => "bar", 12 => true);
echo $arr["foo"]; // bar
echo $arr[12]; // 1
?>

Array multidimensi juga dimungkinkan penggunaannya dalam PHP. Untuk lebih jelasnya perhatikan
contoh berikut ini:

<?php
$arr = array
( "somearray1" => array(6 => 5, 13 => 9, "a" => 42),
"somearray2" => array(7 => 6, 14 => 10, "b" => 43),
"somearray3" => array(8 => 7, 15 => 11, "c" => 44),
);
echo $arr["somearray1"][6]; // 5
echo $arr["somearray1"][13]; // 9
echo $arr["somearray1"]["a"]; // 42
?>

Jika “key” tidak ditentukan maka key integer terbesar akan diambil, selanjutnya key baru diperoleh dari
key integer terbesar + 1. Jika key yang kita tentukan sudah ada dalam key array tersebut, maka key yang
telah ada akan ditimpa.

<?php
// Array ini sama artinya...
array(5 => 43, 32, 56, "b" => 12);

// ...dengan array ini


array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
?>

2.2.6.2 MEMODIFIKASI ARRAY DENGAN TANDA SIKU (“[ ]”)


Kita bisa menambah atau membuang suatu element dalam array.

Untuk menambahkan suatu nilai/value ke dalam array gunakan square-bracket (“[ ]”) sebagai element
array penampung value. Square-bracket (“[ ]”) bisa memiliki “key” ataupun tidak, jika tanpa disertai
“key” maka key akan tercipta dengan sendirinya.

Jika ingin membuang element array (pasangan key/value), maka lakukan perintah unset() terhadap array
tersebut.

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56; // Ini sama dengan $arr[13] = 56;


// key diambil dari nilai key terbesar+1

$arr["x"] = 42; // Menambahkan element baru


// ke dalam array dengan key "x"

unset($arr[5]); // Membuang element array I key-5

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
unset($arr); // Membuang array seluruhnya
?>

Ketika dilakukan perintah unset() terhadap array maka index element array tidak akan ter-reindex
(penataan ulang terhadap key index). Untuk mengindex ulang seluruh element array maka gunakan
perintah array_values()

<?php
$a = array(1 => 'satu', 2 => 'dua', 3 => 'tiga');
unset($a[2]);
/* array yang dihasilkan dari modifikasi di atas adalah
$a = array(1 => 'satu', 3 => 'tiga');
dan BUKAN
$a = array(1 => 'satu', 2 => 'tiga');
*/

$b = array_values($a);
// Sekarang $b adalah array(0 => 'satu', 1 =>'tiga')
?>

2.2.7 TIPE NULL


Nilai NULL bisa mewakili suatu variable yang tidak memiliki nilai apapun. Tipe NULL dikenali PHP
sejak versi 4 ke atas.

Beberapa kemungkinan jika variable NULL terjadi :

 Jika variable diberi nilai dengan konstanta NULL.


 Variable belum diberi nilai atau belum di-set sama sekali.
 Jika perintah unset()dikenakan pada suatu variable.

<?php
$var = NULL;
?>

2.2.8 TIPE JUGGLING


Sebenarnya PHP tidak membutuhkan (atau tidak mendukung) pendefinisian tipe data variable maupun
pendeklarasian variable secara eksplisit seperti pemrograman lain, tipe data variable ditentukan
berdasarkan konteksnya, bagaimana variable tersebut dipergunakan.

Boleh dikatakan, bila variable $var ditetapkan sebagai string maka $var akan menjadi string. Jika $var
ditetapkan menjadi integer maka $var akan berubah menjadi integer.

Oleh sebab itulah PHP memiliki tipe juggling. Tipe juggling cukup menarik untuk diketahui karena
mungkin tidak dimiliki oleh bahasa pemrograman yang lain. Pemakaian tipe juggling bisa memudahkan
programer, tetapi bisa juga cukup membahayakan kalau tidak berhati-hati dalam penggunaannya, karena
nilai yang dihasilkan bisa jadi tidak sesuai dengan yang diharapkan.

<?php
$foo = "0"; // $foo adalah string (ASCII 48)
echo $foo . "<br>";

$foo += 2;
// $foo sekarang menjadi integer (2)
echo $foo . "<br>";
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$foo = $foo + 1.3;
// $foo sekarang menjadi float (3.3)
echo $foo . "<br>";

$foo = 5 + "20 Kambing";


// $foo adalah integer (15)
echo $foo . "<br>";

$foo = 5 + "20 Kambing Kecil";


// $foo adalah integer (15)
echo $foo . "<br>";
?>

2.2.9 TIPE CASTING


Tipe casting bekerja seperti bahasa C. Cara penggunaan tipe casting adalah dengan memberi tanda kurung
buka dan kurung tutup terhadap tipe yang diinginkan, dan diletakkan sebelum nama variable yang akan
dikonversikan.

<?php
$foo = 10; // $foo adalah integer
$bar = (boolean) $foo; // $bar adalah boolean
?>

Adapun CAST yang diperbolehkan dalam PHP adalah sebagai berikut :

 (int), (integer) - cast ke integer


 (bool), (boolean) - cast ke boolean
 (float), (double), (real) - cast ke float
 (string) - cast ke string
 (array) - cast ke array
 (object) - cast ke object

Tab dan spasi masih bisa digunakan dalam tipe data perubahnya, berikut ini contoh penggunaan CAST
yang masih bisa dibenarkan:

<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>

Contoh penggunaan CAST :

<?php
$foo = 10; // $foo adalah integer
$str = "$foo"; // $str adalah string
$fst = (string) $foo; // $fst juga string

// === perbandingan identik,


// bernilai benar jika nilai dan tipenya sama.
if ($fst === $str) {
echo "Keduanya sama";
// Hasil cetaknya adalah " Keduanya sama "
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$foo = 10; // $foo adalah integer
$bar = (float) $foo;
// type data vaiable $bar menjadi float
echo $bar;

$var = 'ciao';
$arr = (array) $var;
echo $arr[0]; // keluarannya adalah 'ciao'
?>

2.3 VARIABLE
Variable mutlak diperlukan dalam pemrograman PHP, karena berfungsi sebagai tempat untuk
menampung suatu nilai data, baik berupa masukkan (input) maupun keluaran (output).

Untuk membuat suatu variabel tidak diperlukan deklarasi awal seperti pemrograman berbasis compiler
seperti Delphi atau Visual Basic, cukup dengan memberikan character dolar ($) dan disambung dengan
nama varibale (misalnya: $nama_variable), maka varibale sudah bisa digunakan. Nama variable bersifat
case-sensiteve.

2.3.1 PENAMAAN VARIABLE


Pada dasarnya programmer diberi kebebasan dalam pemberian nama variable, namun ada sedikit aturan
yang membatasinya.

Yang diperbolehkan dalam penamaan variable, antara lain:

 Nama variable bisa terdiri dari huruf abjad, angka, dan underscore (_)
 Nama variable bisa diawali dengan tanda underscore (_)

Yang tidak diperbolehkan dalam penamaan variable, antara lain:

 Nama variable tidak boleh diawali dengan angka


 Nama variable tidak boleh mengandung operator aritmatika
 Nama variable tidak boleh mengandung karakter khusus seperti @ ; # ! & . :
 Nama variable tidak boleh mengandung spasi

<?php
$var = 'Dodit';
$Var = 'Rini';
echo "$var, $Var"; // output "Dodit, Rini"

$4angka = 'Variable yang salah';


// invalid; karena diawali dengan angka.
$_4angka = 'Variable yang benar';
// valid; karena diawali dengan garis bawah (underscore)

$täyte = 'mansikka';
// valid; 'ä' merupakan perluasan dari ASCII 228.
?>

2.3.2 PREDEFINE VARIABLE

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
PHP menyediakan banyak sekali penanganan seputar variable, baik itu saat mengirim atau mengambil
nilai variable, kita sebut saja sebagai predefined variable. Karena predefined variable yang disediakan
cukup banyak, maka tentu saja tidak bisa didokumentasikan secara lengkap disini.

Catatan:
Mulai PHP versi 4.2.0 ke atas, standar pengaturan register_global adalah off (lihat
di file pengaturan php.ini), hal tersebut berpengaruh terhadap pendefinisian variable
global. Sebagai contoh: untuk memperoleh nilai dari DOCUMENT_ROOT harus
digunakan $SERVER[DOCUMENT_ROOT].
Untuk memperoleh nilai “id” dari url http://www.docomads.com?id=1 harus
digunakan $_GET[„id‟], jadi tidak bisa mengambil nilai variable dari URL dengan
hanya menuliskan $id.

PHP juga memiliki sekumpulan predefined variable tambahan yang bisa berasal dari web server,
environment, atau input user (berasal dari form). Kumpulan predefined tersebut memiliki sifat khusus
sesuai dengan peruntukannya yang juga bersifat global, karena secara otomatis memiliki jangkuan/scope
yang luas. Hal ini sering disebut juga dengan superglobal.

PHP SUPERGLOBAL:
$GLOBALS
Merupakan rujukan bagi variable yang memiliki lingkup global disemua script. $GLOBALS mulai
tersedia di PHP mulai versi 3 ke atas.

$_SERVER
Merupakan sekumpulan variable yang dihasilkan oleh web server. Sehingga semua variable yang
berhubungan dengan penanganan server, misalnya untuk mengetahui alamat “IP host” dan “nama host”
yang terhubung dengan server atau fungsi-fungsi lainnya yang berhubungan dengan server ditangani oleh
$_SERVER. Analogi $_SERVER untuk PHP versi sebelumnya adalah $HTTP_SERVER_VARS.

$_GET
Merupakan variable yang dihasilkan oleh query string URL atau melalui HTTP GET. $_GET sangat
berhubungan dengan penerimaan data yang berasal dari halaman website diluar PHP, terutama variable
yang berasal dari FORM HTML yang menggunakan method GET. Analogi $_GET untuk PHP versi
sebelumnya adalah $HTTP_GET_VARS.

Pernyataan GET akan dibahas lebih lanjut pada bab “PENANGANAN FORM & SESSION”, karena
GET sangat penting untuk diketahui oleh pembaca.

$_POST
Merupakan variable yang dihasilkan melalui HTTP POST. $_POST sangat berhubungan dengan
penerimaan data yang berasal dari halaman website diluar PHP, terutama variable yang berasal dari
FORM HTML yang menggunakan method POST. Analogi $_POST untuk PHP versi sebelumnya adalah
$HTTP_POST_VARS.

POST akan dibahas lebih lanjut pada bab “PENANGANAN FORM & SESSION”, karena POST sangat
penting untuk diketahui oleh pembaca.

$_COOKIE
Merupakan variable yang dihasilkan melalui HTTP COOKIE. Cookie bisa dianggap sebagai variable
tampungan berisi data yang ditempatkan pada komputer client. $_COOCIE bisa digunakan dengan syarat
layanan cookie pada browser client diaktifkan. Analogi $_COOKIE untuk PHP versi sebelumnya adalah
$HTTP_COOKIE_VARS.

$_FILES
Merupakan variable yang dihasilkan melalui HTTP POST UPLOAD FILE, $_FILES berguna untuk
meng-upload file dari komputer client menuju ke komputer server dengan menggunakan FORM HTML.
Analogi $_ FILES untuk PHP versi sebelumnya adalah $HTTP_POST_FILES.
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$_ENV
Merupakan variable yang dihasilkan melalui envorionment. Analogi $_ENV untuk PHP versi lebih lama
adalah $HTTP_ENV_VARS.

$_REQUEST
Merupakan variable yang dihasilkan melalui mekanisme input GET, POST dan COOKIE (bisa meneriam
variable dari form dengan method POST atau GET), tetapi cara ini kurang bisa dipercaya kebenaran hasil
yang diperoleh, sehingga kurang disarankan penggunaannya.

$_SESSION
Merupakan variable yang telah diregister-kan (disimpan dalam file sementara). $_SESSION memiliki
fungsi yang hampir sama dengan $_COOKIE, perbedaanya hanya pada masalah penempatan variable
tampungannya. Session meletakkan variable tampungannya di server, sedangkan cookie menempatkan
variable tampungannya di client. Cara ini jauh lebih aman daripada menggunkan cookie. Analogi
$_SESSION untuk PHP versi sebelumnya adalah $HTTP_SESSION_VARS.

Session akan dibahas lebih lanjut dalam bab “PENANGANAN FORM & SESSION”, karena session
sangat penting untuk diketahui oleh pembaca.

2.3.3 LINGKUP VARIABLE (SCOPE)


Lingkup atau scope variable sangat berhubungan dengan seberapa lama umur hidup suatu variable, serta
sejauh mana variable tersebut bisa dikenali pada setiap baris-baris kode PHP. Lingkup variable lebih
ditentukan saat dimana variable terebut didefenisikan.

<?php
$a = 1;
include 'b.inc';
?>

Di sini variable $a juga bisa dikenali dalam script b.inc. Tetapi untuk fungsi buatan sendiri variable $a
tidak bisa dikenali. Diperlukan adanya variable dengan scope lokal dalam tubuh fungsi buatan sendiri.

<?php
$a = 1; /* scope global*/
function Test()
{
echo $a; /* merujuk pada variable lokal fungsi */
}
Test();
?>
Pernyataan echo $a merujuk ke variable lokal fungsi, karena tidak ditemukan, maka script di atas tidak
menghasilkan apa-apa. Ini sedikit berbeda dengan pemrograman bahasa C, dimana variable global dalam
bahasa C secara otomatis juga bisa dikenali disetiap fungsi, kecuali jika ada nama variable yang sama,
maka variable lokal dalam fungsi akan mengabaikan (overriden) variable global tersebut.

2.3.4 KEYWORD GLOBAL


Agar sebuah variable memiliki lingkup global dalam suatu fungsi, maka diperlukan pendeklarasian ulang
terhadap sebuah variable dengan cara menggunakan keyword global.

<?php
$a = 1;
$b = 2;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
function Tambah()
{
global $a, $b;
$b = $a + $b;
}
Tambah();
echo $b;
?>

Script di atas akan menghasilkan nilai “3”. Dengan pendeklarasian variable $a dan $b sebagai global
dalam tubuh fungsi, maka variable tersebut akan merujuk ke variable global di atasnya. Tidak ada batasan
berapa banyak variable global yang bisa dimanipulasi oleh fungsi.

Cara kedua untuk mengakses variable dari scope global adalah dengan mendefinisikannya sebagai array
$GLOBALS. Maka contoh sebelumnya bisa dituliskan dengan cara berikut ini:

<?php
$a = 1;
$b = 2;
function Tambah()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Tambah();
echo $b;
?>

2.3.5 KEYWORD STATIC


Variable static hanya bisa dikenal dalam lingkup lokal fungsi dan variable tersebut tidak akan kehilangan
nilainya ketika eksekusi program meninggalkan scope.

<?php
function Test()
{
$a = 0;
echo $a;
$a++;
}
?>

Fungsi di atas benar-benar tidak berguna, karena setiap kali fungsi Test() dipanggil, yang tercetak selalu
nilai “0”. Pernyataan $a++ tidak berpengaruh apapun karena setiap kali eksekusi keluar dari tubuh fungsi
maka nilai $a juga ikut hilang. Agar jejak hasil penambahan yang dikenakan pada $a selalu ada, maka
variable $a perlu dideklarasikan sebagai static.

<?php
function Test()
{
static $a = 0;
echo $a;
$a++;
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Sekarang, setiap kali fungsi Test() dipanggil maka yang tercetak adalah $a dan penambahannya.

2.4 KONSTANTA
Konstanta adalah pemberian nama baru terhadap suatu nilai. Dimana konstanta tersebut bersifat tetap dan
tidak terpengaruh oleh eksekusi script apapun. Konstanta bersifat case-sensitive. Menurut kesepakatan
bersama, penamaan konstanta selalu menggunakan huruf besar.

<?php
// Penamaan konstanta yang benar
define("KONS", "sesuatu");
define("KONS2", "sesuatu yang lain");
define("KONS_OK", "sesuatu yang lain lagi");
?>

Cara mendefinisikan konstanta adalah dengan menggunakan fungsi define(). Sekali konstanta tersebut
didefenisikan maka konstanta tersebut tidak bisa dirubah atau dihapus.

Konstanta hanya boleh berisi data scalar atau bertipe tunggal misalnya boolean, integer, float dan string
(tidak berlaku terhadap array atau object). Konstanta juga tidak bisa diisi dengan sesuatu yang berupa
pernyataan atau ekspresi.

Untuk mendapatkan nilai konstanta bisa dengan cara mencatumkan nama konstatanya. Tidak seperti
variable, konstanta tidak memerlukan tanda “$” didepan nama konstantanya.

Catatan:
Gunakan fungsi get_defined_constants() untuk mendapatkan daftar konstanta yang
sudah pernah didefinisikan.

PERBEDAAN ANTARA KONSTANTA DAN VARIABLE:

 Konstanta tidak diberi tanda dollar ($) sebelum nama konstantanya.


 Konstanta hanya boleh didefinisikan dengan fungsi define().
 Konstanta bisa didefinisikan dan diakses dimana saja tanpa mengikuti aturan scope.
 Konstanta tidak bisa didefinisikan ulang atau menghapusnya.
 Konstanta hanya boleh berisi nilai scalar.

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // "Hello world."
?>

2.5 EKSPRESI
Ekspresi hampir pasti digunakan disetiap pemrograman, karena program disusun atas ekspresi-ekspresi
tersebut. Ekspresi adalah sesuatu yang menghasilkan nilai dan kebanyakan berupa persamaan
pemrograman.

Bentuk dasar ekspresi terdiri atas konstanta dan variable. Ketika kita menuliskan “$a = 5”, berarti kita
memberi nilai 5 kepada variable $a, atau dengan kata lain $a merupakan ekspresi yang bernilai 5 (dalam
kasus ini '5' merupakan konstanta integer). Setelah memberi nilai 5 pada variable $a, maka jika kita
menuliskan “$a = $b” sama artinya jika kita menuliskan $b = 5.

<?php

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
function coba ()
{
return 5;
}
?>

Anggap saja kita sudah mengerti konsep fungsi (selanjutnya lihat bab fungsi), jika kita menuliskan $c =
coba() sama artinya jika kita menuliskan $c = 5. Fungsi merupakan ekspresi yang memiliki nilai balik
dari fungsi itu sendiri. Selama fungsi coba() mengembalikan nilai 5 maka ekspresi coba() juga bernilai 5.
Biasanya fungsi tidak hanya mengembalikan nilai balik saja, tetapi juga ada proses perhitungan di dalam
tubuh fungsi terlebih dahulu.

Untuk ekspresi, tidak perlu dibahas lebih lanjut, karena apa yang telah dan akan dilakukan selanjutnya
selalu berkutat pada ekspresi-ekspresi.

Contoh ekpresi lain:

<?php
function double($i)
{
return $i*2;
}

$b = $a = 5;
$c = $a++;
$e = $d = ++$b;
$f = double($d++);
$g = double(++$e);
$h = $g += 10;
?>

2.6 OPERATOR
Ada tiga jenis operator utama yang dikenal dalam PHP, antara lain:

 Operator unary, dimana operator mengoperasikan hanya satu nilai variable, contohnya operator
lawan/negasi (“!”), operator penambahan (increement, “++”), dan operator pengurangan (decrement,
“--”).
 Operator binary , terdiri dari beberapa operator yang mempertimbangkan urutan penyelesaian.
Kelompok ini paling sering digunakan dalam PHP.
 Operator ternary, operator yang membandingkan dua pernyataan, dimana kebenarannya ditentukan
oleh ekspresi ketiga.

Operator memiliki beberapa urutan (hirarki) eksekusi, mana operator yang harus didahulukan dan mana
operator yang dieksekusi selanjutnya. Urutan operator perlu diperhatikan jika ada ekspresi yang
menggunakan lebih dari satu operator. Evaluasi urutan operator bisa dimulai dari kiri atau dari kanan,
istilah ini disebut juga dengan Associativity.

Associativity Operator Keterangan


non-
new new
associative
Kiri [ array()
non-
++ -- penambahan/penguruangan
associative
~ - (int)
non-
(float) (string) Type
associative
(array) (object)
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
@
non-
instanceof Type
associative
Kanan ! logika
Kiri * / % aritmatika
Kiri + - . aritmatika dan string
Kiri << >> bitwise
Non-
< <= > >= perbandingan
associative
Non-
== != === !== perbandingan
associative
Kiri & bitwise dan referensi
Kiri ^ bitwise
Kiri | bitwise
Kiri && logika
Kiri || logika
Kiri ? : ternary
= += -= *= /= .=
kanan %= &= |= ^= <<= pemberian nilai
>>=
Kiri and logika
Kiri xor logika
Kiri or logika
Tabel Hirarki Operator

Asosiative kiri berarti ekspresi dievaluasi dari kiri ke kanan, dan sebaliknya asosiative kanan berarti
ekspresi dievaluasi dari kanan ke kiri.

<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2;
// (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a=($b+=3) -> $a=5, $b=5
?>

2.6.1 OPERATOR ARITMATIKA


Operasi aritmatika yang umum digunakan dalam pemrograman, antara lain:

Operator Keterangan
+ Tambah
- Kurang
/ Bagi
* Kali
% Sisa bagi
Tabel Operasi Aritmatika

Aturan penulisan aritmatika adalah variable = ekspresi aritmatika, ini berarti bahwa
variable akan bernilai sesuai hasil yang diberikan dari ekspresi aritmatika yang dilakukan. Disisi
sebelah kiri hanya boleh ada satu variable tunggal saja dan tidak boleh ada yang lain, sedangkan sebelah
kanan bisa berupa ekspresi/rumus aritmatika, konstanta atau variable.

<?php
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
// Contoh penulisan operasi aritmatika yang benar
$var_1 = 8;
$var_2 = $var_1;
echo $var_2;

$panjang = 10;
$lebar = 5;
$luas = $panjang * $lebar;
echo $luas;

// Contoh penulisan operasi aritmatika yang salah


8 = $var_1;
4 + 7 = $var_2;
$panjang * $lebar = $luas;
?>

2.6.2 HIRARKI OPERATOR ARITMATIKA


Seringkali ekspresi aritmatika memerlukan beberapa operator yang berbeda, sehingga kita harus tahu
urutan penyelesaian dari masing-masing operator, agar nilai yang dihasilkan benar sesuai dengan yang
diharapkan.

Hirarki Operator Keterangan


Tergantung pada posisinya, urutan
1 * / % () dari kiri didahulukan kemudian
sebelah kanan.
Tergantung pada posisinya, urutan
2 + atau - dari kiri didahulukan kemudian
sebelah kanan.
Tabel Hirarki Operator Aritmatika

<?php
$nilai1 = 12 + 4 * 3 / 6;
echo $nilai1;
// 12 + 12 / 6
// 12 + 2
// hasilnya 14

$nilai2 = 210 / ( 6 * ( 4 + 5 – 2 ) )
echo $nilai2;
// 210 / ( 6 * 7 )
// 210 / 42
// hasilnya 5
?>

2.6.3 OPERATOR PEMBERI NILAI


Operator pemberi nilai diwakili oleh tanda sama dengan (“=”), yang berarti bahwa operan sebelah kiri
akan diberi nilai dengan ekspresi disebelah kanan.

<?php
$a = ($b = 4) + 5;
// $a bernilai 9 dan $b bernilai 4.
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Operator pemberi nilai bisa juga dikembangkan lagi menjadi operator kombinasi, yang bertujuan untuk
menyederhanakan sintaks. Tambahan operator tersebut berguna saat kita mencari nilai Total suatu nilai,
dan metode yang digunakan adalah dengan cara perulangan (looping).

<?php
$total = 0;
while ($total < 10 )
{
$total = $total + 1;
}
echo $total;

// akan sama artinya dengan berikut ini

$total = 0;
while ($total < 10 )
{
$total += 1;
}
echo $total;
?>

Operator kombinasi juga bisa dikenakan pada penggabungan tipe string

<?php
$a = 3;
$a += 5;
// $a bernilai 8, atau bisa dituliskan: $a = $a + 5;

$b = "Hello ";
$b .= "Tiffanny!";
// $b bernilai "Hello Tiffanny!", atau bisa dituliskan: $b = $b .
"Tiffanny!";
?>

2.6.4 OPERATOR BITWISE


Operator bitwise adalah operator yang bertujuan untuk mengoperasikan bilangan biner (angka 0 dan 1).
Jika bilangan operan berupa bilangan desimal maka harus dikonversikan terlebih dahulu menjadi bilangan
biner, baru kemudian dioperasikan dengan operator bitwise. Jika operan kedua-duanya berupa string
maka nilai operan harus dikonversikan terlebih dahulu menjadi nilai ASCII (sesuai table ASCII), baru
kemudian dioperasikan dengan operator bitwise.

Contoh Nama Hasil


Bit di set 1 jika kedua-duanya
$a & $b And
yaitu $a dan $b bernilai 1.
Bit di set 1 jika nilai salah
$a | $b Or
satu dari $a atau $b bernilai 1.
Bit di set 1 jika kedua nilai
$a ^ $b Xor dari $a dan $b memiliki
perbedaan.
Bit akan di set 1 jika $a
~ $a Not bernilai 0, dan di set 0 jika $a
bernilai 1.
$b Menggeser bit $a sebanyak $b
$a << $b digeser langkah ke kiri (disetiap
ke kiri langkah “dikalikan dengan dua”)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Menggeser bit $a sebanyak $b
$b
langkah ke kanan (disetiap
$a >> $b digeser
langkah berarti “dibagi dengan
ke kanan
dua”)
Tabel Operator Bitwise

<?php
$a = 8; // nilai dalam bit : 1000
$b = 9; // nilai dalam bit : 1001

$ab_and = $a & $b;


echo $ab_and; // output 8, dalam biner: 1000

$ab_or = $a | $b;
echo $ab_or; // output 9, dalam biner: 1001

$ab_xor = $a ^ $b;
echo $ab_xor; // output 1, dalam biner 0001 atau 1

$ab_not = ~$a;
echo $ab_not; // output 7, dalam biner 0111 atau 111
?>

<?php
echo "12" ^ "9";
// Output adalah Character Backspace (ascii 8)
// ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

echo "hallo" ^ "hello";


// Output adalah ascii #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>

2.6.5 OPERATOR PERBANDINGAN


Operator perbandingan adalah untuk membandingkan dua nilai. Perlu diperhatikan bahwa operator “==”
tidaklah sama dengan operator “=”, jika operator “==” merupakan operator perbandingan dan akan
menghasilkan nilai benar atau salah, sedangkan operator “=” merupakan operator pemberi nilai. Jika tidak
berhati-hati dalam penggunaannya, maka akan menyebabkan kesalahan program yang cukup sulit untuk
dideteksi, karena secara sintaks PHP menganggap hal tersebut sudah benar, namun secara logika akan
menghasilkan nilai yang salah.

Contoh Nama Hasil


$a == $b Sama Dengan Benar jika $a sama dengan $b
Benar jika $ a sama dengan
$ === $ Identik $b, dan keduanya memiliki
kesamaan type
Benar jika $a tidak sama
$ != $b Tidak Sama
dengan $b
Benar jika $a tidak sama
$ <> $b Tidak Sama
dengan $b
Benar jika $a tidak sama
Tidak
$a !=== dengan $b, dan keduanya
Identik
tidak memiliki kesamaan type
$a < $b Kurang Dari Benar jika $a kurang dari $b
Lebih Dari Benar Jika $a lebih besar
$a > $b
dari $b
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Kurang Dari
Benar jika $a kurang dari
$a <= $b Atau Sama
atau sama dengan $b
Dengan
Lebih Dari
Benar jika $a lebih besar
$a >= $b Atau Sama
atau sama dengan $b
Dengan
Tabel Operator Perbandingan

Jika membandingkan antara integer dengan string, maka string akan dikonversi ke angka terlebih dahulu.
Jika membandingkan dua angka string, maka keduanya-duanya akan dikonversikan menjadi integer.

Tipe Operan 1 Tipe Operan 2 Hasil


Konversi dari NULL ke "",
null atau
string perbandingan numerik atau
string
lexical
bool atau Konversi ke bool, FALSE <
anything
null TRUE
string,
string,
resource Menterjemahkan string dan
resource
atau resource ke angka
atau number
number
Array dengan anggota yang
terkecil, jika key dari
Array array operan 1 tidak ditemukan
dalam operan 2 maka array
tidak bisa dibandingkan
Array anything array selalu lebih tinggi
object anything Object selalu lebih tinggi
Tabel perbandingan dengan tipe yang berbeda

<?php
$x="1"; //string dengan nilai angka 1
$y=1; //integer dengan nilai angka 1
echo "test == :".($x == $y);
// TRUE
echo "<br>test === :".($x === $y);
// FALSE, tidak identik
?>

2.6.6 OPERATOR KONTROL KESALAHAN (ERROR)


PHP mendukung satu operator kontrol kesalahan yaitu tanda (“@”). Ketika operator kontrol kesalahan
dikenakan pada ekspresi, bisa jadi jika ada kesalahan maka kesalahan tersebut akan diabaikan. Jika fitur
track_errors diaktifkan (ada file php.ini), maka pesan kesalahan akan bisa ditampilkan, ekspresi
kesalahan disimpan dalam variable $php_errormsg. Variable ini akan selalu ditimpa setiap kali ada
kesalahan.

<?php
/* Kesalahan pada file */
$my_file = @file ('non_existent_file') or
die ("File gagal dibuka: error was '$php_errormsg'");

// tidak hanya fungsi tapi juga bekerja ekspresi


$value = @$cache[$key];
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
2.6.7 OPERATOR EKSEKUSI
PHP mendukung satu operator eksekusi yaitu dengan menggunakan backticks (``).

PHP akan mengeksekusi baris kode yang berada diantara backticks seperti mengeksekusi perintah shell
(sheel command). Penggunaan operator backtick identik dengan fungsi shell_exec().

<?php
// Tampilkan direktori dan file di UNIX/LINUX
$output = `ls -al`;
echo "<pre>$output</pre>";

// Tampilkan direktori dan file di Windows


$output `dir`;
echo "<pre>$output</pre>";
?>

2.6.8 OPERATOR PENAMBAHAN DAN PENGURANGAN


Operator aritmatika khusus lainnya adalah penambahan (increment, ++) dan pengurangan (decrement, --
). Operator increment adalah operator untuk menambah nilai variable dengan satu, sebaliknya decrement
adalah pengurangan nilai variabel dengan satu. Peletakkan operator ++ atau -- bisa sebelum atau sesudah
variable, tergantung kebutuhan.

Operator Keterangan Contoh Persamaan


Penjumlahan $total =
++$variable $total += 5
dengan 1 $total + 5
Penjumlahan $total =
$variable++ $total -= 5
dengan 1 $total – 5
Pengurangan $total =
--$variable $total *= 5
dengan 1 $total * 5
Pengurangan $total =
$variable-- $total /= 5
dengan 1 $total / 5
Tabel Operator Penambahan dan Pengurangan

<?php
$nilai_1 = 100;
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo $nilai_1 . "<br>"; // 100
echo ++$nilai_1 . "<br>"; // 101
echo $nilai_1 . "<br>"; // 101

$nilai_2 = 100;
echo $nilai_2 . "<br>"; // 100
echo $nilai_2++ . "<br>"; //100
echo $nilai_2 . "<br>"; // 101

$nilai_3 = 100;
echo $nilai_3 . "<br>"; // 100
echo --$nilai_3 . "<br>"; // 99
echo $nilai_3 . "<br>"; // 99

$nilai_4 = 100;
echo $nilai_4 . "<br>"; //100
echo $nilai_4-- . "<br>"; //100
echo $nilai_4 . "<br>"; //99
?>

2.6.9 OPERATOR LOGIKA


Beberapa nilai ekspresi hasil dari operator perbandingan bisa dihubungkan dengan beberapa ekspresi
yang lain agar diperoleh perbandingan dan nilai logika baru. Untuk menghubungkannya maka diperlukan
operator logika.

Contoh Nama Hasil


TRUE, jika keduanya: $a dan $b
$a and $b And
adalah TRUE.
$a or $b Or TRUE, jika $a atau $b adalah TRUE.
TRUE, jika $a atau $b adalah TRUE,
$a xor $b Xor
tapi tidak keduanya.
! $a Not TRUE jia $a bukan TRUE.
TRUE, jika keduanya: $a dan $b
$a && $b And
adalah TRUE.
$a || $b Or TRUE, jika $a atau $b adalah TRUE.
Tabel Operator Logika

2.6.10 OPERATOR STRING


Ada dua jenis operator string. Antara lain :

 concatenation (“.”), dimana string sebelah kanan digabungkan dengan string sebelah kiri yang
akan menghasilkan string baru hasil dari penggabungan.

 concatenation dengan operator pemberi nilai (“ .= ”), dimana string di sebelah kanan
digabungkan dengan string sebelah kiri yang hanya membutuhkan satu variable penampung
string saja.

<?php
$a = "Hello ";
$b = $a . "World!"; // sekarang $b berisi "Hello World!"
$a = "Hello ";
$a .= "World!"; // sekarang $a berisi "Hello World!"
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
2.6.11 OPERATOR ARRAY

Contoh Nama Hasil


$a + $b Penggabungan Gabungan dari $a dan $b.
TRUE jika $a dan $b memiliki
$a == $b Sama Dengan
kesamaan pasangan key/value.
TRUE jika $a dan $b memiliki
kesamaan pasangan key/value
$a === $b Identik
termasuk kesamaan jenis
tipe-nya (identik).
Tidak Sama TRUE jika $a tidak sama
$a != $b
Dengan dengan $b.
Tidak Sama TRUE jika $a tidak sama
$a <> $b
Dengan dengan $b.
Tidak TRUE jika $a tidak identik
$a !== $b
identik dengan $b.
Tabel Operator Array

Operator “+” adalah menggabungkan array sebelah kanan ke array sebelah kiri, jika ada key yang sama
maka key tidak akan ditimpa.

<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b; // Menggabungkan $a dan $b


echo "Hasil penggabungan dari \$a and \$b: \n";
var_dump($c);

$c = $b + $a; // Menggabungkan $b dan $a


echo "Hasil penggabungan dari \$b dan \$a: \n";
var_dump($c);

/* Hasil Penggabungan adalah :


Penggabungan dari $a dan $b:
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
Penggabungan dari $b dan $a:
array(3) {
["a"]=>
string(4) "pear"
["b"]=>
string(10) "strawberry"
["c"]=>
string(6) "cherry"
}
*/
?>

Contoh perbandingan array :


Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)


var_dump($a === $b); // bool(false) karena tidak identik, tidak
setipe
?>

2.7 STRUKTUR KONTROL


Script PHP dibangun oleh serangkaian pernyataan, dimana pernyataan tersebut bisa berupa pemberi nilai
(assignment), pemanggil fungsi, perulangan (loop), pernyataan kondisi, atau apapun termasuk pernyataan
kosong. Dan pernyataan-pernyataan tersebut bisa diatur alur kerjanya dengan adanya stuktur kontrol.
Agar lebih jelas, berikut ini akan dijelaskan jenis struktur kontrol yang ada dalam PHP :

2.7.1 IF
Pernyataan If merupakan percabangan bersyarat yang berfungsi untuk melewatkan suatu proses, jika
syarat terpenuhi maka akan dilakukan proses yang berikutnya. Proses bisa berupa satu instruksi atau
beberapa instruksi dalam satu kelompok.

Struktur if satu instruksi :

If (syarat)
instruksi;

<?php
$panjang = 30;
$lebar = 80;
$luas = $panjang * $lebar;
$maks = 100;

if ( $luas > $maks)


echo "Luas lebih dari $maks";
?>

Struktur if dengan sekumpulan instruksi:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
If (syarat)
{
instruksi;
instruksi;
instruksi;
}

<?php
// Nilai $panjang dan $lebar bisa diganti,
// agar lebih mudah memahami.

$panjang = 30;
$lebar = 80;
$luas = $panjang * $lebar;
$maks = 100;

if ( $luas > $maks)


{
echo "Panjang = $panjang <br>";
echo "Lebar = $lebar <br>";
echo "Luas Yang Dihasilkan = $luas <br>";
echo "Luas Maksimal = $maks <br>";
echo "Luas lebih dari $maks";
}
?>

2.7.2 IF…ELSE
Struktur if…else memiliki dua alur percabangan, sehingga mempunyai alternatif. If…else bisa menuju ke
proses berikutnya walaupun syarat terpenuhi atau tidak terpenuhi.

Struktur If … Else dengan satu instruksi :

If (syarat)
Instruksi;
Else
Instruksi;

Contoh:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$angka = 4;
$sisa = $angka % 2; // mencari sisa bagi
if ($sisa == 0)
echo "$angka merupakan bilangan genap";
else
echo "$angka merupakan bilangan ganjil";
?>

Struktur If … Else dengan sekumpulan instruksi:

If (syarat)
{
instruksi;
instruksi;
}
else
{
instruksi;
instruksi;
}

<?php
$angka = 4;
$sisa = $angka % 2; // mencari sisa bagi
if ($sisa == 0)
echo "$angka merupakan bilangan genap";
else
echo "$angka merupakan bilangan ganjil";
?>

2.7.3 IF…ELSEIF…ELSE
Pernyataan if … elseif … else merupakan pengembangan dari pernyataan if … else namun memiliki
percabangan lebih dari dua. if … elseif … else sesuai untuk memecahkan masalah yang membutuhkan
banyak percabangan karena banyak alternatif yang bisa diperoleh. Pernyataan if … elseif … else boleh
dikatakan juga sebagai if di dalam if.

Struktur if … elseif … else adalah:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
If (syarat)
{
instruksi;
instruksi;
} elseif (syarat)
{
instruksi;
instruksi;
} elseif (syarat)
{
instruksi;
instruksi;
} else
{
instruksi;
instruksi;
}

<?php
$a = 9; // silahkan dirubah nilainya untuk mengetahui hasil yang
diperoleh
$b = 3;
if ($a > $b) {
echo "a is lebih besar dari b";
} elseif ($a == $b) {
echo "a sama dengan b";
} else {
echo "a lebih kecil dari b";
}
?>

2.7.4 OPERATOR KONDISI TERNARY


Untuk meyederhanakan pernyataan if … else, PHP memiliki operator kondisi ternary yang cukup singkat.
Dengan struktur sebagai berikut :

variable = ekspresi logik atau relasi ? ekspresi B:ekspresi S

Penjelasan struktur Operator Kondisi :

 Variable, variable yang akan berisi nilai ekspresi 1 atau ekspresi 2.


 Ekspresi logik atau relasi, merupakan ekspresi yang dijalankan untuk memeriksa kondisi, sehingga
menghasilkan nilai benar atau salah.
 Ekspresi B, akan dijalankan jika ekspresi logika atau relasi bernilai benar (true).
 Ekspresi S, akan dijalankan jika ekspresi logika atau relasi bernilai salah (false)

<?php
$umur = 5; // bagaimana jika $umur lebih dari 5?

If ($umur <= 5)
$usia = "Balita";
else
$usia = "Remaja atau dewasa";
echo $usia . "<br>";

// Script di atas dapat dituliskan seperti berikut ini :


$usia = $umur <= 5 ? "Balita" : "Remaja atau dewasa";

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo $usia;
?>
2.7.5 STRUKTUR KONTROL ALTERNATIF
PHP menawarkan sintaks alternatif untuk struktur kontrol if, while, for, foreach, dan switch yang berguna
untuk mengelompokkan beberapa instruksi yang akan dieksekusi. Sintaks altenatif tersebut diawali
dengan tanda titik dua (“ : ”) dan diakhiri dengan endif;, endwhile;, endfor;, endforeach;, atau endswitch;
sesuai dengan struktur kontrol-nya. Fungsinya mirip dengan penanda pasangan kurawal (“ { }”) yang
biasa digunakan untuk mengelompokkan beberapa instruksi.

<?php
if ($a == 5):
echo "a sama dengan 5";
echo "...";
elseif ($a == 6):
echo "a sama dengan 6";
echo "!!!";
else:
echo "a bukan 5 ataupun 6";
endif;
?>

2.7.6 WHILE
Perulangan while akan melakukan pengecekan syarat di awal blok perulangan. Selama syarat bernilai
benar maka perulangan terus berlanjut dan sebaliknya jika syarat bernilai salah maka perulangan akan
dihentikan.

Struktur While untuk instruksi tunggal :

while (syarat)
instuksi;

Struktur While dengan sekumpulan instruksi :

while (syarat)
{
instuksi;
instuksi;
}

atau juga bisa dalam bentuk berikut ini :

while (syarat)
instuksi;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
instuksi;
endwhile;

<?php
/* Contoh 1 */

$i = 1;
while ($i <= 10)
{
echo $i++; //12345678910
}
echo "<br>";

/* Contoh 2 */

$i = 1;
while ($i <= 10):
echo $i; //12345678910
$i++;
endwhile;
?>

2.7.7 DO - WHILE
Perulangan do … while merupakan kebalikan dari perulangan for dan while, karena perulangan do …
while melakukan pengecekan terhadap syarat diakhir blok perulangan. Jadi do… while paling sedikit
akan melakukan satu kali proses perulangan.

Struktur do…while adalah sebagai berikut:

do
{
instruksi;
instruksi;
} while (syarat)

Berikut contoh mencetak bilangan 1 sampai dengan 10, termasuk nilai totalnya:

<?php
$bil = 1;
$total = 0;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
do
{
$total += $bil;
echo $bil . " " . $total . "<br>";
$bil++;
} while ($bil <= 10)
/* Hasilnya
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45
10 55
*/
?>

2.7.8 FOR
Struktur kontrol For lebih cocok untuk perulangan dengan jumlah pencacah yang pasti atau sudah
diketahui.

Struktur For dengan instruksi tunggal :

for (inialisasi; syarat ; pencacah)


instuksi;

Struktur For dengan sekumpulan instruksi :

for (inialisasi; syarat ; pencacah)


{
instuksi;
instuksi;
}

Penjelasan struktur for :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 inisialisasi, merupakan nilai awal saat perulangan for dilakukan.
 syarat, untuk mengevaluasi setiap kali perulangan dilakukan, berhenti tidaknya suatu perulangan
ditentukan oleh syarat tersebut. Syarat bisa berupa ekspresi relasional atau ekspresi logika. Jika
syarat bernilai benar maka perulangan dilanjutkan dan jika syarat bernilai salah maka perulangan
akan dihentikan.
 pencacah, untuk mengatur perubahan nilai variable pencacah yang nilainya bisa diatur menaik atau
menurun sesuai dengan kubutuhan.
 inisialisasi, syarat dan pencacah dalam perulangan for disebut dengan argumen dan argumen tidak
harus diisi lengkap. Meskipun argumen tidak harus lengkap, tanda titik koma (;) harus tetap
dicantumkan di setiap argumen yang kosong.

<?php
// Contoh perulangan for dengan argumen lengkap.

for ($i=1;$i<=10;$i++)
{
$total += $i;
echo $i . " " . $total . "<BR>";
}

// Contoh perulangan for dengan argumen tidak lengkap.


// Argumen syarat yang kosong, tetapi diganti dengan syarat di
bawahnya.

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


{
if ($i > 10) {
break; }
echo $i;
}

// Perulangan for tanpa argumen sama sekali,


// menyebakan perulangan dilakukan terus menerus.

// Perulangan dihentikan secara paksa dengan instruksi break.

$i = 1;
for (;;)
{
if ($i > 10)
{ break; }
echo $i;
$i++;
}
?>

2.7.9 FOREACH
Perulangan foreach mulai digunakan pada PHP versi 4 ke atas. Perulangan foreach banyak digunakan
bersamaan dengan data array, karena untuk mengakses data array akan jauh lebih mudah dan praktis.

Struktur foreach adalah sebagai berikut :

foreach(array_expression as $value) statement


foreach(array_expression as $key => $value) statement

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk lebih jelasnya, lihat contoh berikut :

Contoh 1: foreach yang hanya menamplkan value saja.

<?php
$a = array (1, 2, 3, 17);

foreach ($a as $v)


{
echo "Nilai \$a saat ini adalah: $v.<br>";
}

/*
Nilai $a saat ini adalah: 1.
Nilai $a saat ini adalah: 2.
Nilai $a saat ini adalah: 3.
Nilai $a saat ini adalah: 17.
*/
?>

Contoh 2: foreach yang menampilkan value dengan key.

<?php
$a = array (1, 2, 3, 17);

$i = 0;

foreach($a as $v)
{
echo "\$a[$i] => $v.<br>";
$i++;
}

/* Hasilnya
$a[0] => 1.
$a[1] => 2.
$a[2] => 3.
$a[3] => 17.
*/
?>

Contoh 3: foreach yang menampilkan key dan value.

<?php
$a = array ("one" => 1, "two" => 2, "three" => 3, "seventeen" =>
17);

foreach($a as $k => $v)


{
echo "\$a[$k] => $v.<br>";
}

/* Hasilnya
$a[one] => 1.
$a[two] => 2.
$a[three] => 3.
$a[seventeen] => 17.
/*
?>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Contoh 4: foreach yang menampilkan array multi-dimensi

<?php
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1)
{
foreach ($v1 as $v2)
{
echo "$v2";
}
}

// Hasilnya abyz
?>

2.7.10 BREAK
Pada contoh-contoh sebelumnya pernyataan break sudah pernah disinggung sedikit, yaitu bertujuan untuk
menghentikan dan keluar dari struktur perulangan for, foreach, while, do…while atau struktur switch
kemudian melanjutkan eksekusi program ke baris perintah berikutnya.

Break bisa ditambahkan dengan argumen angka, yang menunjukkan kelompok struktur keberapa yang
akan dihentikan.

Contoh break pada struktur for :

<?php
for ($i=1;$i<=10;$i++)
{
if ($i==6)
break;
echo $i ." ";
}
echo "Akhir pengulangan";
?>

Contoh break yang dikenakan pada struktur while dan switch, dimana break memiliki dua tingkat stuktur
:

<?php
$i = 0;
while (++$i)
{
switch ($i)
{
case 5:
echo "Di 5<br>";
break 1;
/* break 1, keluar hanya di stuktur switch. */
case 10:
echo "Di 10, keluar<br>";
break 2;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
/* break 2, keluar dari struktur switch dan struktur
while. */
default:
break;
}
}
?>

2.7.11 CONTINUE
Pernyataan continue digunakan pada struktur perulangan. Bertujuan untuk melewati suatu tahap
perulangan dan melanjutkan kembali ke proses perulangan selanjutnya.

Continue bisa ditambahkan argumen angka yang berarti memberitahukan, struktur keberapa yang akan
dihentikan.

<?php
for ($i=1;$i<=10;$i++)
{
if ($i == 7)
continue;
echo "&nbsp; $i"; //1 2 3 4 5 6 8 9 10
}
?>

2.7.12 SWITCH
Pernyataan switch hampir sama dengan pernyataan if … elseif … else tetapi dengan pendekatan yang
berbeda. Keduanya sama-sama yang memiliki banyak percabangan, perbedaannya adalah, variable yang
dijadikan syarat harus bernilai pasti dan bukan lagi sebagai ekpresi.

Strukturnya Switch :

switch ($variable)
{
case nilai_variable_1:
instruksi;
instruksi;
break;

case nilai_variable_2:
instruksi;
instruksi;
break;

case nilai_variable_3:
instruksi;
instruksi;
break;

default:
instruksi;
instruksi;
}

Penjelasan struktur switch :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Switch diawali dengan tanda “{“ dan diakhiri dengan tanda “}”.

 Setiap case harus diakhiri dengan break, fungsi break adalah untuk mengehentikan proses
pencarian jika syarat sudah terpenuhi. Jika tidak menggunakan break maka meskipun nilai sudah
ditemukan sesuai syaratnya, proses akan tetap berjalan sampai pada alternatif terakhir dan nilai
yang dihasilkan adalah nilai case paling akhir walaupun nilai yang sesuai berada diposisi
sebelumnya.

 Default bertipe pilihan (optional), bisa disertakan boleh juga tidak. Default disertakan jika dari
sekian banyak alternatif case tidak satu pun yang memenuhi syarat, maka instruksi default akan
dilakukan.

Contoh kemiripan penggunaan if dan switch :

<?php
// Percabangan dengan if
if ($i == 0) {
echo "i sama dengan 0";
}
if ($i == 1) {
echo "i sama dengan 1";
}
if ($i == 2) {
echo "i sama dengan 2";
}

// Percabangan dengan switch


switch ($i) {
case 0:
echo "i sama dengan 0";
break;
case 1:
echo "i sama dengan 1";
break;
case 2:
echo "i sama dengan 2";
break;
}
?>

Contoh switch disertai default :

<?php
switch ($i) {
case 0:
echo "i sama dengan 0";
break;
case 1:
echo "i sama dengan 1";
break;
case 2:
echo "i sama dengan 2";
break;
default:
echo "i tidak sama dengan 0, 1 atau 2";
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
2.8 REQUIRE, INCLUDE, REQUIRE_ONCE, INCLUDE_ONCE
Terkadang suatu halaman web membutuhkan file lain agar halaman web tersebut bisa bekerja. Agar file
beserta isinya bisa dikenali di halaman bersangkutan, bisa digunakan pernyataan REQUIRE(),
INCLUDE(), REQUIRE_ONCE(), INCLUDE_ONCE().

Pemanggilan file sangat berguna untuk menghemat penulisan baris-baris program. Beberapa baris
program (misalnya: fungsi, variable) yang penting dan sering digunakan di setiap halaman web bisa
dikumpulkan menjadi satu, selanjutnya digunakan secara berulang tanpa menulis baris program lagi.

Pernyataan require() dan include() memiliki perilaku yang sama, kecuali dalam hal penanganan
kesalahan. Jika pernyataan require() digunakan kemudian timbul kesalahan, maka proses dihentikan dan
halaman web tidak akan nampak, sebaliknya jika pernyataan include() digunakan, maka pesan peringatan
kesalahan akan nampak dan proses tetap berlanjut.

Pernyataan require_once() dan include_once() fungsinya sama persis dengan require() dan include(),
perbedaannya bahwa pemeriksaan terhadap file yang di-require_once() atau di- include_once()-kan
dilakukan sekali saja.

<?php
// Contoh require()
require 'prepend.php';
require $somefile;
require ('somefile.txt');
?>

<?php
// Contoh require_once()
require_once("a.php");
require_once("A.php");
?>

<?php
// Contoh include_once()
include_once("a.php");
include_once("A.php");
?>

2.9 FUNGSI
Fungsi adalah sekumpulan baris-baris program yang merupakan serangkaian perintah-perintah program
yang disusun sedemikian rupa sehingga bisa menjadi satu module saja.
Ketika programmer membuat program yang cukup rumit/kompleks maka perlu digunakan fungsi, karena
fungsi akan sangat membantu menyederhanakan penulisan program.

Adapun manfaat adanya fungsi adalah sebagai berikut :

 Mengurangi penulisan program yang sama.


Jika kita sering menggunakan program-program yang sama, maka kita dapat membuatnya menjadi
suatu module fungsi, sehingga dengan fungsi tersebut bisa dipanggil di tempat lain tanpa membuat
ulang baris program tersebut, dengan demikian program yang dibuat akan menjadi lebih pendek.

 Kemudahan untuk melacak dan memperbaiki program.


Dengan fungsi akan sangat mudah dalam melacak dan memperbaiki baris program, karena jika ada
kesalahan tidak perlu untuk memeriksa isi program secara kesuluruhan tetapi cukup dilihat per
bagian fungsi saja.
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Bisa dipanggil dimana saja termasuk di fungsi yang lain.
Karena fungsi bisa dipanggil difungsi yang lain maka program yang kompleks bisa dibuat menjadi
lebih sederhana dan mudah untuk dipahami.

Dalam segi pembuatan, fungsi terbagi dua :

 Fungsi Built-in yang disediakan PHP.


Pemrogram tinggal memanggil nama fungsinya saja dan siap digunakan. Seluruh isi module fungsi
sudah dibuatkan oleh PHP secara Built-in.

 Fungsi buatan sendiri.


Pemrogram juga diberi kebebasan untuk membuat fungsi sendiri, hal ini dilakukan jika dirasa fungsi
yang dibutuhkan tidak disediakan oleh PHP secara built-in.

2.9.1 FUNGSI BUATAN SENDIRI


Di dalam pemrograman PHP programer diberi kebebasan untuk membuat fungsi sendiri kalau memang
dirasa perlu untuk membuatnya.

Tata cara penamaan sebuah fungsi mengikuti aturan yang sama dengan tata cara penamaan variable,
selama masih sesuai dengan aturan PHP maka programer diberi kebebasan memberi nama fungsi. Nama
fungsi yang benar diawali dengan huruf atau garis bawah (underscores) kemudian diikuti dengan angka
huruf, angka, huruf atau garis bawah.

Stuktur Fungsi :

Function nama_fungsi(argumen1[,argumen2,…])
{
Baris program1;
Baris program2;
Baris programN;
[return]
}

Contoh Fungsi Kondisi :

<?php
$makefoo = true;

/* fungsi foo() tidak bisa dipanggil dari sini,


sebab fungsi foo() dianggap belum didefinisikan,
tetapi kita bisa memanggil fungsi bar() */

bar();

if ($makefoo) {
function foo()
{
echo "Aku tidak ada sampai eksekusi program mencapaiku
disini.\n";
}
}

/* Sekarang fungsi foo() bisa dipanggil disini,


selama $makefoo bernilai true */

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if ($makefoo) foo();

function bar()
{
echo "Aku ada saat program dijalankan pertama kali.\n";
}
?>

Contoh fungsi dalam fungsi :

<?php
function foo()
{
function bar()
{
echo "Aku tidak ada sampai fungsi foo() dipanggil.\n";
}
}

/* Kita belum bisa memanggil fungsi bar()


selama fungsi bar() belum didefinisikan */

foo();

/* Sekarang kita bisa memanggil fungsi bar(),


karena proses fungsi foo() membuat fungsi bar() bisa diakses */

bar();
?>

Dalam PHP sebuah fungsi bisa memanggil dirinya sendiri secara berulang, atau yang lebih dikenal
dengan fungsi rekursif. Perhitungan matematika yang paling sering digunakan adalah untuk mencari nilai
faktorial suatu bilangan. Faktorial m! didefinisikan sebagai berikut : bernilai 1 jika m! = 0 dan m*(m-1),
jika m > 0.

Contoh fungsi dalam fungsi yang bersifat rekursif (berulang) :

<?php
Function faktorial($m)
{
If ($m == 0)
Return 1;
Else
Return $m * faktorial ($m-1)
}

Echo "Faktorial dari 4 : ". faktorial(4);


// hasilnya 24, diperoleh dari 4!=4*3*2*1
?>

Catatan:
Di PHP 3 fungsi harus didefinisikan terlebih dahulu dan diletakkan sebelum fungsi
pemanggilnya. Namun sejak PHP 4, pemanggil fungsi bisa diletakkan di atas,
sebelum fungsi didefinisikan. Kecuali jika fungsi didefinisikan dalam suatu
pernyataan kondisi, seperti contoh di atas.

2.9.2 ARGUMEN/PARAMETER FUNGSI


Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Fungsi bisa melewatkan satu atau lebih argumen yang diletakkan diantara tanda kurung tutup dan kurung
buka setelah nama fungsi. Jika jumlah argumen lebih dari satu maka disetiap argumen harus dibatasi
dengan tanda koma (“ , ”). Argumen bisa berupa variable ataupun ekspresi.

Ada dua jenis argumen yang bisa dilewatkan dalam fungsi :

 Melewatkan argumen fungsi berdasarkan value (passing by value).


Argumen passing by value merupakan perlakuan standar dalam fungsi PHP dimana setelah keluar
dari fungsi, nilai varibale argumen akan selalu tetap.

 Melewatkan argumen fungsi berdasarkan rujukan (passing by reference).


Argumen akan ikut berubah setelah keluar dari fungsi jika argumen bersifat passing by reference.
Agar argumen fungsi bersifat passing by reference maka argumen tersebut harus diawali dengan
tanda ampersan (“&”).

Contoh 1, Melewatkan parameter dengan passing by reference.

<?php
function perluasan_string(&$string)
{
$string .= 'dan tambahannya.';
}

$str = 'Ini adalah string, ';


perluasan_string($str);
echo $str;

// keluaran : 'Ini adalah string, dan tambahannya.'


// nilai $str bukan lagi 'Ini adalah string, '
?>

Contoh 2, Melewatkan parameter passing by value yang disertai dengan argumen bawaan.

<?php
function makecoffee($type = "cappuccino")
{
return "Membuat secangkir $type.\n";
}

echo makecoffee(); // Membuat secangkir cappuccino.


echo makecoffee(null); // Membuat secangkir .
echo makecoffee("espresso"); // Membuat secangkir espresso.
?>

2.9.3 NILAI BALIK FUNGSI


Fungsi bisa diberi nilai balik dengan memberi pernyataan return.
Nilai balik fungsi tersebut bisa menerima berbagai jenis tipe data, termasuk list dan object.

Contoh 1, fungsi bernilai balik dengan cara menambahkan return.

<?php
function luas_kotak($num)
{
return $num * $num;
}

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo luas_kotak(4);
// keluaran '16'.
?>

Pernyataan return tidak bisa menghasilkan nilai balik lebih dari satu. Tetapi hal tersebut bisa disiasati
dengan menggunakan pernyataan list.
Contoh fungsi menggunakan list :

<?php
function angka_kecil()
{
return array (0, 1, 2);
}
list ($nol, $satu, $dua) = angka_kecil();
?>

2.9.4 FUNGSI INTERNAL (BUILT-IN)


PHP menyediakan banyak sekali fungsi yang siap digunakan. Penggunaan fungsi built-in tersebut harus
sesuai dengan aturan yang telah ditentukan, termasuk jumlah argumen yang harus disertakan.

Tidak semua fungsi built-in PHP bisa digunakan sebelum extension library diaktifkan. Misalnya, saat
menggunakan fungsi-fungsi image seperti imagecretetruecolor() maka pustaka “php_gd2” harus
diaktifkan, atau saat menggunakan fungsi mysql_connect() maka pustaka “php_mysql” harus diaktifkan
dan jika menggunakan fungsi penyandian MHASH maka harus mengaktifkan pustaka “php_mhash”.
Jika hal ini tidak dilakukan biasanya akan muncul peringatan kesalahan "undefined function" karena
memang belum dikenali.

Untuk mengaktifkan pustaka PHP yang diperlukan silahkan buka menu tray icon taskbar, pilih PHP
Settings -> PHP Extentions seperti tampak gambar di bawah ini :

Gambar Aktifasi PHP Extentions

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 3
FUNGSI-FUNGSI BUILT-IN PHP

PHP menyediakan banyak sekali fungsi-fungsi built-in yang siap digunakan, berikut ini dijelaskan
beberapa fungsi yang sering digunakan dalam pemrograman. Tentu saja dalam buku ini tidak bisa
menampilkan semua fungsi yang ada secara keseluruhan.

3.1 FUNGSI ARRAY


array_change_key_case
Mengembalikan nama string key dari array menjadi huruf kecil semua (lowercased) atau huruf besar
semua (uppercased). int case merupakan pilihan antara CASE_UPPER atau CASE_LOWER.

Struktur : array array_change_key_case ( array input [, int case])

<?php
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
// hasilanya : Array ( [FIRST] => 1 [SECOND] => 4 )
?>

array_chunk
Membagi array menjadi potongan - potongan array. Preserve_keys bersifat pilihan, jika bernilai true
maka keys asli akan dipertahankan. Jika bernilai false maka keys akan berubah seiring dengan
perubahannya, keys akan dimulai dari 0.

Struktur : array array_chunk ( array input, int size [, bool


preserve_keys])

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
// Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] =>
c [1] => d ) [2] => Array ( [0] => e ) )

print_r(array_chunk($input_array, 2, TRUE));
// Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [2] =>
c [3] => d ) [2] => Array ( [4] => e ) )
?>

array_count_values
Menghitung semua isi atau nilai dalam array

Struktur : array array_count_values ( array input)

<?php
$array = array (1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));
// Array ( [1] => 2 [hello] => 2 [world] => 1 )
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
array_diff
Mencari perbedaan nilai suatu array terhadap array yang lain

Struktur : array array_diff ( array array1, array array2 [, array ...])

<?php
// Membandingkan $array1 yang tidak dimiliki di $array2
$array1 = array ("a" => "green", "red", "blue", "red");
$array2 = array ("b" => "green", "yellow", "red");
print_r(array_diff ($array1, $array2)); // Array ( [1] => blue )
?>

array_fill
Memberi nilai array dimulai dari index ke start_index sebanyak num.

Struktur : array array_fill ( int start_index, int num, mixed value)

<?php
print_r(array_fill(5, 6, 'banana'));
// Array ( [5] => banana [6] => banana [7] => banana [8] => banana
[9] => banana [10] => banana )
?>

array_filter
Menyaring data / element array dengan suatu fungsi yang memiliki nilai kembalian.

Struktur : array array_filter ( array input [, mixed callback])

<?php
function ganjil($var)
{
return ($var % 2 == 1);
}

function genap($var)
{
return ($var % 2 == 0);
}

$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);


$array2 = array (6, 7, 8, 9, 10, 11, 12);

echo "Ganjil :";


print_r(array_filter($array1, "genap"));
// Ganjil : Array ( [a] => 1 [c] => 3 [e] => 5 )

echo "Genap:";
print_r(array_filter($array2, "ganjil"));
// Genap : Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
?>

array_flip
Mentransformasi value menjadi key dan key menjadi value suatu array. Jika ada value yang sama, maka
key terakhir yang digunakan.

Struktur : array array_flip ( array trans)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$trans = array ("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip ($trans);
print_r($trans); // Array ( [1] => b [2] => c )
?>

array_intersect
Mencari kesamaan atau perpotongan suatu array terhadap array yang lain.

Struktur : array array_intersect ( array array1, array array2 [, array


...])

<?php
$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
print_r(array_intersect ($array1, $array2));
// Array ( [a] => green [0] => red )
?>

array_key_exists
Array_key_exists bernilai boolean, berfungsi untuk mengecek apakah element key ada dalam set array
atau tidak. Bernilai true jika key ada dalam set array, dan bernilai false jika key tidak ada dalam set array.

Struktur : bool array_key_exists ( mixed key, array search)

<?php
$search_array = array("pertama" => 1, "kedua" => 4);
if (array_key_exists("pertama", $search_array))
{
echo "Element 'pertama' berada dalam array ";
}
?>

array_merge
Menggabungkan element dari dua atau lebih array. Dengan catatan jika ada nama key yang sama (yang
selain angka) maka value akan di timpa.

Struktur : array array_merge ( array array1, array array2 [, array ...])

<?php
$array1 = array ("warna" => "merah", 2, 4);
$array2 = array ("a", "b", "warna" => "hijau", "bentuk" =>
"trapezoid", 4);
print_r(array_merge ($array1, $array2));
// Array ( [warna] => hijau [0] => 2 [1] => 4 [2] => a [3] => b
[bentuk] => trapezoid [4] => 4 )
?>

array_push
Menambahkan satu atau lebih element ke dalam array.

Struktur : int array_push ( array array, mixed var [, mixed ...])

<?php
$stack = array ("jeruk", "pisang");
array_push ($stack, "apel", "strawbery"); //jumlah element menjadi
4
print_r($stack);

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
// Array ( [0] => jeruk [1] => pisang [2] => apel [3] => strawbery
)
?>

array_rand
Mengambil nilai acak element array

Struktur : mixed array_rand ( array input [, int num_req])


<?php
srand ((float) microtime() * 10000000);
// Mencacah waktu

$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");

// menghasilkan data acak sebanyak 2


$rand_keys = array_rand ($input, 2);
print $input[$rand_keys[0]]. ", " .$input[$rand_keys[1]];
?>

array_reverse
Membalik element array di mulai dari akhir element menuju ke awal element. Jika preserve_keys bernilai
True maka value dan key array akan ikut dibalik.

Struktur : array array_reverse ( array array [, bool preserve_keys])

<?php
$input = array ("php", 4.0, array ("hijau", "merah"));
print_r(array_reverse ($input));

// Element value terbalik dengan key tetap sesuai urutan


// Array ( [0] => Array ( [0] => hijau [1] => merah ) [1] => 4 [2]
=> php )

print_r(array_reverse ($input, TRUE));


// Element value dan key ikut dibalik
// Array ( [2] => Array ( [0] => hijau [1] => merah ) [1] => 4 [0]
=> php )
?>

array_slice
Mengambil element array dimulai dari offset dan sejauh length.

Jika length tidak ditentukan maka element diambil semua, mulai dari offset sampai akhir array.

Jika offset bernilai postif makan offset dimulai dari kiri array sejauh length dan jika offset bernilai negatif
maka offset dimulai dari kanan array sejauh length.

Struktur : array array_slice ( array array, int offset [, int length])

<?php
$input = array ("a", "b", "c", "d", "e");
print_r(array_slice ($input, 2)); // returns "c", "d", and "e"
echo "<br>";
print_r(array_slice ($input, 2, -1)); // returns "c", "d"
echo "<br>";
print_r(array_slice ($input, -2, 1)); // returns "d"
echo "<br>";
print_r(array_slice ($input, 0, 3)); // returns "a", "b", and "c"

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
?>

array_splice
Membuang element array yang ditandai oleh offset dan lebar dari suatu input array, dan menggantinya
dengan array lain.

Jika offset postif maka porsi yang dibuang dimulai dari kiri sejauh offset input array. Jika offset negatif
maka porsi yang dibuang dimulai dari kanan sejauh offset input array.

Jika length tidak ditentukan maka array akan dihapus semua, dimulai dari offset sampai akhir array.
Jika length ditentukan dan bernilai positif maka beberapa element akan dibuang, dimulai dari offset
sampai length array mulai dari kiri.
Jika length ditentukan dan bernilai negatif maka beberapa element akan dibuang, dimulai dari offset dan
lebarnya dimulai dari akhir array sesuai dengan lengthnya.

Struktur : array array_splice ( array input, int offset [, int length [,


array replacement]])

<?php
$input = array ("red", "green", "blue", "yellow");
print_r($input);
// array input: Array ( [0] => red [1] => green [2] => blue [3] =>
yellow )
echo "<br>";
print_r(array_splice ($input, 2));
// element yang dibuang: Array ( [0] => blue [1] => yellow )
echo "<br>";
print_r($input);
// array input saat ini: Array ( [0] => red [1] => green )

echo "<br><br>";

$input = array ("red", "green", "blue", "yellow");


print_r($input);
// array input: Array ( [0] => red [1] => green [2] => blue [3] =>
yellow )
echo "<br>";
print_r(array_splice ($input, 1, -1));
// element yang dibuang: Array ( [0] => green [1] => blue )
echo "<br>";
print_r($input);
// array input saat ini: Array ( [0] => red [1] => yellow )

echo "<br><br>";
$input = array ("red", "green", "blue", "yellow");
print_r($input);
// array input: Array ( [0] => red [1] => green [2] => blue [3] =>
yellow )
echo "<br>";
print_r(array_splice ($input, 1, count($input), "orange"));
// array yang dibuang dan diganti: Array ( [0] => green [1] => blue
[2] => yellow )
echo "<br>";
print_r($input);
// array input saat ini: Array ( [0] => red [1] => orange )
?>

array_sum

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Menjumlahkan semua nilai array.

Struktur : mixed array_sum ( array array)

<?php
$a = array(2, 4, 6, 8);
echo "Jumlah(a) = ".array_sum($a)."<br>";

$b = array("a"=>1.2,"b"=>2.3,"c"=>3.4);
echo "Jumlah(b) = ".array_sum($b)."<br>";

// Jumlah(a) = 20
// Jumlah(b) = 6.9
?>

array_unique
Membuang elemen ganda pada array, sehingga hanya ada satu nilai yang bersifat unik untuk setiap array.

Struktur : array array_unique ( array array)


<?php
$input = array ("a" => "green", "red", "b" => "green", "blue",
"red");
$result = array_unique ($input);
print_r($result);
// Array ( [a] => green [0] => red [1] => blue )
?>

array_values
Mengembalikan semua nilai array yang diurutkan berdasarkan key angka, dimulai dari urutan ke-0 .

Struktur : array array_values ( array input)

<?php
$array = array ("ukuran" => "XL", "warna" => "Gold");
print_r(array_values ($array));
// Array ( [0] => XL [1] => Gold )
?>

array
Menciptakan array baru.

Struktur : array array ( [mixed ...])

<?php
// Contoh 1, membuat array 2 dimensi.
$buah = array (
"fruits" => array ("a"=>"orange", "b"=>"banana", "c"=>"apple"),
"numbers" => array (1, 2, 3, 4, 5, 6),
"holes" => array ("first", 5 => "second", "third")
);

// Contoh 2
$array = array( 1, 1, 1, 1, 1, 8=>1, 4=>1, 19, 3=>13);
print_r($array);
// index ke-3 yang bernilai 1 akan diisi dengan 3=>13
// Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 13 [4] => 1 [8] => 1
[9] => 19 )

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
// Contoh 3
$bulan = array(1 => 'Januari', 'Febuari', 'Maret');
print_r($bulan);
// array dengan key sebagai acuan
// Array ( [1] => Januari [2] => Febuari [3] => Maret )
?>

count
Menghitung jumlah element array.

Struktur : int count ( mixed var)

<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
echo count ($a); // 3

$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
echo count ($b); // 3
?>

reset
Mengembalikan pointer atau penunjuk element ke awal array, setelah array dimanipulasi

sizeof
Mengambil jumlah element dari vaiable array. Fungsinya sama dengan fungsi count

current
Untuk mengetahui posisi element array saat ini, fungsi ini sama dengan fungsi pos

pos
Untuk memperoleh posisi element array saat ini, fungsinya sama dengan fungsi current

end
Menempatkan pointer array di akhir element

next
Memajukan pointer array ke kanan satu langkah

prev
Memundurkan pointer ke kiri satu langkah.

<?php
// penggunaan fungsi array current, next, prev, dan end
$transport = array('kaki', 'sepeda', 'mobil', 'pesawat');
$mode = current($transport); // $mode = 'kaki';
$mode = next($transport); // $mode = 'sepeda';
$mode = current($transport); // $mode = 'sepeda';
$mode = prev($transport); // $mode = 'kaki';
$mode = end($transport); // $mode = 'pesawat';
$mode = current($transport); // $mode = 'pesawat';
?>

in_array

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Mencari string dalam array, bernilai true jika string ada di dalam array dan false jika string tidak
ditemukan dalam array. bool strict merupakan pilihan, jika bernilai true maka pembanding akan
memperhatikan tipe datanya (tipe yang identik).

Struktur : bool in_array ( mixed needle, array haystack [, bool strict])

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix"; // Ketemu, ditampilkan
}
if (in_array("mac", $os)) {
echo "Got mac"; // Tidak ketemu, tidak ditampilkan
}
?>

<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, TRUE)) echo "'12.4' \n";


// Hasilnya tidak ketemu karena tipe data yang berbeda atau tidak
identik

if (in_array(1.13, $a, TRUE)) echo "1.13 \n";


// Hasilnya 1.13
?>

sort
Menata ulang urutan array, yang diurutkan berdasarkan nilainya dimulai dari kecil ke besar (ascending).

Struktur : void rsort ( array array [, int sort_flags])

<?php
$buah = array ("lemon", "orange", "banana", "apple");
sort ($buah);
reset ($buah);
while (list ($key, $val) = each ($buah)) {
echo "buah[".$key."] = ".$val."<br>";
}
// Hasil pengurutan
// buah[0] = apple
// buah[1] = banana
// buah[2] = lemon
// buah[3] = orange
?>

krsort
Menata ulang urutan array, yang diurutkan berdasarkan key-nya dimulai dari besar ke kecil (descending)

Struktur : int krsort ( array array [, int sort_flags])

<?php
$buah = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana",
"c"=>"apple");
krsort ($buah);
reset ($buah);
while (list ($key, $val) = each ($buah)) {
echo "$key = $val<br>";

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
}

// d = lemon
// c = apple
// b = banana
// a = orange
?>

ksort
Mengurutkan nilai array dari kecil ke besar (ascending) berdasarkan key element array.

Struktur : int ksort ( array array [, int sort_flags])

<?php
$buah = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana",
"c"=>"apple");
ksort ($buah);
reset ($buah);
while (list ($key, $val) = each ($buah)) {
echo "$key = $val<br>";
}

// a = orange
// b = banana
// c = apple
// d = lemon
?>

rsort
Mengurutkan array dari besar ke kecil (descending) berdasarkan nilai/value array.

Struktur : void rsort ( array array [, int sort_flags])

<?php
$buah = array ("lemon", "orange", "banana", "apple");
rsort ($buah);
reset ($buah);
while (list ($key, $val) = each ($buah)) {
echo "$key = $val<br>";
}

// Hasil
// 0 = orange
// 1 = lemon
// 2 = banana
// 3 = apple
?>

list
Memberikan nilai pada sejumlah daftar variable yang diperoleh dari nilai array.

Struktur : void list ( mixed ...)

<?php
$info = array('kopi', 'coklat', 'caffeine');

// Menampilkan semua variable


list($drink, $color, $power) = $info;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "$drink $color dan $power membuatnya spesial.<br>";
// kopi coklat dan caffeine membuatnya spesial.

// Menampilkan hanya beberapa variable


list($drink, , $power) = $info;
echo "$drink meningkatkan $power.<br>";
// kopi meningkatkan caffeine.

// Melewatkan beberapa variable, kecuali pada variable ketiga


list( , , $power) = $info;
echo "Saya membutuhkan $power!<br>";
// Saya membutuhkan caffeine!
?>

range
Menampilkan rentang nilai array dimulai dari kecil ke besar atau sebaliknya dari besar ke kecil.

Struktur : array range ( mixed low, mixed high)

<?php
foreach(range(0, 9) as $number) {
echo $number; // 0123456789
}

echo "<br>";

foreach(range('a', 'z') as $letter) {


echo $letter; //hasil: abcdefghijklmnopqrstuvwxyz
}

echo "<br>";

foreach(range('z', 'a') as $letter) {


echo $letter; //hasil: zyxwvutsrqponmlkjihgfedcba
}
?>

array_keys
Mengambil nilai key suatu array. Jika mixed search_value diisi, maka key yang ditampilkan hanya yang
sesuai dengan yang disyaratkan.

Struktur : array array_keys ( array input [, mixed search_value])

<?php
$array = array (0 => 100, "warna" => "merah");
print_r(array_keys ($array));
// Hasil: Array ( [0] => 0 [1] => warna )

echo "<br>";

$array = array ("biru", "merah", "hijau", "biru", "biru");


print_r(array_keys ($array, "biru"));
// Hasil: Array ( [0] => 0 [1] => 3 [2] => 4 )

echo "<br>";

$array = array ("warna" => array("biru", "merah", "hijau"),


"ukuran" => array("kecil", "sedang", "besar"));

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
print_r(array_keys ($array));
// Hasil: Array ( [0] => warna [1] => ukuran )
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.2 FUNGSI CHARACTER
ctype_alnum
Untuk memeriksa apakah character yang dihasilkan oleh string $text berupa alphanumeric.
Bernilai True jika setiap character di dalam string $text merupakan huruf atau angka.

Struktur : bool ctype_alnum ( string $text )

<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase)
{
if (ctype_alnum($testcase)) {
echo "String $testcase semua terdiri dari huruf atau angka.<br>";
}
else {
echo "String $testcase tidak terdiri dari angka atau huruf.<br>";
}
}
?>

Hasil :
String AbCd1zyZ9 semua terdiri dari huruf atau angka
String foo!#$bar tidak terdiri dari angka atau huruf

ctype_alpha
Untuk memeriksa apakah character yang dihasilkan oleh string $text berupa alphabetic.

Bernilai True jika setiap character di dalam string $text berupa huruf. Jika string $text berupa character
tunggal maka fungsi ctype_alpha() memiliki kesamaan dengan fungsi ctype_upper($text) atau
ctype_lower($text).

Struktur: bool ctype_alpha ( string $text )

<?php
$strings = array('KjgWZC', 'arf12');
foreach ($strings as $testcase) {
if (ctype_alpha($testcase)) {
echo "String $testcase terdiri dari huruf.<br>";
} else {
echo "String $testcase tidak terdiri dari huruf.<br>";
}
}
?>
Hasil :
String KjgWZC terdiri dari huruf
String arf12 tidak terdiri dari huruf

ctype_cntrl
Memeriksa apakah character yang dihasilkan oleh string $text berupa character kontrol (misalnya: tab,
escape, line feed, dan lain-lain). Bernilai True jika setiap character merupakan character kontrol.

Struktur: bool ctype_cntrl ( string $text )

<?php
$strings = array('string1' => "\n\r\t", 'string2' => 'arf12');
foreach ($strings as $name => $testcase) {
if (ctype_cntrl($testcase)) {
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "String '$name' semua terdiri dari character
kontrol.<br>";
} else {
echo "String '$name' tidak semua terdiri dari character
kontrol.<br>";
}
}
?>

Hasil :
String 'string1' semua terdiri dari character kontrol.
String 'string2' tidak semua terdiri dari character kontrol.

ctype_digit
Memeriksa apakah character yang dihasilkan oleh string $text berupa angka.
Bernilai True jika setiap character dalam string $text merupakan angka.

Struktur : bool ctype_digit ( string $text )

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
if (ctype_digit($testcase)) {
echo "String $testcase semua terdiri dari angka.<br>";
} else {
echo "String $testcase tidak semua terdiri dari
angka.<br>";
}
}
?>

Hasil :
String 1820.20 tidak semua terdiri dari angka
String 10002 semua terdiri dari angka.
String wsl!12 tidak semua terdiri dari angka

ctype_graph
Memeriksa apakah character yang dihasilkan oleh string $text bisa terlihat atau tercetak, kecuali spasi
kosong (white space). Bernilai True jika setiap character dalam string $text bisa tercetak.

Struktur: bool ctype_graph ( string $text )

<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12',
'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
if (ctype_graph($testcase)) {
echo "String '$name' semua terdiri dari character yang bisa
dicetak (visible).<br>";
} else {
echo "String '$name' tidak semua terdiri dari character
yang bisa dicetak (visible).<br>";
}
}
?>

Hasil :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
String 'string1' tidak semua terdiri dari character yang bisa dicetak
(visible).
String 'string2' semua terdiri dari character yang bisa dicetak
(visible).
String 'string3' semua terdiri dari character yang bisa dicetak
(visible).

ctype_lower
Memeriksa apakah character yang dihasilkan oleh string $text berupa huruf kecil.

Struktur: bool ctype_lower ( string $text )

<?php
$strings = array('aac123', 'qiutoas', 'QASsdks');
foreach ($strings as $testcase) {
if (ctype_lower($testcase)) {
echo "String $testcase semua terdiri dari huruf
kecil.<br>";
} else {
echo "String $testcase tidak semua terdiri dari huruf
kecil.<br>";
}
}
?>

Keluaran :
String aac123 tidak semua terdiri dari huruf kecil.
String qiutoas semua terdiri dari huruf kecil.
String QASsdks tidak semua terdiri dari huruf kecil.

ctype_print
Memeriksa apakah setiap character dalam string $text bisa tercetak (printable) termasuk character
kosong. Bernilai True jika setiap character bisa tercetak, dan bernilai false jika string $text mengandung
character kontrol, fungsi kontrol, atau semua character yang tidak menghasilkan keluaran.

Struktur: bool ctype_print ( string $text )

<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12',
'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
if (ctype_print($testcase)) {
echo "String '$name' semua terdiri dari character yang bisa
dicetak.<br>";
} else {
echo "String '$name' tidak semua terdiri dari character
yang bisa dicetak.<br>";
}
}
?>

Hasil :
String 'string1' tidak semua terdiri dari character yang bisa dicetak.
String 'string2' semua terdiri dari character yang bisa dicetak.
String 'string3' semua terdiri dari character yang bisa dicetak.

ctype_punct

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Memeriksa apakah character dalam string $text merupakan tanda baca yang tidak termasuk dalam
character whitespace atau alphanumeric.

Struktur: bool ctype_punct ( string $text )

<?php
$strings = array('ABasdk!@!$#', '!@ # $', '*&$()');
foreach ($strings as $testcase) {
if (ctype_punct($testcase)) {
echo "String $testcase semua terdiri dari tanda baca.<br>";
} else {
echo "String $testcase tidak semua terdiri dari tanda
baca.<br>";
}
}
?>

Hasil :
String ABasdk!@!$# tidak semua terdiri dari tanda baca.
String !@ # $ tidak semua terdiri dari tanda baca.
String *&$() $testcase semua terdiri dari tanda baca.

ctype_space
Memeriksa apakah character dalam string $text berupa charater kosong (termasuk di dalamnya adalah
spasi kosong , tab, vertical tab, line feed, carriage return dan form feed).

Struktur: bool ctype_space ( string $text )

<?php
$strings = array('string1' => "\n\r\t", 'string2' => "\narf12",
'string3' => '\n\r\t');
foreach ($strings as $name => $testcase) {
if (ctype_space($testcase)) {
echo "String '$name' semua terdiri character kosong.<br>";
} else {
echo "String '$name' tidak semua terdiri dari character
kosong.<br>";
}
}
?>

Keluaran :
String 'string1' semua terdiri character kosong.
String 'string2' tidak semua terdiri dari character kosong.
String 'string3' tidak semua terdiri dari character kosong.

ctype_upper
Memeriksa apakah semua character yang dihasilkan oleh string $text berupa huruf besar (kapital).

Stuktur: bool ctype_upper ( string $text )

<?php
$strings = array('AKLWC139', 'LMNSDO', 'akwSKWsm');
foreach ($strings as $testcase) {
if (ctype_upper($testcase)) {
echo "String $testcase semua terdiri dari huruf
kapital.<br>";
} else {

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "String $testcase tidak semua terdiri dari huruf
kapital.<br>";
}
}
?>

Hasil :
String AKLWC139 tidak semua terdiri dari huruf kapital.
String LMNSDO semua terdiri dari huruf kapital.
String akwSKWsm tidak semua terdiri dari huruf kapital.

ctype_xdigit
Memeriksa apakah setiap character dalam string $text merupakan angka hexadecimal, yang terdiri dari
angka atau character dengan regular ekspresi [A-Fa-f].

Struktur: bool ctype_xdigit ( string $text )

<?php
$strings = array('AB10BC99', 'AR1012', 'ab12bc99');
foreach ($strings as $testcase) {
if (ctype_xdigit($testcase)) {
echo "String $testcase semua terdiri dari angka
hexadecimal.<br>";
} else {
echo "String $testcase tidak semua terdiri dari angka
hexadecimal.<br>";
}
}
?>

Hasil :
String AB10BC99 semua terdiri dari angka hexadecimal.
String AR1012 tidak semua terdiri dari angka hexadecimal.
String ab12bc99 semua terdiri dari angka hexadecimal.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.3 FUNGSI TANGGAL DAN WAKTU
Merupakan kumpulan fungsi untuk mendapatkan tanggal dan waktu disisi komputer server dimana script
PHP berada. Anda dapat menggunakan fungsi-fungsi tersebut untuk membuat format tanggal dan format
waktu dengan berbagai cara.

checkdate
Memeriksa apakah argumen tanggal yang ditentukan sudah benar sesuai dengan tanggal Gregorian.
Dimana $month merupakan bulan antara 1 sampai dengan 12. $day merupakan tanggal yang sesuai
dengan bulan $month bersangkutan, misalnya: di bulan Februari tentu tidak mungkin jika tanggal $day
bernilai 31. Tahun $year merupakan tahun antara 1 sampai dengan 32767

Struktur: bool checkdate ( int $month, int $day, int $year )

<?php
var_dump(checkdate(12, 31, 2000)); // bool(true)
var_dump(checkdate(2, 29, 2001)); // bool(false)
?>

date
Mengembalikan nilai tanggal/waktu dalam bentuk string yang telah terformat, dimana format ditentukan
oleh argumen yang diberikan. Argumen bersifat pilihan, jika tidak diisi maka akan mengacu pada nilai
fungsi time().

Struktur: string date ( string $format [, int $timestamp] )

Adapun argumen $format yang bisa dilewatkan antara lain:

Contoh nilai yang


Format Character Description
dihasilkan
Day --- ---
Hari dalam bulan, terdiri dari 2
D 01 sampai 31
digit disertai dengan angka 0.
Hari secara tekstual, terdiri dari
D Mon sampai Sun
tiga huruf.
Hari dalam bulan tidak disertai
J 1 sampai 31
dengan angka 0.
Hari dalam minggu, ditampilkan
l (lowercase 'L') Sunday sampai Saturday
secara tekstual lengkap
Angka yang mewakili hari dalam 1 (untuk Monday) sampai 7
N
satu minggu . (untuk Sunday)
Character akhiran hari dalam
S st, nd, rd or th.
bahasa Inggris
Angka yang mewakili hari dalam 0 (untu Sunday) sampai 6
W
satu minggu. (untuk Saturday)
Hari dalam satu tahun (dimulai
Z 0 sampai 365
dari 0).
Week --- ---
Jumlah satuan minggu dalam satu
Contoh: 42 (Menggu ke 42
W tahun, minggu diawali pada hari
pada tahun ini)
senin.
Month --- ---

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Contoh nilai yang
Format Character Description
dihasilkan
Menampilkan bulan tekstual
F January sampai December
secara lengkap.
Angka yang mewakili bulan 2
M 01 sampai 12
digit, diawali angka 0.
Menampilkan bulan secara
M Jan sampai Dec
tekstual pendek tiga huruf
Angka ang mewakili bulan tanpa
n 1 sampai 12
diawali angka 0.
Jumlah hari sesuai dengan bulan
t 28 sampai 31
yang diberikan.
Year --- ---
1 if it is a leap year, 0
L Whether it's a leap year
otherwise.
Jumlah tahun. Ini sama sama
o Contoh: 1999 atau 2003
dengan nilai Y.
Angka yang mewakili tahun secara
Y Contoh: 1999 or 2003
lengkap 4 digit.
Angka yang mewakili tahun
y Contoh: 99 atau 03
dengan 2 digit.
Time --- ---
Huruf kecil mewakili Ante
A am atau pm
meridiem dan Post meridiem
Huruf besar mewaikili Ante
A AM atau PM
meridiem and Post meridiem
B Swatch Internet time 000 sampai 999
Format 12-jam tanpa diawali
G 1 sampai 12
angka 0.
Format 24-jam tanpa diawali
G 0 sampai 23
angka 0.
Format 12-jam diawali dengan
H 01 sampai 12
angka 0.
Format 24-jam diawali dengan
H 00 sampai 23
angka 0.
I Menit, diawali dengan angka 0. 00 sampai 59
S Detik, diawali dengan angka 0. 00 sampai 59
U Milidetik Contoh: 54321
Timezone --- ---
Identifikasi Timezone (wilayah Contoh: UTC, GMT,
E
waktu). Atlantic/Azores
Apakah hari dalam daylight saving 1 jika Daylight Saving
I (capital i)
time atau tidak. Time, 0 untuk sebaliknya.
Perbedaan Greenwich time (GMT)
O Contoh: +0200
dalam jam.
Perbedaan Greenwich time (GMT)
P yang disertai dengan titik dua Contoh: +02:00
antara jam dan menit.
T Singkatan waktu wilayah Contoh: EST, MDT ...
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Contoh nilai yang
Format Character Description
dihasilkan
(Timezone).
Full Date/Time --- ---
Tanggal sesuai ISO 8601 (ada di 2004-02-
C
PHP 5) 12T15:19:21+00:00
Format tanggal sesuai » RFC Contoh: Thu, 21 Dec 2000
r
2822. 16:01:07 +0200
Jumlah detik dalam jangka waktu
U UNIX(January 1 1970 00:00:00 Lihat juga time()
GMT)

<?php
echo date("D, d F Y") . "<br>";
echo date("g A") . "<br>";
echo date("dS");
?>

Hasil :
Wed, 19 September 2007
2 PM
19th

getdate
Mengembalikan sekumpulan nilai array yang berisi informasi waktu, jika argumen $timestamp tidak
disertakan maka waktu sekarang yang akan digunakan sebagai acuan adalah fungsi time().

Struktur: array getdate ( [int $timestamp] )

Key Keterangan Contoh Nilai


Angka yang mewakili
"seconds" 0 sampai 59
detik
Angka yang mewakili
"minutes" 0 sampai 59
menit
Angka yang mewakili
"hours" 0 sampai 23
jam
Angka yang mewakili
"mday" 1 sampai 31
hari dalam satu bulan
Angka yang mewakili 0 (Minggu) sampai
"wday"
hari dalam satu minggu 6 (Sabtu)
Angka yang mewakili
"mon" 1 sampai 12
bulan
Angka yang mewakili Contoh: 1999 atau
"year"
tahun, ada 4 digit 2003
Angka yang mewakili
"yday" 0 sampai 365
hari dalam satu tahun
Mewakili hari dalam
Minggu sampai
"weekday" satu minggu secara
Sabtu
tertulis
Mewakili bulan secara
Januari sampai
"month" tertulis, seperti
Desember
January atau March

Tabel elemen array yang dihasilkan dari fungsi getdate().

<?php
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$today = getdate();
print_r($today);
?>

Hasil :
Array
(
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520
)

3.4 FUNGSI FILE


Fungsi sistem berkas/file berhubungan dengan pengelolaan file-file yang berada pada suatu direktori,
misalnya pembacaan, penghapusan, penggantian nama file dan sebagainya.

basename
Mengambil nama dasar suatu file sesuai dengan string path yang diberikan. Jika $suffix disertakan maka
beberapa string yang memiliki kesamaan dengan $suffix akan ikut terpotong.

Sturktur: string basename ( string $path [, string $suffix] )

<?php
$path = "/home/httpd/html/index.php";

$file = basename($path);
// $file bernilai "index.php"

$file = basename($path, ".php");


// $file bernilai "index"
?>

copy
Meng-copy file dari file sumber menuju ke file tujuan. Jika file tujuan sudah ada, maka file tujuan akan
ditimpa dengan file baru hasil copy-an. Bernilai True jika proses copy berhasil dilakukan dan False jika
proses copy gagal dilakukan.

Struktur: bool copy ( string $source, string $dest )

<?php
$file = 'contoh.txt';
$filebaru = 'contoh.txt.bak';

if (!copy($file, $filebaru)) {
echo "Proses copy file $file... gagal dilakukan";
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
dirname
Mengembalikan nama direktori sesuai dengan argumen string $path yang diberikan.

Struktur: string dirname ( string $path )


<?php
$path = "/etc/passwd";
$file = dirname($path); // $file di set menjadi "/etc"
?>

disk_free_space
Untuk mengetahui sisa ruang pada sistem file atau partisi disk (dalam jumlah bytes) sesuai dengan alamat
string $direktori yang diberikan.

Struktur: float disk_free_space ( string $direktori )

<?php
// $df berisi sejumlah byte yang tersedia pada alamat path "/"
$df = disk_free_space("/");

// Pada Windows:
disk_free_space("C:");
disk_free_space("D:");
?>

disk_total_space
Untuk mengetahui total ruang pada sistem file atau partisi disk (dalam jumlah bytes) sesuai dengan
alamat string $direktori yang diberikan.

Struktur: float disk_total_space ( string $direktori )

<?php
// $df berisi total jumlah bytes yang tersedia di path "/"
$df = disk_total_space("/");

// Pada Windows:
echo disk_total_space("C:") . " byte";
echo disk_total_space("D:") . " byte";
?>

fclose
Untuk menutup status penunjuk (pointer) file yang sedang terbuka.

Struktur: bool fclose ( resource $handle )

<?php
$handle = fopen('somefile.txt', 'r');
fclose($handle);
?>

feof
Untuk mengetahui apakah posisi penunjuk (pointer) file berada di akhir suatu file.

Struktur: bool feof ( resource $handle )

<?php
$fp = fopen("myfile.txt", "r");
while (!feof($fp)) {
$baris_sekarang = fgets($fp);

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
// melakukan sesuatu di baris ini
}
fclose($fp);
?>

fgetc
Memperoleh character yang berada pada posisi penunjuk (pointer) file.

Untuk mencobanya, buat file text dengan notepad dan beri nama file tersebut dengan “somefile.text”. Isi
file tersebut dengan beberapa kata, seperti contoh berikut :

Struktur: string fgetc ( resource $handle )

<?php
$fp = fopen('somefile.txt', 'r');
if (!$fp) {
echo 'file somefile.txt tidak bisa dibuka';
}
while (false !== ($char = fgetc($fp))) {
echo "$char<br>"; // character dibaca satu persatu
}
?>

fgets
Membaca data dalam file serta menampilkannya ke browser, jika argumen $length dicantumkan maka
pembacaan akan dilakukan sebanyak $length character.

Struktur: string fgets ( resource $handle [, int $length] )

<?php
// Dibaca baris per baris setiap mencapai 4096 character
// sampai berakhirnya pembacaan file.
$handle = @fopen("somefile.txt", "r");
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>

file_exists
Untuk mengetahui apakah file $filename ada atau tidak pada direktori tersebut.

Struktur: bool file_exists ( string $filename )

<?php
$filename = 'somefile.txt';

if (file_exists($filename)) {
echo "File $filename ditemukan";
} else {
echo "File $filename tidak ditemukan";
}
?>

fileatime
Untuk mengetahui kapan terakhir kali file $filename diakses.

Struktur: int fileatime ( string $filename )

<?php
$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename terakhir kali diakses: " . date("F d Y H:i:s.",
fileatime($filename));
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
filesize
Untuk mengetahui berapa besar ukuran $filename (dalam byte). Karena type filesize berupa signed integer
(integer bernilai positif) dengan besar 32 bit integer, maka jika ukuran file berkisar 2GB sampai 4GB
sebaiknya menggunakan perintah sprintf("%u", filesize($file)).

Struktur: int filesize ( string $filename )

<?php
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
?>

fopen
Untuk membuka $filename atau alamat website URL dalam bentuk stream.
Pastikan bahwa file dan direktori yang berada di server bisa diakses, hal ini untuk mencegah kesalahan.

Struktur:resource fopen ( string $filename, string $mode [, bool


$use_include_path [, resource $context]] )

String $filename mengacu pada alamat path file atau alamat URL.
String $mode memiliki kemungkinan sebagai berikut :

Mode Keterangan
'r' Membuka file dengan mode baca, dan menempatkan pointer di awal file
Membuka file dengan mode baca dan tulis, dan menempatkan pointer di
'r+'
awal file
Membuka file hanya dengan mode tulis, menempatkan pointer diawal
'w' file dan memotong lebar file menjadi 0. Jika file tidak ditemukan, maka
akan berusaha menciptakan file baru.
Membuka file dengan mode baca dan tulis, menempatkan pointer di awal
'w+' file dan memotong lebar file menjadi 0. Jika file tidak ditemukan, maka
akan berusaha menciptakan file baru.
Membuka file hanya dengan mode tulis, menempatkan pointer di akhir
'a'
file. Jika file tidak ditemukan, maka akan berusaha menciptakan file

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
baru.
Membuka file dengan mode baca da tulis, menempatkan pointer di akhir
'a+' file. Jika file tidak ditemukan, maka akan berusaha menciptakan file
baru.
Menciptakan dan membuka file dengan mode tulis, menempatkan
pointer di awal file. Jika file sudah ada maka fungsi fopen() yang
'x'
dipanggil akan mengembalikan nilai FALSE dan memberi peringatan
kesalahan.
Menciptakan dan membuka file dengan mode baca dan tulis,
menempatkan pointer diawal file. Jika file sudah ada maka fungsi
'x+'
fopen() yang dipanggil akan mengembalikan nilai FALSE dan memberi
peringatan kesalahan.

<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt",
"w");
?>

Catatan:
Di Windows mengenal mode text-mode transalation flag ('t'), yang akan
menterjemahkan \n menjadi \r\n ketika bekerja dengan file. Sebaliknya, bisa
pula digunakan mode binary ('b') dimana file ditampilkan apa adanya tanpa
dilakukan penterjemahan. Untuk menggunakan penanda tersebut, tambahkan
character 'b' atau 't' di paramater $mode.

is_dir
Untuk mengetahui apakah file $filename berada pada suatu direktori.

Struktur: bool is_dir ( string $filename )

<?php
var_dump(is_dir('a_file.txt')) . "\n";
var_dump(is_dir('bogus_dir/abc')) . "\n";
var_dump(is_dir('..')); //Ada satu tingkat direktori
?>

Hasil :
bool(false)
bool(false)
bool(true)

is_executable
Untuk mengetahui apakah file $filename tergolong file executable atau bukan.

Struktur: bool is_executable ( string $filename )

<?php
$file = 'somefile.txt';

if (is_executable($file)) {
echo $file.' Merupakan file executable';
} else {
echo $file.' Bukan file executable';
}
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
?>

is_file
Untuk mengetahui apakah file $filename merupakan jenis file atau bukan.

Struktur: bool is_file ( string $filename )

<?php
var_dump(is_file('somefile.txt')) . "<br>";
var_dump(is_file('/usr/bin/')) . "<br>";
?>

Hasil :
bool(true)
bool(false)

is_readable
Untuk mengetahui apakah file $filename bisa terbaca. Bernilai TRUE jika $filename ada dan bisa terbaca.

Struktur: bool is_readable ( string $filename )

<?php
$filename = 'somefile.txt';
if (is_readable($filename)) {
echo 'File bisa terbaca';
} else {
echo 'File tidak bisa dibaca';
}
?>

is_uploaded_file

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk mengetahui apakah file $filename berhasil di-upload. Dimana file yang diupload menggunakan
form HTTP POST, seperti $_FILES['userfile']['tmp_name'].

Struktur: bool is_uploaded_file ( string $filename )

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "File ". $_FILES['userfile']['name'] ." upload
berhasil.<br>";
echo "Tampilkan isinya<br>";
readfile($_FILES['userfile']['tmp_name']);
} else {
echo "Proses upload gagal: ";
echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
}
?>

is_writable atau is_writeable


Untuk mengetahui apakah file $filename bisa ditulisi atau tidak.

Stuktur: bool is_writable ( string $filename )

<?php
$filename = 'sometext.txt';
if (is_writable($filename)) {
echo 'File bisa ditulis';
} else {
echo 'File tidak bisa ditulis';
}
?>

pathinfo
Memberikan informasi tentang path file $path. Fungsi pathinfo() mengembalikan nilai balik berupa array
dengan element dirname, basename dan extension, filename.

Struktur: mixed pathinfo ( string $path [, int $options] )

<?php
$path_parts = pathinfo('/www/htdocs/index.html');
echo $path_parts['dirname'], "<br>";
echo $path_parts['basename'], "<br>";
echo $path_parts['extension'], "<br>";
echo $path_parts['filename'], "<br>";
// Mulai ada sejak PHP 5.2.0
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
rename
Untuk mengganti nama file atau direktori lama dengan nama file atau direktori baru.

Struktur : bool rename ( string $oldname, string $newname [, resource


$context] )

<?php
rename("somefile.txt","somefile_baru.txt");
?>

unlink
Untuk menghapus file $filename.

Struktur : bool unlink ( string $filename [, resource $context] )

<?php
unlink("somefile_baru.txt");
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.5 FUNGSI EKSPRESI REGULAR
Ekspresi regular berfungsi untuk membuat pola pencocokkan sintaks yang mirip dengan bahasa Perl.
Setiap ekspresi yang dibuat harus disertai dengan character pembatas(delimiteri) seperti slash (/). Semua
character bisa digunakan sebagai delimiter sepanjang bukan alphanumeric atau backslash (\). Jika
character delimiter tidak digunakan sebagai ekspresi itu sendiri, maka perlu diakhiri dengan backslash.
Mulai PHP 4.0.4 Anda dapat juga menggunakan gaya Perl seperti (), {}, [], dan <> sebagai delimiter.

3.5.1 Ekspresi Regular Kelas Character


Pola pencocokan kelas character adalah sebagai berikut:

Kelas character Penjelasan


[a-z] Huruf kecil antara „a‟ sampai „z‟.
[A-Z] Huruf kapital antara „A‟ sampai „Z‟.
[0-9] Antara angka antara 0 smpai 9.

Pola pencocokan kelas character:

<?php
ereg("auieo","xzvdg"); //tidak termasuk
ereg("auieo","asyik"); //termasuk
ereg("auieo","oke sip"); //termasuk
?>

Untuk membuat pola pencocokan berupa angka yang disertai digit atau titik, maka harus dituliskan
sebagai [0-9\.]. Tanda “.” harus didahului dengan backslash (\), karena character titik (“.”) merupakan
character khusus yang memiliki arti tersendiri dalam PHP.

3.5.2 Ekspresi Regular Awalan dan Akhiran


Pola pencocokan bisa dilakukan diawal, maka harus diawali dengan character “^”.

<?php
/* Kata “aku” ditemukan, karena kata 'aku' berada di awal kalimat
*/
ereg("^aku", "aku suka pemrograman PHP");

/*Kata “aku” tidak ditemukan, karena yang berada di awal kalimat


adalah kata 'kamu' */
ereg("^aku","kamu dan aku tidak suka pemrograman PHP");
?>

Pola pencocokan bisa dilakukan diakhir, maka harus diakhiri dengan character “$”.

<?php
/* Kata "terakhir" ditemukan di akhir kalimat */
ereg("terakhir$","Ini pesan terakhir");

/* Kata "terakhir" tidak ditemukan di akhir kalimat*/


ereg("terakhir$","Buku ini terakhir aku beli")
?>

3.5.3 Ekspresi Regular Kelas Bawaan PHP


Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
PHP juga telah menyediakan kelas character bawaan, antara lain:

Kelas character Penjelasan


[[:alpha]] Berarti sembarang character huruf
[[:digit]] Berarti sembarang angka
[[:alnum]] Berarti sembarang charcter huruf dan angka
[[:space]] Berarti sembarang character spasi
[[:upper]] Berarti sembarang character huruf kapital
[[:lower]] Berarti sembarang character huruf kecil
[[:punct]] Berarti tanda pungtuasi
[[:xdigit]] Berarti angka heksadesimal

Contoh kelas character bawaan PHP:

<?php
ereg("[[:alpha]]","oke123"); //ditemukan
ereg("[[:digit]]","oke123"); //ditemukan
ereg("[[:space]]","spasi kosong"); //ditemukan
ereg("[[:lower]]","Spasi Kosong"); //ditemukan
ereg("[[:lower]]","SPASI KOSONG"); //tidak ditemukan
ereg("[[:upper]]","SPASI Kosong"); //ditemukan
ereg("[[:upper]]","oke123"); //tidak ditemukan
ereg("[[:puct]]","oke"); //tidak ditemukan
ereg("[[:puct]]","oke !"); //ditemukan
?>

Jika tanda “^” berada diantara tanda “[“ dan “]” tepat setelah tanda “[” jadi seperti berikut “[^” maka
berarti bukan salah satu dari character yang terletak diantara “[” dan “]”. Misalnya [^0-9] maka
bukan termasuk character angka.

3.5.4 Ekspresi Regular Perulangan


Pola perulangan character harus ditandai dengan character “{}”, contoh:

Tidak
Ekspresi Regular Penjelasan Cocok
cocok
Sesuai jika dua buah huruf “a” “maaf” “amat”
a{2}
berurutan “saat” “kain”
“maaf”
Sesuai jika satu huruf “a” atau
a{1,2} “saat” “ini”
dua huruf “a” berurutan
“keadaan”
Sesuai jika dua buah huruf “a” “maaf”
a{2,} “apa?”
atau lebih berurutan “aaaduh!”
“gemanii” “iiwas”
i{2}$ Sesuai jika string berakhiran “ii”
“rukii” “riil”
Sesuai jika dua buah character
.{2} “pi3” “a3u”
apa saja berurutan
Sesuai jika dua buah huruf “AA3”
[A-Z]{2} “AiA”
kapital berurutan “bALa”
Sesuai jika dua digit angka “12A”
[[:digit]]{2} “2A3”
berurutan “Saras007”
Sesuai jika sebuah huruf “a”
“ali”
a{0,1} ataupun yang tidak mengandung
“eli”
huruf “a”

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.5.5 Ekspresi Regular dengan Character *,? dan +
Character ? pada ekspresi regular sama artinya dengan {0,1}, sedangkan character * sama artinya dengan
{0, } yang berarti cocok dengan nol atau lebih dari nol buah character yang berada di depannya. Adapun
tanda + identik dengan {1,}.

Ekspresi Tidak
Penjelasan Sesuai
Regular Sesuai
“ali”
Mengandung a ataupun tidak
a* “eli”
menandung a
“maaf”
a? Sama dengan atas Sama dengan atas
Mengandung paling tidak sebua
a+ “ali” “ini”
a
Mengandung a dan diikuti oleh “a”
a.* nol character ataupun berapapun “ad”
character “adi”

Contoh penggunaan ekspresi regular di atas :

Ekspresi Regular Penjelasan


Cocok dengan sembarang bilangan bulat
^[0-9]+$
positif
^\-?[0-9]*\.?[0-9]*$ Cocok dengan sembarang bilangan real
3.5.6 Ekspresi Regular dengan character |
Pada ekspresi regular, character | berarti “atau”. Jadi “b|c” identik dengan “[bc]”. Contoh penggunaannya
adalah:

Ekspresi Regular Nilai


Ereg(“nanas|apel|semangka”, “semangka”) TRUE
Ereg(“nanas|apel|semangka”, “apel malang”) TRUE
Ereg(“nanas|apel|semangka”, “melon”) FALSE

3.5.7 Ekspresi Regular dengan character ()


Tanda kurung “()” dalam ekspresi regular berarti pengelompokkan. Contoh penggunaannya adalah
sebagai berikut:

Ekspresi Regular Penjelasan


(sem|b)arang Berarti “barang” atau “semarang”
(ang|ai)$ Berarti yang berakhiran “ang” atau “ai”

Adapun fungsi-fungsi yang berhubungan ekspresi regular yang antara lain:

ereg_replace
Fungsi untuk mengganti string sesuai dengan dengan pola yang diberikan. Seluruh string akan ditelusuri,
jika ketemu dan sesuai dengan pola pencariannya maka string tersebut akan diganti, dan bersifat case-
sensitive.

Struktur: string ereg_replace ( string $pola, string $pengganti, string


$string )

<?php

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
/* Keluaran tidak sesuai harapan. */
$num = 4;
$string = "String ini mempunyai empat kata.";
$string = ereg_replace('empat', $num, $string);
echo $string;
/* String ini mempunyai kata.' */

/* Sesuai harapan. */
$num = '4';
$string = "String ini mempunyai empat kata.";
$string = ereg_replace('empat', $num, $string);
echo $string;
/* Output: 'String ini mempunyai empat kata.' */
?>

ereg
Fungsi untuk mencari string yang sesuai dengan pola ekspresi regular yang diberikan dan bersifat case-
sensitive.

Struktur: int ereg ( string $pola, string $string [, array &$regs] )

Contoh menampilkan tanggal dari format YYYY-MM-DD ke DD-MM-YYYY :

<?php
$tanggal='2007-12-01';
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $tanggal, $regs))
{
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Format tanggal salah: $date";
}
?>

eregi_replace
Fungsi untuk mengganti string sesuai dengan dengan pola yang diberikan. Seluruh string akan ditelusuri,
jika ketemu dan sesuai dengan pola pencariannya maka string tersebut akan diganti, dan bersifat case-
insensitive.

Struktur : string eregi_replace ( string $pola, string $pengganti, string


$string )

<?php
$pola = '(>[^<]*)('. quotemeta($_GET['search']) .')';
$pengganti = '\\1<span class="search">\\2</span>';
$body = eregi_replace($pola, $pengganti, $body);
?>

eregi
Fungsi ereg serupa dengan eregi, yaitu mencari string yang sesuai dengan pola ekspresi regular yang
diberikan namun bersifat case-insensitive.

Struktur: int eregi ( string $pattern, string $string [, array &$regs] )

<?php
$string = 'XYZ';
if (eregi('z', $string)) {

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "'$string' berisi character 'z' atau 'Z'!";
}
?>

split
Membagi string menjadi array, sesuai dengan pola ekspresi regular yang diberikan dan character
pembaginya bersifat case-sensitive.

Struktur: array split ( string $pola, string $string [, int $batas] )

<?php
// Delimiter bisa berupa slash, titik atau strip.
$tanggal = "04/30/1973";
echo "Tanggal : " . $tanggal . "<br>";
list($bulan, $hari, $tahun) = split('[/.-]', $tanggal);
echo "Bulan: $bulan; Hari: $hari; Tahun: $tahun<br />\n";
?>

spliti
Fungsi spliti serupa dengan split, yaitu membagi string menjadi array, sesuai dengan pola ekspresi regular
yang diberikan, namun character pembaginya bersifat case-insensitive.

Struktur: array spliti ( string $pola, string $string [, int $batas] )

Contoh split(), dimana character “a” sebagai pembagi dibedakan dengan pembagi character “A”.

<?php
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = split ("a", $string, 5);
print_r($chunks);

/*Hasil:
Array ( [0] =>
[1] => BBB
[2] => CCCADDD
[3] => EEE
[4] => GGGA ) */
?>

Contoh spliti(), dimana character “a” sebagai pembagi tidak dibedakan dengan pembagi character “A”

<?php
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = spliti ("a", $string, 5);
print_r($chunks);

/* Hasil :
Array ( [0] =>
[1] => BBB
[2] => CCC
[3] => DDD
[4] => EEEaGGGA ) */
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.6 FUNGSI GeoIP
Fungsi GeoIP bertujuan untuk mengetahui lokasi sebuah alamat IP host. Bisa berupa nama kota, propinsi,
negara, garis bujur, garis lintang dan informasi lainnya seperti ISP (internet service provider).

Fungsi ini membutuhkan library GeoIP C versi 1.4.0 atau yang lebih tinggi untuk diinstall. Anda dapat
mendapatkan versi terbaru di http://www.maxmind.com/app/c dan selanjutnya silahkan compile sendiri.
Fungsi GeoIP bisa dijalankan jika server bersangkutan telah mendukung GeoIP.

Catatan:
Beberapa fungsi GeoIP harus dibeli dari organisasi GeoIP, misalnya untuk
mengetahui nama kota sebuah host dibutuhkan GeoLite City Edition dan
commercial GeoIP City Edition

geoip_country_code_by_name
Untuk mendapatkan dua huruf kode negara dari alamat URL $hostname atau alamat IP.

Struktur: string geoip_country_code_by_name ( string $hostname )

<?php
$country = geoip_country_code_by_name('www.example.com');
if ($country) {
echo 'Host tersebut berada di negara: ' . $country;
}
?>

Keluaran :
Host tersebut berada di negara: US

geoip_country_code3_by_name
Untuk mendapatkan tiga huruf kode negara dari alamat URL $hostname atau alamat IP.

Struktur: string geoip_country_code3_by_name ( string $hostname )

<?php
$country = geoip_country_code3_by_name('www.example.com');
if ($country) {
echo 'Host tersebut berada di negara: ' . $country;
}
?>

Keluaran :
Host tersebut berada di negara: USA

geoip_country_name_by_name
Untuk mendapatkan nama lengkap sebuah negara dari alamat URL $hostname atau alamat IP.

Struktur: string geoip_country_name_by_name ( string $hostname )

<?php
$country=geoip_country_name_by_name('www.example.com');
if ($country) {
echo 'Host tersebut berada di negara: ' . $country;
}
?>

Keluaran :
Host tersebut berada di negara: United States
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.7 FUNGSI IMAGE
Sebelum menggunakan fungsi image yang ada, pastikan bahwa library image (php_gd2.dll) sudah
diaktifkan. Konfigurasi library tersebut bisa dilihat di file php.ini, atau bisa masuk di menu wamp
pilih PHP extensions->php_gd2 seperti nampak gambar di bawah ini:

Fungsi-fungsi yang berhubungan dengan image di bawah ini hanya sebagian saja. Sedangkan contoh-
contoh fungsi image lainnya akan diterapkan secara langsung melalui contoh program yang dijelaskan
pada bab 8 yang membahas “Contoh-contoh Program”.

gd_info
Untuk mengetahui informasi tentang library GD yang terinstall di komputer. Output yang dihasilkan
berupa array, berisi elemen-elemen keterangan format image yang bisa didukung.

Struktur: array gd_info ( void )

Table array yang dihasilkan fungsi gd_info() :

Attribute Arti
string value. Menggambarkan versi libgd yang
GD Version
terinstal
Freetype boolean value. TRUE jika Freetype Support
Support terinstal.
string value menggambarkan bagaimana Freetype
dihubungkan. Value yang diharapkan adalah: 'with
Freetype
freetype', 'with TTF library', dan 'with unknown
Linkage
library'. Element ini akan didefenisikan jika
Freetype Support bernilai TRUE.
T1Lib Support boolean value. TRUE jika mendukung T1Lib.
GIF Read boolean value. TRUE jika mendukung pembacaan image
Support GIF.
GIF Create boolean value. TRUE jika mendukung penciptaan image
Support GIF.
JPG Support boolean value. TRUE jika mendukung image JPG.
PNG Support boolean value. TRUE jika mendukung image PNG.
WBMP Support boolean value. TRUE jika mendukung image WBMP.
XBM Support boolean value. TRUE jika mendukung image XBM.

<?php

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
var_dump(gd_info());
?>

Keluaran :
array(9) {
["GD Version"]=>string(24) "bundled (2.0 compatible)"
["FreeType Support"]=>bool(false)
["T1Lib Support"]=>bool(false)
["GIF Read Support"]=>bool(true)
["GIF Create Support"]=>bool(false)
["JPG Support"]=>bool(false)
["PNG Support"]=>bool(true)
["WBMP Support"]=>bool(true)
["XBM Support"]=>bool(false)
}

getimagesize
Untuk mendapatkan ukuran/dimensi lebar dan tinggi image serta untuk mengetahui jenis imagenya.
Fungsi getimage() menghasilkan array yang memiliki empat elemen, antara lain:
 Index 0 dan 1 menunjukkan lebar dan tinggi image.
 Index 2 menunjukkan type image sesuai dengan kententuan PHP IMAGETYPE_XXX.
 Index 3 berupa text string sebagai atribut image.

Struktur: array getimagesize ( string $filename [, array &$imageinfo] )

Contoh getimagesize (file):

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize()
example\" />";
?>

Contoh getimagesize (URL):

<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");
// jika nama file mengandung spasi maka harus dilakukan encode
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.8 FUNGSI EMAIL
mail
PHP memiliki fungsi untuk mengirim email, dimana format email penerima dan email pengirim mengacu
pada aturan RFC 2822, misalnya :

user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User anotheruser@example.com

Struktur: bool mail ( string $to, string $subject, string $message [,


string $additional_headers [, string $additional_parameters]] )

$to adalah alamat email tujuan.


$subject adalah subyek atau judul email.
$message adalah isi pesan email.
$additional_headers (optional) digunakan sebagai ekstra header (misalnya untuk From, CC dan Bcc).
Jika header lebih dari satu, maka setiap header harus diakhiri dengan "\r\n".

Contoh mengirim email sederhana:

<?php
// Pesan
$message = "Line 1\nLine 2\nLine 3";

// Misalkan ditetapkan setiap baris tidak lebih dari 70 character,


// maka gunakan fungsi wordwrap()
$message = wordwrap($message, 70);

// Kirim Email
mail('webmaster@docomads.com', 'My Subject', $message);
?>

Contoh mengirim email dengan ekstra header, disertai alamat From dan Reply-To :

<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Contoh mengirim HTML dalam fungsi email() :

<?php
// Mengirim lebih dari satu alamat tujuan
// harus disertai tanda koma diantra alamat emailnya.
$to = 'aidan@example.com' . ', ';
$to .= 'wez@example.com';

// Subyek
$subject = 'Birthday Reminders for August';

// Pesan
$message = '

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';

// Untuk mengirim HTML mail, maka Content-type header harus di set


$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly
<kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' .
"\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// Mengirim HTML
mail($to, $subject, $message, $headers);
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.9 FUNGSI MATEMATIKA
Fungsi matematika yang tersedia dalam PHP dirasa sudah cukup jelas, sehingga tidak dibutuhkan
penjelasan lebih dalam. Diharapkan pembaca bisa memahami kegunaan setiap fungsi matematika yang
ada, berdasarkan contoh-contoh di bawah ini :

Fungsi Keterangan Contoh


<?php
$abs = abs(-4.2); // $abs
mencari nilai absolut. = 4.2; (double/float)
number abs ( $abs2 = abs(5); //
Abs
mixed $number $abs2 = 5; (integer)
) $abs3 = abs(-5); //
$abs3 = 5; (integer)
?>
Acos mencari arc kosinus
mencari inverse
Acosh
hyperbolic kosinus
Asin mencari arc sinus
mencari inverse
Asinh
hyperbolic sinus
mencari arc tangent
Atan2
dari dua variable
mencari nilai arc
Atan
tangent
mencari inverse
Atanh
hyperbolic tangent
<?php
$hexadecimal = 'A37334';
echo
base_conver base_convert($hexadecimal
mengkonversi
t , 16, 2);
?>
Output:
101000110111001100110100
<?php
echo bindec('110011') .
"\n"; // 51
konversi dari biner echo bindec('000110011')
bindec
ke desimal . "\n"; // 51
echo bindec('111');
// 7
?>
<?php
echo ceil(4.3); // 5
membulatkan angka
ceil echo ceil(9.999); // 10
ke atas
echo ceil(-3.14); // -3
?>
<?php
cos mencari kosinus echo cos(M_PI); // -1
?>
mencari hyperbolic
cosh
kosinus
<?php
echo decbin(12) . "\n";
konversi dari desimal
decbin // 1100
ke biner
echo decbin(26);
// 11010
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
?>
<?php
echo dechex(10) . "\n";
konversi dari desimal // a
dechex
ke hexadesimal echo dechex(47);
// 2f
?>
<?php
echo decoct(15) . "\n";
konversi dari desimal // 17
decoct
ke oktal echo decoct(264);
// 410
?>
<?php
echo deg2rad(45);
konversi dari nilai // 0.785398163397
deg2rad
derajat ke nilai radian var_dump(deg2rad(45) ===
M_PI_4); // bool(true)
?>
<?php
echo exp(12) . "\n";
menghitung // 1.6275E+005
exp
eksponen e echo exp(5.7);
// 298.87
?>
mengembalikan nilai
expm1
exp(angka) – 1
<?php
echo floor(4.3); // 4
membulatkan angka
floor echo floor(9.999); // 9
ke bawah
echo floor(-3.14); // -4
?>
<?php
$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
fmod
// $r sama dengan 0.5,
karena 4 * 1.3 + 0.5 =
5.7
?>
mencari nilai terbesar
getrandmax
dari angka acak
<?php
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// both print "int(238)"
konversi dari
hexdec hexadesimal ke
var_dump(hexdec("that"));
desimal
// print "int(10)"
var_dump(hexdec("a0"));
// print "int(160)"
?>
hypot
is_finite
is_infinite
pengecekkan suatu
is_nan nilai yang bukan
angka
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
lcg_value
log10
log1p
log
<?php
echo max(1, 3, 5, 6, 7);
// 7
echo max(array(2, 4, 5));
// 5

echo max(0, 'hello');


// 0
echo max('hello', 0);
// hello
echo max(-1, 'hello');
// hello

// Jika banyak array maka


max membandingkan dari
mencari nilai
max kiri ke kanan
tertinggi
// Sehingga: 2 == 2, tapi
4 < 5
$val = max(array(2, 4,
8), array(2, 5, 7)); //
array(2, 5, 7)

// If both an array and


non-array are given, the
array
// is always returned as
it's seen as the largest
$val = max('string',
array(2, 5, 7), 42); //
array(2, 5, 7)
?>
<?php
echo min(2, 3, 1, 6, 7);
// 1
echo min(array(2, 4, 5));
// 2

echo min(0, 'hello');


// 0
echo min('hello', 0);
// hello
echo min('hello', -1);
mencari nilai
min // -1
terendah
// Jika banyak array maka
min membandingkan dari
kiri ke kanan
// Sehingga: 2 == 2, tapi
4 < 5
$val = min(array(2, 4,
8), array(2, 5, 1)); //
array(2, 4, 8)

// If both an array and

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
non-array are given, the
array
// is never returned as
it's considered the
largest
$val = min('string',
array(2, 5, 7), 42); //
string
?>
mt_getrandm mencari nilai terbesar
ax dari bilangan acak
<?php
echo mt_rand() . "\n"; //
1604716014
pembangkitan echo mt_rand() . "\n"; //
mt_rand
bilangan acak 1478613278
echo mt_rand(5, 15); //
6
?>
<?php
// seed with microseconds
function make_seed()
{
list($usec, $sec) =
explode(' ',
pembibitan bilangan
mt_srand microtime());
acak
return (float) $sec +
((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>
<?php
echo octdec('77') . "\n";
konversi dari oktal ke // 63
octdec
desimal echo octdec(decoct(45));
// 45
?>
<?php
echo pi();
// 3.1415926535898
pi mendapatkan nilai pi
echo M_PI;
// 3.1415926535898
?>
<?php
var_dump(pow(2, 8)); //
int(256)
echo pow(-1, 20); // 1
echo pow(0, 0); // 1
pow ekspresi eksponensial
echo pow(-1, 5.5);
// PHP >4.0.6 NAN
echo pow(-1, 5.5); //
PHP <=4.0.6 1.#IND
?>
<?php
konversi dari radian echo rad2deg(M_PI_4);
rad2deg
ke derajat // 45
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
echo rand() . "\n";
// 7771
pembangkitan nilai echo rand() . "\n";
rand
acak integer // 22264
echo rand(5, 15);
// 11
?>
<?php
echo round(3.4);
// 3
echo round(3.5);
// 4
echo round(3.6);
// 4
echo round(3.6, 0);
membulatkan // 4
round
bilangan pecahan echo round(1.95583, 2);
// 1.96
echo round(1241757, -3);
// 1242000
echo round(5.045, 2);
// 5.05
echo round(5.055, 2);
// 5.06
?>
<?php
// Precision depends on
your precision directive
echo sin(deg2rad(60));
sin mencari nilai sinus
// 0.866025403 ...
echo sin(60);
// -0.304810621 ...
?>
mencari hyperbolic
sinh
sinus
<?php
// Precision depends on
your precision directive
mencari nilai akar
sqrt echo sqrt(9); // 3
dua
echo sqrt(10);
// 3.16227766 ...
?>
<?php
// Pembibitan dalam
microseconds
function make_seed()
{
list($usec, $sec) =
pembibitan bilangan explode(' ',
Srand
acak microtime());
return (float) $sec +
((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();
?>
Tan mencari nilai tangent

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
mencari nilai
Tanh
hyperbolic tangent

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.10 FUNGSI MYSQL
Fungsi MySQL akan sering digunakan saat membuat website dinamis yang membutuhkan database
MySQL, Misalnya untuk membuat query, manipulasi table, menghubungkan ke Server MySQL,
menyimpan data, dan lain-lain.

Semua contoh fungsi MySQL di bawah ini bisa bekerja dengan baik, jika sudah terhubung dengan
Server MySQL (gunakan fungsi mysql_connect). Adapun argumen fungsi mysql_connect-nya adalah :

 Nama Server MySQL adalah „localhost‟


 Nama User MySQL adalah „mysql_user‟
 Password MySQL adalah „mysql_password‟

Argumen di atas tidak harus sama dengan komputer pembaca, silahkan rubah sendiri sesuai dengan
kebutuhan Anda jika dirasa perlu.

mysql_affected_rows
Untuk mengetahui berapa baris (record) yang telah terpengaruh akibat operasi MySQL sebelumnya.

Struktur: int mysql_affected_rows ( [resource $link_identifier] )

Contoh penggunaan mysql_affected_rows() :

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query('DELETE FROM mytable WHERE id < 10');


printf("Record terhapus: %d\n", mysql_affected_rows());
?>

Keluaran:
Record terhapus: 10

Contoh penggunaan mysql_affected_rows() dengan transaksi :

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
mysql_select_db('mydb');

/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

Keluaran :
Updated Records: 10

mysql_close

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk memutuskan hubungan dengan Server MySQL. Fungsi mysql_close tidak harus digunakan, karena
secara otomatis hubungan ke Server MySQL akan terputus dengan sendirinya setelah ekesekusi script
berakhir.

Struktur : bool mysql_close ( [resource $link_identifier] )

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal dilakukan: ' . mysql_error());
}
echo 'Koneksi sukses dilakukan';
mysql_close($link);
?>
Keluaran:
Koneksi sukses dilakukan

mysql_connect
Untuk membuat hubungan/koneksi dengan Server MySQL .

Struktur : resource mysql_connect ( [string $server [, string $username [,


string $password [, bool $new_link [, int $client_flags]]]]] )

Contoh penggunaan mysql_connect() :

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Contoh mysql_connect() dengan menggunakan sintaks hostname:port :

<?php
// Terhubung ke contoh.com dan port 3307
$link = mysql_connect('contoh.com:3307', 'mysql_user',
'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
echo 'Koneksi Sukses';
mysql_close($link);

// Koneksi ke localhost port 3307


$link = mysql_connect('127.0.0.1:3307', 'mysql_user',
'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
echo 'Koneksi sukses';
mysql_close($link);
?>

mysql_create_db
Untuk menciptakan database MySQL.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : bool mysql_create_db ( string $database_name [, resource
$link_identifier] )

Contoh alternatif penciptaan database dengan menggunakan query CREATE DATABASE:

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}

$sql = 'CREATE DATABASE my_db';


if (mysql_query($sql, $link)) {
echo "Database my_db telah tercipta\n";
} else {
echo 'Gagal menciptakan database: ' . mysql_error() . "\n";
}
?>

Keluaran :
Database my_db telah tercipta.
mysql_data_seek
Menggerakkan secara internal penunjukkan baris (record) yang merujuk pada $result MySQL.
Selanjutnya untuk memperoleh hasil penunjukkan pointer tersebut digunakan fungsi fetch seperti
mysql_fetch_assoc().

Struktur: bool mysql_data_seek ( resource $result, int $row_number )

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}

$db_selected = mysql_select_db('sample_db');
if (!$db_selected) {
die('Could not select database: ' . mysql_error());
}

$query = 'SELECT last_name, first_name FROM friends';


$result = mysql_query($query);
if (!$result) {
die('Query gagal: ' . mysql_error());
}

/* Mengambil baris data dengan urutan terbalik */


for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) {
if (!mysql_data_seek($result, $i)) {
echo "Tidak menemukan baris $i: " . mysql_error() . "\n";
continue;
}

if (!($row = mysql_fetch_assoc($result))) {
continue;
}

echo $row['last_name'] . ' ' . $row['first_name'] . "<br />\n";


}

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
mysql_free_result($result);
?>

mysql_errno
Mengembalikan nilai kesalahan dari operasi MySQL sebelumnya dalam bentuk angka.

Struktur : int mysql_errno ( [resource $link_identifier] )


<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!mysql_select_db("nonexistentdb", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
}

mysql_select_db("kossu", $link);
if (!mysql_query("SELECT * FROM nonexistenttable", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
}
?>

Keluaran :
1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

mysql_error
Mengembalikan nilai kesalahan dari operasi MySQL sebelumnya dalam bentuk teks.

Struktur: string mysql_error ( [resource $link_identifier] )

<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!mysql_select_db("nonexistentdb", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
}

mysql_select_db("kossu", $link);
if (!mysql_query("SELECT * FROM nonexistenttable", $link)) {
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
}
?>

Keluaran :
1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

mysql_fetch_array
Mendapatkan hasil baris/record yang digambarkan dalam bentuk array asosiatif (mengacu pada nama
field/kolom), array angka (mengacu pada urutan field/kolom yang dimulai dari kiri ke kanan) atau
keduanya. Dan secara internal penunjuk baris akan bergerak maju sesuai dengan jumlah record yang ada.

Struktur: array mysql_fetch_array ( resource $result [, int $result_type]


)

$result_type merupakan kontanta yang bersifat pilihan, terdiri dari:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 MYSQL_BOTH (default), maka akan didapatkan array dengan index asosiatif yang mengacu pada
nama field dan index angka yang mengacu pada angka urutan field.
 MYSQL_ASSOC maka akan didapatkan array dengan index asosiatif yang mengacu pada nama
field saja.
 MYSQL_NUM maka akan didapatkan array dengan index angka yang mengacu pada angka urutan
field saja.

Contoh mysql_fetch_array() dengan MYSQL_NUM :

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {


printf("ID: %s Name: %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

Contoh mysql_fetch_array() dengan MYSQL_ASSOC :

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {


printf("ID: %s Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);
?>

Contoh mysql_fetch_array() dengan MYSQL_BOTH :

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {


printf ("ID: %s Name: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

mysql_fetch_assoc

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Mendapatkan hasil baris/record yang digambarkan dalam bentuk array asosiatif (mengacu pada nama
field/kolom). Dan secara internal penunjuk baris akan bergerak maju sesuai dengan jumlah record yang
ada.

Struktur : array mysql_fetch_assoc ( resource $result )

<?php
$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
echo "Tidak terhubung ke database: " . mysql_error();
exit;
}

if (!mysql_select_db("mydbname")) {
echo "Tidak bisa memilih mydbname: " . mysql_error();
exit;
}

$sql = "SELECT id as userid, fullname, userstatus


FROM sometable
WHERE userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
echo "Query gagal dijalankan ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "Baris kosong, tidak ada yang dicetak";
exit;
}

// Selama baris data ada maka letakkan baris di $row sebagai array
asosiatif
// Jika yang diharapkan hanya satu baris saja maka tidak perlu
pengulangan
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}

mysql_free_result($result);
?>

mysql_fetch_field
Mendapatkan keterangan tentang atribut kolom/field yang dikembalikan dalam bentuk object.

Struktur : object mysql_fetch_field ( resource $result [, int


$field_offset] )

Nilai kembalian yang dihasilkan dari property object terdiri dari :


 name – nama kolom.
 table – nama table dimana kolom tersebut dimiliki.
 def – nilai default kolom tersbut.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 max_length – lebar kolom maksimal.
 not_null – bernilai 1 jika kolom bukan NULL.
 primary_key – bernilai 1 jika kolom adalah primary key.
 unique_key – bernilai 1 jika kilom adalah key unique.
 multiple_key – bernilai 1 jika kolom bukan key unique.
 numeric – bernilai 1 jika kolom adalah numerik.
 blob – bernilai 1 jika kolom bertipe BLOB.
 type – tipe dari kolom.
 unsigned – bernilai 1 jika kolom berupa unsigned (non negatif).
 zerofill – bernilai 1 jika kolom terisi dengan nilai kosong (zero-filled).

<?php
$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$conn) {
die('Koneksi gagal: ' . mysql_error());
}
mysql_select_db('database');
$result = mysql_query('select * from table');
if (!$result) {
die('Query failed: ' . mysql_error());
}
/* Mendapatkan metadata kolom */
$i = 0;
while ($i < mysql_num_fields($result)) {
echo "Information for column $i:<br />\n";
$meta = mysql_fetch_field($result, $i);
if (!$meta) {
echo "No information available<br />\n";
}
echo "<pre>
blob: $meta->blob
max_length: $meta->max_length
multiple_key: $meta->multiple_key
name: $meta->name
not_null: $meta->not_null
numeric: $meta->numeric
primary_key: $meta->primary_key
table: $meta->table
type: $meta->type
default: $meta->def
unique_key: $meta->unique_key
unsigned: $meta->unsigned
zerofill: $meta->zerofill
</pre>";
$i++;
}
mysql_free_result($result);
?>

mysql_fetch_lengths
Mendapatkan lebar kolom semua baris, diperoleh dari fungsi mysql_fetch_row(), mysql_fetch_assoc(),
mysql_fetch_array(), dan mysql_fetch_object() yang dituangkan dalam bentuk array dan dimulai dari
offset ke-0

Struktur: array mysql_fetch_lengths ( resource $result )

<?php

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query ' . mysql_error();
exit;
}
$row = mysql_fetch_assoc($result);
$lengths = mysql_fetch_lengths($result);

print_r($row);
print_r($lengths);
?>

Keluaran :
Array
(
[id] => 42
[email] => user@example.com
)
Array
(
[0] => 2
[1] => 16
)

mysql_fetch_row
Mendapatkan baris/record yang dituangkan dalam bentuk array satu demi satu. Untuk mengakses
baris/record dengan mencantumkan nomor indexnya, index dimulai dari offset 0.

Struktur : array mysql_fetch_row ( resource $result )

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);

echo $row[0]; // 42
echo $row[1]; // email
?>

mysql_field_len
Untuk mengetahui lebar kolom/field sesuai dengan kolom yang telah ditentukan. $field_offset adalah
pilihan index kolom yang akan dicari. Offset kolom dimulai dari index ke-0. Jika field tidak ditemukan
maka akan keluar pesan kesalahan
Struktur : int mysql_field_len ( resource $result, int $field_offset )

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$length = mysql_field_len($result, 0); // offset=0 mengacu pada
field id
echo $length;
?>

mysql_field_name
Untuk memperoleh nama kolom/field sesuai dengan kolom yang telah ditentukan. $field_offset adalah
pilihan index kolom yang akan dicari. Offset kolom dimulai dari index ke-0. Jika field tidak ditemukan
maka akan keluar pesan kesalahan.

Struktur : string mysql_field_name ( resource $result, int $field_offset )

<?php
$link = @mysql_connect('localhost', 'mysql_user',
'mysql_password');
if (!$link) {
die('Koneksi ke Sercer gagal: ' . mysql_error());
}
$dbname = 'mydb';
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
die("Tidak bisa memilih database $dbname: " . mysql_error());
}
$res = mysql_query('select user_id, username, password from users',
$link);

echo mysql_field_name($res, 0) . "\n";


echo mysql_field_name($res, 2);
?>

Keluaran :
user_id
password

mysql_field_table
Untuk mengetahui nama table berdasarkan field/kolom yang telah ditentukan.

Struktur : string mysql_field_table ( resource $result, int $field_offset


)

<?php
$result = mysql_query("SELECT name,comment FROM people,comments");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}

// Dengan anggapan bahwa kolom name berada dalam table people


$table = mysql_field_table($result, 'name');
echo $table; // people
?>

mysql_field_type
Untuk mendapatkan type field/kolom, sesuai dengan field yang telah ditentukan.

Struktur : string mysql_field_type ( resource $result, int $field_offset


)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
mysql_connect("localhost", "mysql_username", "mysql_password");
mysql_select_db("mysql");
$result = mysql_query("SELECT * FROM func");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$table = mysql_field_table($result, 0);
echo "Table '" . $table . "' mempunyai " . $fields . " fields dan "
. $rows . " record(s)\n";
echo "Table terdiri dari field:\n";
for ($i=0; $i < $fields; $i++) {
$type = mysql_field_type($result, $i);
$name = mysql_field_name($result, $i);
$len = mysql_field_len($result, $i);
$flags = mysql_field_flags($result, $i);
echo $type . " " . $name . " " . $len . " " . $flags . "\n";
}
mysql_free_result($result);
mysql_close();
?>

Keluaran :
Table 'func' mempunyai 4 fields dan 1 record(s)
Table terdiri dari field:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

mysql_free_result
Untuk membebaskan sumber daya memory dari identifier $result.
Pembebasan memori perlu dilakukan jika sekiranya memang sangat dibutuhkan memori yang cukup
untuk menampung $result. Karena sebenarnya secara otomatis memori akan dibebaskan saat eksekusi
script berakhir.

Struktur : bool mysql_free_result ( resource $result )

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}
$row = mysql_fetch_assoc($result);

/* Membebaskan resources result dan melanjutkan script baru */


mysql_free_result($result);

echo $row['id'];
echo $row['email'];
?>

mysql_list_dbs
Untuk menampilkan semua database yang ada di Server MySQL.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : resource mysql_list_dbs ( [resource $link_identifier] )

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {


echo $row->Database . "\n";
}
?>

mysql_num_fields
Untuk memeperoleh jumlah field/kolom hasil dari operasi query.

Struktur : int mysql_num_fields ( resource $result )

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}

/* Mengembalikan 2 karena field id,email === dua field */


echo mysql_num_fields($result);
?>

mysql_num_rows
Untuk memperoleh jumlah baris/record yang merujuk pada $result.

Struktur : int mysql_num_rows ( resource $result )

<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);


$num_rows = mysql_num_rows($result);

echo "$num_rows Baris\n";


?>

mysql_query
Untuk mengirim perintah query MySQL ke server.
Perintah query lebih dari satu tidak bisa dikenakan pada fungsi mysql_query.

Struktur : resource mysql_query ( string $query [, resource


$link_identifier] )

mysql_result
Untuk mendapatkan hasil data.

Struktur : string mysql_result ( resource $result, int $row [, mixed


$field] )

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
$result = mysql_query('SELECT name FROM work.employee');
if (!$result) {
die('Could not query:' . mysql_error());
}
echo mysql_result($result, 2); // outputs third employee's name

mysql_close($link);
?>

mysql_select_db
Untuk memilih nama salah satu database yang ada di Server MySQL sebagai rujukan, sebelum
mengakses query ataupun table.

Struktur : bool mysql_select_db ( string $database_name [, resource


$link_identifier] )

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db


$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Pemilihan database foo gagal : ' . mysql_error());
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.11 FUNGSI STRING
Fungsi string berhubungan dengan memanipulasi tipe string.

chr
Mendapatkan satu character string yang telah ditentukan, dan sesuai daftar table ascii.

Struktur : string chr ( int $ascii )

<?php
$str = "String diakhiri oleh escape: ";
$str .= chr(27);
/* penambahan character escape diakhir $str */

/* Lebih berguna jika: */


$str = sprintf("String diakhiri oleh escape: %c", 27);
?>

explode
Membagi string menjadi potongan-potongan array, dimana character pembagi (delimiter) telah
ditentukan.

Struktur: array explode ( string $delimiter, string $string [, int $limit]


)

<?php
// Contoh 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// Contoh 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) =
explode(":", $data);
echo $user; // foo
echo $pass; // *
?>

Contoh explode disertai parameter batas:

<?php
$str = 'satu|dua|tiga|empat';

// batas positive
print_r(explode('|', $str, 2));

// batas negative (sejak PHP 5.1)


print_r(explode('|', $str, -1));
?>

Keluaran dari contoh di atas:

Array
(
[0] => satu
[1] => dua|tiga|empat

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
)
Array
(
[0] => satu
[1] => dua
[2] => tiga
)

htmlentities
Mengkonversikan semua character menjadi entitas HTML. Fungsi ini identik dengan fungsi
htmlspecialchars(), dimana semua character yang memiliki kesamaan atau dimiliki oleh character entitas
HTML akan diterjemahkan ke entitas tersebut.

Struktur : string htmlentities ( string $string [, int $quote_style [,


string $charset]] )

Table $quote_style :

Konstanta Keterangan
Akan mengkonversi petik ganda (double-quotes) dan membiarkan petik
ENT_COMPAT
tunggal (single-quotes) sendirian.
ENT_QUOTES Akan mengkonversi petik ganda dan petik tunggal.
ENT_NOQUOTES Petik tunggal dan petik ganda dibiarkan saja tanpa dilakukan konversi.

<?php
$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;


echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;


echo htmlentities($str, ENT_QUOTES);
?>

implode
Menggabungkan setiap element array menjadi string baru, dimana setiap element array akan direkatkan
dengan character delimiter (character batas) yang nantinya menjadi string baru. Fungsi implode identik
dengan fungsi join()
Struktur : string implode ( string $glue, array $pieces )

<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone


?>
ltrim
Memotong spasi kosong (whitespace) atau character lain yang posisinya diawal.

Struktur : string ltrim ( string $str [, string $charlist] )

Jika parameter kedua ($charlist) tidak diisi, maka fungsi ltrim() juga memotong charater berikut ini :

 " " (ASCII 32 (0x20)), ordinary space.


 "\t" (ASCII 9 (0x09)), tab.
 "\n" (ASCII 10 (0x0A)), baris baru (line feed).
 "\r" (ASCII 13 (0x0D)), Enter / carriage return.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 "\0" (ASCII 0 (0x00)), byte-NUL.
 "\x0B" (ASCII 11 (0x0B)), tab vertical.

<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = ltrim($text);
var_dump($trimmed);

$trimmed = ltrim($text, " \t.");


var_dump($trimmed);

$trimmed = ltrim($hello, "Hdle");


var_dump($trimmed);

// trim the ASCII control characters at the beginning of $binary


// (from 0 to 31 inclusive)
$clean = ltrim($binary, "\x00..\x1F");
var_dump($clean);
?>

Keluaran :

string(32) " These are a few words :) ... "


string(16) " Example string
"
string(11) "Hello World"

string(30) "These are a few words :) ... "


string(30) "These are a few words :) ... "
string(7) "o World"
string(15) "Example string
"

number_format
Memformat angka yang dikelompokkan dalam ribuan.

Struktur : string number_format ( float $number [, int $decimals [, string


$dec_point, string $thousands_sep]] )

Notasi Perancis menggunakan dua desimal, koma (',') sebagai pemisah desimal dan spasi kosong (' ')
sebagai pemisah ribuan, contoh :

<?php
$number = 1234.56;

// Notasi Inggris (default)


$english_format_number = number_format($number);
// 1,235

// Notasi Perancis
$nombre_format_francais = number_format($number, 2, ',', ' ');

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
// 1 234,56

$number = 1234.5678;

// Notasi Inggris tanpda pemisah ribuan


$english_format_number = number_format($number, 2, '.', '');
// 1234.57

// Notasi Indonesia
$Indonesia_format_angka = number_format($number, 2, ',', '.')
?>

ord
Memperoleh nilai ASCII dari suatu character. Untuk melihat table ASCII bisa dilihat di
http://www.asciitable.com.
Struktur : int ord ( string $string )

<?php
$str = "\n";
if (ord($str) == 10) {
echo "character pertama dari \$str adalah line feed.\n";
}
?>

rtrim
Memotong spasi kosong (whitespace) atau character lain yang posisinya diakhir.

Struktur : string ltrim ( string $str [, string $charlist] )

Jika parameter kedua ($charlist) tidak diisi, maka fungsi rtrim() juga memotong charater berikut ini :

 " " (ASCII 32 (0x20)), spasi.


 "\t" (ASCII 9 (0x09)), tab.
 "\n" (ASCII 10 (0x0A)), baris baru (line feed).
 "\r" (ASCII 13 (0x0D)), Enter / carriage return.
 "\0" (ASCII 0 (0x00)), byte-NUL.
 "\x0B" (ASCII 11 (0x0B)), tab vertikal.

<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = rtrim($text);
var_dump($trimmed);

$trimmed = rtrim($text, " \t.");


var_dump($trimmed);

$trimmed = rtrim($hello, "Hdle");


var_dump($trimmed);

// trim the ASCII character kontrol di akhir $binary


// (from 0 to 31 inclusive)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$clean = rtrim($binary, "\x00..\x1F");
var_dump($clean);
?>

Keluaran :

string(32) " These are a few words :) ... "


string(16) " Example string
"
string(11) "Hello World"

string(30) " These are a few words :) ..."


string(26) " These are a few words :)"
string(9) "Hello Wor"
string(15) " Example string"

str_repeat
Untuk memperoleh string baru yang duhasilkan dari perulangan string.

Struktur : string str_repeat ( string $input, int $multiplier )

<?php
echo str_repeat("-=", 10);
?>

Keluaran :

-=-=-=-=-=-=-=-=-=-=

str_replace
Mengganti semua string yang sesuai dengan string pencarian. Fungsi str_replace() bersifat case-sensitive
untuk memperoleh hasil yang case-insensitive gunakan fungsi str_ireplace().

Struktur : mixed str_replace ( mixed $search, mixed $replace, mixed


$subject [, int &$count] )

<?php
// Menghasilkan: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// Menghasilkan: Hll Wrld f PHP


$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

// Menghasilkan: You should eat pizza, beer, and ice cream every
day
$phrase = "You should eat fruits, vegetables, and fiber every
day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);

$str = str_replace("ll", "", "good golly miss molly!", $count);


echo $count; // 2

$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";


$order = array("\r\n", "\n", "\r");

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$replace = '<br />';
// Memproses \r\n's pertama kali, sehingga tidak dikonvert dua
kali.
$newstr = str_replace($order, $replace, $str);

// Keluaran: apearpearle pear


$letters = array('a', 'p');
$fruit = array('apple', 'pear');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;
?>

str_shuffle
Untuk mengacak string dan menghasilkan satu urutan baru hasil dari pengacakkan.

Struktur : string str_shuffle ( string $str )

<?php
$str = 'abcdef';
$shuffled = str_shuffle($str);

// Akan menampilkan „bfdaec‟ tetapi tidak tentu


echo $shuffled;
?>

str_split
Mengkonversi string menjadi array.

Struktur : array str_split ( string $string [, int $split_length] )

Jika parameter $split_length ditentukan, maka array akan dibagi menjadi potongan-potongan dengan
lebar $split_length, sebaliknya jika parameter $split_length tidak ditentukan, maka array akan dibagi
menjadi potongan character dengan lebar satu character.

<?php
$str = "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);
?>

Keluaran :

Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
[9] => e
[10] => n
[11] => d
)

Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)

strcasecmp
Membandingkan string secara case-insensitive. Mengembalikan nilai < 0 jika $str1 kurang dari $str2,
mengembalikkan nilai > 0 jika $str1 lebih besar dari $str2, dan mengembalikan nilai 0 jika $str1 sama
dengan $str2.

Fungsi strcasecmp() bersifat case-insensitive dan untu memperoleh hasil perbandingan yang bersifat case-
sensitive gunakan fungsi strcmp().

Struktur : int strcasecmp ( string $str1, string $str2 )

<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
echo '$var1 sama dengan $var2 bersifat perbandingan case-
insensitive';
}
?>

stripos
Mencari posisi string dari string yang telah ditentukan. Fungsi stripos() bersifat case-insensitive

Struktur : int stripos ( string $haystack, string $needle [, int $offset]


)

<?php
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';

$pos1 = stripos($mystring1, $findme);


$pos2 = stripos($mystring2, $findme);

// 'a' tidak ditemukan di 'xyz'


if ($pos1 === false) {
echo "String '$findme' tidak ditemukan di string '$mystring1'";
}

// Gunakan operator === karena operator == tidak bekerja sesuai


harapan
if ($pos2 !== false) {
echo "'$findme' ditemukan di '$mystring2' dengan posisi $pos2";
}
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
strlen
Untuk mendapatkan lebar string.

Struktur : int strlen ( string $string )

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';


echo strlen($str); // 7
?>

strpos
Mencari posisi suatu string yang dihitung mulai dari character pertama string.
Struktur : int strpos ( string $haystack, mixed $needle [, int $offset] )

<?php
$mystring = 'abc';
$findme = 'b';
$pos = strpos($mystring, $findme);
echo $pos; // 1, b ditemukan pada character ke 1
?>

strtolower
Mengkonversi string menjadi huruf kecil semua (lowercase).

Struktur : string strtolower ( string $str )

<?php
$str = "Ini Hadiah Untuk FANNY ";
$str = strtolower($str);
echo $str; // ini hadiah untuk fanny
?>

strtoupper
Mengkonversi string menjadi huruf besar semua (uppercase).

Struktur : string strtoupper ( string $string )

<?php
$str = "Boneka Ini Hadiah untuk FANNY";
$str = strtoupper($str);
echo $str; // BONEKA INI HADIAH UNTUK FANNY
?>

substr_compare
Membandingkan dua string, dimulai dari posisi $offset sampai dengan lebar character yang bersifat case-
insensitive jika $case_insensitivity diisi dengan TRUE..

Struktur : int substr_compare ( string $main_str, string $str, int


$offset [, int $length [, bool $case_insensitivity]] )

Mengembalikan nilai < 0 jika $main_str dimulai dari posisi $offset kurang dari $str.
Mengembalikan nilai > 0 jika $main_str dimulai dari posisi $offset lebih besar $str.
Mengembalikan nilai sama dengan 0 jika $main_str dimulai dari $offset sama dengan $str.

<?php
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning
?>

substr_count
Menghitung jumlah string yang merupakan bagian (substring) dari suatu string. Fungsi substr_count()
bersifat case-sensitive.

Struktur : int substr_count ( string $haystack, string $needle [, int


$offset [, int $length]] )

<?php
$text = 'This is a test';
echo strlen($text); // 14

// tercetak 2, karena string “is” ada 2


echo substr_count($text, 'is');

// string berkurang menjadi 's is a test', tercetak 1


echo substr_count($text, 'is', 3);

// string berkurang menjadi 's i', tercetak 0


echo substr_count($text, 'is', 3, 3);
?>

substr
Mengembalikan bagian dari string yang telah ditentukan awal ($start) dan lebarnya ($length). Jika $start
positive maka $start dimulai dari kiri dan jika $start negatif maka dimulai dari kanan, selanjutnya
dihitung sepanjang $length ke kanan.

Struktur : string substr ( string $string, int $start [, int $length] )

<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f, dimulai dari kanan

$rest = substr("abcdef", -1); // "f"


$rest = substr("abcdef", -2); // "ef"
$rest = substr("abcdef", -3, 1); // "d"
?>

trim
Memotong spasi kosong (whitespace) atau character lain yang posisinya diawal dan diakhir.
Struktur : string trim ( string $str [, string $charlist] )

Jika parameter kedua ($charlist) tidak diisi, maka fungsi trim() juga memotong charater berikut ini :

 " " (ASCII 32 (0x20)), spasi.


 "\t" (ASCII 9 (0x09)), tab.
 "\n" (ASCII 10 (0x0A)), baris baru (line feed).
 "\r" (ASCII 13 (0x0D)), Enter / carriage return.
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 "\0" (ASCII 0 (0x00)), byte-NUL.
 "\x0B" (ASCII 11 (0x0B)), tab vertikal.

<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = trim($text);
var_dump($trimmed);

$trimmed = trim($text, " \t.");


var_dump($trimmed);

$trimmed = trim($hello, "Hdle");


var_dump($trimmed);

// trim ASCII character kontrol diakhir $binary


// (from 0 to 31 inclusive)
$clean = trim($binary, "\x00..\x1F");
var_dump($clean);
?>

Keluaran :

string(32) " These are a few words :) ... "


string(16) " Example string
"
string(11) "Hello World"

string(28) "These are a few words :) ..."


string(24) "These are a few words :)"
string(5) "o Wor"
string(14) "Example string"

ucfirst
Menjadika huruf besar (uppercase) pada character pertama string.

Struktur : string ucfirst ( string $str )

<?php
$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!

$bar = 'HELLO WORLD!';


$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>

ucwords
Menjadikan huruf besar (uppercase) pada character pertama setiap kata pada suatu string.

Struktur : string ucwords ( string $str )

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$foo = 'hello world!';
$foo = ucwords($foo); // Hello World!

$bar = 'HELLO WORLD!';


$bar = ucwords($bar); // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.12 FUNGSI URL
get_headers
Mengembalikan nilai array header (berisi informasi tentang web server , waktu server, content, dll) yang
dikirim oleh server sebagai jawaban atas HTTP request client browser.

Struktur : array get_headers ( string $url [, int $format] )

<?php
$url = 'http://localhost';
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

Hasil :
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)

get_meta_tags
Menguraikan semua atribut meta tag suatu file dan mengembalikan informasi attribut tersebut dalam
bentuk array. Penelusuaran terhadap meta tag akan berhenti ketika bertemu dengan tag </head>.

Struktur : array get_meta_tags ( string $filename [, bool


$use_include_path] )

<meta name="author" content="name">


<meta name="keywords" content="php documentation">
<meta name="DESCRIPTION" content="a php manual">
<meta name="geo.position" content="49.33;-86.59">
</head> <!-- parsing akan berhenti disini -->

<?php
// Beranggapan bahwa meta tag mengacu pada contoh di atas
$tags = get_meta_tags('http://www.example.com/');
echo $tags['author']; // name
echo $tags['keywords']; // php documentation

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo $tags['description']; // a php manual
echo $tags['geo_position']; // 49.33;-86.59
?>

http_build_query
Membentuk URL encode yang diperoleh dari elemen-elemen array.

Struktur : string http_build_query ( array $formdata [, string


$numeric_prefix [, string $arg_separator]] )

Contoh sederhana penggunaan http_build_query() :

<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');

echo http_build_query($data);
// foo=bar&baz=boom&cow=milk&php=hypertext+processor

echo http_build_query($data, '', '&amp;');


// foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor
?>

Contoh penggunaan http_build_query() yang menggunakan elemen index angka :

<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php'
=>'hypertext processor');

echo http_build_query($data) . "<br>";


// 0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
echo http_build_query($data, 'myvar_');
//
myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hyper
text+processor
?>

parse_url
Menampilkan setiap komponen yang ada pada URL menjadi elemen-elemen array, fungsi parse_url()
merupakan kebalikan dari fungsi http_build_query().

Struktur : mixed parse_url ( string $url [, int $component] )

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);


?>

Hasil tidak harus sama, tapi kurang lebih adalah sebagai berikut :

Array
(
[scheme] => http

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path

rawurldecode
Untuk merubah string pada URL yang terdiri dari character persen (%)diikuti oleh dua digit heksa
desimal menjadi character literal yang mudah dibaca.

Struktur : string rawurldecode ( string $str )

<?php
echo rawurldecode('foo%20bar%40baz'); // foo bar@baz
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
3.13 FUNGSI PENANGANAN VARIABLE
empty
Untuk mengevaluasi apakah variable bernilai kosong atau tidak.

Struktur : bool empty ( mixed $var )

<?php
// Berikut ini contoh perbedaan antara empty() dan isset()
$var = 0;

if (empty($var)) {
echo '$var bernilai 0, kosong, atau belum inisialisasi sama
sekali';
}

if (isset($var)) {
echo '$var sudah di-inisialisasi';
}
?>

floatval
Untuk memperoleh nilai bilangan pecahan (float) yang terkandung pada variable $var.

Struktur : float floatval ( mixed $var )

<?php
$var = '122.34343The';
$float_value_of_var = floatval($var);
echo $float_value_of_var; // 122.34343
?>

intval
Untuk memperoleh nilai bilangan bulat (integer) yang terkandung pada variable $var. Sedangkan $base
jika disertakan akan menentukan konversi base-nya (standarnya adalah base 10).

Struktur : int intval ( mixed $var [, int $base] )

<?php
echo intval(42) . "<br>"; // 42
echo intval(4.2) . "<br>"; // 4
echo intval('42') . "<br>"; // 42
echo intval('+42') . "<br>"; // 42
echo intval('-42') . "<br>"; // -42
echo intval(042) . "<br>"; // 34
echo intval('042') . "<br>"; // 42
echo intval(1e10) . "<br>"; // 1410065408
echo intval('1e10') . "<br>"; // 1
echo intval(0x1A) . "<br>"; // 26
echo intval(42000000) . "<br>"; // 42000000
echo intval(420000000000000000000) . "<br>"; // 0
echo intval('420000000000000000000') . "<br>"; // 2147483647
echo intval(42, 8) . "<br>"; // 42
echo intval('42', 8) . "<br>"; // 34
?>

is_array
Untuk mengetahui apakah nilai dari variable $var bertipe array.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : bool is_array ( mixed $var )

<?php
$ya = array('ini', 'adalah', 'array');

// Hasil : Array
echo is_array($ya) ? 'bertipe Array' : 'bukan bertipe Array';
echo "<br>";

$tidak = 'ini adalah string';


// Hasil : bukan Array
echo is_array($tidak) ? 'bertipe Array' : 'bukan bertipe Array';
?>

is_bool
Untuk mengetahui apakah nilai dari variable $var bertipe boolean.

Struktur : bool is_bool ( mixed $var )

<?php
$a = false;
$b = 0;

// Selama $a boolean, maka akan bernilai true


if (is_bool($a)) {
echo " Ya, ini boolean ";
}

// Selama $b bukan boolean, maka akan bernilai false


if (is_bool($b)) {
echo "Ya, ini boolean";
}
?>

is_float
Untuk mengetahui apakah nilai dari variable $var bertipe float.
Fungsi is_float() identik dengan fungsi is_double() dan is_real().

Struktur : bool is_float ( mixed $var )

<?php
$a = 12;
$b = 1.2;

if (!is_float($a)) {
echo "$a bukan tipe float<br>";
}

if (is_float($b)) {
echo "$b bertipe float<br>";
}
?>

is_int
Untuk mengetahui apakah nilai dari variable $var bertipe integer.
Fungsi is_int() identik dengan fungsi is_integer() dan is_long().

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : bool is_int ( mixed $var )

<?php
$a = 12;
$b = 1.2;

if (is_int($a)) {
echo "$a bertipe integer<br>";
}

if (!is_int($b)) {
echo "$b bukan tipe integer<br>";
}
?>

is_null
Untuk mengetahui apakah nilai dari variable $var bernilai NULL.

Struktur : bool is_null ( mixed $var )

<?php
$a = null;

if (is_null($a)) {
echo "$a bertipe null<br>";
}

// $b belum pernah di-inisialisasi


if (is_null($b)) {
echo "$b juga bertipe null<br>";
}
?>

is_numeric
Untuk mengetahui apakah nilai dari variable $var tergolong angka atau string angka.

Struktur : bool is_numeric ( mixed $var )

<?php
$a = 123;
$b = '123';
$c = '123as';

if (is_numeric($a)) {
echo "$a tergolong angka<br>";
}

if (is_numeric($b)) {
echo "$b juga tergolong angka<br>";
}

if (is_numeric($c)) {
echo "$b bukan tergolong angka<br>";
}
?>

is_string
Untuk mengetahui apakah nilai dari variable $var bertipe string.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : bool is_string ( mixed $var )

<?php
$a = '123';
$b = 123;
if (is_string($a)) {
echo "$a bertipe string<br>";
}

if (!is_string($b)) {
echo "$b bukan tipe string<br>";
}
?>
isset
Untuk menentukan apakah variable sudah di-inisialisasi. Jika variable $var telah dikenakan fungsi
unset(), maka variable $var sudah tidak ter-inisialisasi lagi. Fungsi isset() akan bernilai False jika
variable $var diisi dengan NULL.

Struktur : bool isset ( mixed $var [, mixed $var [, $...]] )

<?php
$var = '';

// Bernilai TRUE karena telah di-inisialisasi.


if (isset($var)) {
echo "Variable telah ter-inisialisasi.";
}

$a = "test";
$b = "anothertest";

var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE

unset ($a);

// variable $a dan $b telah dikenakan fungsi unset()


var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE

$foo = NULL;
var_dump(isset($foo)); // FALSE
?>

<?php
$a = array ('test' => 1, 'hello' => NULL);

var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE

var_dump(array_key_exists('hello', $a)); // TRUE


?>

unset
Fungsi unset() berfungsi untuk memusnahkan variable.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Struktur : void unset ( mixed $var [, mixed $var [, mixed $...]] )

<?php
// memusnahkan variable tunggal
unset($foo);

// memusnahkan element array tunggal


unset($bar['quux']);

// memusnahkan variable lebih dari satu


unset($foo1, $foo2, $foo3);
?>

var_dump
Menampilkan informasi tentang variable. Antara lain struktur, tipe data beserta nilainya.

Struktur : void var_dump ( mixed $expression [, mixed $expression [, $...]]


)

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

Hasil :
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}

<?php
$b = 3.1;
$c = true;
var_dump($b, $c); // float(3.1) bool(true)
?>

settype
Untuk merubah tipe data variable $var dengan tipe data $type dan data yang dihasilkan akan bertipe
sesuai dengan perubahannya. Fungsi settype() bisa dikatakan sebagai fungsi konversi.

Struktur : bool settype ( mixed &$var, string $type )

<?php
$foo = "5bar"; // string
$bar = true; // boolean

settype($foo, "integer"); // $foo sekarang bernilai 5 (integer)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
settype($bar, "string"); // $bar sekarang bernilai "1" (string)
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 4
PENANGANAN FORM & SESSION

Sebuah website dinamis seringkali memerlukan interaksi antara browser client dan server bisa berupa
pemasukkan data text, angka, atau upload file (file gambar, file exeutable, dan lain-lain) untuk diproses
oleh server.

4.1 KOMPONEN FORM


Untuk mewadahi suatu data yang dikirimkan oleh browser client, dibutuhkan adanya FORM HTML.
Contoh pengunaan form misalnya untuk pendaftaran keanggotaan, pemasukkan kode kartu kredit, login
user, transaksi perbelanjaan, upload file, dan lain-lain.

Dalam FORM HTML terdapat beberapa komponen yang bisa digunakan, antara lain :


Text Box, untuk menginputkan data string ataupun angka.
TAG HTML: <input type="text" name="nama_variable" size="30">


Text Area, untuk menginputkan data string ataupun angka yang terdiri dari banyak baris.
TAG HTML: <textarea rows="2" cols="25"
name="nama_variable"></textarea>


File Upload, untuk mengupload data bertipe file.
TAG HTML: <input type="file" name="nama_variable" size="21">


Radio Buton, untuk memilih satu pernyataan dari beberapa pernyataan yang disediakan.
TAG HTML: <input type="radio" value="V1" checked
name="nama_variable">


Combo Box, untuk menampilkan daftar data.
TAG HTML: <select size="1" name="nama_variable">
<option>Combo1</option>
<option>Combo2</option>
</select>


Check Box, untuk memilih satu atau lebih pernyataan dari beberapa pernyataan yang disediakan.
TAG HTML: <input type="checkbox" name="nama_variable" value="ON"
checked>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Submit untuk mengirimkan semua variable data pada komponen-komponen form yang ada.
TAG HTML: <input type="submit" name="submit" value="Submit">


Reset untuk membatalkan semua inputan yang telah dituliskan.
TAG HTML: <input type="reset" name="reset" value="Reset">

Agar komponen-komponen FORM HTML bisa dikenali sebagai variable yang bernilai data, maka semua
komponen harus diletakkan diantara tanda <form>…</form>. Khusus untuk komponen file upload,
TAG HTML FORM harus diubah menjadi <form enctype="multipart/form-data"
>…</form>.

Struktur penulisan HTML Form adalah sebagai berikut :

<form name="nama_form" action="tujuan.php" method="GET">


komponen form
</form>

atau

<form name="nama_form" action="tujuan.php" method="POST">


komponen form
</form>

Keterangan properti FORM adalah sebagai berikut :

 Name adalah penamaan untuk form, penamaan form tidak harus disertakan.
 Action adalah nama file web tujuan yang akan menerima variable data, yang dikirimkan
melalui form. File web tujuan bisa juga dikirimkan pada dirinya sendiri, ini berarti setelah
menekan tombol submit posisi halaman web akan tetap sama.
 Method adalah jenis pengiriman variable data, yang terbagi menjadi dua jenis yaitu
METHOD=GET dan METHOD=POST.

Method GET

Dengan method GET, maka nama dan nilai variable akan tampak di address URL browser. Method GET
lebih cocok untuk pengiriman variable disertai argumen yang panjang, serta tidak membutuhkan
keamanan lebih.

Method POST
Dengan method POST, maka nama dan nilai variable tidak akan tampak di address URL browser. Method
POST lebih cocok untuk pengiriman variable yang membutuhkan pengamanan. Misalnya : untuk halaman
web yang memerlukan login user dan password.

4.2 FORM METHOD GET

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Berikut ini cara membuat FORM sederhana dengan menggunakan method GET. Simpanlah baris
program di bawah ini dengan nama file "form_get.php" kemudian letakkan file tersebut di folder
wamp\www\belajar\form_get.php atau bisa juga dibuat folder lain asalkan masih di bawah
folder wamp\www\.

File : form_get.php

<html>

<head>
<title>Membuat Form Sederhana</title>
</head>

<body>

<form action="hasil_form_get.php" method="get">

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" bordercolor="#111111" width="50%" height="228">
<tr>
<td width="100%" colspan="2" height="35"><b>Membuat Form
Sederhana</b><hr></td>
</tr>
<tr>
<td width="21%" height="22">Nama</td>
<td width="79%" height="22"><input type="text" name="nama"
size="32"></td>
</tr>
<tr>
<td width="21%" height="36">Keterangan</td>
<td width="79%" height="36"><textarea rows="2" cols="25"
name="keterangan"></textarea></td>
</tr>
<tr>
<td width="21%" height="21">Jenis Kelamin</td>
<td width="79%" height="21">
<input type="radio" value="laki-laki" checked
name="kelamin">Laki-laki
<input type="radio" value="perempuan"
name="kelamin">Perempuan</td>
</tr>
<tr>
<td width="21%" height="22">Agama</td>
<td width="79%" height="22">
<select size="1" name="agama">
<option>Islam</option>
<option>Kristen Katolik</option>
<option>Kristen Protestan</option>
<option>Hindu</option>
<option>Budha</option>
</select>
</td>
</tr>
<tr>
<td width="21%" height="49">&nbsp;</td>
<td width="79%" height="49"><input type=submit name=submit
value=Submit> <input type=reset name=reset value=Reset></td>
</tr>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
</table>

</form>

</body>

</html>

Perhatikan file coba_form.php di atas, khususnya baris kode <form action


="hasil_form.php" method="get">, dimana action="hasil_form.php" berarti
halaman web tujuannya adalah "hasil_form.php" dan method yang digunakan adalah "get",
maka semua parameter variable akan terlihat di address URL browser.

Kemudian buatlah file PHP baru sebagai halaman web tujuan sesuai dengan action form yang telah
dibuat, dan beri nama "hasil_form_get.php" dan letakkan di folder wamp\www\belajar
sehingga menjadi "wamp\www\belajar\hasil_form_get.php".

File : hasil_form_get.php

<html>

<head>
<title>Web Penerima Variable Data</title>
</head>

<body>

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" bordercolor="#111111" width="58%">
<tr>
<td width="16%">Nama</td>
<td width="51%"><?php echo "$_GET[nama]";?></td>
</tr>
<tr>
<td width="16%">Keterangan</td>
<td width="51%"><?php echo "$_GET[keterangan]";?></td>
</tr>
<tr>
<td width="16%">Kelamin</td>
<td width="51%"><?php echo "$_GET[kelamin]";?></td>
</tr>
<tr>
<td width="16%">Agama</td>
<td width="51%"><?php echo "$_GET[agama]";?></td>
</tr>
</table>

</body>

</html>

Setelah itu, panggil file form.php dengan menggunakan browser internet dan ketikkan url addressnya
dengan "http://localhost/belajar/form_get.php", maka tampilan file
"form_get.php" adalah sebagai berikut :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Selanjutnya isi semua komponen form di atas, kemudian jalankan tombol reset, maka semua isian akan
dibatalkan atau dikosongkan kembali. Kemudian coba untuk mengisi ulang semua komponen form, dan
jalankan tombol submit, maka halaman web akan berpindah ke web tujuan seperti di bawah ini.

4.3 FORM METHOD POST


Kalau contoh FORM sebelumnya menggunakan method get, sekarang buatlah FORM dengan
menggunakan method post. Simpanlah baris program di bawah ini dengan nama file
"form_post.php" letakkan file tersebut di folder wamp\www\belajar\, sehingga menjadi
"wamp\www\belajar\form_post.php".

File : form_post.php
<html>

<head>
<title>Membuat Form Sederhana</title>
</head>

<body>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<form action="hasil_form_post.php" method="post">

<table border="0" cellpadding="2" cellspacing="1"


style="border-collapse: collapse"
bordercolor="#111111" width="50%" height="228">
<tr>
<td width="100%" colspan="2"
height="35"><b>Membuat Form Sederhana</b><hr></td>
</tr>
<tr>
<td width="21%" height="22">Nama</td>
<td width="79%" height="22"><input type="text"
name="nama" size="32"></td>
</tr>
<tr>
<td width="21%" height="36">Keterangan</td>
<td width="79%" height="36"><textarea rows="2"
cols="25" name="keterangan"></textarea></td>
</tr>
<tr>
<td width="21%" height="21">Jenis Kelamin</td>
<td width="79%" height="21">
<input type="radio" value="laki-laki" checked
name="kelamin">Laki-laki
<input type="radio" value="perempuan"
name="kelamin">Perempuan</td>
</tr>
<tr>
<td width="21%" height="22">Agama</td>
<td width="79%" height="22">
<select size="1" name="agama">
<option>Islam</option>
<option>Kristen Katolik</option>
<option>Kristen Protestan</option>
<option>Hindu</option>
<option>Budha</option>
</select>
</td>
</tr>
<tr>
<td width="21%" height="49">&nbsp;</td>
<td width="79%" height="49"><input type=submit
name=submit value=Submit> <input type=reset
name=reset value=Reset></td>
</tr>
</table>

</form>

</body>

</html>

Setelah itu buatlah file PHP baru seperti di bawah ini dan beri nama file tesebut dengan
"hasil_form_post.php" dan letakkan difolder "wamp\www\belajar", sehingga menjadi
"wamp\www\belajar\hasil_form_post.php"

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
File : hasil_form_post.php

<html>

<head>
<title>Web Penerima Variable Data</title>
</head>

<body>

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" bordercolor="#111111" width="58%">
<tr>
<td width="16%">Nama</td>
<td width="51%"><?php echo "$_POST[nama]";?></td>
</tr>
<tr>
<td width="16%">Keterangan</td>
<td width="51%"><?php echo "$_POST[keterangan]";?></td>
</tr>
<tr>
<td width="16%">Kelamin</td>
<td width="51%"><?php echo "$_POST[kelamin]";?></td>
</tr>
<tr>
<td width="16%">Agama</td>
<td width="51%"><?php echo "$_POST[agama]";?></td>
</tr>
</table>

</body>

</html>

Sekarang jalankan file form_post.php dengan menuliskan addrress url di browser internet menjadi
http://localhost/belajar/form_post.php , maka tampilan form_post.php adalah sebagai
berikut :

dan isikan komponen form secara lengkap kemudian jalankan tombol submit, maka tampilan web
tujuannya menjadi http://localhost/belajar/hasil_form_post.php , seperti tampak di
bawah ini:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
perhatikan pula bahwa nama variable data tidak nampak di url addressnya.

4.4 HYPERLINK & ARGUMEN


Hyperlink adalah teks yang jika dipilih/di-klik akan menuju ke suatu halaman baru sesuai dengan alamat
yang ditunjuk. Hyperperlink bisa diberi argumen layaknya perintah GET tetapi tanpa melalui TAG
FORM HTML, sehingga semua argumen akan nampak di URL address.

Berikut ini contoh hyperlink tanpa argumen http://www.docomads.com dan hyperlink yang disertai
dengan argumen http://www.docomads.com/id=10&nilai=30.

Contoh Hyperlink

<html>
<head>
<title>Membuat Hyperlink</title>
</head>

<body>
<?php
// Hyperlink tanpa argumen
echo "<a
href=http://www.docomads.com>http://www.docomads.com<
/a><br>";

// Hyperlink disertai argumen


echo "a
href=http://www.docomads.com?id=10&nilai=30>http://ww
w.docomads.com</a>";
?>
</body>

</html>

4.5 PENANGANAN SESSION


Gambaran session adalah sebagai berikut : Misalkan sebuah website memiliki banyak halaman, dan salah
satu halamannya terdapat form yang harus diisi, kemudian bagaimanakah caranya agar variable data yang
terdapat pada form tersebut bisa tercatat disetiap halaman website?, meskipun kita berpindah dari

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
halaman satu ke halaman yang lain. Dengan kata lain, variable tersebut harus memiliki lingkup yang
bersifat global dan bisa dikenali di setiap halaman website yang dibuka.

Tentu tidak efektif jika selalu dibuat form inputan baru disetiap halaman untuk pendefinisian ulang
varibale data, agar bisa dikenali disetiap halaman. Oleh karena itu diperlukan adanya varibale yang
memiliki lingkup/scope global yang bisa dikenali disetiap halaman, tanpa harus men-submit ulang
formnya. Salah satu caranya adalah dengan menggunakan session.

Contoh umum penggunaan session dalam website adalah :

 Form login user, beberapa website terkadang membutuhkan login user, agar user bisa mengakses
halaman-halaman website yang memerlukan verifikasi hak akses disetiap halaman terntentu.

 Website Shoping Cart, website perbelanjaan biasanya menyimpan nama barang dan jumlah yang
akan dibeli di dalam session, sehingga meskipun pengunjung berpindah-pindah halaman, data
perbelanjaan akan tetap terjaga.

 Hit Counter, hit counter untuk menghitung jumlah pengunjung website, saat pertama kali
pengunjung membuka website maka sessionid-nya akan disimpan di variable gloabal session, jika
pengunjung membuka halaman lain maka hit counter tetap terhitung satu kali. Hal ini untuk
mencegah terhitungnya hit counter beberapa kali, jika pengunjung membuka halaman lain dalam satu
alamat website.

Session bisa dikonfigurasi sesuai dengan keinginan, dimana pengaturan session diletakkan di file php.ini.
Walaupun pada kenyataannya untuk merubah konfigurasi session tidak mudah untuk dilakukan jika
website terletak pada komputer server (virtual hosting), karena pemilik website tidak memiliki hak akses
penuh terhadap komputer server, tetapi alangkah baiknya jika mengetahui konfigurasi apa saja yang ada
pada session.

Beberapa pengaturan session antara lain :

 session.name
Pemberian nama session terdiri dari karakter alphanumeric, nama standarnya adalah PHPSESSID.

 session.auto_start
Penggunaan session harus diawali dengan session_start(), jika session.auto_start bernilai 1 maka
secara otomatis session_start() akan dijalankan saat start up atau komputer dinyalakan, jika bernilai 0
maka session harus diaktifkan secara manual, sehingga session_start() harus dideklarasikan terlebih
dahulu.

 session.cookie_lifetime
Untuk menentukan umur atau durasi session, jika bernilai 0, maka session akan dihapus secara
otomatis saat keluar dari browser internet.

 session.cookie_path
Untuk menentukan letak path file-file session_cookie.

Fungsi built-in PHP yang berhubungan dengan session, antara lain :

SESSION_START()
Agar bisa menggunakan fungsi-fungsi session, maka disetiap halaman website yang mengandung fungsi-
fungsi session harus diawali dengan session_start().

<?php
session_start();
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
SESSION_DESTROY()
session_destroy() berguna untuk menghapus dan mengakhiri session, sekaligus menghapus semua elemen
yang ada. Jika browser telah ditutup maka sacara otomatis session akan diakhiri walaupun fungsi
session_destroy() tidak dituliskan secara eksplisit.

<?php
session_start();
session_destroy();
?>

SESSION_UNSET()
Untuk menghapus elemen-elemen dari session, tetapi tanpa membuang atau mengakhiri session itu
sendiri maka bisa digunakan fungsi session_unset().

<?php
session_start();
session_unset();
?>

SESSION_ID()
Untuk mendapatkan atau memberi nilai id pada session, dimana setiap kali pengunjung membuka website
maka akan diberikan identifikasi session yang bersifat unik atau berbeda disetiap session yang telah
tercipta.

<?php
session_start();
echo "Session ID yang terbentuk : " . session_id() . "<br>";
session_destroy();
?>

SESSION_NAME()
Fungsi session_name() adalah untuk memperoleh atau memberi nilai terhadap nama sebuah session.
Nama session secara standar adalah PHPSESSID. Jika diinginkan nama lain bisa dituliskan sebagai
berikut :

<?php
session_start();

// menampilkan nama session standar


echo "Nama session standar : " . session_name() . "<br>";

// memberi nama session sendiri


session_name("SessionKu");
echo "Pemberian nama session baru : " . session_name();
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Catatan :
Dalam PHP5, register global di isi dengan nilai off (register_globals = Off, lihat
file konfigurasi php.ini). Hal ini sangat berpengaruh terhadap perlakuan session,
jika register_globals = Off maka fungsi session_register, session_is_register, dan
session_unregister tidak dapat dipergunakan.

Supaya lebih mudah memahami session, buat program di bawah ini, kemudian simpan filenya dengan
nama “hal1.php”. File “hal1.php” merupakan awal pembuka halaman website, dimana session belum
dijalankan dan hanya tersedia form dengan method=”POST”.

File : hal1.php

<html>

<head>
<title>Halaman 1</title>
</head>

<body>

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" width="414">
<tr>
<td width="68" valign="top" bgcolor="#999999">
<b><a href="hal1.php">Hal 1</a><br>
<a href="hal2.php">Hal 2</a><br>
<a href="hal3.php">Hal 3</a></b></td>
<td width="335" valign="top" bgcolor="#CCCCCC">
<table border="0" cellpadding="2" cellspacing="1"
style="border-collapse: collapse" width="100%">
<tr>
<td width="24%">Nama</td>
<td width="76%"><input type="text" name="nama"
size="27"></td>
</tr>
<tr>
<td width="24%">Email</td>
<td width="76%"><input type="text" name="email"
size="27"></td>
</tr>
</table>
</td>
</tr>
</table>

</body>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
</html>

Selanjutnya buatlah file “hal2.php” sebagai tujuan dari file “hal1.php” di atas.
Di dalam file hal2.php, fungsi session mulai dijalankan, bisa terlihat dari pernyataan session_start berikut
ini :

<?php session_start();?>

session “nama” dan session “email” diisi dengan data dari variable yang diperoleh dari form yang
terkirim dari halaman “hal1.php” :

<?php
// Jika session name dan session email masih kosong
// maka session name dan session email akan diisi oleh variable
// data yang diperoleh dari pernyataan POST.
if (!isset($_SESSION[nama])) $_SESSION[nama] = $_POST[nama];
if (!isset($_SESSION[email])) $_SESSION[email] = $_POST[email];
?>

sekarang $_SESSION[nama] dan $_SESSION[email] memiliki lingkup global dan bisa dikenali
disemua halaman website.

File : hal2.php

<?php session_start();?>

<html>

<head>
<title>Halaman 2</title>
</head>

<body>

<?php
// Jika session name dan session email masih kosong
// maka session name dan session email akan diisi oleh variable
// data yang diperoleh dari pernyataan POST.
if (!isset($_SESSION[nama])) $_SESSION[nama] = $_POST[nama];
if (!isset($_SESSION[email])) $_SESSION[email] = $_POST[email];
?>

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" width="83%">

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<tr>
<td width="9%" valign="top" bgcolor="#999999">
<b><a href="hal1.php">Hal 1</a><br>
<a href="hal2.php">Hal 2</a><br>
<a href="hal3.php">Hal 3</a></b></td>
<td width="91%" valign="top" bgcolor="#CCCCCC">
<table border="0" cellpadding="2" cellspacing="1"
style="border-collapse: collapse" width="100%">
<tr>
<td width="17%">Nama</td>
<td width="83%"><?php echo "$_SESSION[nama]";?></td>
</tr>
<tr>
<td width="17%">Email</td>
<td width="83%"><?php echo "$_SESSION[email]";?></td>
</tr>
<tr>
<td width="17%">ID Session</td>
<td width="83%"><?php echo session_id();?></td>
</tr>
<tr>
<td width="17%">Nama Session</td>
<td width="83%"><?php echo session_name();?></td>
</tr>
</table>
</td>
</tr>
</table>

</body>

</html>

Beri nama program di bawah ini dengan nama “hal3.php”.


Dalam file ini, session mulai dijalankan dengan baris pertama sebagai berikut :

<?php session_start();?>

“hal3.php” memiliki kesamaan dengan file “hal2.php” yaitu menampilkan isi session, tetapi di akhir baris
program, isi session dihapus semua dengan perintah berikut ini:

<?php
session_unset();
session_destroy();
?>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
File : hal3.php
<?php session_start();?>

<html>
<head>
<title>Halaman 3</title>
</head>

<body>

<table border="0" cellpadding="2" cellspacing="1" style="border-


collapse: collapse" width="67%">
<tr>
<td width="11%" valign="top" bgcolor="#999999">
<b><a href="hal1.php">Hal 1</a><br>
<a href="hal2.php">Hal 2</a><br>
<a href="hal3.php">Hal 3</a></b></td>
<td width="89%" valign="top" bgcolor="#CCCCCC">
<table border="0" cellpadding="2" cellspacing="1"
style="border-collapse: collapse" width="100%">
<tr>
<td width="19%">Nama</td>
<td width="81%"><?php echo "$_SESSION[nama]";?></td>
</tr>
<tr>
<td width="19%">Email</td>
<td width="81%"><?php echo "$_SESSION[email]";?></td>
</tr>
<tr>
<td width="19%">ID Session</td>
<td width="81%"><?php echo session_id();?></td>
</tr>
<tr>
<td width="19%">Nama Session</td>
<td width="81%"><?php echo session_name();?></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
session_unset();
session_destroy();
?>
</body>

</html>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 5
APLIKASI PHPMyAdmin

PHPMyAdmin merupakan salah satu kakas pengolah database MySQL yang berbasis web,
PHPMyAdmin memberikan kemudahan dalam pengoperasiannya, hampir semua web hosting
menyediakan PHPMyAdmin untuk para penyewa virtual host.

Untuk memulai penggunaannya, buka PHPMyAdmin di menu WAMP

Menuju ke
halaman web
PHPMyAdmin

Adapun halaman utama PHPMyAdmin adalah sebagai berikut ini:

Navigasi Utama

Gambar 5. Halaman utama PHPMyAdmin.

Menu navigasi utama :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Ikon Keterangan

Ikon ini akan menuju ke halaman utama (halaman index) PHPMyAdmin.


Ikon ini akan menuju ke halaman web dimana kita akan membuat
perintah-perintah query. Dengan bentuk form sebagai berikut ini :

Ikon ini akan menuju ke halaman yang berisi dokumentasi PHPMyAdmin.


Ikon ini akan menuju ke website online resmi pengembang database
MySQL di
http://dev.mysql.com/doc/refman/5.0/en/index.html

Dan pada setiap halaman PHPMyAdmin juga disertai menu navigasi sebagai berikut :
Navigasi Keterangan
Menampilkan baris/record dari table.

Menampilkan struktur table dan database.

Menuju form untuk membuat query dengan bahasa SQL pada


database yang aktif saat ini.
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Merupakan kakas yang mempermudah pembuatan perintah
query.

Meng-expor struktur table atau database, termasuk baris-baris


recordnya menjadi script yang disimpan dalam file dengan
berbagai pilihan format

Meng-impor script berupa struktur table atau database beserta


baris-baris recordnya yang diperoleh dari file di luar sistem.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk memanipulasi database atau table, terutama merubah
struktur table atau database.

Membuat user baru termasuk hak akses user terhadap database


atau table dengan batasan-batasannya.

Menghapus table atau database yang aktif saat itu.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
5.1 MENCIPTAKAN DATABASE
Untuk menciptakan database baru dengan aplikasi PHPMyAdmin sangatlah mudah. Tetapi sebelumnya
coba cari tahu! database apa saja yang sudah ada dalam database MySQL, dengan cara klik ComboBox
database seperti berikut ini :

ComboBox yang berisi


daftar database yang ada
dalam MySQL

Gambar 5.1.1 Menampilkan daftar database.

Gambar di atas nampak bahwa ada empat daftar database yang telah tersedia, dimana disetiap database
terdapat angka yang menunjukkan jumlah table yang dimilikinya.
Untuk menciptakan database baru, tuliskan nama database-nya di TextBox Create New Database,
kemudian tekan tombol (button) Create.

Menciptakan
database baru

Gambar 5.1.2 Menciptakan database.

Selanjutnya muncul halaman konfirmasi seperti berikut ini :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Membuat database dengan
perintah query SQL
CREATE DATABASE.

Gambar 5.1.3 Konfirmasi Create Database


Pada dasarnya menciptakan database dengan PHPMyAdmin sama artinya dengan memberikan perintah
Query SQL, bisa dilihat dari frame SQL query di atas yaitu: CREATE DATABASE 'MyDatabase'.

5.2 MENCIPTAKAN TABLE


Untuk membuat table di database “mydatabase”, pilih databasenya terlebih dahulu.

Gambar 5.2.1 Memilih database mydatabase

Sehingga muncul pesan „No tables found in database‟, pesan ini muncul karena belum ada satupun table
yang pernah dibuat di database “mydatabase”.

Kemudian tuliskan nama table beserta jumlah field/kolom yang akan dibuat, misalnya nama tablenya
adalah siswa_tb dan jumlah kolomnya ada lima, lalu.tekan tombol go.

Gambar 5.2.2 Membuat Table siswa_tb

Tentukan nama field, tipe data, dan lebar tipe data yang dibutuhkan. Tentukan pula jenis storage engine-
nya, dalam contoh berikut ini digunakan jenis MyISAM.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Kemudian tekan tombol Save, atau tekan tombol Go jika masih ingin menambah beberapa field baru.

Gambar 5.2.3 Membuat Struktur Table

Selanjutnya akan muncul konfirmasi seperti berikut

Menciptakan table jika


dituliskan dengan
perintah query sql.

Gambar 5.2.4 Konfirmasi Create Table

5.3 INSERT TABLE


Insert table adalah proses memasukkan data (baris-baris record) ke dalam table.
Sebelum memasukkan data ke dalam table, pilih telebih dahulu salah satu nama database dimana table
yang akan dipilih berada, kemudian klik pada salah satu table yang akan ditambahkan datanya dengan
perintah insert.

Pilih salah
satu database Klik sekali pada
salah satu nama table

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 5.3.1 Memilih database dan table

setelah keluar struktur tablenya kemudian tekan tombol insert seperti tampak berikut ini

Gambar 5.3.2 Memilih insert untuk input data

Isi lengkap datanya sesuai form inputan yang telah diberikan.

Gambar 5.3.3 Mengisi Data pada Table

Setelah masing-masing field terisi lengkap, silahkan tekan tombol Go. Sedangkan tombol Reset berfungsi
untuk membersihkan atau membatalkan isian data field yang pernah dituliskan.

Jika data telah dimasukkan maka akan muncul konfirmasi seperti berikut ini:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Memasukkan data dengan
perintah Query SQL INSERT.

5.4 MENAMPILKAN ISI TABLE


Untuk menampilkan isi table (baris-baris record), bisa digunakan tombol browse, tapi sebelumnya
aktifkan terlebih dahulu database serta nama tablenya, seperti cara sebelumnya .

Nama database
yang dipilih

Nama table
yang dipilih

Gambar 5.4.1 Memilih database dan table

setelah memilih nama tablenya, kemudian tekan tombol browse , sehingga yang tampak adalah
seperti berikut ini :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Menampilkan data dengan
perintah query SQL SELECT.

Gambar 5.4.2 Konfirmasi Perintah SELECT

5.5 EKSPOR STRUKTUR DATABASE


PHPMyAdmin menyediakan fasilitas ekspor, yaitu membuat struktur database secara menyeluruh
ataupun sebagian, termasuk isi tablenya. Adapun strukturnya, ditulis dengan menggunakan bahasa SQL.

Hasil ekspor bisa disimpan dalam file dengan berbagai format misalnya: CSV, CSV for MS Excel,
Microsoft Excel 2000, Microsoft Word 2000, PDF, SQL, atau XML. Struktur database dan table juga bisa
ditampilkan dalam format web tanpa harus disimpan ke dalam file.

Untuk meng-ekpor keseluruhan database, maka pilih ikon home

Ikon home

Gambar 5.5.1 Menuju ke halaman home.

Ikon home akan menuju ke halaman web utama PHPMyAdmin, kemudian lanjutkan dengan memilih
menu Export, seperti berikut :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Menuju ke halaman Ekspor

Gamba 5.5.2 Menu ke halaman Ekspor.

Pilih salah satu database yang akan diekspor, dan tentukan pula format yang akan digunakan (penulis
menggunakan format standarnya yaitu format SQL).

Database yang akan di ekspor.

Pilihan Format File

Gambar 5.5.3 Memilih database yang akan di ekspor.


Yang perlu diperhatikan sebelum mengekspor database

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Jika ingin menambahkan script
perintah SQL DROP DATABASE
dalam file ekspor

Beri tanda centang jika


ingin menambahkan perintah
SQL DROP TABLE, Add IF NOT
EXISTS.

Gambar 5.5.4 Properti tambahan sebelum Ekpor.

Jika hasil ekspor disimpan dalam bentuk file, maka beri tanda centang pada pernyataan Save as file.
Tetapi jika hanya menampilkan script SQL-nya saja, maka pernyataan Save as file jangan diberi tanda
centang. Kalau sudah memilih salah satu pilihan tersebut maka tekan tombol Go. Seperti tampak berikut
ini :
Pilihan, apakah hasil ekspor disimpan dalam
bentuk file atau sekedar ditampilkan.

Tombol Go

Gambar 5.5.5 Pilihan apakah diekspor ke File.

Jika hasil ekpor hanya ditampilkan dalam halaman web saja tanpa perlu disimpan dalam bentuk file,
maka hasilnya akan tampak seperti berikut ini :

Gambar 5.5.6 Jika hasil ekspor sekedar ditampilkan saja.


Jika hasil ekpor disimpan dalam bentuk file maka akan muncul form yang meminta kita untuk
menyimpan file tersebut. Seperti tampak berikut ini :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 5.5.7 Konfirmasi jika hasil ekspor disimpan ke file.

5.6 IMPOR STRUKTUR DATABASE


Selain fasilitas ekspor, PHPMyAdmin juga menyediakan fasilitas impor yaitu mengambil struktur
database dan table yang berasal dari sebuah file (terutama file yang berekstensi *.sql). Untuk memulainya
pilih ikon home.

Ikon home

Gambar 5.6.1 Kembali ke menu utama.

Kemudian klik sekali pada menu Import untuk menuju ke halaman import.

Menuju ke
halaman impor

Gambar 5.6.2 Menu ke halaman impor.


Untuk meng-impor struktur database dan table yang berasal dari file luar sangatlah mudah, kita cukup
menekan tombol browse untuk mencari dimana lokasi file yang akan di-impor berada (file berekstensi
*.sql), setelah ditemukan, lanjutkan dengan menekan tombol Go untuk mengeksekusi file tersebut.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Lokasi dimana file impor berada.

Tekan tombol Go untuk meng-eksekusi file impor

Gambar 5.6.3 Membuka file ekspor.

Jika proses impor berhasil, maka akan keluar pesan konfirmasi bahwa proses impor telah sukses, seperti
tampak berikut ini :

Gambar 5.6.4 Konfirmasi hasil impor.


5.7 MENGHAPUS TABLE & DATABASE
Kita bisa menghapus beberapa table, semua table, bahkan menghapus database sekalipun dengan sangat
mudah, yaitu dengan menggunakan perintah Query SQL Drop.

Untuk menghapus salah satu satu database maka pilih terlebih dahulu salah satunya, kemudian pilih menu
Drop. Jika mau menghapus table maka pilih salah satu table yang akan dihapus kemudian pilih menu
drop.

Sebagai contoh akan dihapus database yang bernama ”databaseku”. Pilih terlebih dahulu database
”databaseku” kemudian tekan menu ”Drop”.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Menu Drop untuk
menghapus database
Memilih database
yang akan dihapus

Gambar 5.7.1 Menghapus Database dengan menu Drop

Setelah itu tekan tombol ”Go”, sehingga muncul jendela peringatan untuk memastikan apakah database
”databaseku” benar-benar akan dihapus! Jika yakin makan lanjutkan dengan menekan tombol ”OK”.

Gambar 5.7.2 Konfirmasi apakah database akan dihapus?

Gambar 5.7.3 Konfirmasi bahwa penghapusan database berhasil.

5.8 MEMBUAT USER DAN HAK AKSES

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk membuat user account baru beserta batasan aksesnya dapat digunakan menu previliges. Langkah
pertama adalah menuju ke halaman utama PHPMyAdmin dengan cara memilih ikon home seperti
sebelumnya. Kemudian pilih menu priviliges, seperti tampak gambar di bawah ini:

Pemberian grant user


atau batasan akses.

Gamabar 5.8.1 Menu Privileges

Setelah itu pilih menu Add New User untuk menambah user baru ke server MySQL.

Menambah
user baru.

Gambar 5.8.3 Menu Add new User untuk menambah user baru.

Menentukan User name, Host dan Password yang akan digunakan sebagai login ke database MySQL.
Field password boleh dikosongkan yang berarti untuk mengakses MySQL tidak membutuhkan password.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 5.8.4 Menentukan User name, Host dan Password MySQL.

Memberikan batasan kepada user bersangkutan, antara lain akses Data (SELECT, INSERT, UPDATE,
DELETA dan FILE), akses Structure (CREATE, ALTER, INDEX, DROP, dan lain-lain). Sebagai contoh
dipilih beberapa item hak akses seperti tampak gambar di bawah ini, kemudian tekan tombol Go untuk
melanjutkan proses :

Gambar 5.8.5 Izin hak akses User.

Konfirmasi pembuatan account user baru disertai dengan batasan aksesnya.

Gambar 5.8.6 Konfirmasi pembuatan user account baru.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Sebenarnya masih banyak fitur-fitur PHPMyAdmin yang bisa digunakan, misalkan saja cara merubah
struktur table atau database, namun tidak sempat dipaparkan di buku ini.

Diharapkan pembaca mencoba sendiri fitur-fitur yang lain, karena dengan PHPMyAdmin seusatu yang
terasa sulit akan menjadi lebih mudah dilakukan daripada menggunakan perintah MySQL Console dalam
pengelolaan database.

Silahkan mencoba dan jangan pernah takut berbuat salah.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 6
DATABASE MYSQL

Database MySQL sebenarnya memiliki cakupan bahasan yang luas, misalnya tentang instalasi database,
administrasi database, triger, store procedure, pemilihan engine database MySQL (MyISAM, InnoDB),
replikasi, dan lain sebagainya. Namun pada kesempatan ini penulis hanya meringkas beberapa hal pokok
yang dirasa penting dan bersifat mendasar saja. Untuk selanjutnya pembaca bisa mempelajarinya dari
buku-buku yang lain.

6.1 TIPE DATA


MySQL mendukung banyak tipe data yang terbagi menjadi beberapa kategori, antara lain: tipe numeric,
tipe date dan time, dan tipe string. Berikut ini akan dibahas tentang masing-masing kategori tipe data
tersebut.

6.1.1 TIPE NUMERIK


MySQL mendukung hampir semua tipe data numeric/angka asalkan sesuai dengan standar SQL.
Termasuk di dalamnya adalah tipe data untuk bilangan bulat (misalnya: INTEGER, SMALLINT,
DECIMAL, dan NUMERIC), serta tipe data yang digunakan untuk bilangan desimal atau pecahan
(misalnya: FLOAT, REAL, dan DOUBLE PRECISION). Sedangkan kata kunci INT merupakan
persamaan untuk INTEGER, dan kata kunci DEC merupakan persamaan untuk DECIMAL.

Untuk menyesuaikan dengan standar SQL maka MySQL juga mendukung tipe integer lain seperti
TINYINT, MEDIUMINT, dan BIGINT. Berikut ini table yang menunjukan jenis tipe data
numeric/angka:

Type Byte Signed UnSigned


TINYINT 1 -128 sampai 127 0 sampai 255
-32768 sampai
SMALLINT 2 0 sampai 65535
32767
-8388608 sampai
MEDIUMINT 3 0 sampai 16777215
8388607
INT, -2147483648
4 0 sampai 4294967295
INTEGER sampai 2147483647
-
92233720368547758
0 sampai
BIGINT 8 08 sampai 18446744073709551615
92233720368547758
07
-3.402823466E+38 sampai
-1.175494351E-38
FLOAT 4
1.175494351E-38 sampai
3.402823466E+38
-1.7976931348623157E+308 sampai
DOUBLE 8
2.2250738585072014E-308

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Tabel 6.1.1 Tipe Numerik.

6.1.2 TIPE DATE DAN TIME


MySQL memiliki tipe data yang berhubungan dengan penanganan tanggal dan pewaktuan, antara lain
DATETIME, DATE, TIMESTAMP, TIME, dan YEAR. Berikut ini jenis-jenis tipe data yang berhubungan
dengan tipe date dan time :

Type Keterangan
Ukuran 8 byte. Kombinasi tanggal dan jam,
DATETIME dengan jangkauan mulai „1000-01-01 00:00:00‟
sampai dengan „9999-12-31 23:59:59‟
Ukuran 3 byte. Tanggal dengan jangkauan
DATE mulai „1000-01-01‟ sampai dengan „9999-12-
31‟
Ukuran 4 byte. Kombinasi tanggal dan jam,
TIMESTAMP dengan jangkauan mulai dari „1970-01-01
00:00:00‟ sampai dengan tahun 2037
Ukuran 3 byte. Waktu dengan jangkauan mulai
TIME
dari „-838:59:59‟ sampai dengan „838:59:59‟
Ukuran 1 byte. Data tahun antara 1901 sampai
YEAR
dengan 2155

Tabel 6.1.2.1 Tipe Date dan Time.

Type Jika bernilai kosong


DATETIME „0000-00-00 00:00:00‟
DATE „0000-00-00‟
TIMESTAMP „0000-00-00 00:00:00‟
TIME „00:00:00‟
YEAR 0000

Tabel 6.1.2.2 Nilai kosong pada tipe date dan time.

6.1.3 TIPE CHARACTER


Tipe character adalah tipe yang berhubungan dengan string. Adapun jenis tipe datanya antara lain sebagai
berikut :

Type Keterangan
Ukuran M byte, 1 <= M <= 255.
BINARY, CHAR(M) Data string dengan panjang yang
tetap.
Ukuran bersifat fleksibel dan
VARBINARY, VARCHAR(M)
maksimal M byte.
TINYBLOB, TINYTEXT
BLOB, TEXT Tipe yang mampu mengendalikan
MEDIUMBLOB, data besar, tergantung seberapa
MEDIUMTEXT besar kapasitas penyimpanannya.
LONGBLOB, LONGTEXT

Tabel 6.1.3.1 Tipe Character.

Perbedaan antara tipe char dan varchar bisa dilihat dari contoh di bawah ini:
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Nilai Char(4) Ukuran Varchar(4) Ukuran
„‟ „ ‟ 4 byte „‟ 1 byte
„ab‟ „ab ‟ 4 byte „ab‟ 3 byte
„abcd‟ „abcd‟ 4 byte „abcd‟ 5 byte
„abcdefgh‟ „abcd‟ 4 byte „abcd‟ 5 byte

Tabel 6.1.3. Perbedaan Tipe Character Char dan Varchar.

6.2 CONSOLE MYSQL


Pada kenyataannya untuk mengelola database secara langsung di server dengan perintah console tidaklah
mudah, apa lagi jika kita menyewa ruang server yang bersifat virtual host.

Catatan:
Demi alasan keamanan, hak sebagai administrator server tidak bisa diberikan
kepada semua orang, tetapi jangan khawatir, layanan untuk mengatur dan
memanipulasi database bisa melalui perangkat lunak PHPMyAdmin yang berbasis
web. Oleh karena itu aplikasi PHPMyAdmin hampir pasti disediakan bagi seluruh
penyewa server yang bersifat virtual host. Sedangkan pembahasan PHPMyAdmin
dipelajari pada bab sebelumnya yaitu bab PHPMyAdmin.

Tetapi tidak ada salahnya jika kita menggunakan perintah console untuk mengatur dan memanipulasi
database MySQL sebagai proses pembelajaran. Untuk mulai menggunakan console MySQL silahkan
buka menu console di tray taskbar wamp.

Tray icon
taskbar Wamp

Menu MySQL Console

Gambar 6.2. MySQL Concsole lewat Wamp5

Khusus WAMP5, console MySQL tidak memerlukan password, karena secara standar password MySQL
di-set kosong. Ketika keluar tulisan Enter password: yang meminta password maka biarkan saja
dan langsung tekan tombol enter saja. Sehingga akan muncul pesan console sebagai berikut :

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.0.41-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Pesan di atas menandakan bahwa console MySQL siap digunakan.

6.3 KONEKSI DATABASE


Jika instalasi MySQL tidak melalui distribusi Wamp, maka agar terhubung dengan server MySQL harus
ditambahkan login “nama hos”t dan “password”, terutama jika MySQL berada pada suatu jaringan
komputer dimana posisi server MySQL berbeda dengan komputer client. Strukturnya kurang lebih seperti
berikut ini:

shell> MySQL -h host -u user -p


Enter password: ********

host diisi dengan nama host atau alamat IP dimana MySQL bekerja.
user adalah nama user yang telah dibuat di database MySQL.
Setelah menekan tombol Enter maka akan diminta untuk mengisi password.

shell> MySQL -h host -u user -p


Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.1.18-beta-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Tanda prompt mysql> berarti MySQL telah siap untuk diberi perintah-perintah SQL atau query. Jika
komputer client dan MySQL terletak di satu tempat maka bisa dituliskan –h localhost atau –h
127.0.0.1 atau bisa juga dengan mengabaikan nama hostnya, seperti berikut ini :

Mysql>MySQL –h user –p

Jika saat login timbul pesan kesalahan seperti ERROR 2002 (HY00): Can’t connect to
local MySQL server through socket ‘/tmp/MySQL.sock (2)’, berarti server
MySQL tidak bisa atau belum bekerja.

Jika sudah terhubung dengan MySQL, Anda dapat memutuskannya kapan saja, dengan perintah QUIT
seperti berikut ini :

mysql> QUIT
Bye

6.4 QUERY
Perintah Query bisa dilakukan jika sudah terhubung dengan server MySQL. Berikut ini contoh-contoh
perintah sederhana bagaimana server memberitahukan versi MySQL dan menampilkan tanggal saat ini.

Mysql> SELECT VERSION(), CURRENT_DATE;


+---------------------+--------------+
| VERSION() | CURRENT_DATE |
+---------------------+--------------+
| 5.0.41-community-nt | 2007-07-16 |
+---------------------+--------------+
1 row in set (0.00 sec)

Query di atas menggambarkan beberapa hal penting mengenai MySQL, antara lain:

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Perintah SQL umumnya diakhiri dengan tanda titik koma (semicolon). Namun ada beberapa
pengecualian perintah yang tidak memerlukan tanda semicolon. Misalnya perintah QUIT dan USE.
 MySQL mengirim perintah SQL ke server untuk dieksekusi dan akan ditampilkan hasilnya.
Selanjutnya akan muncul prompt Mysql> yang menandakan bahwa MySQL telah siap untuk
menerima perintah berikutnya.
 MySQL menampilkan hasil query dalam bentuk form tabular (baris dan kolom). Baris pertama berisi
label masing-masing kolom dan baris berikutnya berisi hasil querynya.
 MySQL juga menampilkan berapa banyak baris yang bisa dieksekusi dan berapa lama waktu yang
dibutuhkan untuk proses ekseskusi query tersebut.

Penulisan query bisa ditulis dalam huruf besar ataupun kecil. Berikut ini contoh query yang akan
menghasilkan nilai yang sama:

mysql> SELECT VERSION(), CURRENT_DATE;


mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

Perintah SELECT bisa ditambahkan dengan operasi aritmatika secara langsung seperti berikut ini:

mysql> SELECT SIN(PI()/4), (4+1)*5;


+------------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 | 25 |
+------------------+---------+
1 row in set (0.02 sec)

Dari contoh-contoh query di atas nampak bahwa perintah yang dituliskan tergolong pendek karena hanya
terdiri dari satu baris. Lalu bagaimana jika dalam satu baris terdapat banyak perintah? Untuk
mengatasinya lakukan dengan cara menambahkan tanda titik koma /semicolon (;) diakhir setiap perintah.

bisa terdiri dari banyak perintah yang dituliskan pada hanya pada satu baris saja, yaitu dengan memberi
tanda titik koma (semicolon) diakhir setiap perintah.

mysql> SELECT VERSION(); SELECT NOW();


+---------------------+
| VERSION() |
+---------------------+
| 5.0.41-community-nt |
+---------------------+
1 row in set (0.00 sec)

+---------------------+
| NOW() |
+---------------------+
| 2007-07-16 13:20:35 |
+---------------------+
1 row in set (0.05 sec)

MySQL tidak mempermasalahkan panjangnya perintah yang dituliskan, baik itu satu baris maupun
banyak baris, karena MySQL menentukan kapan berhentinya suatu perintah SQL berdasarkan tanda
semicolon dan bukan berdasarkan akhir baris yang diiunputkan. (dengan kata lain MySQL menerima
free-format input: MySQL akan menerima semua input dan tidak akan mengeksekusinya sampai bertemu
dengan tanda semicolon).

Berikut ini contoh perintah yang terdiri dari banyak baris.

mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
+----------------+--------------+
| USER() | CURRENT_DATE |
+----------------+--------------+
| root@localhost | 2007-07-16 |
+----------------+--------------+
1 row in set (0.08 sec)

Dari contoh di atas, prompt Mysql> akan berubah menjadi prompt -> setelah tombol enter ditekan. Ini
menandakan bahwa MySQL mengaggap perintah query yang diberikan belum lengkap, sampai MySQL
menemukan tanda semicolon.

Selama query belum dieksekusi, perintah query bisa dibatalkan dengan menuliskan \c (huruf c kecil),
contoh:

Mysql> SELECT
-> USER()
-> \c
Mysql>

Prompt Arti
mysql> Siap untuk diberi perintah baru.
Menunggu dibaris berikutnya untuk menerima perintah
->
selanjutnya.
Menunggu dibaris berikutnya, menunggu kelengkapan string yang
'>
diawali dengan tanda petik tunggal (single quote)
Menunggu dibaris berikutnya, menunggu kelengkapan string yang
">
diawali dengan tanda petik ganda (double quote)
Menunggu dibaris berikutnya, menunggu kelengkapan identifier
`>
yang diawali dengan tanda backtick
Menunggu dibaris berikutnya, menunggu melengkapi komentar
/*>
yang diawali dengan /*

Tabel 6.4 Prompt Console MySQL.

Terkadang kekeliruan terjadi saat menuliskan perintah SQL, seharusnya memberi tanda titik koma untuk
mengakhiri perintah malah menekan tombol enter. Contoh :

mysql> SELECT USER()


->

Jika hal di atas terjadi maka MySQL akan menunggu perintah selanjutnya, untuk melengkapinya maka
dibaris berikutnya harus diberi tanda titik koma (semicolon) dan dengan segera MySQL akan
mengeksekusi perintah SQL tersebut :

mysql> SELECT USER()


-> ;
+----------------+
| USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

Prompt '> dan "> menandakan bahwa MySQL menunggu agar perintah query yang mengandung string
segera dilengkapi. Dalam MySQL, penulisan string harus berada diantara pasangan character „'‟ atau
„"‟ (misalnya 'selamat datang' atau "selamat tinggal").

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Seringkali karena kelalaian dalam penulisan, kita tidak mengakhirinya dengan character „'‟ atau „"‟, jika
hal tersebut terjadi maka semua pernyataan query tidak menghasilkan apa-apa dan dibaris berikutnya
akan muncul prompt '> atau ">. Lihat contoh berikut ini:

mysql> SELECT * FROM my_table WHERE nama = 'Smith AND umur < 30;
'>

Untuk membatalkan perintah tersebut tidak bisa langsung dengan menuliskan \c , karena MySQL akan
menterjemahkan \c karena menganggap sebagai serangkaian perintah query. Untuk mengakhirinya
harus ditambahkan tanda petik tunggal, baru kemudian menuliskan \c. Lihat contoh yang benar berikut
ini:

mysql> SELECT * FROM my_table WHERE nama = 'Smith AND umur < 30;
'> '\c
mysql>

penghentian perintah query di atas berlaku pula pada semua prompt (`> , '> , dan ">) jika ada kesalahan
karena kurang lengkapnya penanda string yang diberikan.

6.5 DATABASE DAN TABLE


Jika sebelumnya sudah dipelajari bagaimana cara menghubungkan dan memutuskan database, serta
menggunakan beberapa perintah SELECT Query, sekarang kita akan menggunakan Query jauh lebih
dalam.

Di sub bab berikut akan dibahas bagaimana:

 Menciptakan Database.
 Menghapus Database.
 Menciptakan Table.
 Menghapus Table.
 Merubah Struktur Table.

Untuk mempermudah pemahaman, nanti akan dibuat sebuah database baru yang digunakan sebagai bahan
berlatih. Tetapi sebelum memulai, coba tuliskan perintah query SHOW DATABASES , yang berguna
untuk mengetahui database apa saja yang telah ada pada server MySQL.

mysql> show databases;


+--------------------+
| Database |
+--------------------+
| information_schema |
| binatang |
| dodit |
| meozit |
| mysql |
| phpmyadmin |
| test |
+--------------------+
7 rows in set (0.13 sec)

Daftar nama-nama database yang nampak di atas tidak harus selalu sama dengan komputer pembaca,
tentu saja tergantung dengan database yang telah tersimpan di MySQL pada komputer masing-masing.

Jika sudah nampak daftar nama databasenya, maka pilih salah satu database tersebut untuk diaktifkan
dengan perintah USE. Misalnya mengaktifkan database “test” gunakan cara berikut:

mysql> USE TEST;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Database changed

Catatan:
Perintah USE dan QUIT tidak memerlukan tanda titik koma diakhir perintahnya
(meskipun diberi tanda titik koma (;) hal tersebut masih bisa dibenarkan karena
tidak berpengaruh apapun). Perintah USE harus dituliskan dalam satu baris saja.

6.5.1 MENCIPTAKAN DATABASE


Sekarang buatlah database baru dengan nama “binatang” dengan perintah query CREATE DATABASE,
sebagai kesepakatan bersama gunakan huruf kecil semua untuk penamaan database maupun table. Sangat
disarankan tidak digunakan nama “Binatang” atau “BINATANG” karena beberapa sistem operasi seperti
UNIX akan membedakan ketiga nama tersebut, tetapi untuk Windows hal tersebut akan diabaikan saja
atau dianggap sama.
mysql> CREATE DATABASE binatang;
Query OK, 1 row affected (0.03 sec)

Langkah awal sebelum memanipulasi database “binatang” adalah dengan memilih databasenya secara
ekplisit dengan perintah :

mysql> USE binatang


Database changed

6.5.2 MENGHAPUS DATABASE


Untuk menghapus database sangatlah mudah, gunakan perintah query DROP DATABASE, contoh :

mysql> DROP DATABASE binatang;

6.5.3 MENCIPTAKAN TABLE


Setelah database tercipta dan dipilih dengan perintah USE, maka langkah selanjutnya adalah membuat
table. Tetapi sebelum membuat table ada baiknya mengetahui daftar nama-nama table yang ada ada pada
suatu database, dengan perintah SHOW TABLES.

mysql> SHOW TABLES;


Empty set (0.00 sec)

Pernyataan di atas tidak menampilkan nilai apapun karena database “binatang” belum memiliki table
sama sekali. Untuk membuat table baru, tuliskan perintah query berikut ini:

mysql> CREATE TABLE peliharaan (nama varchar(20),pemilik varchar(20),


-> spesies varchar(20),sex char(1),kelahiran date,kekematianan date)
ENGINE=MyISAM;

mysql> show tables;


+--------------------+
| Tables_in_binatang |
+--------------------+
| peliharaan |
+--------------------+
1 row in set (0.00 sec)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Untuk menguji hasil pembuatan table apakah sesuai dengan yang diharapkan, gunakan pernyataan
DESCRIBE, seperti tampak berikut ini:

mysql> describe peliharaan;


+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| nama | varchar(20) | YES | | NULL | |
| pemilik | varchar(20) | YES | | NULL | |
| spesies | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| kelahiran | date | YES | | NULL | |
| kematian | date | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)

6.5.4 MENGHAPUS TABLE


Untuk menghapus table gunakan perintah DROP TABLE.

mysql> DROP TABLE peliharaan;

6.5.5 MERUBAH STRUKTUR TABLE


Struktur table yang sudah terbentuk atau yang sudah pernah dibuat, sewaktu-waktu bisa dirubah.
Perubahan bisa berarti penambahan, penghapusan, atau penggantian struktur table. Untuk merubah
struktur table digunakan pernyataan ALTER.

Ada banyak fasilitas yang diberikan oleh pernyataan ALTER, kurang lebihnya adalah sebagai berikut:

 ADD,
o Menambahkan kolom baru yang diletakkan pada posisi pertama, atau setelah kolom relative-nya.
o Menambahkan INDEX atau KEY kolom.
o Menambahkan CONSTRAINT.
o Menambahkan PRIMARY KEY, dan lain-lain.
 ALTER,
Semua perubahan struktur table harus diawali dengan pernyataan ALTER.
 CHANGE,
o Merubah urutan posisi kolom pada struktur table.
o Merubah nama kolom.
 DROP,
o Menghapus kolom/field yang sudah ada.
o Menghapus PRIMARY KEY kolom/field.
o Menghapus INDEX kolom/field

Sedangkan struktur lengkap pernyataan ALTER adalah:

ALTER [IGNORE] TABLE tbl_name


alter_specification [, alter_specification] ...

alter_specification:
table_option ...
| ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD FULLTEXT [INDEX|KEY] [index_name] (index_col_name,...)
[WITH PARSER parser_name]
| ADD SPATIAL [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name

Berikut penggunaan klausal ALTER untuk merubah struktur table. Dimana database dan table yang akan
digunakan adalah database „binatang‟ dan table „peliharaan‟ yang pernah dibuat sebelumnya.

mysql> -- Mengaktifkan database binatang


mysql> USE database binatang;

 Menambahkan kolom baru, yang diletakkan pada posisi pertama dari struktur table.

mysql> ALTER TABLE `peliharaan` ADD `id` VARCHAR(5) NOT NULL FIRST;

 Merubah kolom bernama „id‟ menjadi kolom bernama „kode‟.


mysql> ALTER TABLE `peliharaan` CHANGE `id` `kode` VARCHAR(5) NOT NULL;

 Menambahkan INDEX pada kolom „kode‟ yang telah dibuat.

mysql> ALTER TABLE `peliharaan` ADD INDEX (`kode`);

 Merubah tipe data dan lebar tipe data kolom „kode‟ yang semula bertipe varchar(5) menjadi tipe
integer dengan lebar 10.

ALTER TABLE peliharaan CHANGE `kode` `kode` INT(10) NOT NULL;

 Menambahkan PRIMARY KEY pada kolom „kode‟, dengan syarat tidak ada duplikasi data pada
kolom „kode‟.

mysql> ALTER TABLE `peliharaan` ADD PRIMARY KEY (`kode`);

 Menghapus INDEX pada kolom „kode‟.

mysql> ALTER TABLE `peliharaan` DROP INDEX `kode`;

 Menghapus kolom „kode‟.

mysql> ALTER TABLE `peliharaan` DROP `kode`;

6.6 INPUT DATA TABLE


Setelah menciptakan table baru bernama “peliharaan”, maka selanjutya adalah mengisi table tersebut
dengan data baru. Anggap saja kita akan mengisi table “peliharaan” dengan data di bawah ini:

nama pemilik spesies sex kelahiran Kematiaan

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Diane dog m 1979-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29

Input data ke dalam table bisa dilakukan dengan dua cara yaitu:

 Load Data dari file teks.


 Menggunakan perintah query INSERT.

Karena table masih kosong, alangkah baiknya kalau digunakan cara Load Data saja.

Langkah pertama adalah membuat file teks bernama “peliharaan.txt” yang berisi record-record data dan
letakkan file tersebut di path „D:\book\php\a5‟. Alamat path tersebut boleh berbeda sesuaikan dengan
kondisi yang ada.
Setiap baris hanya boleh berisi satu record saja dan masing-masing kolom nilai harus dipisah dengan
tabs. Urutan kolom harus seusai dengan urutan kolom/field pada table “peliharaan” yang telah dibuat
sebelumnya. Jika ada field/kolom yang tak bernilai, maka tambahkan character \N yang berarti NULL
(tak bernilai).

Adapun isi dari file „peliharaan.txt‟ adalah sebagai berikut:

Fluffy Harold cat f 1993-02-04 \N


Claws Gwen cat m 1994-03-17 \N
Buffy Harold dog f 1989-05-13 \N
Fang Benny dog m 1990-08-27 \N
Bowser Diane dog m 1979-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11 \N
Whistler Gwen bird \N 1997-12-09 \N
Slim Benny snake m 1996-04-29 \N

Untuk men-Load file text “peliharaan.txt” ke table “peliharaan” gunakan perintah berikut:

mysql> LOAD DATA LOCAL INFILE 'D:/book/php/a5/peliharaan.txt' INTO TABLE


peliharaan LINES TERMINATED BY '\r\n';
Query OK, 8 rows affected, 9 warnings (0.02 sec)
Records: 8 Deleted: 0 Skipped: 0 Warnings: 9

Path file teks tidak harus 'D:/book/php/a5/peliharaan.txt' tetapi tergantung saat Anda
meletakan filenya.

Jika perintah di atas sukses, maka seluruh data yang ada di file “peliharaan.txt” akan di-load ke
table “peliharaan”.

Untuk memastikkannya cobalah perintah query berikut ini untuk menampilkan isi dari table peliharaan.

mysql> SELECT * FROM peliharaan;


+----------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+---------+---------+------+------------+------------+

Lalu bagaimana jika ada penambahan data baru ke dalam table peliharaan? disinilah kegunaan dari
pernyataan INSERT.

mysql> INSERT INTO peliharaan values ('Puffball', 'Diane', 'hamster',


-> 'f', '1999-03-21', NULL);
mysql> SELECT * FROM peliharaan;
+----------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-21 | NULL |
+----------+---------+---------+------+------------+------------+

Catatan:
NULL dalam pernyataan INSERT memiliki kesamaan dengan \N jika
menggunakan cara LOAD DATA, yang berarti data tidak memiliki nilai.

6.7 UPDATE DATA TABLE


Ada dua cara untuk merubah data dalam table:

 Jika menggunakan Load Data, maka terlebih dahulu edit file text “peliharaan.txt”, kemudian load
kembali ke table “peliharaan” dengan perintah DELETE dan LOAD DATA :

mysql> -- Menghapus Table peliharaan


mysql> DELETE FROM peliharaan;
Query OK, 9 rows affected (0.13 sec)

mysql> LOAD DATA LOCAL INFILE 'D:/book/php/a5/peliharaan.txt' INTO TABLE


peliharaan;
Query OK, 8 rows affected, 7 warnings (0.09 sec)
Records: 8 Deleted: 0 Skipped: 0 Warnings: 7

 Jika menggunakan pernyataan UPDATE, maka perbaiki saja record yang dimaksud dengan
pernyataan UPDATE dan WHERE.

mysql> UPDATE peliharaan SET kelahiran = '1989-08-12' WHERE nama =


'Bowser';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Perintah UPDATE hanya merubah record yang dimaksud, sesuai dengan syarat yang diberikan (klausal
WHERE), tanpa harus me-load ulang keseluruhan data ke table seperti cara LOAD DATA.

6.8 PENCARIAN DATA TABLE


Topik yang akan dibahas antara lain:
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
 Menampilkan Semua Data.
 Menampilkan Kolom Dengan Syarat.
 Menampilkan Kolom Tertentu.
 Pengurutan Baris.

Pernyataan SELECT berguna untuk mengambil informasi yang berasal dari table. Struktur umum dari
pernyataan SELECT adalah sebagai berikut :

SELECT nama_field
FROM nama_table
WHERE kondisi_diinginkan;

nama_field bisa terdiri dari beberapa kolom atau semua kolom yang ingin dilihat. nama_table
merupakan table yang menjadi rujukan untuk ditelusuri. Sedangkan WHERE bersifat pilihan, jika
disertakan, maka kondisi_diinginkan bisa digunakan sebagai syarat pencarian.

6.8.1 MENAMPILKAN SEMUA DATA


Untuk menampilkan semua data yang ada pada table gunakan pernyataan SELECT, maka isi table secara
keseluruhan akan ditampilkan.

mysql> SELECT * FROM peliharaan;


+----------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-21 | NULL |
+----------+---------+---------+------+------------+------------+

6.8.2 MENAMPILKAN KOLOM DENGAN SYARAT


Untuk menampilkan beberapa baris/record tertentu yang sesuai dengan kondisi yang disyaratkan maka
perintah SELECT harus diberi batasan dengan klausal WHERE, dimana kondisi yang diberikan bersifat
case-insensitive, sehingga kondisi nama='bowser' atau nama='BOWSER' akan menghasilkan nilai
yang sama.

mysql> SELECT * FROM peliharaan WHERE nama='Bowser';


+--------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+--------+---------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-12 | 1995-07-29 |
+--------+---------+---------+------+------------+------------+
Pada dasarnya penentuan kondisi tidak dibatasi oleh hanya satu kolom saja. Sebagai contoh, jika ingin
ditampilkan binatang yang dilahirkan mulai atau setelah 1998, maka querynya adalah sebagai berikut :

mysql> SELECT * FROM peliharaan WHERE kelahiran >= '1998-01-01';


+----------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+----------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Puffball | Diane | hamster | f | 1999-03-21 | NULL |
+----------+---------+---------+------+------------+----------+

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Bisa juga kondisi yang diberikan merupakan kombinasi dari dua atau lebih kolom untuk memperoleh
hasil yang lebih spesifik. Penghubung antara dua atau lebih kondisi dihubungakan dengan operator AND
atau OR, contoh:

mysql> SELECT * FROM peliharaan WHERE spesies = 'dog' AND sex = 'f';
+-------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+-------+---------+---------+------+------------+----------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+---------+---------+------+------------+----------+

mysql> SELECT * FROM peliharaan WHERE spesies = 'snake'


-> OR spesies = 'bird';
+----------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+----------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+---------+---------+------+------------+----------+

Operator AND dan OR juga bisa dikombinasikan lagi, dimana hirarki AND lebih tinggi daripada OR.
Sebaiknya digunakan tanda kurang buka dan kurung tutup “()” untuk pengelompokan urutan prioritas.

mysql> SELECT * FROM peliharaan WHERE (spesies = 'cat' AND sex = 'm')
-> OR (spesies = 'dog' AND sex = 'f');
+-------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+-------+---------+---------+------+------------+----------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+---------+---------+------+------------+----------+

6.8.3 MENAMPILKAN KOLOM TERTENTU


Jika kolom terntentu yang akan ditampilkan, maka tuliskan kolom-kolom tersebut setelah pernyataan
SELECT, dimana setiap kolom harus dipisah dengan tanda koma (“,”). Misalnya ingin menampilkan
nama binatang dan kapan tanggal lahir binatang tersebut :

mysql> SELECT nama, kelahiran FROM peliharaan;


+----------+------------+
| nama | kelahiran |
+----------+------------+
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Buffy | 1989-05-13 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-12 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Puffball | 1999-03-21 |
+----------+------------+

Contoh: menampilkan siapa pemilik binatang tersebut, gunakan query:

mysql> SELECT pemilik FROM peliharaan;


+---------+
| pemilik |
+---------+
| Harold |
| Gwen |
| Harold |
| Benny |
| Diane |
| Gwen |

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| Gwen |
| Benny |
| Diane |
+---------+

Untuk mengurangi nama pemilik binatang muncul lebih dari satu kali gunakan pernyataan DISTINCT
mysql> SELECT DISTINCT pemilik FROM peliharaan;
+---------+
| pemilik |
+---------+
| Harold |
| Gwen |
| Benny |
| Diane |
+---------+

Mengkombinasikan pernyataan SELECT dan pernyataan WHERE untuk memperoleh hasil penyaringan
data.

Contoh: bagaimana menampilkan tanggal lahir binatang khusus anjing dan kucing saja.
mysql> SELECT nama, spesies, kelahiran FROM peliharaan
-> WHERE spesies = 'dog' OR spesies = 'cat';
+--------+---------+------------+
| nama | spesies | kelahiran |
+--------+---------+------------+
| Fluffy | cat | 1993-02-04 |
| Claws | cat | 1994-03-17 |
| Buffy | dog | 1989-05-13 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-12 |
+--------+---------+------------+

6.8.4 PENGURUTAN BARIS


Seringkali kita membutuhkan informasi mengenai baris-baris table dalam kondisi terurut agar mudah
dibaca. Cara mengurutkannya adalah dengan menggunakan pernyataan ORDER BY. Pengurutan baris
table dibedakan menjadi dua jenis, yaitu dari kecil ke besar (ORDER BY ASC atau ORDER BY) dan dari
besar ke kecil (ORDER BY DESC).

Contoh: Query yang menampilkan kolom “nama” dan kolom “kelahiran”, diurutkan berdasarkan kolom
“kelahiran” dari kecil ke besar (ascending) :

mysql> SELECT nama, kelahiran FROM peliharaan ORDER BY kelahiran;


+----------+------------+
| nama | kelahiran |
+----------+------------+
| Buffy | 1989-05-13 |
| Bowser | 1989-08-12 |
| Fang | 1990-08-27 |
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Slim | 1996-04-29 |
| Whistler | 1997-12-09 |
| Chirpy | 1998-09-11 |
| Puffball | 1999-03-21 |
+----------+------------+

Contoh query yang menampilkan kolom “nama” dan kolom “kelahiran”, diurutkan berdasarkan kolom
“kelahiran” dari besar ke kecil (descending) :

mysql> SELECT nama, kelahiran FROM peliharaan ORDER BY kelahiran DESC;


+----------+------------+
| nama | kelahiran |

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
+----------+------------+
| Puffball | 1999-03-21 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Claws | 1994-03-17 |
| Fluffy | 1993-02-04 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-12 |
| Buffy | 1989-05-13 |
+----------+------------+

Acuan pengurutan baris dengan ORDER BY boleh lebih dari satu kolom yang berbeda, dimana urutan
penyelesaiannya dimulai dari kiri ke kanan. Dan masing-masing kolom bisa memiliki jenis pengurutan
yang berbeda pula, baik ascending ataupun descending.

Misalnya menampilkan “nama”, “spesies”, dan “kelahiran” yang diurutkan berdasarkan kolom “spesies”
secara ascending, selanjutnya diurutkan berdasarkan kolom “kelahiran” secara descending :

mysql> SELECT nama, spesies, kelahiran FROM peliharaan


-> ORDER BY spesies, kelahiran DESC;
+----------+---------+------------+
| nama | spesies | kelahiran |
+----------+---------+------------+
| Chirpy | bird | 1998-09-11 |
| Whistler | bird | 1997-12-09 |
| Claws | cat | 1994-03-17 |
| Fluffy | cat | 1993-02-04 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-12 |
| Buffy | dog | 1989-05-13 |
| Puffball | hamster | 1999-03-21 |
| Slim | snake | 1996-04-29 |
+----------+---------+------------+

6.9 PERHITUNGAN TANGGAL


MySQL menyediakan banyak sekali fungsi perhitungan yang berkenaan dengan tanggal. Misalnya
menghitung umur atau sekedar mengambil beberapa bagian dari komponen tanggal.

Berikut ini contoh untuk mengetahui berapa tahun umur masing-masing binatang, caranya adalah dengan
menghitung selisih antara tanggal saat ini dan tanggal lahir

mysql> SELECT nama, kelahiran, CURDATE(),


-> (YEAR(CURDATE())-YEAR(kelahiran))
-> - (RIGHT(CURDATE(),5)<RIGHT(kelahiran,5)) AS umur
-> FROM peliharaan;
+----------+------------+------------+------+
| nama | kelahiran | CURDATE() | umur |
+----------+------------+------------+------+
| Fluffy | 1993-02-04 | 2007-12-13 | 14 |
| Claws | 1994-03-17 | 2007-12-13 | 13 |
| Buffy | 1989-05-13 | 2007-12-13 | 18 |
| Fang | 1990-08-27 | 2007-12-13 | 17 |
| Bowser | 1989-08-12 | 2007-12-13 | 18 |
| Chirpy | 1998-09-11 | 2007-12-13 | 9 |
| Whistler | 1997-12-09 | 2007-12-13 | 10 |
| Slim | 1996-04-29 | 2007-12-13 | 11 |
| Puffball | 1999-03-21 | 2007-12-13 | 8 |
+----------+------------+------------+------+

Disini, YEAR() berarti mengambil nilai tahun dari tanggal dan RIGHT() mengambil sejumlah lima
character dimulai dari kanan yang merupakan bagian dari tanggal (MM-DD tahun kalender). Hasil evaluasi
(RIGHT(CURDATE(),5) < RIGHT(kelahiran,5)) akan bernilai 0 atau 1 sebagai penyesuaian.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dan AS umur merupakan penamaan alias agar mudah dibaca. CURDATE() adalah fungsi yang berisi
tanggal saat ini.

Contoh di atas bisa diurutkan dengan menggunakan pernyataan ORDER BY, misalnya diurutkan
berdasarkan kolom “nama” secara ascending :

mysql> SELECT nama, kelahiran, CURDATE(),


-> (YEAR(CURDATE())-YEAR(kelahiran))
-> - (RIGHT(CURDATE(),5)<RIGHT(kelahiran,5)) AS umur
-> FROM peliharaan ORDER BY nama;
+----------+------------+------------+------+
| nama | kelahiran | CURDATE() | umur |
+----------+------------+------------+------+
| Bowser | 1989-08-12 | 2007-12-13 | 18 |
| Buffy | 1989-05-13 | 2007-12-13 | 18 |
| Chirpy | 1998-09-11 | 2007-12-13 | 9 |
| Claws | 1994-03-17 | 2007-12-13 | 13 |
| Fang | 1990-08-27 | 2007-12-13 | 17 |
| Fluffy | 1993-02-04 | 2007-12-13 | 14 |
| Puffball | 1999-03-21 | 2007-12-13 | 8 |
| Slim | 1996-04-29 | 2007-12-13 | 11 |
| Whistler | 1997-12-09 | 2007-12-13 | 10 |
+----------+------------+------------+------+

Pengurutan berdasarkan kolom “umur” secara ascending :

mysql> SELECT nama, kelahiran, CURDATE(),


-> (YEAR(CURDATE())-YEAR(kelahiran))
-> - (RIGHT(CURDATE(),5)<RIGHT(kelahiran,5)) AS umur
-> FROM peliharaan ORDER BY umur;
+----------+------------+------------+------+
| nama | kelahiran | CURDATE() | umur |
+----------+------------+------------+------+
| Puffball | 1999-03-21 | 2007-12-13 | 8 |
| Chirpy | 1998-09-11 | 2007-12-13 | 9 |
| Whistler | 1997-12-09 | 2007-12-13 | 10 |
| Slim | 1996-04-29 | 2007-12-13 | 11 |
| Claws | 1994-03-17 | 2007-12-13 | 13 |
| Fluffy | 1993-02-04 | 2007-12-13 | 14 |
| Fang | 1990-08-27 | 2007-12-13 | 17 |
| Buffy | 1989-05-13 | 2007-12-13 | 18 |
| Bowser | 1989-08-12 | 2007-12-13 | 18 |
+----------+------------+------------+------+

Dengan query yang serupa maka bisa dietahui pula binatang apa saja yang telah mati. Perlu diingat bahwa
binatang yang telah mati pada kolom “kematian” akan terisi tanggal, sedangkan binatang yang masih
hidup di kolom “kematian” akan terisi NULL.

Sehingga penulisan query yang benar adalah :

mysql> SELECT nama, kelahiran, kematian,


-> (YEAR(kematian)-YEAR(kelahiran)) -
-> (RIGHT(kematian,5)<RIGHT(kelahiran,5)) AS umur
-> FROM peliharaan WHERE kematian IS NOT NULL ORDER BY umur;
+--------+------------+------------+------+
| nama | kelahiran | kematian | umur |
+--------+------------+------------+------+
| Bowser | 1989-08-12 | 1995-07-29 | 5 |
+--------+------------+------------+------+

Salah satu fungsi MySQL yang lain dan berkenaan dengan tanggal adalah month(), fungsi ini berguna
untuk mengetahui bulan dari suatu tanggal.

Berikut ini contoh untuk mengetahui jatuh pada bulan berapa ulang tahun masing-masing binatang :
mysql> SELECT nama, kelahiran, MONTH(kelahiran) FROM peliharaan;
+----------+------------+------------------+
| nama | kelahiran | MONTH(kelahiran) |
+----------+------------+------------------+
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| Fluffy | 1993-02-04 | 2 |
| Claws | 1994-03-17 | 3 |
| Buffy | 1989-05-13 | 5 |
| Fang | 1990-08-27 | 8 |
| Bowser | 1989-08-12 | 8 |
| Chirpy | 1998-09-11 | 9 |
| Whistler | 1997-12-09 | 12 |
| Slim | 1996-04-29 | 4 |
| Puffball | 1999-03-21 | 3 |
+----------+------------+------------------+

6.10 POLA PENCOCOKAN


MySQL mengenal dua model pola pencocokan yaitu SQL Pattern dan Extended Regular Expressions.
Tujuan dari pola pencocokan adalah mencari data seusai dengan pola yang telah digariskan, dengan kata
lain query yang dihasilkan harus sesuai dengan aturan/pola yang telah dibuat. Dalam MySQL standar pola
SQL bersifat case-insensitive.

Pola pencocokkan dengan model SQL Pattern :


 Gunakan tanda garis bawah („_‟) jika mencocokkan dengan character tunggal.
 Gunakan tanda prosentase („%‟) jika mecocokkan sejumlah sembarang character (termasuk character
kosong).

Catatan:
Jangan pernah menggunakan tanda = atau <> ketika menggunakan pola SQL,
gunakan LIKE atau NOT LIKE sebagai operator perbandingan.

Mencari “nama” yang diawali dengan „b‟:


mysql> SELECT * FROM peliharaan WHERE nama LIKE 'b%';
+--------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+--------+---------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-12 | 1995-07-29 |
+--------+---------+---------+------+------------+------------+

Mencari “nama” yang diakhiri dengan „fy‟:

mysql> SELECT * FROM peliharaan WHERE nama LIKE '%fy';


+--------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+--------+---------+---------+------+------------+----------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+---------+---------+------+------------+----------+

Mencari “nama” yang mengandung character „w‟:

mysql> SELECT * FROM peliharaan WHERE nama LIKE '%w%';


+----------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-12 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+---------+---------+------+------------+------------+

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Mencari “nama” yang terdiri dari tepat lima character, gunakan tanda „_‟ sebanyak lima :

mysql> SELECT * FROM peliharaan WHERE nama LIKE '_____';


+-------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+-------+---------+---------+------+------------+----------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+---------+---------+------+------------+----------+

Pola pencocokkan dengan model Extended Regular Expressions :


Untuk mecocokan dengan pola yang diberikan harus menggunakan operator REGEXP dan NOT REGEXP
atau bisa juga RLIKE dan NOT RLIKE, kedua pasangan operator itu adalah sama.

Beberapa karakteristik extended regular expressions yang perlu diperhatikan:

 '.' untuk mencari kesesuaian dengan character tunggal.


 '[...]' untuk mencari kesesuaian sembarang character yang terdaftar dalam kelas character. Sebagai
contoh: „[abc]‟ sesuai dengan character „a‟,‟b‟,‟c‟. '[a-z]' untuk mencari sembarang character yang
ada dalam rentang character. '[0-9]' untuk mencari sembarang angka yang ada dalam rentang angka.
 '*' menyatakan sembarang nilai. Sebagai contoh: 'x*' akan menampilkan sembarang nilai yang
diawali dengan character x. '[0-9]*' akan menampilkan sembarang nilai yang diawali dengan angka
antara 0 sampai 9. '.*' menampilkan sembarang nilai apapun.
 Penguncian pola pencocokkan terhadap suatu nilai bisa dilakukan di awal (tambahakan tanda '^' di
awal pola) maupun di akhir (tanda '$' di akhir pola).

Contoh pola pencocokkan dengan menggunakan metode extended regular expression:

Mencari nama yang diawali dengan huruf „b‟, gunakan „^‟ di awal kolom nama:

mysql> SELECT * FROM peliharaan WHERE nama REGEXP '^b';


+--------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+--------+---------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-12 | 1995-07-29 |
+--------+---------+---------+------+------------+------------+

Gunakan kata kunci BINARY untuk memaksa pola pencarian agar bersifat case-sensitive. Sehingga
perintah query di atas bisa dipaksa untuk mencari nama hanya yang berawalan huruf „b‟ kecil
(lowercase) :

mysql> SELECT * FROM peliharaan WHERE nama REGEXP BINARY '^b';

Mencari nama yang diakhiri dengan „fy‟, letakkan „$‟ diakhir kolom nama:

mysql> SELECT * FROM peliharaan WHERE nama REGEXP 'fy$';


+--------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+--------+---------+---------+------+------------+----------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+---------+---------+------+------------+----------+

Mencari nama yang mengandung huruf „w‟, gunakan query berikut:

mysql> SELECT * FROM peliharaan WHERE nama REGEXP 'w';


+----------+---------+---------+------+------------+------------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+----------+---------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| Bowser | Diane | dog | m | 1989-08-12 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+---------+---------+------+------------+------------+

Untuk mencari nama yang terdiri dari tepat lima character, gunakan „^‟ dan „$‟ , diletakkan diawal dan
diakhir kolom nama, serta tambahkan pula lima character titik „.‟ yang diletakkan diantaranya:

mysql> SELECT * FROM peliharaan WHERE nama REGEXP '^.....$';


+-------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+-------+---------+---------+------+------------+----------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+---------+---------+------+------------+----------+

Contoh sebelumnya bisa dituliskan dengan menggunakan {n}, yang berarti diulang sebanyak - n - kali:

mysql> SELECT * FROM peliharaan WHERE nama REGEXP '^.{5}$';


+-------+---------+---------+------+------------+----------+
| nama | pemilik | spesies | sex | kelahiran | kematian |
+-------+---------+---------+------+------------+----------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+---------+---------+------+------------+----------+

6.11 MENGHITUNG JUMLAH BARIS


Untuk mengetahui berapa jumlah baris table yang dihasilkan dari suatu perintah query, bisa digunakan
pernyataan COUNT().
mysql> SELECT COUNT(*) FROM peliharaan;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+

Menampilkan nama pemilik serta berapa jumah binatang yang dimiliki :

mysql> SELECT pemilik, COUNT(*) FROM peliharaan GROUP BY pemilik;


+---------+----------+
| pemilik | COUNT(*) |
+---------+----------+
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+---------+----------+

Pernyataan GROUP BY berguna untuk mengelompokkan semua baris/record berdasarkan kolom


pemilik. Tanpa GROUP BY akan muncul pesan kesalahan:

Mysql> SELECT pemilik, COUNT(*) FROM peliharaan;


ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause

Contoh untuk menampilkan berapa jumlah binatang per spesiesnya:

mysql> SELECT spesies, COUNT(*) FROM peliharaan GROUP BY spesies;


+---------+----------+
| spesies | COUNT(*) |
+---------+----------+
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| snake | 1 |
+---------+----------+

Contoh untuk menampilkan jumlah binatang per sex:

mysql> SELECT sex, COUNT(*) FROM peliharaan GROUP BY sex;


+------+----------+
| sex | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+

Jika sex tidak diketahui maka kolom sex bernilai NULL.

Contoh: Mencari jumlah binatang yang dikelompokkan berdasarkan spesies dan sex :

mysql> SELECT spesies, sex, COUNT(*) FROM peliharaan GROUP BY spesies, sex;
+---------+------+----------+
| spesies | sex | COUNT(*) |
+---------+------+----------+
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+

Contoh: Mencari jumlah binatang khusus “dog” dan “cat”, dikelompokkan berdasarkan spesies dan sex :

mysql> SELECT spesies, sex, COUNT(*) FROM peliharaan


-> WHERE spesies = 'dog' OR spesies = 'cat'
-> GROUP BY spesies, sex;
+---------+------+----------+
| spesies | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+

6.12 RELASI ANTAR TABLE


Suatu aplikasi yang besar bisa dipastikan akan melibatkan banyak table, dimana antara table satu dengan
table yang lain secara konsep saling berhubungan. Hubungan antar table tersebut disebut dengan relasi
table. Relasi table mengacu pada kaidah-kaidah basis data, misalnya tentang Data Alur Diagram
(DAD/DFD), E-R Model, serta normalisasi. Kaidah-kaidah basis data tidak akan dijelaskan disini, untuk
mengetahui lebih dalam tentang basis data silahkan baca di buku-buku basis data.

Agar lebih mudah memahami bagaimana relasi suatu table, silahkan perhatikan gambar di bawah ini.
Gambar tersebut menunjukkan secara konseptual relasi antar table, dimana table_pegawai dihubungkan
dengan table_jabatan berdasarkan field jabatanid. Field jabatanid pada table_pegawai merupakan
foreign key sedangkan jabatanid pada table_jabatan merupakan primary key. Hubungan table tersebut
bersifat one to many (satu ke banyak)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
many one

Sebelum meralasikan table silahkan ikuti instruksi berikut ini:

mysql> create table table_pegawai (nip varchar(5),


-> nama varchar(35), jabatanid char(2)) ENGINE=MyISAM;

mysql> create table table_jabatan (jabatanid char(2),


-> jabatan varchar(35));

mysql> insert into table_pegawai values ('00001', 'Dodit Suprianto', '01')


-> ,('00002','Rini Agustina','02'),('00003','Tifanny','01');

mysql> insert into table_jabatan values ('01','Manager'),


-> ('02','Supervisor');

mysql> select * from table_pegawai;


+-------+-----------------+-----------+
| nip | nama | jabatanid |
+-------+-----------------+-----------+
| 00001 | Dodit Suprianto | 01 |
| 00002 | Rini Agustina | 02 |
| 00003 | Tifanny | 01 |
+-------+-----------------+-----------+

mysql> select * from table_jabatan;


+-----------+------------+
| jabatanid | jabatan |
+-----------+------------+
| 01 | Manager |
| 02 | Supervisor |
+-----------+------------+

Setelah kedua table terbentuk dan data sudah diinputkan datanya, maka coba tampilkan data dari kedua
table tersebut dengan perintah SELECT. Dimana data yang ditampilkan adalah kolom “nip”, “nama”
yang diambil dari table “table_pegawai” dan kolom “jabatan” diambil dari table “table_jabatan”.

mysql> select nip, nama, jabatan from table_pegawai, table_jabatan


-> where table_pegawai.jabatanid=table_jabatan.jabatanid;
+-------+-----------------+------------+
| nip | nama | jabatan |
+-------+-----------------+------------+
| 00001 | Dodit Suprianto | Manager |
| 00002 | Rini Agustina | Supervisor |
| 00003 | Tifanny | Manager |
+-------+-----------------+------------+
3 rows in set (0.00 sec)

6.13 GROUP BY
Untuk mengetahui lebih jauh tentang GROUP BY, maka terlebih dahulu buatlah table “siswa” sebagai
percobaan fungsi-fungsi GROUP BY.

mysql> create database kelompok;

mysql> use kelompok;

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
mysql> CREATE TABLE siswa (
-> nis CHAR(5) NOT NULL ,
-> nama VARCHAR(25) NOT NULL ,
-> tgllahir DATE NOT NULL ,
-> nilai SMALLINT UNSIGNED NOT NULL
-> ) ENGINE = MYISAM;

mysql> INSERT INTO siswa (nis,nama,tgllahir,nilai)


-> VALUES ('00001', 'Bambang', '1991-12-10', '8'),
-> ('00001', 'Heru', '1993-04-22', '9'),
-> ('00002', 'Sigit', '1992-12-09', '7'),
-> ('00003', 'Baseman', '1992-04-02', '9'),
-> ('00004', 'Heru', '1992-04-02', '10'),
-> ('00001', 'Heru', '1993-04-22', '8'),
-> ('00002', 'Sigit', '1992-12-09', '9');

mysql> select * from siswa order by nis;


+-------+---------+------------+-------+
| nis | nama | tgllahir | nilai |
+-------+---------+------------+-------+
| 00000 | Bambang | 1991-12-10 | 8 |
| 00001 | Heru | 1993-04-22 | 9 |
| 00001 | Heru | 1993-04-22 | 8 |
| 00002 | Sigit | 1992-12-09 | 7 |
| 00002 | Sigit | 1992-12-09 | 9 |
| 00003 | Baseman | 1992-04-02 | 9 |
+-------+---------+------------+-------+

6.13.1 FUNGSI AGREGRATE


AVG([DISTINCT] expr)
Menampilkan rata-rata nilai kolom/field table. Dimana field yang dirata-rata harus bertipe numerik.
Sebagai contoh menampilkan rata-rata “nilai” siswa.

mysql> select nis, nama, avg(nilai)


-> from siswa
-> group by nis,nama;
+-------+---------+------------+
| nis | nama | avg(nilai) |
+-------+---------+------------+
| 00000 | Bambang | 8.0000 |
| 00001 | Heru | 8.5000 |
| 00002 | Sigit | 8.0000 |
| 00003 | Baseman | 9.0000 |
+-------+---------+------------+

COUNT(expr)
Menghitung jumlah record(baris) pada table. Contoh menampilkan jumlah siswa yang lahir antara tahun
1992 sampai 1993.

mysql> select nis, nama, tgllahir, count(*)


-> from siswa
-> where year(tgllahir) between 1992 and 1993
-> group by nis, nama, tgllahir;
+-------+---------+------------+----------+
| nis | nama | tgllahir | count(*) |
+-------+---------+------------+----------+
| 00001 | Heru | 1993-04-22 | 2 |
| 00002 | Sigit | 1992-12-09 | 2 |
| 00003 | Baseman | 1992-04-02 | 1 |
+-------+---------+------------+----------+

COUNT(DISTINCT expr,[expr...])
Menghitung jumlah baris (record) table, dimana field “nama” yang kembar tidak diperhitungkan.
Sehingga klausa DISTINCT harus ditambahkan.

mysql> select count(distinct nama) from siswa;


+----------------------+
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
| count(distinct nama) |
+----------------------+
| 4 |
+----------------------+

Contoh: menampilkan semua baris (record) tanpa memperhitungkan field “nama” yang kembar. Sehingga
klausa DISTINCT tidak perlu ditambahkan.

mysql> select count(*) from siswa;


+----------+
| count(*) |
+----------+
| 6 |
+----------+

MIN([DISTINCT] expr), MAX([DISTINCT] expr)


Untuk menampilkan nilai terendah suatu record pada table gunakan klausal MIN, dan sebaliknya untuk
menampilkan nilai tertinggi suatu record pada table gunakan klausal MAX.

mysql> select * from siswa order by nis;


+-------+---------+------------+-------+
| nis | nama | tgllahir | nilai |
+-------+---------+------------+-------+
| 00000 | Bambang | 1991-12-10 | 8 |
| 00001 | Heru | 1993-04-22 | 9 |
| 00001 | Heru | 1993-04-22 | 8 |
| 00002 | Sigit | 1992-12-09 | 7 |
| 00002 | Sigit | 1992-12-09 | 9 |
| 00003 | Baseman | 1992-04-02 | 9 |
+-------+---------+------------+-------+

Field “nilai” yang terendah untuk nama=”sigit” adalah 7 dan nilai tertinggi adalah 9. Sedangkan field
“nilai” yang terendah untuk nama=”Heru” adalah 8 dan nilai tertinggi adalah 9.

Perhatikan perbedaannya dengan contoh berikut ini:

mysql> select nis, nama, min(nilai)


-> from siswa
-> group by nis, nama;
+-------+---------+------------+
| nis | nama | min(nilai) |
+-------+---------+------------+
| 00000 | Bambang | 8 |
| 00001 | Heru | 8 |
| 00002 | Sigit | 7 |
| 00003 | Baseman | 9 |
+-------+---------+------------+

mysql> select nis, nama, max(nilai)


-> from siswa
-> group by nis, nama;
+-------+---------+------------+
| nis | nama | max(nilai) |
+-------+---------+------------+
| 00000 | Bambang | 8 |
| 00001 | Heru | 9 |
| 00002 | Sigit | 9 |
| 00003 | Baseman | 9 |
+-------+---------+------------+

SUM([DISTINCT] expr)
Menjumlahkan nilai kolom/field pada table, dimana yang bisa dijumlahkan harus bertipe numerik.
Sedangkan untuk mengabaikan field yang kembar perlu ditambahkan klausal DISTINCT.

mysql> select sum(nilai)


-> from siswa;
+------------+
| sum(nilai) |

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
+------------+
| 50 |
+------------+

mysql> select nis, nama, sum(nilai)


-> from siswa
-> group by nis, nama;
+-------+---------+------------+
| nis | nama | sum(nilai) |
+-------+---------+------------+
| 00000 | Bambang | 8 |
| 00001 | Heru | 17 |
| 00002 | Sigit | 16 |
| 00003 | Baseman | 9 |
+-------+---------+------------+

6.13.2 GROUP BY DAN HAVING


HAVING dan WHERE memiliki kemiripan yaitu sebagai klausal syarat. Namun keduanya memiliki
perbedaan dalam fungsi dan penggunaannya. Adapun perbedaannya adalah sebagai berikut:

Klausal WHERE digunakan jika:


 Dikenakan pada agregat (memiliki klausal GROUP BY) atau pun tidak, bergantung konteksnya.

Klausal HAVING digunakan jika:


 Field yang menjadi syarat juga ikut ditampilkan melalui SELECT.
 Hanya dikenakan pada agregrat (memiliki klausal GROUP BY)

Untuk memperjelas, silahkan simak contoh perbedaannya berikut ini:

mysql> select nis,nama,sum(nilai),tgllahir


-> from siswa
-> where year(tgllahir) between 1992 and 1993
-> group by nis,nama;
+-------+---------+------------+------------+
| nis | nama | sum(nilai) | tgllahir |
+-------+---------+------------+------------+
| 00001 | Heru | 17 | 1993-04-22 |
| 00002 | Sigit | 16 | 1992-12-09 |
| 00003 | Baseman | 9 | 1992-04-02 |
+-------+---------+------------+------------+

mysql> select nis, nama, sum(nilai), tgllahir


-> from siswa
-> group by nis, nama, tgllahir
-> having year(tgllahir) between 1992 and 1993;
+-------+---------+------------+------------+
| nis | nama | sum(nilai) | tgllahir |
+-------+---------+------------+------------+
| 00001 | Heru | 17 | 1993-04-22 |
| 00002 | Sigit | 16 | 1992-12-09 |
| 00003 | Baseman | 9 | 1992-04-02 |
+-------+---------+------------+------------+

Contoh HAVING yang salah:

mysql> select nis, nama, sum(nilai)


-> from siswa
-> group by nis, nama
-> having year(tgllahir) between 1992 and 1993;
ERROR 1054 (42S22): Unknown column 'tgllahir' in 'having clause'

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 7
PHP DAN DATABASE MySQL

Sebelum beranjak ke pembahasan utama, perlu dipahami bagaimana konsep kerja antara database
MySQL, Web Server (Apache), PHP dan Browser Client.

Penjelasan gambar:

1. Pengunjung web browser melakukan permintaan pengiriman halaman web (web request) dengan
menggunakan URL standar.
2. Web server dalam hal ini adalah apache, mengenali permintaan halaman web tersebut, kemudian
menterjemahkan file yang mengandung script PHP.
3. Halaman web yang terkirim harus mengandung script PHP berisi perintah untuk menciptakan
koneksi ke database MySQL berupa SQL query.
4. Database MySQL memberikan tanggapan atas permintaan sambungan ke MySQL dan SQL
query sesuai dengan isi script PHP yang dikirim.
5. Script PHP menyimpan hasil query database MySQL menjadi satu atau lebih variable PHP,
dengan pernyataan echo, maka hasil request dikeluarkan.
6. Selanjutnya PHP meng-kopi hasilnya dalam bentuk HTML yang telah diciptakan oleh web
server.
7. Web server mengirim HTML yang sudah jadi ke web browser client.

Pengaksesan database MySQL dengan menggunakan PHP banyak memanfaatkan fungsi-fungsi built-in
yang telah disediakan oleh PHP. Untuk mengetahui fungsi apa saja yang bisa digunakan, silahkan baca
bab sebelumnya yaitu tentang “FUNGSI-FUNGSI BUILT IN PHP”, khususnya sub bab “FUNGSI
MYSQL”

Agar lebih mudah memahami, terlebih dahulu harus dibuat database serta tablenya. Database dan table
tersebut nantinya akan dipakai sebagai latihan pada pembahasan berikutnya. Untuk membuatnya, ikuti
langkah-langkah berikut ini :

Perintah
Buka aplikasi console MySQL, jika diminta untuk mengisi password maka
abaikan saja, lanjutkan saja dengan menekan tombol enter.
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.22-
community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Buat database baru dengan nama “databaseku”.
mysql> CREATE DATABASE databaseku;
Pilih dan aktifkan database “databaseku”.
mysql> USE databaseku;
Database changed
Buat table baru dengan nama “datadiri”.
mysql> CREATE TABLE `datadiri` (
-> `nis` VARCHAR( 5 ) NOT NULL ,
-> `nama` VARCHAR( 25 ) NOT NULL ,
-> `alamat` VARCHAR( 45 ) NOT NULL ,
-> `tgl_lahir` DATE NOT NULL ,
-> `jml_anak` TINYINT NOT NULL ,
-> PRIMARY KEY ( `nis` )
-> ) ENGINE = MYISAM ;
Isikan data-datanya dalam table “datadiri”.
mysql> INSERT INTO `datadiri` ( `nis` , `nama` , `alamat` ,
`tgl_lahir` , `jml_anak` )
-> VALUES (
-> '00001', 'Dodit Suprianto', 'Iswahyudi BA 4 Malang',
'1975-03-16', '2'
-> ), (
-> '00002', 'Rini Agustina', 'Sartono SH 4 Malang', '1978-
08-09', '1'
-> );

Jika perintah query sql di atas sukses dilakukan, maka sekarang kita telah memiliki database bernama
“databaseku” yang memiliki satu table dengan nama “datadiri”.

7.1 KONEKSI MYSQL DENGAN PHP


Sebelum memanipulasi table dalam database MySQL (perintah select, insert, delete, update), diperlukan
adanya koneksi ke MySQL dalam script PHP-nya. Tidak ada sesuatu yang khusus dalam membuat
koneksi dengan MySQL, PHP telah menyediakan fungsi built-in untuk membuat koneksi dengan
MySQL.

Struktur : mysql_connect(address, username, password);

address merupakan alamat IP (internet protocol) atau nama host komputer dimana software MySQL
server bekerja („localhost‟ bisa digunakan, selama web server dan MySQL bekerja dalam satu komputer).
username merupakan nama user yang berhak untuk mengakses database MySQL (jika tidak dirubah,
nama user standarnya adalah root). password merupakan kata sandi yang telah dibuat di database MySQL
(secara default, aplikasi wamp5 membiarkan password kosong tidak diisi).

Karena fungsi mysql_connect() membutuhkan nilai keluaran, maka hasil koneksi harus dilimpahkan pada
suatu variable, sehingga koneksi ke MySQL yang harus dibuat menjadi:

<?php
// Koneksi ke server MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat untuk saat
ini.</p>';
exit();
}
?>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Symbol @, lebih dikenal dengan error suppression operator, berfungsi untuk memberitahukan fungsi php,
jika ada kesalahan maka akan ditampilkan pesan dengan bahasa yang mudah dipahami oleh programmer.

Setelah koneksi ke MySQL terbentuk, maka langkah selanjutnya adalah memilih database mana yang
akan diaktifkan untuk dilakukan operasi manipulasi.

Struktur : mysql_select_db($dbname, $conn_var);

Dengan anggapan bahwa kita telah membuat database dengan nama “databaseku”, maka script yang
harus dibuat adalah:

<?php
// Koneksi ke server MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat untuk saat
ini.</p>';
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak ditemukan. </p>');
}
?>

7.2 QUERY SQL DENGAN PHP


Setelah sukses membuat hubungan ke MySQL dan memilih database yang akan diaktifkan, maka
langkah selanjutnya adalah membuat query SQL. Dengan PHP, kita bisa menuliskan/memberikan
perintah-perintah Query SQL serta menampilkan hasilnya dengan segera. Fungsi PHP yang bisa
digunakan adalah fungsi mysql_query.

Struktur: mysql_query(query[, connection_id]);

query merupakan string yang berisi perintah SQL yang akan dieksekusi, sedangkan connection_id
bersifat pilihan bisa diisi atau tidak.

Fungsi mysql_query akan mengembalikan nilai kebenaran TRUE atau FALSE, hal ini menandakan sukses
atau gagalnya query yang dieksekusi.

Sekarang buatlah table baru dan beri nama "datadiri", ikuti perintah SQL berikut ini:

<?php
// Koneksi ke server MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat untuk saat
ini.</p>';
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak ditemukan. </p>');
}

// Menuliskan perintah Query SQL


$sql = "CREATE TABLE `datadiri` ( ";
$sql .= "`nis` VARCHAR( 5 ) NOT NULL , ";
$sql .= "`nama` VARCHAR( 25 ) NOT NULL , ";
$sql .= "`alamat` VARCHAR( 45 ) NOT NULL , ";
$sql .= "`tgl_lahir` DATE NOT NULL , ";
$sql .= "`jml_anak` TINYINT NOT NULL , ";
$sql .= "PRIMARY KEY ( `nis` ) ";
$sql .= ") ENGINE = MYISAM";

if (@mysql_query($sql)) {
echo '<p>Table datadiri sukses diciptakan!</p>';
} else {
exit('<p>Gagal menciptakan table datadiri, kesalahan: ' .
mysql_error() . '</p>');
}
?>

MySQL bisa melacak berapa banyak baris table yang dihapus, diinput ataupun dirubah dari setiap
perintah query DELETE, INSERT dan UPDATE (semua yang berhubungan dengan modifikasi data).
Fungsi yang digunakan adalah mysql_affected_rows.

<?php
// Koneksi ke server MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat untuk saat
ini.</p>';
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak ditemukan. </p>');
}

// Ketika query dieksekusi, kita dapat menggunakan fungsi


mysql_affected_rows
// untuk melihat berapa banyak baris record yang tersimpan dalam
table.

$sql = "INSERT INTO `datadiri` ";


$sql .= "VALUES ('00002', 'Rini Agustina', ";
$sql .= "'Sartono SH 4 Malang', '1978-08-09', 1) ";

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if (@mysql_query($sql)) {
echo '<p>Insert affected ' . mysql_affected_rows() . '
baris.</p>';
} else {
exit('<p>Error performing update: ' . mysql_error() . '</p>');
}
?>

7.3 SELECT DENGAN PHP


Hasil Query SELECT, baik sukses ataupun gagal, PHP selalu menerima hasil query tersebut. Maka ketika
proses query SELECT dilakukan, fungsi mysql_query akan mengembalikan sejumlah daftar baris/record
table dari hasil query tersebut. Walaupun bernilai false, masih mengembalikan nilai ( walaupun itu
kosong atau salah).

<?php
// Koneksi ke server MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat untuk saat
ini.</p>';
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak ditemukan. </p>');
}

// perintah di bawah ini masih belum lengkap,


// masih terbatas pada pelimpahan hasil query ke $result.
// hasil $result merupakan assosiative array.
$result = @mysql_query("SELECT * FROM datadiri");
if (!$result) {
exit('<p>Query Error: ' . mysql_error() . '</p>');
}
?>

Jika tidak ada kesalahan maka variable $result akan menerima sejumlah baris data yang diperoleh dari
table. Untuk memperoleh data yang ditampung oleh variable $result, lakukan perulangan terhadap result
set yang ada di variable $result (dengan anggapan jumlah record lebih dari satu).

while ($row = mysql_fetch_array($result)) {


// Memproses baris ...
}

Contoh lengkap programnya adalah sebagai berikut :

File : aksesrecord.php

<html>
<head>
<title>Contoh Mengakses Record</title>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
</head>
<body>
<?php
// Membuat hubungan dengan MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username,
$password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat
untuk saat ini.</p>';
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak
ditemukan. </p>');
}

$result = @mysql_query("SELECT * FROM datadiri");


if (!$result) {
exit('<p>Query Error: ' . mysql_error() .
'</p>');
}

while ($row = mysql_fetch_array($result)) {


echo '<p>' . $row['nama'] . '</p>';
}
?>
</body>
</html>

7.4 INPUT DATA KE DATABASE


Pada dasarnya cara memasukkan data ke table hampir sama dengan contoh-contoh sebelumnya, yaitu
menggunakan fungsi mysql_query(query[, connection_id]); , karena sebenarnya proses
memasukkan data ke table suatu database juga menggunakan perintah Query SQL.

Sekarang, buatlah script PHP untuk memasukkan data ke dalam table, dimana data tersebut dikirim
melalui FORM HTML dan hasilnnya langsung ditampilkan dalam bentuk baris-baris table.

Tampilan FORM HTML yang diharapkan :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Ikuti baris-baris program di bawah ini, kemudian beri nama filenya dengan ”form_input.php”.

File : form_input.php

<html>

<head>
<title></title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>"
method="POST">
<table border="0" cellspacing="0" style="border-
collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td width="16%">NIS</td>
<td width="84%"><input type="text" name="nis"
size="29"></td>
</tr>
<tr>
<td width="16%">Nama</td>
<td width="84%"><input type="text" name="nama"
size="29"></td>
</tr>
<tr>
<td width="16%">Alamat</td>
<td width="84%"><input type="text" name="alamat"
size="29"></td>
</tr>
<tr>
<td width="16%">Tanggal Lahir</td>
<td width="84%"><input type="text" name="tgl_lahir"
size="29"> (YYYY-MM-DD)</td>
</tr>
<tr>
<td width="16%">Jumlah Anak</td>
<td width="84%"><input type="text" name="jml_anak"
size="29"></td>
</tr>
<tr>
<td width="16%">&nbsp;</td>
<td width="84%"><input type="submit" name="submit"
value="SIMPAN"></td>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
</tr>
</table>
</form>

<p align="Left">

<?php
// Membuat hubungan dengan MySQL
$address = 'localhost';
$username = 'root';
$password = '';
$conn = @mysql_connect($address, $username, $password);
if (!$conn) {
echo '<p>Koneksi ke server database gagal dibuat
untuk saat ini.</p>';
exit();
}

// Memilih database dan mengaktifkannya


$conn_var = 'DatabaseKu';
if (!@mysql_select_db($conn_var)) {
exit('<p>Pencarian database DatabaseKu tidak
ditemukan. </p>');
}

if (isset($_POST['submit']))
{
// Input Data ke database
$sql = "INSERT INTO datadiri (nis, nama, alamat,
tgl_lahir, jml_anak) ";
$sql .= "VALUES ('$_POST[nis]', '$_POST[nama]',
'$_POST[alamat]', '$_POST[tgl_lahir]',
'$_POST[jml_anak]')";
$qr=@mysql_query($sql,$conn) or die("Terjadi
kesalahan !");

// Tampilkan data dari database


echo "<table border=1 cellpadding=0 cellspacing=0
style=border-collapse: collapse bordercolor=#111111
width=100%>";
echo "<tr>";
echo "<td width=20%
bgcolor=#C0C0C0><b>NIS</b></td>";
echo "<td width=20%
bgcolor=#C0C0C0><b>Nama</b></td>";
echo "<td width=20%
bgcolor=#C0C0C0><b>Alamat</b></td>";
echo "<td width=20% bgcolor=#C0C0C0><b>Tanggal
Lahir</b></td>";
echo "<td width=20% bgcolor=#C0C0C0><b>Jumlah
Anak</b></td>";
echo "</tr>";

$result=@mysql_query("SELECT * FROM
datadiri",$conn) or die("Terjadi kesalahan !");
while ($row = mysql_fetch_array($result))
{
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "<tr>";
echo "<td width=20%>$row[nis]</td>";
echo "<td width=20%>$row[nama]</td>";
echo "<td width=20%>$row[alamat]</td>";
echo "<td width=20%>$row[tgl_lahir]</td>";
echo "<td width=20%>$row[jml_anak]</td>";
echo "</tr>";
}

echo "</table>";
}
?>

</body>
</html>
Catatan:
Perintah <form action="<?php echo $_SERVER['PHP_SELF'];?>"
method="POST"> juga bisa dituliskan sebagai <form
action=”form_input.php">, yang menyebabkan halaman menuju ke
dirinya sendiri, yaitu file form_input.php

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
BAB 8
CONTOH PROGRAM PHP

8.1 VOOTING
Program vooting digunakan untuk mengetahui bagaimana pendapat pengunjung website terhadap suatu
daftar pernyataan yang telah diberikan, termasuk menampilkan hasil vooting tersebut dalam bentuk
angka, prosentase dan grafiknya sekaligus.

Langkah - langkah pembuatan program “vooting.php” :

 Untuk membuat database dan table yang diperlukan, gunakan perintah SQL dengan fasilitas MySQL
console. Buka menu console di wamp service, pilih menu MySQL dan sub menu MySQL console.

MySQL Console

Gambar 8.1.1 Menu MySAL Console.

 Ciptakan database baru dengan nama “book”, database tersebut berlaku untuk contoh-contoh
selanjutnya. Kemudian buat table “vooting” dan isikan datanya dengan perintah insert. Script
lengkapnya adalah sebagai berikut:

mysql> create database book;

mysql> use book;

mysql> create table vooting (kriteria varchar(50) not null,


-> value int(10) unsigned not null default '0',
-> kriteriaid smallint(6) unsigned not null auto_increment,
-> primary key (kriteriaid)) engine=myisam;

mysql> insert into vooting values('Tidak Pernah Tahu', 1, 1),


-> ('Pernah Dengar',1,2), ('Sering Berkunjung', 1, 3),
-> ('Pernah Mengunjungi',1,4), ('Ingin Berpartisipasi',1, 5);

 Tuliskan script PHP di bawah ini dan beri nama filenya “vooting.php”, letakkan di
„wamp/www/book/vooting‟. Jika folder belum ada, maka silahkan buat sendiri.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 8.1.2 Alamat Path Program “vooting.php”.

vooting.php
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Program Vooting Sederhana</title>
</head>
<body>

<?php
$host='localhost';
$user='root';
$pwd='';
$db='book';
$conn=@mysql_connect($host,$user,$pwd) or die ("Gagal
Tersambung ke Database Server!");
mysql_select_db($db,$conn);
?>

<table border="0" style="border-collapse: collapse"


bordercolor="#111111" width="100%" height="56">
<tr>
<td width="100%" height="26"><b><font
face="Verdana">Sejauh Manakah Anda mengenal PHP
?</font></b></td>
</tr>
<form action="vooting.php" method="post">
<tr>
<td width="100%" height="26">
<table border="1" cellpadding="0" cellspacing="0"
style="border-collapse: collapse" bordercolor="#78602C"
width="100%">
<tr>
<td width="100%" bgcolor="#F9F4E8">
<?php
$qr=@mysql_query("Select kriteria, kriteriaid
from vooting order by kriteria",$conn) or die("kriteria
vooting Salah !");

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
while ($row = mysql_fetch_array($qr))
{
echo "<input type=radio name=pilihan
value=$row[kriteriaid]>&nbsp;&nbsp;&nbsp;<u>$row[kriteria]
</u><br>";
}
?>
&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="100%" height="26"><input type=submit
name=submit value=Vote></td>
</tr>
</form>
<tr>
<td width="100%" height="61"><b><font
face="Verdana">Hasil Pooling</font></b><hr noshade
color="#000000" size="1"></td>
</tr>
<tr>
<td width="100%" height="26">
<table border="0" cellpadding="0" cellspacing="0"
style="border-collapse: collapse" width="100%" height="32"
bordercolor="#E8F1E0">
<?php
// Field value bertambah 1, setiap kali voting
dilakukan sesuai dengan kriteria yang dipilih
$qr=@mysql_query("Update vooting Set value = value +
1 Where kriteriaid='$_POST[pilihan]'",$conn) or
die("kriteria vooting Salah !");

//Perhitungan prosentase dari total kriteria


$qr=@mysql_query("Select Sum(value) as TotalPersen
From vooting",$conn) or die("Query tidak bisa dilakukan
karena ada kesalahan !");
$row = mysql_fetch_array($qr);
$Total=$row[TotalPersen];

$qr=@mysql_query("Select Max(value) as NilaiMax From


vooting",$conn) or die("Query tidak bisa dilakukan karena
ada kesalahan !");
$row = mysql_fetch_array($qr);
$pengali=100/$row[NilaiMax];

//Menampilkan data yang diurutkan berdasarkan


kriteria
$qr=@mysql_query("Select kriteria, value From
vooting Order By kriteria",$conn) or die("Query tidak bisa
dilakukan karena ada kesalahan !");
while ($row = mysql_fetch_array($qr))
{
$Persen=round($row[value]*$pengali,0);
$ValPersen=round($row[value]/$Total*100,2);
echo "<tr><td width=25%
height=22>$row[kriteria]</td><td width=75% height=18>";
echo "<table border=1 cellpadding=0
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
cellspacing=0 style='border-collapse: collapse'
width=$Persen% height=18>";
echo "<tr><td width=100% bgcolor=#CCFF66
align=center>$ValPersen%</td>";
echo "</tr></table></td></tr>";
}
?>
</table>
</td>
</tr>
</table>

</body>

</html>

 Jalankan programnya dengan menuliskan alamat URLnya:


http://localhost/book/vooting/vooting.php, maka hasil yang akan muncul adalah sebagai berikut :

Gambar 8.1.3 Hasil Program Vooting.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.2 WEB STATISTIK
Pembaca tentu tidak asing lagi dengan web statistik. Fungsi dari web statistik adalah sebagai
pemberitahuan kepada para pengunjung web site seberapa banyak web site tersebut telah dibuka. Nilai
yang ditampilkan biasanya dalam bilangan total. saja Namun pada kesempatan ini mari kita coba
membuatnya sendiri dengan sedikit fitur tambahan, yaitu menampilkan tanggal kunjungan, jam
kunjungan, nama host server, dan alamat IP komputer pengunjung.

Langkah-langkah membuat web statistik:

 Buat table “statistic” dengan perintah MySQL console, sedangkan databasenya adalah database
“book” yang sudah pernah dibuat pada contoh sebelumnya, sehingga tidak perlu membuat database
baru.

mysql> USE book;


mysql> CREATE TABLE statistic (
-> tanggal datetime default NULL,
-> host varchar(50) default NULL,
-> ip varchar(15) default NULL
-> ) ENGINE=MyISAM;

 Buat gambar masing-masing angka, mulai dari 0 sampai 9 dimana gambar angka tersebut mewakili
seluruh angka yang ada. Beri nama image 0 dengan “_0.gif”, 1 dengan “_1.gif” dan seterusnya. Di
CD telah tersedia pada folder “book\counter”.
Anda diperkenankan mengganti angka image tersebut sesuai selera, asalkan nama file tidak berubah.

 Buat file PHP dengan script seperti di bawah ini, tuliskan nama filenya dengan “demostat.php”
letakkan di “wamp/www/book/counter”.

Gambar 8.2.1 Alamat Path Program “demostat.php”.


demostat.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Statistic</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<?php
$host='localhost';
$user='root';
$pwd='';
$db='book';

$conn=@mysql_connect($host,$user,$pwd) or die ("Gagal


Tersambung ke Database Server!");
mysql_select_db($db,$conn);
?>

<div align="center">
<table width="690" border="0">
<tr>
<td width="100%" height="98" align="center"><font
size="7" face="Verdana, Arial, Helvetica, sans-serif">WEB
STATISTIK</font></td>
</tr>
<tr>
<td width="100%">
<div align="center">
<table width="100" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td width="34"><img src="statkiri.gif"
width="34" height="31"></td>
<td width="149" align="center"
valign="bottom">
<?php
$waktu=date("Y-m-d H:m:s");
$host=$_SERVER['SERVER_NAME'];
$ip=$_SERVER['REMOTE_ADDR'];
$input=@mysql_query("insert into statistic values
('$waktu', '$host', '$ip')", $conn) or die("Penyimpanan
gagal");;

$hasil=@mysql_query("select count(ip) as total


from statistic", $conn) or die("Query tidak bisa
ditampilkan");
$totalbaris=mysql_fetch_array($hasil);
$inttostr=(string) $totalbaris[total];
for ($i=0;$i<=strlen($inttostr)-1;$i++)
{
switch ($inttostr[$i])
{
case "0" :
echo "<img src=_0.gif>";
break;
case "1" :
echo "<img src=_1.gif>";
break;
case "2" :
echo "<img src=_2.gif>";
break;
case "3" :
echo "<img src=_3.gif>";
break;
case "4" :
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
echo "<img src=_4.gif>";
break;
case "5" :
echo "<img src=_5.gif>";
break;
case "6" :
echo "<img src=_6.gif>";
break;
case "7" :
echo "<img src=_7.gif>";
break;
case "8" :
echo "<img src=_8.gif>";
break;
case "9" :
echo "<img src=_9.gif>";
break;
}
}
?>
</td>
</tr>
<tr>
<td colspan="2"><img src="statkanan.gif"
width="183" height="21"></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td width="100%">
<p align="center">&nbsp;</p>
<div align="center">
<table width="645" border="0">
<tr bgcolor="#FF9900">
<td height="21" colspan="5"><strong><font
size="1" face="Verdana, Arial, Helvetica, sans-serif">30
Pengunjung Terakhir</font></strong></td>
</tr>
<?php
function dino($tgl)
{

$bln=array("01"=>"Januari","02"=>"Febuari","03"=>"Ma
ret","04"=>"April","05"=>"Mei","06"=>"Juni",

"07"=>"Juli","08"=>"Agustus","09"=>"Sepetember","10"
=>"Oktober","11"=>"Nopember","12"=>"Desember");
return substr($tgl,8,2)."
".$bln[substr($tgl,5,2)]."
".substr($tgl,0,4)."&nbsp;&nbsp;&nbsp;&nbsp;".substr($tgl,
11,5);
}

$no=1;
$qr=@mysql_query("select * from statistic order by
tanggal desc limit 30", $conn) or die ("Data tidak
tampil");
while ($row = mysql_fetch_array($qr))
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
{
echo "<tr>";
echo "<td width=24><font size=1 face=Verdana, Arial,
Helvetica, sans-serif>".$no."</font></td>";
echo "<td width=225><font size=1 face=Verdana,
Arial, Helvetica, sans-
serif>".dino($row[tanggal])."</font></td>";
// echo "<td width=147><font size=1 face=Verdana,
Arial, Helvetica, sans-
serif>".substr($row[tanggal],11,5)."</font></td>";
echo "<td width=241><font size=1 face=Verdana, Arial,
Helvetica, sans-serif>".$row[host]."</font></td>";
echo "<td width=132><font size=1 face=Verdana, Arial,
Helvetica, sans-serif>".$row[ip]."</font></td>";
echo "</tr>";
$no+=1;
}
?>
</table>
</div></td>
</tr>
</table>
<p>&nbsp;</p>
</div>
</body>
</html>

 Selanjutnya jalankan programnya di browser dengan URL


“http://localhost/book/counter/demostat.php”. Tampilan programnya kurang lebih adalah sebagai
berikut:

Gambar 8.2.2 Hasil Program Statistik.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.3 BUKU TAMU DISERTAI FOTO
Selanjutnya adalah membuat halaman guest book atau buku tamu. Program buku tamu tersebut berisi
nama pengirim, email, foto pengirim (jika dikehendaki), subyek buku tamu dan pesan yang akan dikirim.

Foto yang akan ditampilkan maksimal harus berukuran 80x80 pixel, kalau melebihi dari ukuran tersebut
maka foto harus di resize secara proposional. Foto yang didukung adalah format GIF, JPG dan PNG.

Langkah-langkah pembuatan:

 Buat table dengan nama “gb” di database “book” yang sudah pernah dibuat.

mysql> USE book;

mysql> create table gb (nama varchar(25),


-> email varchar(50), foto varchar(30),
-> subyek varchar(100), pesan tinytext,
-> waktu timestamp) engine=myisam;

 Buat file program php seperti di bawah ini dan beri nama “gb.php”, letakkan file tersebut di folder
“wamp/www/book/guestbook”.

Gambar 8.3.1 Alamat Path Program “gb.php”.

gb.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Buku Tamu</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<?php
$host="localhost";
$user="root";
$pwd="";
$db="book";

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$conn=@mysql_connect($host,$user,$pwd) or die (“Koneksi
Gagal!”);
mysql_select_db($db,$conn);

if ($_POST[kirim])
{
if (file_exists($_FILES['foto']['tmp_name']) &&
is_file($_FILES['foto']['tmp_name']))
{

$imgsize=getimagesize($_FILES['foto']['tmp_name']);

/* Resize Image */
$ori_w=$imgsize[0];
$ori_h=$imgsize[1];
if ($ori_w >= $ori_h)
{
$new_w=80;
$new_h=round($ori_h*80/$ori_w,0);
} else
{
$new_w=round($ori_w*80/$ori_h,0);
$new_h=80;
}
$img_resized=imagecreate($new_w,$new_h);

switch ($imgsize[2])
{
case 1 :

imagecopyresized($img_resized,imagecreatefromgif($_F
ILES['foto']['tmp_name']),0,0,0,0,$new_w,$new_h,$ori_w,$or
i_h);
$namafoto=time().".gif";
imagegif($img_resized, $namafoto);
break;
case 2 :

imagecopyresized($img_resized,imagecreatefromjpeg($_
FILES['foto']['tmp_name']),0,0,0,0,$new_w,$new_h,$ori_w,$o
ri_h);
$namafoto=time().".jpg";

imagejpeg($img_resized,
$namafoto);
break;
case 3 :

imagecopyresized($img_resized,imagecreatefrompng($_F
ILES['foto']['tmp_name']),0,0,0,0,$new_w,$new_h,$ori_w,$or
i_h);
$namafoto=time().".png";
imagejpeg($img_resized,
$namafoto);
break;
}
}
$waktu=date("Y-m-d H:m:s");
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
$tgl=intval(substr($namafoto,0,10));
$sql ="insert into gb
(nama,email,foto,subyek,pesan,waktu) ";
$sql.="values ('$_POST[nama]', '$_POST[email]',
'$namafoto', '$_POST[subyek]', '$_POST[pesan]',
'$waktu')";
$qr=@mysql_query($sql,$conn) or die("Wrong Query");

if (@mysql_errno()<>0)
{
if (file_exists($_FILES['foto']['tmp_name'])
&& is_file($_FILES['foto']['tmp_name']))
{
unlink($namafoto);
}
exit();
}
}
?>

<form enctype="multipart/form-data" action="<?php


$_SERVER['PHP_SELF']; ?>" method="POST">
<table width="50%" border="0" cellspacing="1"
cellpadding="2">
<tr bgcolor="#FF6600">
<td colspan="2"> <div align="center"><strong>GUEST
BOOK</strong></div></td>
</tr>
<tr>
<td width="23%">Nama</td>
<td width="77%"><input type="text" name="nama"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Tampilkan Foto</td>
<td><input type=file name=foto size="35"></td>
</tr>
<tr>
<td>Subject</td>
<td><input type="text" name="subyek"></td>
</tr>
<tr>
<td>Pesan</td>
<td><textarea rows="3" name="pesan"
cols="35"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="kirim"
value="Kirim"></td>
</tr>
</table>
</form>

<?php
$qrtampil=@mysql_query("select * from gb order by waktu
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
desc limit 10", $conn) or die("Query gagal !");
while ($baris = mysql_fetch_array($qrtampil))
{
echo "<table width=600 border=0 cellspacing=1
cellpadding=2>";
echo "<tr>";
echo "<td bgcolor=#333333><strong><font
color=#FFFFFF>".$baris[subyek]."</font></strong></td>";
echo "</tr>";
echo "<tr>";
if (!empty($baris[foto]))
echo "<td height=133 valign=top bgcolor=#CCCCCC><img
src=".$baris[foto]." align=left>".$baris[pesan]."</td>";
else
echo "<td height=133 valign=top
bgcolor=#CCCCCC>".$baris[pesan]."</td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=#999999>[Nama: ".$baris[nama]."]
[Email:<a href=$baris[email]>".$baris[email]."</a>]</td>";
echo "</tr>";
echo "</table>";
echo "<br>";
}
?>

</body>
</html>

 Jika sudah selesai maka buka file “gb.php” di browser inernet dengan URL
http://localhost/book/guestbook/gb.php, maka kurang lebih hasilnya akan tampak seperti berikut ini:

Gambar 8.3.2 Hasil Program Guest Book “gb.php”.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.4 MENAMPILKAN GAMBAR ACAK
Untuk menampilkan gambar secara acak sangatlah mudah. Lalu bagaimana caranya jika ingin
menampilkan gambar lebih dari satu sekaligus! dan semuanya ditampilkan secara acak?

Saya anggap bahwa semua gambar sudah disimpan dan diletakkan menjadi satu dengan folder program
php-nya. Beberapa format gambar yang didukung antara lain GIF, JPG, JPEG, PNG dan BMP

Langkah-langkah pembuatan program “acak.php” :

 Simpan sejumah file gambar di folder dimana program php berada, misalkan diletakkan di folder
“wamp/book/gbr_acak/koleksi”.

 Tulisakan baris-baris program PHP berikut ini dan simpan dengan nama “acak.php” , letakkan di
folder „wamp/www/book/gbr_acak‟.

Gambar 8.4.1 Alamat Path Program “acak.php”.

gambar_acak.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>

<?php
// Array format gambar, masih bisa ditambahkan format yang
lain.
$extarray[]=".jpeg";
$extarray[]=".jpg";
$extarray[]=".gif";
$extarray[]=".png";
$extarray[]=".bmp";

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
//Fungsi untuk mengecek apakah file tergolong format
gambar.
function filter($nmfile,$extarr)
{
$pos=strtolower(strpos($nmfile,"."));
$ext=strtolower(substr($nmfile,$pos));
if (in_array($ext,$extarr))
return true;
else return false;
}

//Membuat bibit pengacakan


function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}

//Membaca file gambar yang berada di


wamp/book/gbr_acak/koleksi
$dh_fany=opendir("./koleksi");
while (false!==($file=readdir($dh_fany)))
{
if (!is_dir($file) && $file!="." && $file!=".." &&
filter($file,$extarray))
{
$arfile_fany[]=$file;
}
}

closedir($dh_fany);

// Mulai pengacakan
srand(make_seed());

//Membatasi pengacakan sampai 5 gambar saja


$hasil=array_rand($arfile_fany,5);
$fany1=$arfile_fany[$hasil[0]];
$fany2=$arfile_fany[$hasil[1]];
$fany3=$arfile_fany[$hasil[2]];
$fany4=$arfile_fany[$hasil[3]];
$fany5=$arfile_fany[$hasil[4]];
?>

<table width="100%" border="0" cellspacing="0"


cellpadding="0">
<tr bgcolor="#FFFF00">
<td height="69" colspan="5">
<div align="center"><font size="7">Tampilkan Gambar
Acak</font></div></td>
</tr>
<tr>
<?php
echo "<td><img src=./koleksi/$fany1></td>";
echo "<td><img src=./koleksi/$fany2></td>";
echo "<td><img src=./koleksi/$fany3></td>";
echo "<td><img src=./koleksi/$fany4></td>";
echo "<td><img src=./koleksi/$fany5></td>";
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
?>
</tr>
</table>
</body>
</html>

 Selanjutnya tuliskan alamat URL di browser http://localhost/book/gbr_acak/acak.php. Maka gambar


yang ditampilkan selalu berubah secara acak ketika halaman “acak.php” dibuka atau di-refresh :

Gambar 5.4.2 Hasil Program Gambar Acak.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.5 JAM ANALOG
Yang dimaksud dengan jam analog adalah layaknya jam tangan biasa, sehingga jam tersebut harus
memiliki penunjuk jarum jam, jarum menit dan jarum detik. Program jam analog banyak menggunakan
pustaka graphic PHP (php_gd2.dll).

Langkah-langkah pembuatan program “jamanalog.php” :

 Aktifkan terlebih dahulu pustaka yang menangani masalah image yaitu “php_gd.dll”.

Gambar 8.5.1 Mengaktifkan Pustaka “php_gd2.dll”

 Ketikkan program PHP berikut ini dan beri nama “jamanalog.php”, kemudian simpan di folder
“wamp\www\book\jamanalog”.

jamanalog.php
<?php
if (! $size > 0) {
$size = 300;
}
$radius = floor($size / 2);

header("content-Type: image/gif");

$img = ImageCreate($size, $size);


$color_alpha = ImageColorAllocate($img, 254, 254, 254);
$color_white = ImageColorAllocate($img, 255, 255, 255);
$color_black = ImageColorAllocate($img, 0, 0, 0);
$color_gray = ImageColorAllocate($img, 192, 192, 192);
$color_red = ImageColorAllocate($img, 255, 0, 0);
$color_blue = ImageColorAllocate($img, 0, 0, 255);
ImageColorTransparent($img, $color_alpha);

ImageArc($img,$radius, $radius, $size, $size, 0, 360,


$color_black);
ImageFill($img, $radius, $radius, $color_white);

$min = 0;
while($min++ < 60) {
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if ($min % 15 == 0)
$len = $radius / 5;
elseif ($min % 5 == 0)
$len = $radius / 10;
else
$len = $radius / 25;

$ang = (2 * M_PI * $min) / 60;


$x1 = sin($ang) * ($radius - $len) + $radius;
$y1 = cos($ang) * ($radius - $len) + $radius;
$x2 = (1 + sin($ang)) * $radius;
$y2 = (1 + cos($ang)) * $radius;

ImageLine($img, $x1, $y1, $x2, $y2, $color_black);


}

list($hour, $min, $sec) = preg_split ("/-/", Date("h-i-s",


Time()));
$hour = $hour % 12;

$xs = intval(cos($sec * M_PI/30 - M_PI/2) * 0.75 * $radius


+ $radius);
$ys = intval(sin($sec * M_PI/30 - M_PI/2) * 0.75 * $radius
+ $radius);
$xm = intval(cos($min * M_PI/30 - M_PI/2) * 0.65 * $radius
+ $radius);
$ym = intval(sin($min * M_PI/30 - M_PI/2) * 0.65 * $radius
+ $radius);
$xh = intval(cos($hour*5 * M_PI/30 - M_PI/2) * 0.5 *
$radius + $radius);
$yh = intval(sin($hour*5 * M_PI/30 - M_PI/2) * 0.5 *
$radius + $radius);

ImageLine($img, $radius, $radius, $xs, $ys,


$color_gray);
ImageLine($img, $radius, $radius-1, $xm, $ym,
$color_blue);
ImageLine($img, $radius-1, $radius, $xm, $ym,
$color_blue);
ImageLine($img, $radius, $radius-1, $xh, $yh,
$color_blue);
ImageLine($img, $radius-1, $radius, $xh, $yh,
$color_blue);

ImageArc($img, $radius, $radius, $radius / 8, $radius / 8,


0, 360, $color_red);
ImageFillToBorder($img, $radius, $radius, $color_red,
$color_red);

ImageGif($img);
ImageDestroy($img);
?>

 Kalau sudah, buka filenya di URL browser http://localhost/book/jamanalog/jamanalog.php. Hasilnya


akan tampak seperti berikut ini :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 8.5.2 Hasil Program Jam Analog.

 Gunakan tombol refresh di browser internet untuk mengetahui perubahan jarum jam.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.6 LOGIN DENGAN PENYANDIAN
Dalam pembuatan aplikasi Login kali ini dibutuhkan dua form. Form pertama digunakan saat user login
(dengan memasukkan email dan password). Jika login gagal berarti ada dua kemungkinan, antara lain :

 Salah memasukkan data email dan atau password.


 Belum terdaftar sebagai anggota, sehingga user diwajibkan mengisi form keanggotaan terlebih
dahulu.

Di sini akan digunakan penyandian terhadap password yang diisikan dengan metode MHASH, sehingga
password yang tersimpan di database bukan lagi password yang sesungguhnya, melainkan sudah dalam
bentuk teracak.

Langkah pembuatan program :

 Sebelum menggunakan fungsi penyandian MHASH_MD5, pastikan bahwa pustaka “php_mhash”


sudah dalam kondisi siap. Seperti terlihat berikut ini :

Gambar 8.6.1 Mengaktifkan Pustakan “php_mhash.dll”.

 Buat table dengan nama “login” di database “book” yang sudah pernah dibuat sebelumnya.

mysql> USE book;


mysql> CREATE TABLE login (nama varchar (25),
-> alamat varchar(30), email varchar(30) not null,
-> password varchar(32) not null, PRIMARY KEY(email)
-> ) ENGINE=MyIsam;

 Membuat Form Pendaftaran dan beri nama “daftar.php”, letakkan di folder “wamp/www/login”.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 8.6.2 Form Pendaftaran

Setelah menyimpan data pendaftaran anggota, sekarang kita lihat hasil penyandiannya di table “login”
dengan menggunakan console MySQL, seperti berikut ini :

mysql> select password from login;


+------------------+
| password |
+------------------+
| ▒⌠∙Ñ#πo┘i⌠W>%»E@ |
+------------------+

daftar.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Pendaftaran</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<table width="343" border="0" cellspacing="1"
cellpadding="1">
<FORM action="<?php $_SERVER['PHP_SELF']; ?>"
method="post">
<tr bgcolor="#344323">
<td colspan="2"><div align="center"><font
color="#FFFFFF"><strong>Pendaftaran
User</strong></font></div></td>
</tr>
<tr bgcolor="#AAD2AD">
<td>Nama</td>
<td> <input name="nama" type="text" id="nama"></td>
</tr>
<tr bgcolor="#AAD2AD">
<td>Alamat</td>
<td> <input name="alamat" type="text"
id="alamat"></td>
</tr>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<tr bgcolor="#AAD2AD">
<td width="64">Email</td>
<td width="272"> <input type="text" name="email"></td>
</tr>
<tr bgcolor="#AAD2AD">
<td>Password</td>
<td> <input type="password" name="password"></td>
</tr>
<tr bgcolor="#709D62">
<td colspan="2"> <div align="center">
<input type="submit" name="daftar" value="Daftar">
<input type="reset" name="reset" value="Reset">
</div></td>
</tr>
</FORM>
</table>

<?php
if (isset($_POST['daftar']))
{
// Mengacak password dengan metode MHASH
$pwd_mhash=MHASH(MHASH_MD5, $_POST[password]);

// Membuat koneksi ke database


$host="localhost";
$user="root";
$pwd="";
$db="book";
$conn=@mysql_connect($host,$user,$pwd) or die
(“Koneksi Gagal!”);
mysql_select_db($db,$conn);

$sql ="INSERT INTO login (nama, alamat, email,


password) ";
$sql.="values ('$_POST[nama]', '$_POST[alamat]',
'$_POST[email]', '$pwd_mhash')";
$qr=@mysql_query($sql,$conn) or die("Pendaftaran
Gagal!");
}
?>
</body>
</html>

 Membuat Form Login dan beri nama dengan “login.php”, letakkan di folder “wamp/www/login”.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 8.6.2 Form Login User.

Login.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>
<table width="343" border="0" cellspacing="1"
cellpadding="1">
<form action="<?php $_SERVER[PHP_SELF]; ?>" method="post">
<tr bgcolor="#344323">
<td colspan="2"><div align="center"><font
color="#FFFFFF"><strong>Login
User</strong></font></div></td>
</tr>
<tr bgcolor="#9DC69F">
<td width="64">Email</td>
<td width="272">
<input type="text" name="email"></td>
</tr>
<tr bgcolor="#9DC69F">
<td>Password</td>
<td>
<input type="password" name="password"></td>
</tr>
<tr bgcolor="#709D62">
<td height="40" colspan="2">
<input type="submit" name="submit" value="Login">
Jika Belum Login Mohon Untuk <a
href="daftar.php"><font
color="#FFFFFF"><strong>Daftar</strong></font></a>
</td>
</tr>
</form>
</table>
<?php
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
if (isset($_POST[submit]))
{
$pwd_mhash=MHASH(mhash_md5, $_POST[password]);

// Koneksi ke database
$host="localhost";
$user="root";
$pwd="";
$db="book";
$conn=@mysql_connect($host,$user,$pwd) or die
("Koneksi Gagal!");
mysql_select_db($db,$conn);

$sql = "select nama from login where


email='$_POST[email]' and password='$pwd_mhash'";
$qr=@mysql_query($sql,$conn) or die("Login Gagal!");
$baris=mysql_fetch_array($qr);
if (!empty($baris[nama]))
{
echo "<b>Login Sukses</b>";
}
else
{
echo "<b>Login Gagal</b>";
}
}
?>
</body>
</html>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.7 FORM EMAIL
Mengirim email melalui website sangatlah mudah, apalagi dengan dukungan PHP yang telah
menyediakan banyak fungsi email. Hal tersebut membuat pekerjaan programer menjadi kian mudah.

Form email mampu mengirimkan pesan email berformat HTML. Sehingga semua atribut HTML seperti
menampilkan gambar, tabel, huruf miring, huruf dengan berbagai uuran dan lain-lain bisa ditampilkan di
email client (penerima/tujuan). Jadi tidak sekedar mengirim teks saja.

Langkah-langkah pembuatan program :

 Membuat FORM EMAIL


Tuliskna kode program PHP di baah ini, kemudian beri nama filenya dengan „emailform.php‟ dan
simpan di folder „wamp5/www/book/email‟.

Gambar 8.7.1 Alamat Path “emailform.php”

emailform.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Web Email</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>

<table width="500" border="0" cellspacing="1"


cellpadding="1">
<form action="<?php $_SERVER['SELF'];?>" method="post">
<tr>
<td colspan="2"><div align="center"><strong>FORM
EMAIL</strong></div></td>
</tr>
<tr>

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<td width="156">Nama</td>
<td width="337"><input type="text" name="nama"
size="48"></td>
</tr>
<tr>
<td>Email Asal</td>
<td><input type="text" name="emailasal"
size="48"></td>
</tr>
<tr>
<td>Email Tujuan</td>
<td><input type="text" name="emailtujuan"
size="48"></td>
</tr>
<tr>
<td>Subyek</td>
<td><input type="text" name="subyek" size="48"></td>
</tr>
<tr>
<td>Pesan</td>
<td><textarea rows="6" name="pesan"
cols="47"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="kirim" value="Kirim
Email"></td>
</tr>
</form>
</table>

<?php
if ($_POST['kirim'])
{
// Mengecek keabsahan alamat email dan apakah semua
text box sudah terisi.
if (!eregi("^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-
]+\.)*([a-z0-9-]+)(\.[a-z]{2,3}))$", $_POST['emailasal'])
|| !eregi("^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-
]+\.)*([a-z0-9-]+)(\.[a-z]{2,3}))$",
$_POST['emailtujuan'])
|| empty($_POST['nama']) || empty($_POST['subyek'])
|| empty($_POST['pesan']))
{
echo "Alamat email tidak valid<br>";
echo "atau data tidak lengkap<br>";
echo "mohon alamat email di cek ulang!<br>";
exit;
} else
{
$isipesan="
<html>
<head>
<title>HTML Email</title>
</head>

<body>
<p><font
size=6><strong>Selamat</strong></font></p>
Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
<p><font size=5>Anda mendapat email dari <font
color=#FF0000><strong>".$_POST['nama']."</strong></font>
dengan alamat email <font
color=#0000FF>".$_POST['emailasal']."</font></font></p>
<p><font size=5>dengan isi pesan :</font></p>
<p><font size=5 face=Verdana, Arial,
Helvetica, sans-
serif><em>".$_POST['pesan']."</em></font></p>
</body>
</html>
";

// Mengirim dengan format mail HTML, maka


Content-type header harus diset
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html;
charset=iso-8859-1' . "\r\n";
$headers .= 'From: $_POST[nama]
<$_POST[emailasal>' . "\r\n";
//Jika diperlukan Cc dab Bcc
//$headers .= 'Cc:
birthdayarchive@example.com' . "\r\n";
//$headers .= 'Bcc: birthdaycheck@example.com'
. "\r\n";

$terkirim=mail($_POST['emailtujuan'],
$_POST['subyek'], $isipesan, $headers);
if ($terkirim)
{
echo "<b>Email sudah terkirim</b>";
} else {echo "<b>Email tidak terkirim, mohon
dulang kembali.</b>";}
}
}
?>

</body>
</html>

 Setelah selesai, buka program tersebut dengan URL http://localhost/book/email/emailform.php.


Maka hasilnya akan tampak seperti di bawah ini :

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
Gambar 8.7.2 Hasil Form Email.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
8.8 STATUS ONLINE
Kalau Anda punya website yang benar-benar online dan Anda penasaran, pingin tahu ada berapa orang
sih yang sedang aktif membuka website pada saat itu?

Untuk kasus tersebut pada intinya hannya menjumlahkan setiap user yang masuk, selanjutnya secara
berkala harus di cek kembali apakah ada user baru yang masuk atau yang keluar dari website.

Setiap user yang membuka website harus di-identifikasi berdasarkan alamat IP nya, IP yang tercatat di
database harusa satu. Jadi ketika user membuka halaman website yang sama dalam waktu bersamaan
akan diakui satu saja.

Langkah-langkah pembuatan program “onlinestat.php” :

 Membuat table yang diberi nama “onlinestat” yang di letakkan di database “book” yang sudah pernah
dibuat sebelumnya.

mysql> USE book;


Database changed

mysql> CREATE TABLE `onlinestat` (


-> `id` bigint(20) NOT NULL auto_increment,
-> `timestamp` int(15) NOT NULL default '0',
-> `ip` varchar(40) NOT NULL default '',
-> `file` varchar(100) NOT NULL default '',
-> PRIMARY KEY (`id`),
-> KEY `ip` (`ip`),
-> KEY `file` (`file`),
-> KEY `timestamp` (`timestamp`)
-> ) TYPE=MyISAM;

 Tuliskan kode program “onlinestat.php” di bawah ini dan letakkan di folder


“wamp/www/book/onlinestat”

onlinestat.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Status Online</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
$host="localhost";
$user="root";
$pwd="";
$db="book";

$conn=@mysql_connect($host,$user,$pwd) or die (“Koneksi Gagal!”);


mysql_select_db($db,$conn);

//Mencatat Waktu
$timestamp = time();
$timeout = $timestamp - 900;

//Insert User
$insert = mysql_query("INSERT INTO onlinestat (timestamp, ip, file)

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
VALUES('$timestamp','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['PHP_SELF']."')")
or die("Error in who's online insert query!");

//Delete User
$delete = mysql_query("DELETE FROM onlinestat WHERE timestamp<$timeout") or
die("Error in who's online delete query!");

//Menghitung User Online


$result = mysql_query("SELECT DISTINCT ip FROM onlinestat") or die("Error in
who's online result query!");
$users = mysql_num_rows($result);
?>

<table align="center" width="618" border="0" cellspacing="1" cellpadding="1">


<tr>
<td width="614" height="69" bgcolor="#9BD2A9">
<div align="center"><font size="7"><strong>SELAMAT
DATANG</strong></font></div></td>
</tr>
<tr>
<td height="37" bgcolor="#7CA9BE">
<div align="center"><strong>Pengunjung Yang Online Saat Ini Sebanyak
:</strong></div></td>
</tr>
<tr>
<td bgcolor="#5F8AC0"> <div align="center"><font size="7"><strong><?php
echo $users; ?></strong></font></div></td>
</tr>
</table>

</body>
</html>

 Selanjutnya jalankan program “onlinestat.php” dengan alamat URL


“http://localhost/book/onlinestat/onlinestat.php” , sehingga tampilan program kurang lebih seperti
berikut ini :

Gambar 8.8.2 Hasil Program “onlinestat.php”

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id
DAFTAR PUSTAKA

PHP Documentation Group, 1997-2007

MySQL 5.1 Reference Manual. 1997-2007

Dasar Pemrograman Web Dinamis Menggunakan PHP, Abdul Kadir, Andi Offset, 2002, 2003.

http://www.sitepoint.com/ , 2007.

http://www.gscripts.net/, 2007.

http://www.hotscripts.com/php, 2007.

Dodit Suprianto,
Email: doditsuprianto@gmail.com,
Website: http://audiorakitan.web.id, http://audiorakitan.com, http://elkit.web.id,
http://doditsuprianto.web.id, http://stones.web.id

View publication stats

Anda mungkin juga menyukai