net/publication/325101821
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:
All content following this page was uploaded by Dodit Suprianto on 12 May 2018.
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.
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 :
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.
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.
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.
Menu ini akan langsung menuju ke web PHPMyAdmin. Sedangkan pembahasan PHPMyAdmin akan
dipaparkan tersendiri di bab “Aplikasi PHPMyAdmin”.
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.
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.
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.
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.
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.
<?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
:
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
?>"
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
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.
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 (“/*...*/”)
<?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>
?>
<?php
/*
echo 'Ini hanya sebuah test'; /* Komentar ini menyebabkan kesalahan
*/
*/
?>
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
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
<?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";
}
Jika digunakan notasi octal maka penulisan harus didahului dengan angka 0 (nol) dan jika digunakan
notasi hexadesimal maka penulisan harus didahului dengan angka 0x.
<?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.
<?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.
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:
<?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';
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.
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 ("<<<").
<<<nama_heredoc
string
nama_heredoc;
$str = <<<EOD
Heredoc sesuai untuk
$var1 string yang panjang
tanpa mengalami $var2
EOD;
echo $str;
?>
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.
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);
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);
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')
?>
<?php
$var = NULL;
?>
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>";
<?php
$foo = 10; // $foo adalah integer
$bar = (boolean) $foo; // $bar adalah boolean
?>
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;
?>
<?php
$foo = 10; // $foo adalah integer
$str = "$foo"; // $str adalah string
$fst = (string) $foo; // $fst juga 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
<?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.
Nama variable bisa terdiri dari huruf abjad, angka, dan underscore (_)
Nama variable bisa diawali dengan tanda underscore (_)
<?php
$var = 'Dodit';
$Var = 'Rini';
echo "$var, $Var"; // output "Dodit, Rini"
$täyte = 'mansikka';
// valid; 'ä' merupakan perluasan dari ASCII 228.
?>
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.
<?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.
<?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;
?>
<?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.
<?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.
<?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.
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
?>
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;
<?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
?>
<?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;
$total = 0;
while ($total < 10 )
{
$total += 1;
}
echo $total;
?>
<?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!";
?>
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_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
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.
<?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
?>
<?php
/* Kesalahan pada file */
$my_file = @file ('non_existent_file') or
die ("File gagal dibuka: error was '$php_errormsg'");
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>";
<?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
?>
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
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");
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.
If (syarat)
instruksi;
<?php
$panjang = 30;
$lebar = 80;
$luas = $panjang * $lebar;
$maks = 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
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;
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.
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";
?>
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.
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";
}
?>
<?php
$umur = 5; // bagaimana jika $umur lebih dari 5?
If ($umur <= 5)
$usia = "Balita";
else
$usia = "Remaja atau dewasa";
echo $usia . "<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
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.
while (syarat)
instuksi;
while (syarat)
{
instuksi;
instuksi;
}
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.
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.
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>";
}
$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.
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 :
<?php
$a = array (1, 2, 3, 17);
/*
Nilai $a saat ini adalah: 1.
Nilai $a saat ini adalah: 2.
Nilai $a saat ini adalah: 3.
Nilai $a saat ini adalah: 17.
*/
?>
<?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.
*/
?>
<?php
$a = array ("one" => 1, "two" => 2, "three" => 3, "seventeen" =>
17);
/* 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.
<?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 " $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;
}
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.
<?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";
}
<?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.
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]
}
<?php
$makefoo = true;
bar();
if ($makefoo) {
function foo()
{
echo "Aku tidak ada sampai eksekusi program mencapaiku
disini.\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
if ($makefoo) foo();
function bar()
{
echo "Aku ada saat program dijalankan pertama kali.\n";
}
?>
<?php
function foo()
{
function bar()
{
echo "Aku tidak ada sampai fungsi foo() dipanggil.\n";
}
}
foo();
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.
<?php
Function faktorial($m)
{
If ($m == 0)
Return 1;
Else
Return $m * faktorial ($m-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.
<?php
function perluasan_string(&$string)
{
$string .= 'dan tambahannya.';
}
Contoh 2, Melewatkan parameter passing by value yang disertai dengan argumen bawaan.
<?php
function makecoffee($type = "cappuccino")
{
return "Membuat secangkir $type.\n";
}
<?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();
?>
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 :
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.
<?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.
<?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
<?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
<?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.
<?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.
<?php
function ganjil($var)
{
return ($var % 2 == 1);
}
function genap($var)
{
return ($var % 2 == 0);
}
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.
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.
<?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.
<?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.
<?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.
<?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
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.
<?php
$input = array ("php", 4.0, array ("hijau", "merah"));
print_r(array_reverse ($input));
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.
<?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.
<?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>";
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.
<?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.
array_values
Mengembalikan semua nilai array yang diurutkan berdasarkan key angka, dimulai dari urutan ke-0 .
<?php
$array = array ("ukuran" => "XL", "warna" => "Gold");
print_r(array_values ($array));
// Array ( [0] => XL [1] => Gold )
?>
array
Menciptakan array baru.
<?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.
<?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).
<?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);
sort
Menata ulang urutan array, yang diurutkan berdasarkan nilainya dimulai dari kecil ke besar (ascending).
<?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)
<?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.
<?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.
<?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.
<?php
$info = array('kopi', 'coklat', 'caffeine');
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.
range
Menampilkan rentang nilai array dimulai dari kecil ke besar atau sebaliknya dari besar ke kecil.
<?php
foreach(range(0, 9) as $number) {
echo $number; // 0123456789
}
echo "<br>";
echo "<br>";
array_keys
Mengambil nilai key suatu array. Jika mixed search_value diisi, maka key yang ditampilkan hanya yang
sesuai dengan yang disyaratkan.
<?php
$array = array (0 => 100, "warna" => "merah");
print_r(array_keys ($array));
// Hasil: Array ( [0] => 0 [1] => warna )
echo "<br>";
echo "<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
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.
<?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).
<?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.
<?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.
<?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.
<?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.
<?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.
<?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.
<?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).
<?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).
<?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].
<?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
<?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().
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().
<?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
)
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.
<?php
$path = "/home/httpd/html/index.php";
$file = basename($path);
// $file bernilai "index.php"
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.
<?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.
disk_free_space
Untuk mengetahui sisa ruang pada sistem file atau partisi disk (dalam jumlah bytes) sesuai dengan alamat
string $direktori yang diberikan.
<?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.
<?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.
<?php
$handle = fopen('somefile.txt', 'r');
fclose($handle);
?>
feof
Untuk mengetahui apakah posisi penunjuk (pointer) file berada di akhir suatu file.
<?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 :
<?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.
<?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.
<?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.
<?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)).
<?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.
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.
<?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.
<?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.
<?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.
<?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'].
<?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'] . "'.";
}
?>
<?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.
<?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.
<?php
rename("somefile.txt","somefile_baru.txt");
?>
unlink
Untuk menghapus file $filename.
<?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.
<?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.
<?php
/* Kata “aku” ditemukan, karena kata 'aku' berada di awal kalimat
*/
ereg("^aku", "aku 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");
<?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.
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”
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.
<?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.
<?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.
<?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.
<?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.
<?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.
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.
<?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.
<?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.
<?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.
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.
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize()
example\" />";
?>
<?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
<?php
// Pesan
$message = "Line 1\nLine 2\nLine 3";
// 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>
';
// 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 :
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 :
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.
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
mysql_select_db('mydb');
Keluaran:
Record terhapus: 10
<?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.
<?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 .
<?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);
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] )
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Koneksi gagal: ' . mysql_error());
}
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().
<?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());
}
if (!($row = mysql_fetch_assoc($result))) {
continue;
}
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.
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.
<?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.
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.
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");
mysql_free_result($result);
?>
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");
mysql_free_result($result);
?>
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Koneksi gagal: " . mysql_error());
mysql_select_db("mydb");
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.
<?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;
}
$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.
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
<?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.
<?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.
<?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);
Keluaran :
user_id
password
mysql_field_table
Untuk mengetahui nama table berdasarkan field/kolom yang telah ditentukan.
<?php
$result = mysql_query("SELECT name,comment FROM people,comments");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}
mysql_field_type
Untuk mendapatkan type field/kolom, sesuai dengan field yang telah ditentukan.
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.
<?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);
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);
mysql_num_fields
Untuk memeperoleh jumlah field/kolom hasil dari operasi query.
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id =
'42'");
if (!$result) {
echo 'Tidak bisa menjalankan Query: ' . mysql_error();
exit;
}
mysql_num_rows
Untuk memperoleh jumlah baris/record yang merujuk pada $result.
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);
mysql_query
Untuk mengirim perintah query MySQL ke server.
Perintah query lebih dari satu tidak bisa dikenakan pada fungsi mysql_query.
mysql_result
Untuk mendapatkan hasil data.
<?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.
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . 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.
<?php
$str = "String diakhiri oleh escape: ";
$str .= chr(27);
/* penambahan character escape diakhir $str */
explode
Membagi string menjadi potongan-potongan array, dimana character pembagi (delimiter) telah
ditentukan.
<?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; // *
?>
<?php
$str = 'satu|dua|tiga|empat';
// batas positive
print_r(explode('|', $str, 2));
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.
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>";
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);
Jika parameter kedua ($charlist) tidak diisi, maka fungsi ltrim() juga memotong charater 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
"\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);
Keluaran :
number_format
Memformat angka yang dikelompokkan dalam ribuan.
Notasi Perancis menggunakan dua desimal, koma (',') sebagai pemisah desimal dan spasi kosong (' ')
sebagai pemisah ribuan, contoh :
<?php
$number = 1234.56;
// 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 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.
Jika parameter kedua ($charlist) tidak diisi, maka fungsi rtrim() juga memotong charater berikut ini :
<?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);
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 :
str_repeat
Untuk memperoleh string baru yang duhasilkan dari perulangan string.
<?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().
<?php
// Menghasilkan: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// 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");
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);
str_shuffle
Untuk mengacak string dan menghasilkan satu urutan baru hasil dari pengacakkan.
<?php
$str = 'abcdef';
$shuffled = str_shuffle($str);
str_split
Mengkonversi string menjadi array.
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().
<?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
<?php
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';
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.
<?php
$str = 'abcdef';
echo strlen($str); // 6
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).
<?php
$str = "Ini Hadiah Untuk FANNY ";
$str = strtolower($str);
echo $str; // ini hadiah untuk fanny
?>
strtoupper
Mengkonversi string menjadi huruf besar semua (uppercase).
<?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..
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.
<?php
$text = 'This is a test';
echo strlen($text); // 14
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.
<?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
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 :
<?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);
Keluaran :
ucfirst
Menjadika huruf besar (uppercase) pada character pertama string.
<?php
$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!
ucwords
Menjadikan huruf besar (uppercase) pada character pertama setiap kata pada suatu 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
<?php
$foo = 'hello world!';
$foo = ucwords($foo); // 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.
<?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>.
<?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.
<?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
<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php'
=>'hypertext processor');
parse_url
Menampilkan setiap komponen yang ada pada URL menjadi elemen-elemen array, fungsi parse_url()
merupakan kebalikan dari fungsi http_build_query().
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
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.
<?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.
<?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.
<?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).
<?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>";
is_bool
Untuk mengetahui apakah nilai dari variable $var bertipe boolean.
<?php
$a = false;
$b = 0;
is_float
Untuk mengetahui apakah nilai dari variable $var bertipe float.
Fungsi is_float() identik dengan fungsi is_double() dan is_real().
<?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.
<?php
$a = null;
if (is_null($a)) {
echo "$a bertipe null<br>";
}
is_numeric
Untuk mengetahui apakah nilai dari variable $var tergolong angka atau string angka.
<?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.
<?php
$var = '';
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
$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
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);
var_dump
Menampilkan informasi tentang variable. Antara lain struktur, tipe data beserta nilainya.
<?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.
<?php
$foo = "5bar"; // string
$bar = true; // boolean
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.
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>.
atau
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.
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>
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>
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>
</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.
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">
</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>
</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.
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>";
</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
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.
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.
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.
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();
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>
</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];
?>
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>
<?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>
</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.
Menuju ke
halaman web
PHPMyAdmin
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
Dan pada setiap halaman PHPMyAdmin juga disertai menu navigasi sebagai berikut :
Navigasi Keterangan
Menampilkan baris/record dari 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
Untuk memanipulasi database atau table, terutama merubah
struktur table atau 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
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 :
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
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.
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.
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.
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
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.
Nama database
yang dipilih
Nama table
yang dipilih
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.
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.
Ikon 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
Pilih salah satu database yang akan diekspor, dan tentukan pula format yang akan digunakan (penulis
menggunakan format standarnya yaitu format SQL).
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
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
Jika hasil ekpor hanya ditampilkan dalam halaman web saja tanpa perlu disimpan dalam bentuk file,
maka 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 5.5.7 Konfirmasi jika hasil ekspor disimpan ke file.
Ikon home
Kemudian klik sekali pada menu Import untuk menuju ke halaman import.
Menuju ke
halaman impor
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.
Jika proses impor berhasil, maka akan keluar pesan konfirmasi bahwa proses impor telah sukses, seperti
tampak berikut ini :
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
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”.
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:
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 :
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.
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.
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:
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.
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
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
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
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
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.
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.
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.
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:
Perintah SELECT bisa ditambahkan dengan operasi aritmatika secara langsung seperti berikut ini:
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.
+---------------------+
| 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).
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 /*
Terkadang kekeliruan terjadi saat menuliskan perintah SQL, seharusnya memberi tanda titik koma untuk
mengakhiri perintah malah menekan tombol enter. Contoh :
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 :
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.
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.
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:
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.
Langkah awal sebelum memanipulasi database “binatang” adalah dengan memilih databasenya secara
ekplisit dengan perintah :
Pernyataan di atas tidak menampilkan nilai apapun karena database “binatang” belum memiliki table
sama sekali. Untuk membuat table baru, tuliskan perintah query 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
Untuk menguji hasil pembuatan table apakah sesuai dengan yang diharapkan, gunakan pernyataan
DESCRIBE, seperti tampak berikut ini:
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
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.
Menambahkan kolom baru, yang diletakkan pada posisi pertama dari struktur table.
mysql> ALTER TABLE `peliharaan` ADD `id` VARCHAR(5) NOT NULL FIRST;
Merubah tipe data dan lebar tipe data kolom „kode‟ yang semula bertipe varchar(5) menjadi tipe
integer dengan lebar 10.
Menambahkan PRIMARY KEY pada kolom „kode‟, dengan syarat tidak ada duplikasi data pada
kolom „kode‟.
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:
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).
Untuk men-Load file text “peliharaan.txt” ke table “peliharaan” gunakan perintah berikut:
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.
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.
Catatan:
NULL dalam pernyataan INSERT memiliki kesamaan dengan \N jika
menggunakan cara LOAD DATA, yang berarti data tidak memiliki nilai.
Jika menggunakan Load Data, maka terlebih dahulu edit file text “peliharaan.txt”, kemudian load
kembali ke table “peliharaan” dengan perintah DELETE dan LOAD DATA :
Jika menggunakan pernyataan UPDATE, maka perbaiki saja record yang dimaksud dengan
pernyataan UPDATE dan WHERE.
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.
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.
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 |
+-------+---------+---------+------+------------+----------+
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 |
+-------+---------+---------+------+------------+----------+
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 |
+--------+---------+------------+
Contoh: Query yang menampilkan kolom “nama” dan kolom “kelahiran”, diurutkan berdasarkan kolom
“kelahiran” dari kecil ke besar (ascending) :
Contoh query yang menampilkan kolom “nama” dan kolom “kelahiran”, diurutkan berdasarkan kolom
“kelahiran” dari besar ke kecil (descending) :
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 :
Berikut ini contoh untuk mengetahui berapa tahun umur masing-masing binatang, caranya adalah dengan
menghitung selisih antara tanggal saat ini dan tanggal lahir
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 :
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.
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 |
+----------+------------+------------------+
Catatan:
Jangan pernah menggunakan tanda = atau <> ketika menggunakan pola SQL,
gunakan LIKE atau NOT LIKE sebagai operator perbandingan.
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 :
Mencari nama yang diawali dengan huruf „b‟, gunakan „^‟ di awal kolom nama:
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) :
Mencari nama yang diakhiri dengan „fy‟, letakkan „$‟ diakhir kolom nama:
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:
Contoh sebelumnya bisa dituliskan dengan menggunakan {n}, yang berarti diulang sebanyak - n - kali:
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 :
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
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”.
6.13 GROUP BY
Untuk mengetahui lebih jauh tentang GROUP BY, maka terlebih dahulu buatlah table “siswa” sebagai
percobaan fungsi-fungsi GROUP BY.
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;
COUNT(expr)
Menghitung jumlah record(baris) pada table. Contoh menampilkan jumlah siswa yang lahir antara tahun
1992 sampai 1993.
COUNT(DISTINCT expr,[expr...])
Menghitung jumlah baris (record) table, dimana field “nama” yang kembar tidak diperhitungkan.
Sehingga klausa DISTINCT harus ditambahkan.
Contoh: menampilkan semua baris (record) tanpa memperhitungkan field “nama” yang kembar. Sehingga
klausa DISTINCT tidak perlu ditambahkan.
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.
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.
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 |
+------------+
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”.
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.
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();
}
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();
}
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();
}
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>');
}
?>
<?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();
}
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).
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();
}
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.
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%"> </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();
}
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 !");
$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.
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
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:
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);
?>
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]> <u>$row[kriteria]
</u><br>";
}
?>
</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 !");
</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.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.
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.
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”.
<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';
<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");;
$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)." ".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> </p>
</div>
</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.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.
Buat file program php seperti di bawah ini dan beri nama “gb.php”, letakkan file tersebut di folder
“wamp/www/book/guestbook”.
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();
}
}
?>
<?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:
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
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_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;
}
closedir($dh_fany);
// Mulai pengacakan
srand(make_seed());
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).
Aktifkan terlebih dahulu pustaka yang menangani masalah image yaitu “php_gd.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");
$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;
ImageGif($img);
ImageDestroy($img);
?>
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 :
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.
Buat table dengan nama “login” di database “book” yang sudah pernah dibuat sebelumnya.
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 :
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 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);
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.
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>
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> </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>
";
$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>
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.
Membuat table yang diberi nama “onlinestat” yang di letakkan di database “book” yang sudah pernah
dibuat sebelumnya.
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";
//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!");
</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
DAFTAR PUSTAKA
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