Various PHP Tutorial
Various PHP Tutorial
VARIABEL DI PHP
By Achmad Solichin On 2 September 2010 In PHP, Web Development
Variabel dalam konteks pemrograman merupakan suatu alokasi penyimpanan data
(value) sementara di memori. Dalam PHP, variabel memiliki karakteristik khusus jika
dibandingkan dengan pemrograman lainnya. Variabel di PHP tidak perlu dideklarasikan
dan ditentukan tipe datanya sebelum digunakan. Variabel bisa langsung diisi dimana
dibutuhkan. Tipe data variabel akan mengikuti sesuai dengan isi variabel tersebut.
Penulisan nama variabel di PHP harus diawali dengan tanda $ dan mengikuti aturan
penamanaan variabel (identifier) yang benar.
PHP merupakan pemrograman berbasis web. PHP banyak digunakan untuk membuat
aplikasi berbasis web seperti website, dimana setiap aplikasi dapat terdiri dari beberapa
halaman yang saling terhubung. Dan memang seperti itulah karakteristik dasar dari web,
keterhubungan antara satu halaman dengan halaman yang lain. Kondisi tersebut membuat
PHP perlu menyediakan suatu metode pengiriman variabel antar halaman, karena
seringkali suatu variabel diperlukan di beberapa halaman sekaligus.
Tutorial ini berusaha mengupas mengenai 4 (empat) metode pengiriman variabelantar
halaman di PHP. Keempat metode tersebut yaitu metode POST, GET, SESSION dan
COOKIES. Beberapa contoh program sederhana terkait dengan keempat metode tersebut
juga akan diberikan agar dapat memberi gambaran yang lebih jelas.
Metode POST
Metode pengiriman variabel dengan POST pada dasarnya digunakan dalam pengiriman
variabel yang berasal dari sebuah form (inputan). Melalui atribut action yang terdapat
dalam tag <form> kita dapat mengatur dimana data inputan akan diproses. Misalnya
ditentukan bahwa form akan diproses di halaman proses.php maka seluruh data inputan
dapat diambil dan diproses di halaman proses.php tersebut. Cara pengambilan data
dapat menggunakan variabel array $_POST dengan index berupa nama inputan yang
akan diambil.
Contoh berikut ini saya ambil dari buku gratis Pemrograman Web dengan PHP dan
MySQL yang bisa didownload di situs Achmatim.Net.
Program 1 (Nama File : input02.php, Program menampilkan form inputan dengan
method POST)
1.
<
html
>
2.
<
head
><
title
>
Pengolahan Form
</
title
></
head
>
3.
<
body
>
4.
<
FORM ACTION
="proses02.php"
METHOD
="POST"
NAME
="input">
5.
Nama Anda
:
<
input type
="text"
name
="nama"><
br
>
6.
<
input type
="submit"
name
="Input"
value
="Input">
7.
</
FORM
>
8.
</
body
>
9.
</
html
>
Program 2 (Nama File : proses02.php, Program penanganan form inputan untuk
Program 1)
1.
<?php
2.
if
(isset($_POST['Input']))
{
3.
$nama
=
$_POST['nama'];
4.
echo
"Nama Anda : <b>$nama</b>";
5.
}
6.
?>
Metode GET
Pada metode pengiriman variabel antar halaman menggunakan GET, data dapat
dikirimkan melalui 2 (dua) cara yaitu melalui form inputan dan melalui parameter URL.
Jika dikirimkan melalui form inputan, maka variabel yang akan dikirimkan diwujudkan
dalam bentuk inputan (text, checkbox, radio, textarea dsb). Namun jika dikirimkan
melalui parameter URL, maka variabel yang dikirimkan beserta value (nilai)nya
diletakkan di alamat URL. Alamat URL sendiri dapat diwujudkan dalam bentuk link dan
jika diklik maka URL akan ditampilkan di address bar browser. Parameter URL yang
dikirimkan juga akan terlihat di address bar. Oleh karena itu, metode ini kurang cocok
untuk pengiriman data yang sifatnya rahasia, seperti dalam proses login.
Program 3 (Nama File : input03.php, Program menampilkan form inputan dengan
method GET)
1.
<
html
>
2.
<
head
><
title
>
Pengolahan Form
</
title
></
head
>
3.
<
body
>
4.
<
FORM ACTION
="proses03.php"
METHOD
="GET"
NAME
="input">
5.
Nama Anda
:
<
input type
="text"
name
="nama"><
br
>
6.
<
input type
="submit"
name
="Input"
value
="Input">
7.
</
FORM
>
8.
</
body
>
9.
</
html
>
Program 4 (Nama File : proses03.php, Program penanganan form inputan untuk
Program 3)
1.
<?php
2.
if
(isset($_GET['Input']))
{
3.
$nama
=
$_GET['nama'];
4.
echo
"Nama Anda : <b>$nama</b>";
5.
}
6.
?>
Penjelasan Program 3 dan 4
Program 3 dan program 4 pada prinsipnya sama dengan program 1 dan 2. Hasilnya pun
sama. Akan tetapi, pada program 1 dan 2, penanganan form menggunakan method POST,
sedang pada program 3 dan 4, penangan form dilakukan dengan method GET. Perhatikan
bahwa pada metode penanganan form menggunakan GET, data inputan akan dikirimkan
melalui parameter di URL. Terlihat pada gambar 4, nilai inputan ditampilkan di
parameter URL.
Metode SESSION
Session merupakan hal yang cukup penting dalam aplikasi berbasis web. Dengan session
memungkinkan programmer menyimpan informasi user secara semi-permanen, artinya
selama masa tertentu informasi akan tersimpan. Penyimpanan isi variabel session berada
di server, jadi relatif lebih aman karena tidak dapat dimanipulasi secara langsung oleh
client.
Dalam aplikasi berbasis web, session banyak digunakan sebagai autentifikasi login.
Dengan session memungkinkan programmer mengatur siapa saja yang bisa mengakses
suatu halaman. Misalnya saja, untuk melihat halaman kotak surat pada email, kita harus
login terlebih dahulu. Dalam proses login antara lain akan terjadi pembuatan suatu
session yang akan dibawa oleh user di setiap halaman. Di halaman kotak surat, session
tersebut akan diperiksa. Jika session benar maka user dipersilahkan membuka halaman
kotak surat, namun jika salah maka user tidak bisa membuka halaman kotak surat dan
biasanya akan diminta untuk login terlebih dahulu. Itulah sebabnya, user tidak bisa
mengakses halaman kotak surat secara langsung tanpa melakukan login.
Selain untuk autentifikasi login, session juga dapat digunakan untuk mengirimkan suatu
nilai (data) antar halaman. Caranya cukup mudah. Pada halaman pertama, ciptakan
sebuah variabel session dan isikan dengan nilai yang akan dikirimkan. Selanjutnya pada
halaman kedua, isi variabel session dapat diambil dengan predefined
variable$_SESSION.
Berikut ini contoh sederhananya:
Program 5 (Nama File : session01.php, Program mengirimkan nilai variabel melalui
session)
1.
<?php
2.
/****************************************************
3.
Nama file : session01.php
4.
Halaman ini merupakan halaman contoh penciptaan session.
5.
Perintah session_start() harus ditaruh di perintah pertama
6.
tanpa spasi di depannya. Perintah session_start() harus ada
7.
pada setiap halaman yang berhubungan dengan session
8.
*****************************************************/
9.
session_start();
10.
11.
$_SESSION['nama']
=
"Achmad Solichin";
12.
echo
"<a href='session02.php'>Menuju ke halaman kedua</a>";
13.
?>
Program 6 (Nama File : session02.php, Program mengambil nilai yang disimpan di
session)
1.
<?php
2.
session_start();
3.
4.
echo
"Nama Anda adalah ".$_SESSION['nama'];
5.
echo
"<br/><a href='session01.php'>Kembali ke hal pertama</a>";
6.
?>
Metode COOKIES
Seperti halnya session, cookies juga merupakan sebuah konsep penyimpanan informasi
user. Hanya saja, jika session tempat penyimpanan berada di server, cookies berada di
client. Oleh karena itu, konsep cookies sebaiknya jangan digunakan untuk menyimpan
informasi login user seperti username, password dsb. Selain user bisa melihat informasi
yang disimpan, user juga bisa men-disable cookies itu sendiri. Jika cookies di-disable,
maka program yang memanfaatkan cookies tentunya tidak akan berjalan dengan baik.
Cookies, salah satunya biasa digunakan untuk menyimpan sementara produk-produk
yang dipilih oleh pengunjung pada saat berbelanja di sebuah situs toko online.
Karena cookies dapat digunakan untuk menyimpan suatu nilai, maka cookies dapat
digunakan untuk mengirimkan variabel antara halaman satu dengan yang lainnya. Nilai
yang akan dikirimkan cukup disimpan di cookies, maka setiap halaman dapat
mengaksesnya dengan menggunakan predefined variable $_COOKIE.
Contoh program pengiriman variabel dengan menggunakan COOKIES.
Program 7 (Nama File : cookie01.php, Program membuat cookie)
1.
<?php
2.
$value
=
'achmatim';
3.
$value2
=
'Achmad Solichin';
4.
5.
setcookie("username",
$value);
6.
setcookie("namalengkap",
$value2,
time()+
3600
);
/* expire in 1 hour */
7.
8.
echo
"<h1>Ini halaman pengesetan cookie</h1>";
9.
10.
echo
"<h2>Klik <a href='cookie02.php'>di sini</a> untuk pemeriksaan cookies</h2>";
11.
?>
Program 8 (Nama File : cookie02.php, Program pemeriksaan cookie)
1.
<?php
2.
3.
if(isset($_COOKIE['username']))
{
4.
echo
"<h1>Cookie 'username' ada. Isinya : "
.
$_COOKIE['username'];
5.
}
else
{
6.
echo
"<h1>Cookie 'username' TIDAK ada.</h1>";
7.
}
8.
if(isset($_COOKIE['namalengkap']))
{
9.
echo
"<h1>Cookie 'namalengkap' ada. Isinya : "
.
$_COOKIE['namalengkap'];
10.
}
else
{
11.
echo
"<h1>Cookie 'namalengkap' TIDAK ada.</h1>";
12.
}
13.
echo
"<h2>Klik <a href='cookie01.php'>di sini</a> untuk penciptaan cookies</h2>";
14.
?>
Dari keempat metode tersebut, mana yang sebaiknya kita gunakan? Jawabnya yang
sesuai kebutuhan. Misalnya dilihat dari data yang akan dikirimkan, untuk data yang tidak
terlalu penting maka cukup dengan menggunakan metode GET yang dikirimkan
melalui parameter URL. Tapi pada kasus lain, jika datanya cukup penting dan cukup
banyak, maka sebaiknya menggunakan metode POST.
Sebenarnya, disamping keempat metode tersebut di atas, kita dapat mengatur konfigurasi
PHP di file php.ini agar setiap variabel yang diciptakan bersifat global. Artinya dapat
diakses oleh setiap halaman yang ada. Caranya adalah dengan mengubah nilai
register_globals menjadi On. Namun cara ini sangat tidak dianjurkan, karena
alasan keamanan.
CONTOH PROGRAM PENANGANAN
ARRAY DI PHP
By Achmad Solichin On 5 October 2010 In PHP
Array di PHP merupakan hal yang penting. Dalam praktiknya, array hampir selalu
digunakan. Misalnya saja pada proses penanganan form, nilai inputan yang berasal dari
form akan tersimpan di sebuah predefined-array $_POST atau $_GET. Variabel lainnya
seperti $_FILES, $_SESSION, $_COOKIE dan $_SERVER juga merupakan array.
Dalam pengambilan data dari basis data, umumnya juga dalam bentuk array. Kita
mengenal fungsi mysql_fetch_array() untuk menyimpan hasil perintah query dari
database.
Dalam contoh program berikut ini, saya akan mencoba menggunakan beberapa fungsi
array untuk menyelesaikan suatu kasus. Kebetulan kasus yang akan kita coba merupakan
pertanyaan dari salah satu pengunjung situs achmatim.net ini. Berikut ini kutipan
pertanyaannya:
Mas bisa tidak bantu mengenai string sepertinya :
Jadi didalam table inbox kolom nominal ada isinya : 234,33,4567,32,456,78
Kemudian saya ingin menampilkan angka2 tersebut dalam table di web
berdasarkan digit nya.
Jadi pada table kolom 2 digit isinya : 33 32 78
terus pada kolom 3 digit isinya : 234 456
dan pada kolom 4 digit isinya : 4567
Script nya gimana yach untuk menampilkan hal tersebut, dengan catatatn jika
ada beberapa angka tidak ditampilkan kesamping tapi ditaro dibawahnya.
Mohon bantuan penerangannya yach mas, sebelumnya Thxz.
Dalam kasus tersebut, intinya diinginkan agar dari serangkaian angka (nilai)
dikelompokkan berdasarkan jumlah digitnya dan ditampilkan di tabel. Untuk keperluan
contoh ini, kita tidak menggunakan database, namun nilai yang akan dikelompokkan kita
definisikan secara manual.
Berikut ini garis besar (algoritma) alur program yang dapat digunakan untuk
menyelesaikan kasus tersebut. Dalam kasus ini, saya tidak terlalu memikirkan efektifitas
dan optimalitas dari algoritma yang digunakan, namun lebih pada pembelajaran
mengenai array beserta fungsi-fungsinya.
o Pertama, kita akan lakukan inisialisai (pemberian nilai) kumpulan angka yang akan
diperiksa. Sesuai permintaan dalam kasus tersebut, kumpulan angka masih tersimpan
dalam bentuk string.
o Ubah string ke dalam bentuk array. Kita akan gunakan fungsi explode() dari PHP
untuk mengubah string ke dalam bentuk array dengan pola tertentu.
o Bentuk array dua dimensi yang mengelompokkan berdasarkan jumlah digit setiap
angka.
o Transposisikan array dua dimensi yang terbentuk sedemikian hingga posisi baris
menjadi kolom. Hal ini dimaksudkan agar pengelompokkan berada di setiap kolom
o Tampilkan array ke dalam tabel HTML.
Dan berikut ini source program lengkapnya:
1.
<?php
2.
/*
3.
* @description: contoh program penanganan array.
4.
* STUDI KASUS: Mas bisa tidak bantu mengenai string sepertinya :
5.
Jadi didalam table inbox kolom nominal ada isinya : 234,33,4567,32,456,78
6.
Kemudian saya ingin menampilkan angka2 tersebut dalam table di web berdasarkan digit nya.
7.
Jadi pada table kolom 2 digit isinya : 33 32 78
8.
terus pada kolom 3 digit isinya : 234 456
9.
dan pada kolom 4 digit isinya : 4567
10.
Script nya gimana yach untuk menampilkan hal tersebut, dengan catatatn jika ada beberapa
angka tidak ditampilkan kesamping tapi ditaro dibawahnya.
11.
Mohon bantuan penerangannya yach mas, sebelumnya Thxz.
12.
* @author: Achmad Solichin (http://achmatim.net)
13.
* @date: 05/10/2010 @ Surabaya
14.
* */
15.
16.
$string
=
"234,33,4567,29,1,2,4,32,456,78,1239,8765";
17.
18.
#bentuk array berdasarkan pattern , (koma)
19.
$arr_string
=
explode(",",
$string);
20.
21.
#ambil nilai terkecil dan terbesar dari array
22.
$min_val
=
min($arr_string);
23.
$max_val
=
max($arr_string);
24.
25.
#urutkan array secara ascending
26.
sort($arr_string);
27.
28.
#bentuk array 2 dimensi, index array diambil dari jumlah digit
29.
$arr
=
array();
30.
foreach
($arr_string
as
$nilai)
{
31.
$index
=
strlen($nilai);
32.
$arr[$index][]
=
$nilai;
33.
}
34.
35.
//echo '<pre>'; print_r($arr); echo '</pre>';
36.
37.
#tranposisikan array. proses ini diambil dari http://stackoverflow.com/questions/797251/transposing-
multidimensional-arrays-in-php
38.
$new_arr
=
array();
39.
foreach
($arr
as
$key
=>
$subarr)
{
40.
foreach
($subarr
as
$subkey
=>
$subvalue)
{
41.
$new_arr[$subkey][$key]
=
$subvalue;
42.
}
43.
}
44.
//echo '<pre>'; print_r($new_arr); echo '</pre>';
45.
46.
#tampilkan array dalam bentuk tabel
47.
echo
"String = $string<br/>";
48.
$tabel
=
"<table border=1>";
49.
50.
#buat header tabel
51.
$tabel
.=
"<tr>";
52.
for
($i
=
strlen($min_val);
$i<=
strlen($max_val);
$i++)
{
53.
$tabel
.=
"<th>$i DIGIT</th>";
54.
}
55.
$tabel
.=
"</tr>";
56.
57.
#tampilkan isi datanya
58.
foreach
($new_arr
as
$baris)
{
59.
$tabel
.=
"<tr>";
60.
for
($i
=
strlen($min_val);
$i<=
strlen($max_val);
$i++)
{
61.
if
(isset($baris[$i]))
{
62.
$tabel
.=
"<td>".$baris[$i]."</td>";
63.
}
else
{
64.
$tabel
.=
"<td> </td>";
65.
}
66.
}
67.
$tabel
.=
"</tr>";
68.
}
69.
70.
$tabel
.=
"</table>";
71.
echo
$tabel;
72.
?>
Berikut ini hasil tampilannya
Selamat mencoba, semoga bermanfaat untuk kita semua.
BERBAGAI CARA KONVERSI DARI STRING
KE ARRAY DI PHP
By Achmad Solichin On 28 October 2010 In PHP
Seperti kita ketahui bahwa dalam istilah teknis pemrograman string merupakan
kumpulan dari karakter. Dalam bahasa sehari-hari orang sering menyebut string dengan
istilah kalimat. Di dalam PHP, variabel yang berisi string dapat dinyatakan antara lain
dengan menggunakan single-quote (kutip tunggal) dan double-quote (kutip ganda).
Sementara itu, array merupakan salah satu bentuk struktur data yang memungkinkan
penyimpanan lebih dari satu buah nilai di dalam satu nama variabel. Khusus di PHP,
dalam satu variabel array, dapat disimpan berbagai macam tipe data. Jadi di PHP, bisa
saja antara satu elemen dengan elemen lainnya di dalam array memiliki tipe data string,
integer, float atau boolean.
Dalam tutorial kali ini, saya coba menjelaskan bagaimana konversi suatu nilai string
ke dalam variabel array. Konversi dilakukan terhadap string dengan pola (pattern)
tertentu, biasanya berupa karakter pemisah (delimiter). Sebagai contoh, jika kita ingin
membuat array dari setiap kata yang didapat dari suatu kalimat.
Kalimat: "Saya suka makan bakso"
Hasil Array : array("Saya", "suka", "makan", "bakso")
Untuk lebih jelasnya, dengan kasus contoh di atas, berikut ini berbagai fungsi dan teknik
yang dapat digunakan untuk melakukan konversi string ke dalam array.
Teknik #1. Menggunakan Fungsi explode()
Fungsi explode() di dalam PHP merupakan fungsi yang dapat memecah suatu string
dengan pola (delimiter) tertentu. Fungsi ini memiliki 3 buah parameter yaitu string
delimiter, string yang akan dipecah dan yang ketiga batasan (limit) pemecahan string.
Dari ketiga parameter tersebut, dua parameter yang pertama harus disertakan, dan yang
ketiga bersifat opsional alias boleh tidak disertakan.
Berikut ini contoh penggunaan fungsi explode():
1.
<?php
2.
$string
=
"Saya suka makan bakso";
3.
$arr_kata
=
explode
(" ",
$string);
4.
$arr_kata2
=
explode
(" ",
$string,
2
);
5.
6.
print_r
($arr_kata);
//Array ([0] => Saya [1] => suka [2] => makan [3] => bakso )
7.
echo
"<br/>";
8.
print_r
($arr_kata2);
//Array([0] => "Saya" [1] => "suka makan bakso")
9.
?>
Teknik #2. Menggunakan Fungsi split() dan
preg_split()
Fungsi split() dan explode() pada dasarnya sama, yaitu untuk memecah string dengan
pola (delimiter) tertentu. Namun dengan fungsi split() kita dapat menerapkan regular-
expression (REGEX) sebagai delimiter string-nya. Fungsi split() sendiri sudah
dihilangkan (deprecated) mulai PHP 5.3.0, jadi bagi Anda yang menggunakan PHP versi
5.3.0 ke atas fungsi ini tidak akan dikenali.
Namun demikian, untuk alasan pembelajaran, saya tetap memberikan contoh memecah
string dengan fungsi split():
1.
<?php
2.
$string
=
"Saya suka makan bakso";
3.
$arr_kata
=
split(' +',
$string);
4.
5.
print_r($arr_kata);
6.
//Array ( [0] => Saya [1] => suka [2] => makan [3] => bakso )
7.
?>
Teknik #3. Menggunakan Fungsi
preg_split()
Di dalam manual PHP disebutkan bahwa fungsi preg_split() ini merupakan fungsi yang
dapat membagi string berdasarkan pola Regular Expression (Regex). Tampaknya fungsi
ini mirip seperti fungsi preg_split(), namun PHP tetap mempertahankan fungsi ini di versi
5.3.0 ke atas. Fungsi ini memiliki dua parameter utama yaitu pola (pattern) pencarian
yang akan menjadi dasar pemotongan string dan string yang akan dipecah. Selain itu,
juga memiliki 2 parameter pilihan yaitu limit yang membatasi jumlah pemotongan string
dan flags yang antara lain mengatur bagaimana jika string yang dihasilkan kosong.
Berikut ini contoh program memecah kalimat menjadi array kata dengan fungsi
preg_split() ini:
1.
<?php
2.
$string
=
"Saya suka makan bakso";
3.
$arr_kata
=
preg_split('/ +/',
$string);
4.
5.
print_r
($arr_kata);
6.
?>
Teknik #4. Menggunakan Fungsi
str_word_count()
Saya sendiri terus terang baru menyadari bahwa fungsi str_word_count() ini punya
kemampuan lain disamping fungsi utamanya yaitu menghitung jumlah kata di dalam
string. Fungsi ini ternyata dapat juga menghasilkan array kata dari suatu string yang
diberikan, dengan memanfaatkan opsi (parameter) yang kedua. Namun hati-hati, fungsi
ini akan otomatis memotong string menjadi array berdasarkan karakter-karakter non-
abjad (a-z). Jadi jika di dalam kalimat (string) terdapat kata yang ada angkanya, maka
kata tersebut juga akan dipecah.
Berikut ini contohnya. Silahkan dibandingkan hasil yang pertama dan kedua.
1.
<?php
2.
$string
=
"Saya suka makan bakso";
3.
$arr_kata
=
str_word_count($string,
1
);
4.
print_r($arr_kata);
5.
6.
$string
=
"Saya suka makan b4kso";
7.
$arr_kata
=
str_word_count($string,
1
);
8.
print_r($arr_kata);
9.
?>
Demikianlah 4 teknik di PHP untuk memecah string menjadi array. Mungkin masih
banyak cara lain yang dapat dilakukan, misalnya dengan fungsi strtok() String
tokenizer atau dengan teknik perulangan.
PROGRAM PHP UNTUK MENAMPILKAN
SPESIFIKASI BASIS DATA
By Achmad Solichin On 28 July 2010 In Download, Mysql, PHP
Spesifikasi Basis Data menggambarkan struktur data fisik pada suatu sistem atau
aplikasi. Spesifikasi basis data menyajikan bagaimana penyimpanan data dilakukan
disoftware basis data. Di dalam dokumentasi sistem, termasuk
dalam laporan KKP danskripsi, spesifikasi basis data juga perlu ditampilkan. Bentuk
dari spesifikasi basis data sendiri secara umum berupa tabel yang menyajikan
informasi field untuk seluruh tabel yang digunakan. Informasi field yang ditampilkan
antara lain nama field, tipe field, panjang field dan field yang menjadi field kunci
(primary key).
Secara sederhana, untuk membuat spesifikasi basis data, kita dapat
menggunakanMicrosoft Word atau Open Office Writer. Informasi tabel dan field
berasal dari hasil analisis sistem berupa class diagram atau ERD (Entity Relationship
Diagram). Nah dari spesifikasi basis data barulah dibuat struktur tabel di suatu DBMS
seperti MySQL atau Oracle. Setelah tabel-tabel di DBMS siap, barulah program
(aplikasi) dibangun.
Itu adalah proses idealnya. Dalam kenyataannya seringkali kebalik. Struktur tabel dan
program dibangun terlebih dahulu, baru dokumentasinya dibuat belakangan. Kondisi ini
juga banyak dilakukan oleh temen-temen kita, mahasiswa yang lagi menyusun skripsi
atau KKP. Program dan aplikasi dikerjain duluan, baru laporan belakangan.
Bukannya bermaksud meng-amini proses pengembangan aplikasi yang kebalik
tersebut, namun semoga program kecil berikut ini bisa berguna. Program berikut ini
dibuat denganPHP. Tujuannya adalah meng-generate tabel spesifikasi basis data secara
otomatis dari suatu DBMS, kebetulan kita akan menggunakan MySQL.
Contoh tabel hasil program
Untuk menghasilkan tabel spesifikasi basis data, program berikut ini menggunakan
beberapa fungsi bawaan PHP yang berhubungan dengan MySQL, yaitu:
o mysql_connect() untuk melakukan koneksi ke database MySQL.
o mysql_select_db() untuk membuka database yang akan digunakan.
o mysql_query() untuk mengeksekusi (menjalankan) perintah query ke MySQL dari
PHP.
o mysql_fetch_row() untuk mengambil nilai hasil query yang dihasilkan oleh fungsi
mysql_query(). Hasil query dimasukkan dalam array PHP.
o mysql_num_fields() untuk menghasilkan jumlah field dari suatu tabel.
o mysql_fetch_field() untuk mendapatkan informasi (metadata) dari suatu field dalam
tabel.
o mysql_field_len() untuk mendapatkan informasi panjang (length) setiap field dalam
tabel.
Program
Dan berikut ini program lengkapnya.
Code block
1.
<html>
2.
<head><title>MySQL Database Spesification Creator</title>
3.
<style type="text/css">
4.
table.db-table { border-right:1px solid #ccc; border-
bottom:1px solid #ccc; }
5.
table.db-table th { background:#eee; padding:5px; border-left:1px solid
#ccc; border-top:1px solid #ccc; }
6.
table.db-table td { padding:5px; border-left:1px solid #ccc; border-
top:1px solid #ccc; }
7.
</style>
8.
</head>
9.
<body>
10.
<?php
11.
/* connect to the db */
12.
$connection
=
mysql_connect('localhost','user','password');
13.
mysql_select_db('nama_database',$connection);
14.
15.
/* show tables */
16.
$result
=
mysql_query('SHOW TABLES',$connection)
or
die('cannot show tables');
17.
while($tableName
=
mysql_fetch_row($result))
{
18.
19.
$table
=
$tableName[
0
];
20.
21.
echo
'<h3>',$table,'</h3>';
22.
$result2
=
mysql_query('SELECT * FROM '.$table.' LIMIT 1')
or
die('cannot select from
'.$table);
23.
$i
=
0;
24.
echo
'<table cellpadding="0" cellspacing="0" class="db-table">';
25.
echo
'<tr><th>No</th><th>Nama
Field</th><th>Type</th><th>Panjang</th><th>Keterangan</th></tr>';
26.
while($i<
mysql_num_fields($result2))
{
27.
$meta
=
mysql_fetch_field($result2,
$i);
28.
$length
=
mysql_field_len($result2,
$i);
29.
echo
'<tr>';
30.
echo
'<td>'.($i+1).'</td>';
//nomor
31.
echo
'<td>'.(($meta->primary_key)
?
'<u>'.$meta->name.'</u>'
:
$meta-
>name).'</td>';
//nama field
32.
echo
'<td>'.$meta->type.'</td>';
//tipe field
33.
echo
'<td>'.$length.'</td>';
//panjang
34.
echo
'<td>'.$meta->name.'</td>';
//keterangan
35.
echo
'</tr>';
36.
$i++;
37.
}
38.
echo
'</table><br />';
39.
}
40.
?>
41.
</body>
42.
</html>
ALGORITMA BUBBLE SORT UNTUK
PENGURUTAN (SORTING)
By Achmad Solichin On 19 April 2010 In PHP
Pengurutan merupakan salah satu proses dasar yang sering dibahas dalam algoritma dan
struktur data. Dan salah satu algoritma klasik dan paling sederhana dalam
halpengurutan (sorting) adalah algoritma Bubble Sort. Terlepas dari beberapa
kekurangan yang membuat algoritma ini tidak banyak digunakan dalam proses
pengurutan di aplikasi, namun tidak bisa dipungkiri, algoritma ini boleh dikatakan
sebagai pionir algoritma sorting. Di dalam matakuliah Algoritma dan Struktur
Data di berbagai perguruan tinggi juga bisa dipastikan memasukkan konsep pengurutan
menggunakan algoritma Bubble sebagai salah satu pokok bahasan.
Untuk itulah, saya rasa tidak ada salahnya untuk sedikit membahas mengenai
algoritmabubble sort ini. Tentunya disertai contoh program sederhana yang menerapkan
pengurutan menggunakan algoritma bubble sort. Contoh program akan disajikan
dalam Bahasa C dan PHP.
Algoritma bubble sort dalam proses pengurutan data secara sederhana bisa diibaratkan
seperti halnya gelembung udara (bubble). Algoritma ini akan menggeser nilai yang
terkecil atau terbesar (sesuai dengan jenis pengurutan, ascending ataudescending) ke
posisi ujung dari daftar. Demikian seterusnya hingga semua daftar dalam keadaan terurut.
Proses dasar yang terjadi dalam algoritma ini adalah proses pertukaran nilai (swapping).
Berikut ini algoritma Bubble Sort yang saya kutip dari Wikipedia:
Code block
1.
procedure bubbleSort( A : list of sortable items ) defined as:
2.
do
3.
swapped := false
4.
for each i in 0 to length(A) - 2 inclusive do:
5.
if A[i] > A[i+1] then
6.
swap( A[i], A[i+1] )
7.
swapped := true
8.
end if
9.
end for
10.
while swapped
11.
end procedure
Contoh penerapan Algoritma Bubble Sort
dalam Bahasa C
Code block
1.
#include "stdio.h"
2.
#include "conio.h"
3.
#define n 7
4.
void
main
()
5.
{
6.
int
A
[
n
]
=
{
15
,
10
,
7
,
22
,
17
,
5
,
12
};
7.
int
X
,
I
,
K
;
8.
printf("Sebelum di-sort\n");
9.
for
(
I
=0;
I
<=
n
-1;
I
++)
10.
printf("%3i",
A
[
I
]);
11.
printf("\n");
12.
13.
K
=0;
14.
while(
K
<=
n
-
2
)
15.
{
16.
I
=0;
17.
while(
I
<=
n
-
2
-
K
)
18.
{
19.
if
(
A
[
I
]
>
A
[
I
+
1
])
20.
{
21.
X
=
A
[
I
];
22.
A
[
I
]
=
A
[
I
+
1
];
23.
A
[
I
+
1
]
=
X
;
24.
}
25.
I
++;
26.
}
27.
K
++;
28.
}
29.
printf("Sesudah di-sort\n");
30.
for
(
I
=0;
I
<=
n
-1;
I
++)
31.
printf("%3d",
A
[
I
]);
32.
}
Contoh penerapan Algoritma Bubble Sort
dalam PHP
Code block
1.
<?
php
2.
define
("n",
7
);
3.
$A
=
array
(
15
,
10
,
7
,
22
,
17
,
5
,
12
);
4.
echo
"<h1>Sebelum di-sort</h1>";
5.
for
(
$I
=0;
$I
<=
n
-1;
$I
++)
6.
echo
"$A[$I] ";
7.
8.
$K
=0;
9.
while(
$K
<=
n
-
2
)
10.
{
11.
$I
=0;
12.
while(
$I
<=
n
-
2
-
$K
)
13.
{
14.
if
(
$A
[
$I
]
>
$A
[
$I
+
1
])
15.
{
16.
$X
=
$A
[
$I
];
17.
$A
[
$I
]
=
$A
[
$I
+
1
];
18.
$A
[
$I
+
1
]
=
$X
;
19.
}
20.
$I
++;
21.
}
22.
$K
++;
23.
}
24.
echo
"<h1>Sesudah di-sort</h1>";
25.
for
(
$I
=0;
$I
<=
n
-1;
$I
++)
26.
echo
"$A[$I] ";
27.
?>
CONTOH PROGRAM PHP UNTUK KIRIM
EMAIL
By Achmad Solichin On 22 March 2010 In PHP
PHP yang merupakan bahasa pemrograman favorit saya saat ini, selain dapat menangani
urusan pembuatan file PDF, baca tulis file CSV maupun DBF, juga memiliki
kemampuanpenanganan email. Salah satunya adalah untuk berkirim email. Berikut
ini contoh sederhana program php untuk mengirim email. Contoh program terdiri dari
2 (dua) file dimana file yang pertama merupakan class sederhana bernama Mailer yang
saya buat untuk mengatur pengiriman file. Sementara pada file yang kedua merupakan
contoh penggunaan class Mailer untuk mengirimkan pesan ke email tujuan. Pesan
dituliskan melalui sebuah form sederhana.
Nama File: Mailer.class.php
Code block
1.
<?php
2.
/*
3.
Class name : Mailer
4.
Description : Class for handling sending an email
5.
Author : Achmad Solichin (http://achmatim.net)
6.
*/
7.
8.
class Mailer {
9.
// declare private attributes
10.
private $from;
11.
private $subject;
12.
private $to = array();
13.
private $cc = array();
14.
private $bcc = array();
15.
private $message;
16.
public $error;
17.
// Class constructor
18.
public function __construct($from, $to, $subject, $message) {
19.
$this->from = $from;
20.
$this->to = $to;
21.
$this->subject = $subject;
22.
$this->message = $message;
23.
}
24.
// accessor functions
25.
public function __set($name, $value) {
26.
$this->$name = $value;
27.
}
28.
public function __get($name) {
29.
return $this->$name;
30.
}
31.
32.
public function send_mail() {
33.
if (!empty($this->to) && count($this->to) > 0) {
34.
$destination = implode (',',$this->to);
35.
}
36.
$headers = 'MIME-Version: 1.0' . "\r\n";
37.
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
38.
if (!empty($this->to)) {
39.
$headers .= 'From: '. $this->from . "\r\n";
40.
}
41.
if (!empty($this->cc) && count($this->cc) > 0) {
42.
$headers .= 'Cc: ';
43.
$headers .= implode (',',$this->cc);
44.
$headers .= "\r\n";
45.
}
46.
if (!empty($this->bcc) && count($this->bcc) > 0) {
47.
$headers .= 'Bcc: ';
48.
$headers .= implode (',',$this->bcc);
49.
$headers .= "\r\n";
50.
}
51.
52.
if(mail($destination, $this->subject, $this->message, $headers)) {
53.
return true;
54.
} else {
55.
$this->error = 'Server cannot sending mail.';
56.
return false;
57.
}
58.
}
59.
}
60.
?>
Nama File: send_mail.php
Code block
1.
<html>
2.
<head><title>Aplikasi Kirim Email dengan PHP</title></head>
3.
<body>
4.
<h1>Demo Aplikasi Kirim Email dengan PHP</h1>
5.
<form action="" method="post">
6.
<table width="100%">
7.
<tr>
8.
<td width="150">Pengirim: </td>
9.
<td><input type="text" name="pengirim" size="40"/></td>
10.
</tr>
11.
<tr>
12.
<td>Penerima: </td>
13.
<td><input type="text" name="penerima"
size="40"/></td>
14.
</tr>
15.
<tr>
16.
<td>Judul: </td>
17.
<td><input type="text" name="judul"
size="40"/></td>
18.
</tr>
19.
<tr>
20.
<td>Pesan: </td>
21.
<td> </td>
22.
</tr>
23.
<tr>
24.
<td colspan="2"><textarea cols="58" rows="10"
name="pesan"></textarea></td>
25.
</tr>
26.
<tr>
27.
<td> </td>
28.
<td><input type="submit" name="Send"
value="Send"/><input type="reset" name="reset" value="Cancel"/></td>
29.
</tr>
30.
</table>
31.
</form>
32.
33.
<?php
34.
include
"Mailer.class.php";
35.
if
(isset($_POST['Send']))
{
36.
$pengirim
=
$_POST['pengirim'];
37.
$penerima
=
$_POST['penerima'];
38.
$judul
=
$_POST['judul'];
39.
$pesan
=
$_POST['pesan'];
40.
41.
if
($pengirim=='')
{
42.
die("Pengirim harus diisi");
43.
}
44.
45.
$mailer
=
new
Mailer
($pengirim,$penerima,
$judul,
$pesan);
46.
$mailer->send_mail();
47.
}
48.
?>
49.
</body>
50.
</html>
FUNGSI REKURSIF DAN PENERAPANNYA
DI PHP
By Achmad Solichin On 19 March 2012 In Mysql, PHP
Fungsi merupakan bagian yang tidak terpisahkan dari konsep bahasa pemrograman.
Dengan adanya fungsi, akan meningkatkan readibility (kemudahan untuk dibaca),
modularity (pemecahan program menjadi modul-modul) dan reusability (dapat digunakan
kembali) program kita. Lalu apa itu fungsi rekursif? Singkatnya, fungsi rekursif adalah
suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam suatu fungsi rekursif terdapat
pemanggilan terhadap dirinya sendiri.
Penasaran? Dalam tutorial kali ini, saya akan menyajikan beberapa contoh
sederhanapenerapan fungsi rekursif di bahasa pemrograman PHP. Pada akhir tutorial,
akan dicontohkan penggunaan fungsi rekursif dalam menampilkan menu
bertingkat yang diambil dari database MySQL.
Fungsi rekursif biasanya digunakan untuk menyelesaikan permasalahan yang memiliki
keteraturan pola dalam prosesnya, contohnya dalam menyelesaikan soal menampilkan
deret bilangan. Salah satu kelebihan penggunaan fungsi rekursif adalah secara penulisan
code program akan lebih singkat dan efektif. Namun kekurangannya tidak terlalu efektif
secara performa dan waktu eksekusi program karena fungsi rekursif membutuhkan
resources memory yang lebih besar. Dan jika tidak hati-hati dalam mendefinisikan proses
di dalam fungsi rekursif, seringkali menghasilkan proses yang tidak pernah berhenti
(infinitive process).
Menghitung Faktorial dengan Rekursif
Salah satu contoh yang paling mudah untuk menjelaskan fungsi rekursif adalah faktorial.
Kita tahu bahwa dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian
antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis
sebagai n! dan disebut n faktorial. Sebagai contoh 5! = 5 x 4 x 3 x 2 x 1 = 120.
Jika dilihat dari keteraturan pola dalam menghitung nilai faktorial suatu bilangan, maka
dapat diselesaikan dengan menggunakan fungsi biasa maupun fungsi rekursif. Perhatikan
dan bandingkan kedua program berikut ini dimana program pertama tanpa rekursif dan
program kedua dengan rekursif.
faktorial-1.php
1.
<?php
2.
3.
function
faktorial
($n=
1
)
{
4.
$hasil
=
1;
5.
for($i=$n;
$i
>=
1;
$i--)
{
6.
$hasil
=
$hasil
*
$i;
7.
}
8.
return
$hasil;
9.
}
10.
11.
echo
"10! = ".
faktorial
(
10
);
12.
13.
?>
Pada program di atas, proses menghitung nilai faktorial dilakukan dengan menggunakan
perulangan. Sedangkan pada program di bawah ini, proses perhitungan dengan
menggunakan fungsi rekursif. Di dalam fungsi terdapat pemanggilan fungsi diri sendiri
dengan parameter ($n-1) yang dikalikan dengan $n.
faktorial-2.php
1.
<?php
2.
3.
function
faktorial
($n=
1
)
{
4.
if
($n==
1
)
{
5.
return
1;
6.
}
else
{
7.
return
$n
*
faktorial
($n-
1
);
8.
}
9.
}
10.
11.
echo
"10! = ".
faktorial
(
10
);
12.
13.
?>
Pada kedua contoh di atas mungkin tidak terlalu menonjol mengenai manfaat fungsi
rekursif. Pada contoh yang lebih kompleks, misalnya melakukan penelusuran suatu graph
atau tree, fungsi rekursif akan lebih tepat digunakan dibanding fungsi biasa.
Menampilkan Menu Bertingkat (Tree Menu)
dengan Fungsi Rekursif
Menu atau navigasi merupakan bagian penting dan tidak dapat terpisahkan dari suatu
halaman web. Menu yang kompleks biasanya diorganisasikan menjadi beberapa tingkat
sedemikian hingga jika digambarkan akan terbentuk seperti diagram pohon. Menu
tersebut sering disebut tree-menu. Untuk membuatnya pun sudah banyak dibahas di
berbagai website, termasuk di website ini (baca kembali tutorial Membuat Menu
Bertingkat dengan JQuery jQSimpleMenu dan Membuat Menu Bertingkat (Tree Menu)
dengan Dreamweaver).
Pada bagian ini, saya tidak akan mengulang kembali bagaimana menggunakan library
jQuery atau sejenisnya untuk membuat menu bertingkat, namun lebih pada bagaimana
menyimpan menu bertingkat ke dalam database MySQL dan menampilkannya dalam
bentuk unordered-list di HTML, tentunya dengan memanfaatkan fungsi rekursif.
Langsung saja, kita ikuti langkah-langkahnya:
Langkah #1. Buat database dan tabel untuk menyimpan informasi menu.
Saya asumsikan Anda sudah bisa membuat database di MySQL, baik dengan tools
bantuan seperti PHPMyAdmin, MySQL Front, SQL Yog dll maupun dengan cara manual
menggunakan mysql-console. Jika belum, coba pelajari buku gratis MySQL 5 yang dapat
didownload di website ini. Setelah database dibuat, sekarang kita buat tabelnya, kurang
lebih strukturnya sebagai berikut:
Kolom Tipe Data Keterangan
kd_menu int(5) Kode Menu
nm_menu varchar(50) Nama menu yang akan ditampilkan
Kolom Tipe Data Keterangan
link varchar(50) Link ke halaman menu
kd_parent int(5)
Kode menu yang menjadi induknya. Menu yang paling atas diatur induk-nya
0.
Jika tabel sudah dibuat, isikan dengan beberapa contoh data. Bagi yang ga mau repot,
saya sudah menyediakan perintah SQL untuk membuat tabel dan mengisi contoh datanya.
Tinggal dijalankan di mysql client Anda.
Langkah #2. Buat fungsi rekursif dan jalankan.
Pada Program di bawah ini, akan dilakukan pengambilan data secara rekursif dari tabel
menu yang sudah dibuat sebelumnya. Selanjutnya data akan ditampilkan dalam bentuk
unordered-list (ul) di HTML.
Code block
1.
<?php
2.
#koneksi mysql
3.
mysql_connect("localhost","root","");
4.
mysql_select_db("demo");
5.
#end koneksi
6.
7.
function
html_menu
(&$strmenu="",
$parent=
0
)
{
8.
$query
=
"SELECT kd_menu, kd_parent, nm_menu, link
9.
FROM menu WHERE kd_parent='$parent'
10.
ORDER BY kd_menu";
11.
//die ($query);
12.
$sql
=
mysql_query($query);
13.
14.
if
(mysql_num_rows($sql)
>
0
)
{
15.
$strmenu
.=
'<ul>';
16.
}
17.
18.
// tampilkan anaknya
19.
while
($row
=
mysql_fetch_assoc($sql))
{
20.
21.
$strmenu
.=
"<li>";
22.
$strmenu
.=
sprintf("<a href='%s' title='%s'>%s</a>",
$row['link'],
$row['nm_menu'],
$row['nm_menu']);
23.
24.
//panggil diri sendiri
25.
html_menu
($strmenu,
$row['kd_menu']);
26.
$strmenu
.=
"</li>";
27.
}
28.
29.
if
(mysql_num_rows($sql)
>
0
)
30.
$strmenu
.=
'</ul>';
31.
32.
}
33.
34.
$strmenu
=
"";
35.
html_menu
($strmenu,
0
);
36.
echo
$strmenu;
37.
?>
Berikut ini kurang lebih tampilan akhir jika program di atas dijalankan.
Tampilan Menu dalam bentuk Unordered-List
Demikian tutorial singkat ini, semoga ada manfaatnya untuk kita semua.
7 VARIASI PERINTAH INSERT DI MYSQL
YANG SERING TERLUPAKAN
By Achmad Solichin On 15 February 2011 In Database, Mysql
Data Manipulation Language (DML) merupakan bagian dari perintah SQL (Structured
Query Language) yang terdiri dari berbagai perintah untuk memanipulasi data di dalam
suatu database. Empat perintah utama yang termasuk dalam perintah DML adalah
perintah SELECT, INSERT, UPDATE dan DELETE. MySQL sebagai salah satu
software database terkemuka tentunya mendukung keempat perintah DML tersebut
dengan sangat baik. Di dalam tutorial kali ini, akan dibahas mengenai perintah INSERT
dimana ternyata cukup banyak variasi perintah INSERT di MySQL yang sering
terlupakan (terabaikan), namun sebenarnya sangat berguna.
Selain bentuk dasar perintah INSERT, saya mencatat setidaknya ada 7 (tujuh) variasi
bentuk perintah INSERT yang saya yakin suatu saat akan berguna untuk Anda. Berikut
ini ketujuh perintah INSERT tersebut yang selanjutnya akan saya jelaskan satu per satu.
1. INSERT INTO (field1, field2, ) VALUES ()
2. INSERT SELECT
3. INSERT IGNORE
4. INSERT DELAYED
5. INSERT LOW PRIORITY | HIGH PRIORITY
6. INSERT ON DUPLICATE KEY UPDATE
7. REPLACE INTO
Untuk mempermudah pemahaman terhadap tutorial ini, maka seluruh contoh yang
disajikan akan mengacu pada struktur tabel sebagai berikut:
Nama tabel: tblmhs
mysql> desc tblmhs;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| nim | varchar(10) | NO | PRI | NULL | |
| nama | varchar(40) | NO | | NULL | |
| alamat | text | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Di sini tidak saya bahas mengenai bagaimana membuat struktur tabel di atas, karena
sudah saya bahas pada tutorial mengenai perintah dasar MySQL. Lebih lengkapnya,
Anda juga bisa pelajari buku gratis MySQL yang dapat didownload di website ini juga.
Bentuk Dasar Perintah INSERT
Sebelum membahas variasi dari perintah INSERT, alangkah baiknya kita mengingat
kembali mengenai bagaimana bentuk dasar dari perintah INSERT tersebut. Perintah
INSERT pada dasarnya merupakan perintah yang dapat digunakan untuk memasukkan
data (record) ke sebuah tabel di database. Bentuk perintah ini cukup sederhana. Berikut
ini contoh sederhana perintah INSERT untuk memasukkan data seorang mahasiswa
dengan nim 1011500100, nama ACHMAD SOLICHIN dan alamat di JAKARTA
SELATAN.
INSERT INTO tblmhs VALUES('1011500100', 'ACHMAD SOLICHIN', 'JAKARTA
SELATAN');
Hal yang penting dari contoh perintah INSERT di atas adalah urutan dari nilai data yang
akan ditambahkan harus sama dengan urutan field (kolom) di tabel. Urutan field di dalam
tabel tblmhs adalah nim, nama lalu alamat, sehingga waktu melakukan INSERT urutan
seharusnya juga nim, nama dan alamat. Jika urutan tidak sesuai, maka data yang
dimasukkan bisa jadi menempati kolom yang salah juga
#1. INSERT INTO tabel (field1, field2)
VALUES
Pada bentuk dasar perintah INSERT di atas, kita harus menyebutkan nilai dari seluruh
kolom. Jadi jumlah nilai yang akan ditambahkan harus sesuai dengan jumlah kolom
dalam tabel. Namun ada kalanya kita hanya ingin menambahkan sebagian dari kolom
tabel, jadi tidak semua kolom kita masukkan. Jika demikian, variasi perintah INSERT
yang pertama ini tentu tepat untuk digunakan. Kita menyebutkan kolom-kolom yang akan
di-insert-kan di belakang nama tabel. Urutannya juga tidak harus sesuai dengan urutan di
dalam struktur tabel. Sebagai contoh, kita akan memasukkan data nim dan nama seorang
mahasiswa, tanpa memasukkan alamatnya. Urutan fieldnya sengaja dibalik, nama terlebih
dahulu baru nim. Berikut perintahnya:
INSERT INTO tblmhs (nama, nim) VALUES('CHOTIMATUL MUSYAROFAH', '1012501983');
Terlihat pada contoh di atas bahwa urutan yang harus disesuaikan adalah urutan field
yang berada di belakang nama tabel tblmhs dan urutan data (values) yang akan di-
insert-kan.
#2. INSERT SELECT
Ada kalanya kita ingin memindahkan atau meng-copy sejumlah data yang berada pada
suatu tabel ke tabel yang lainnya. Singkatnya copy data antar tabel. Untuk menyelesaikan
permasalahan tersebut, tentunya sangat kurang efektif jika kita harus melakukan insert
satu per satu. Untuk melakukan copy record antar tabel, akan lebih efektif jika kita
menggunakan bentuk perintah INSERT SELECT yang menggabungkan proses
insert (menambahkan data) dan select (mengambil data). Sebagai contoh, kita ingin
memindahkan data nim dan nama mahasiswa yang berada di tabel tblpendaftaran ke tabel
tblmhs, berikut ini perintahnya:
INSERT INTO tblmhs(nim, nama) SELECT nim, nama FROM tblpendaftaran;
#3. INSERT IGNORE
Saya pernah membuat suatu absensi pada suatu perusahaan dimana data absensi diimport
dari suatu file teks hasil keluaran dari mesin finger. Setelah diimport, data absensi
karyawan akan diperiksa dan dilengkapi oleh staf HRD. Proses import dari teks file dapat
terjadi berulang-ulang sehingga diperlukan mekanisme agar pada saat proses import data
yang mungkin sudah diedit oleh staf HRD tidak tertimpa. Jadi intinya, saat proses import,
harus diperiksa apakah data absensi yang akan dimasukkan ke tabel sudah ada atau
belum. Jika sudah ada, maka tidak perlu dilakukan insert, namun jika tidak ada maka
lakukan proses import. Awalnya terpikir untuk melakukan pengecekan data ke database
terlebih dahulu sebelum insert, namun dari isi efektivitas tentu hal ini tidak baik, apalagi
jika datanya cukup banyak. Beruntung kemudian ketemu bentuk perintah INSERT
IGNORE di MySQL. Dengan perintah ini, permasalahan tersebut dapat terselesaikan
hanya dengan satu perintah.
Dalam contoh berikut ini, akan melakukan insert data ke tabel tblmhs hanya jika data nim
belum ada di tabel. Pemeriksaan data didasarkan pada field yang menjadi primary key.
Jadi jika terjadi duplikasi primary key maka data akan diabaikan (ignored).
INSERT IGNORE INTO tblmhs VALUES('1012501983','BUNGA', 'TANGERANG');
#4. INSERT DELAYED
Bentuk perintah INSERT DELAYED merupakan bentuk perintah yang mungkin akan
kita perlukan saat membuat suatu aplikasi transaksional dengan beberapa pengguna
dalam satu waktu. Dengan tambahan perintah DELAYED maka proses menambahkan
data akan ditangguhkan hingga tidak ada user yang mengakses tabel. Contoh berikut ini
menggambarkan bagaimana perintah tersebut:
INSERT DELAYED INTO tblmhs (nim, nama) VALUES ('1011500121', 'LINTANG',
'TANGERANG');
Penjelasan lebih lanjut mengenai perintah ini dapat dilihat di manual MySQL.
#5. INSERT LOW PRIORITY | HIGH
PRIORITY
Tambahan perintah LOW PRIORITY atau HIGH PRIORITY dibelakang perintah
INSERT dapat digunakan untuk mengatur prioritas dari perintah INSERT yang akan
dijalankan. Perintah dengan prioritas lebih tinggi tentu akan didahulukan untuk
dijalankan. Sama seperti bentuk perintah INSERT DELAYED, perintah ini juga berguna
saat kita bermain dengan proses transaksional. Berikut ini contoh sederhananya:
INSERT INTO tblmhs VALUES('1111500111', 'INDAH', 'JAKARTA');
#6. INSERT ON DUPLICATE KEY
UPDATE
Variasi perintah INSERT ini mungkin suatu saat akan kita perlukan. Misalnya pada kasus
dimana pada proses insert sejumlah data, jika datanya sudah ada, dalam arti terjadi
duplikasi primary key, maka lakukan perintah update untuk kolom tertentu. Sebagai
contoh, kita akan melakukan penambahan data ke tblmhs, jika datanya sudah ada, maka
update field alamat dengan alamat yang baru. Berikut ini perintahnya:
INSERT INTO tblmhs (nim, nama, alamat) VALUES('1111500111', 'WULAN',
'MALANG') ON DUPLICATE KEY UPDATE alamat='JAKARTA';
Untuk penjelasan lebih rinci terkait perintah ini dapat dilihat di dokumentasi MySQL
(http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html).
#7. REPLACE INTO
Saya sangat senang dengan adanya bentuk perintah REPLACE di MySQL ini. Perintah
ini sangatlah membantu. Contohnya saat saya ingin melakukan penambahan data secara
massal seperti pada kasus import absensi karyawan di atas. Jika pada proses import, kita
menginginkan agar data selalu up to date, maka jika data sudah ada harus dilakukan
proses update. Perintah REPLACE INTO berperan untuk melakukan dua tugas sekaligus,
yaitu INSERT jika datanya belum ada dan UPDATE jika datanya sudah ada. Berikut ini
contoh perintah ini:
REPLACE INTO tblmhs VALUES('1011500100', 'ACHMAD SOLICHIN', 'TANGERANG
SELATAN');
Demikian ketujuh bentuk variasi perintah INSERT di dalam MySQL yang sering
terlupakan namun seringkali kita butuhkan.
MENGENAL TRIGGER DI MYSQL
By Achmad Solichin On 24 February 2010 In Mysql
Menurut Wikipedia, trigger dalam database diartikan sebagai procedural code that is
automatically executed in response to certain events on a particular table or
view in a database. Singkatnya, trigger merupakan sekumpulan perintah atau sintaks
yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau
view. Triggerdigunakan untuk memanggil satu atau beberapa perintah SQL secara
otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari
suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara otomatis
ke tabel logsebelum menghapus data di tabel pelanggan.
Di MySQL, Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.1.4)
fungsionalitasnya sudah bertambah. Pada versi selanjutnya pihak pengembang MySQL
berjanji akan lebih menguatkan (menambah) fitur trigger ini.
Trigger sering digunakan, antara lain untuk:
o Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam
sistem penjualan, jika dientri barang baru maka stock akan bertambah secara
otomatis.
o Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi
perubahan, secara otomatis akan menyimpan ke tabel log.
o Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data
tersebut disimpan.
Membuat Trigger Baru
Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement
Keterangan dari bentuk umum perintah membuat trigger:
o name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam
MySQL
o [BEFORE | AFTER] digunakan untuk menentukan kapan proses secara otomatis
akan dieksekusi, sebelum atau sesudah proses.
o [INSERT | UPDATE | DELETE] digunakan untuk menentukan event (proses) yang
dijadikan trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers.
o tablename, merupakan nama tabel dimana trigger berada.
o statement, merupakan sekumpulan perintah atau query yang akan secara otomatis
dijalankan jika event / proses yang didefinisikan sebelumnya aktif.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga
beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger, maka gunakan
perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.
Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah
proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil record
yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mengakses
record yang sudah diproses (update atau delete).
Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi proses
insert ke tabel pelanggan:
DELIMITER $$
CREATE TRIGGER penjualan.before_insert BEFORE INSERT ON penjualan.pelanggan
FOR EACH ROW BEGIN
INSERT INTO `log` (description, `datetime`, user_id)
VALUES (CONCAT('Insert data ke tabel pelanggan id_plg = ', NEW.id_pelanggan),
now(), user());
END;
$$
DELIMITER ;
Menghapus Trigger
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan
diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh
perintah untuk menghapus trigger.
Bentuk umum dan contoh menghapus trigger:
DROP TRIGGER tablename.triggername;
Contoh menghapus trigger bernama before_insert yang ada di tabel pelanggan.
DROP TRIGGER penjualan.before_insert;
PERINTAH MYSQL UNTUK MENAMPILKAN
DATA DARI BEBERAPA TABEL
By Achmad Solichin On 18 January 2010 In Materi, Mysql
Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran jika
dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat
berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-
one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada
gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan
berhubungan dengan pesan, pesan dengan barang, dsb.
Pada pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data yang tidak
hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus. Contohnya,
dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut transaksi
yang pernah dilakukannya. Dari contoh tersebut, kita harus
bisa menggabungkanminimal dua tabel, yaitu pelanggan dan pesan.
Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk
perintahJOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana
menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal
dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di
database MySQL, namun demikian secara umum perintah penggabungan tabel di semua
jenis database tidak jauh berbeda alias sama.
Sebelum belajar mengenai perintah penggabungan tabel, perlu dipersiapkan tabel-tabel
yang akan dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan
menggunakan tabel rancangan sistem pemesanan barang (pembelian) sederhana berikut
ini. Untuk membuatnya, Anda dapat menggunakan tools seperti PHPMyAdmin dan
MySQLFront atau dapat juga melalui command-prompt. Jika diperlukan, pelajari
kembali postingan saya sebelumnya mengenai administrasi database MySQL dengan
PHPMyAdmin dan juga dasar-dasar perintah SQL. Jangan lupa isikan beberapa contoh
data ke tabel-tabel yang sudah Anda buat.
Contoh Class Diagram Sistem Pembelian
1. Inner Join
Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL
di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana
kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).
Misalkan isi tabel pelanggan dan pesan adalah sebagai berikut :
Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)
Contoh isi tabel pelanggan
Tabel pesan.
Contoh isi tabel pesan
Cara #1. Inner Join dengan WHERE.
Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:
SELECT tabel1.*, tabel2.* FROM tabel1, tabel2
WHERE tabel1.PK=tabel2.FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,
pesan.tgl_pesan
FROM pelanggan, pesan
WHERE pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya sebagai berikut:
Hasil Penggabungan 2 Tabel dengan WHERE
Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang
dilakukan oleh 3 (tiga) orang pelanggan. Jika kita lihat kembali isi tabel pelanggan di
atas, maka terdapat satu pelanggan yang tidak ditampilkan yaitu yang memiliki id
pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah melakukan
transaksi.
Cara #1. Inner Join dengan klausa INNER JOIN.
Berikut ini bentuk umumnya:
SELECT tabel1.*, tabel2.*
FROM tabel1 INNER JOIN tabel2
ON tabel1.PK=tabel2.FK;
Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan.
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,
pesan.tgl_pesan
FROM pelanggan INNER JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya akan sama dengan gambar di atas (cara #1).
2. Outer Join
Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data
yang NULL (kosong) di satu sisi. Sebagai contoh, kita akan menggabungkan tabel
pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah
melakukan pemesanan (transaksi).
Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN. Berikut ini
bentuk umum dan contohnya:
LEFT JOIN.
Bentuk umum:
SELECT tabel1.*, tabel2.*
FROM tabel1 LEFT JOIN tabel2
ON tabel1.PK=tabel2.FK;
Contoh perintah SQL:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,
pesan.tgl_pesan
FROM pelanggan LEFT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya:
Hasil Perintah Left Join
Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan menampilkan
juga data pelanggan dengan id P0003, walaupun pelanggan tersebut belum pernah
bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan P0003 isinya
NULL, artinya di tabel kanan (pesan) pelanggan tersebut tidak ada.
RIGHT JOIN
Bentuk umum:
SELECT tabel1.*, tabel2.*
FROM tabel1 RIGHT JOIN tabel2
ON tabel1.PK=tabel2.FK;
Contoh perintah SQL:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,
pesan.tgl_pesan
FROM pelanggan RIGHT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya:
Hasil Perintah Right Join
Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan),
jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada di tabel
pelanggan, maka isi tabel pesan tetap ditampilkan.
Menggabungkan 3 Tabel atau Lebih
Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan penggabungan 2
(dua) tabel. Sebagai contoh misalnya kita akan menampilkan barang-barang yang dipesan
beserta nama barang dan harganya untuk pemesanan dengan nomor 1, sedemikian
sehingga hasilnya menjadi sebagai berikut:
Contoh Hasil Penggabungan 3 Tabel