Anda di halaman 1dari 11

PRAKTIKUM PHP 15

Database Web Lanjut #1

1. Menyimpan Gambar Ke Database bertipe data BLOB


Tutorial Menyimpan Gambar Ke Database akan menjelaskan cara menyimpan gambar ke database dan
cara menampilkan gambar yang telah disimpan di database. Untuk bisa mengikuti tutorial ini anda harus
mengerti cara mengupload gambar dengan PHP. Ada dua cara menyimpan gambar ke database:
1. Menyimpan gambar ke database dengan tipe data blob,
2. Menyimpan gambar ke dalam sebuah folder dan mencatat lokasi dan informasi gambar ke
database.
Yang akan dibahas di tutorial ini adalah langkah pertama, Menyimpan gambar ke database dengan tipe
data blob.
Ada beberapa hal yang perlu dilakukan sebelum bisa menyimpan gambar ke dalam sebuah field table
database yang bertipe blob.
Mempersiapkan Database dan Table
Buatlah sebuah database dengan nama misalkan "gallery". Kemudian buat tabel di dalamnya dengan
nama "pictures" dengan struk seperti di bawah:
Nama Field
id
file_name
mime_type
file_data

Tipe Data
Keterangan
integer
primary key, auto increment
varchar(100)
varchar(50)
mediumblob

Atau gunakan SQL Query berikut:


create database gallery;
use gallery;
CREATE TABLE `pictures` (
`id` int NOT NULL AUTO_INCREMENT,
`file_name` varchar(100) NOT NULL,
`mime_type` varchar(50) NOT NULL,
`file_data` mediumblob DEFAULT NULL,
PRIMARY KEY (`id`)
);

Membuat Upload Form


Buat html form untuk mengupload gambar, gunakan script di bawah:
<!-- file form.html-->
<form name="form1" id="form1" method="post" action="upload.php" enctype="mult
ipart/form-data">
Gambar: <input type="file" name="gambar" id="gambar" />
<input type="submit" name="Submit" id="Submit" value="Upload" />
</form>
Simpan dengan nama file form.html.
Menyimpan Gambar Ke Database
Langkah selanjutnya adalah menyimpan gambar ke database, gunakalah script php di bawah untuk
menyimpan gambar ke database.

<?php
$connection = mysql_connect("dbhost", "dbuser", "dbpassword"); //sesuaikan dengan dat
abase anda
mysql_select_db("gallery");
if($_FILES['gambar']['size'] > 0 && $_FILES['gambar']['error'] == 0){
$fileName = $_FILES['gambar']['name'];
$mimeType = $_FILES['gambar']['type'];
$tmpFile = fopen($_FILES['gambar']['tmp_name'], 'rb'); // (fileName, mode)
$fileData = fread($tmpFile, filesize($_FILES['gambar']['tmp_name']));
$fileData = addslashes($fileData);
$query = "insert into pictures set file_name='$fileName',mime_type='$mimeType', fil
e_data='$fileData'";
mysql_query($query) or die("Upload Gambar Gagal: ".mysql_error());
echo "Gambar telah disimpan";
}
?>

Di baris 8, file yang diupload dibuka menggunakan fungsi fopen dengan mode 'rb' yang artinya
membuka file dengan mode read dan mode binary. Di baris 9 membaca file yang telah dibuka di baris 8
dengan fungsi fread. Selanjutnya di baris 12 dan 13 menyimpan gambar ke database. Simpan script di
atas dengan nama upload.php.
Menampilkan Gambar Dari Database
Langkah terakhir adalah menampilkan gambar yang telah disimpan di database. Untuk menampilkan
gambar dibutuhkan 2 file. File gambar.php untuk me-render gambar dan file gallery.php untuk
menampilkan gallery keseluruhan gambar yang tersimpan di database. Gunakanlah script berikut:
File gambar.php
<?php
$connection = mysql_connect("dbhost", "dbuser", "dbpassword"); //sesuaikan dengan database anda
mysql_select_db("gallery");
$idFile = $_GET['id'];
$dataGambar = mysql_fetch_array(mysql_query("select * from pictures where id='$idFile'"));
$filename = $dataGambar['file_name'];
$mime_type = $dataGambar['mime_type'];
$filedata = $dataGambar['file_data'];
header("content-disposition: inline; filename=$filename");
header("content-type: $mime_type");
header("content-length: ".strlen($filedata));
echo ($filedata);
?>

File gallery.php
<?php
$connection = mysql_connect("dbhost", "dbuser", "dbpassword"); //sesuikan dengan database anda
mysql_select_db("gallery");
$query = "select * from pictures";
$result = mysql_query($query);
$i=1;
echo '<table>';
echo '<tr>';
while($gambar = mysql_fetch_array($result)){
echo '<td><img src="gambar.php?id='.$gambar['id'].'" width="150" /></td>';
if($i % 4 == 0){
echo '</tr><tr>';
}
$i++;
}
echo '</tr>';
echo '</table>';
?>

2. Menyimpan Gambar Ke Database bertipe VARCHAR


Buatlah sebuah database dengan nama misalkan "gallery2". Kemudian buat tabel di dalamnya dengan
nama "pictures" dengan struk seperti di bawah:
Nama Field
id
nama_foto
keterangan
gambar

Tipe Data
integer
varchar(100)
varchar(50)
varchar(50)

Keterangan
primary key, auto increment

Langkah 1
Koneksi.php //berguna untuk koneksi ke database
<?php
$host="localhost";
$user="root";
$pass=""; //dikosongkan
$db="database"; //gamti dengan database anda
$koneksi=mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$koneksi) or die ("gagal koneksi ");
?>

Langkah 2
Upload_foto.php //form untuk input foto
<table border="2" bordercolorlight="#33FF66">
<form method="post" action="simpan_foto.php" enctype="multipart/form-data">
<tr><td>nama foto </td><td> <input type="text" name="nama" /></td></tr>
<tr><td valign="top">keterangan </td><td><textarea name="keterangan">
</textarea></td></tr>
<tr><td>masukan gambar </td><td><input type="file" name="gambar" /> </td></tr>
<tr><td colspan="2"><input type="submit" value="simpan gambar " /></td></tr>
</form>
</table>

Langkah 3
Hapus.php //berfungsi untuk menghapus foto
<?php
include ('koneksi.php');
$hapus=mysql_query("delete from foto where id='$_GET[id]' ") or die ("gagal hapus");
echo "<script>alert('data telah di hapus');document.location='tampil_foto.php'
</script> ";
?>

Langkah 4
Tampil.php //untuk enampilkan foto
<?php
include('koneksi.php');
echo "<center><table border=1>
<tr><td>NAMA FOTO </td><td>KETERANGAN </td><td>GAMBAR </td><td>AKSI </td></tr> ";
$lihat=mysql_query("select * from foto ");
while($data=mysql_fetch_array($lihat))
{
echo "<tr><td>$data[nama_foto]</td>
<td width=200>$data[keterangan] </td>
<td><img src=foto/$data[gambar] width=70 height=50 ></td>
<td><a href='hapus.php?id=$data[id]'>hapus</a> | <a
href='edit.php?id=$data[id]'>edit </a> </td></tr> ";
}
echo "</table>
<a href=upload_foto.php>Input Foto Lagi </a>
</center>";
?>

Langkah 5
Simpan_foto.php //untuk menyimpan foto kedalam database
<?php
include ('koneksi.php');
$filename=$_FILES['gambar']['name'];
$move=move_uploaded_file($_FILES['gambar']['tmp_name'],'foto/'.$filename);
$simpan=mysql_query("insert into foto(nama_foto,keterangan,gambar)
values('$_POST[nama]','$_POST[keterangan]','$filename')") or die ("gagal simpan");
echo "<script>alert ('data telah di simpan '); document.location='tampil_foto.php'
</script> ";
?>

Langkah 6
Edit.php //form edit gambar
<?php
include ('koneksi.php');
$edit=mysql_query("select *from foto where id='$_GET[id]'");
$e=mysql_fetch_array($edit);
echo "<table border=1>
<form method=post action=update.php enctype=multipart/form-data>
<input type=hidden name=id value=$e[id]>
<tr><td>Nama Foto</td><td><input type=text name=nama value='$e[nama_foto]' </td></tr>
<tr><td>Keterangan </td><td><textarea name=keterangan>$e[keterangan]
</textarea></tr></td>
<tr><td>Gambar </td><td><img src=foto/$e[gambar] width=50 height=50 > </td></tr>
<tr><td>Gambar </td><td><input type=file name=gambar>*kosongkan jika gambar tidak di
ubah </td></tr>
</table>
<input type=submit value=update >
</form> ";
?>

Langkah 7
Update.php //script untuk edit foto
<?php
include ('koneksi.php');
$filename=$_FILES['gambar']['name'];
$move=move_uploaded_file($_FILES['gambar']['tmp_name'],'foto/'.$filename);
if(empty($filename))
//jika gambar kosong atau tidak di ganti
{
$update=mysql_query("update foto set
nama_foto='$_POST[nama]',keterangan='$_POST[keterangan]' where id='$_POST[id]' ") or
die ("gagal update ");
echo "<script>alert ('data telah di update ');document.location='tampil_foto.php'
</script> ";
}
elseif (!empty($filename)) // jika gambar di ganti
{
$update=mysql_query("update foto set
nama_foto='$_POST[nama]',keterangan='$_POST[keterangan]',gambar='$filename' where
id='$_POST[id]' ") or die ("gagal update gambar ");
echo "<script>alert ('data telah di update ');document.location='tampil_foto.php'
</script> ";
}
?>

catatan :
Untuk proses update yang ada gambar nya kita membutuhkan 2 script.
if(empty($filename)) = berfungsi jika kita megupdate data tanpa merubah gambar
elseif (!empty($filename)) = berfungsi jika kita mengupdate data dengan merubah gambar.

3. Membuat Pagination
Tutorial Membuat Pagination menjelaskan cara membuat paging dengan php. Pagination berguna
untuk menampilkan data yang banyak ke dalam beberapa halaman untuk mempercepat loading dari
halaman web. Selain itu memberi kemudahan kepada pengguna dalam mencari data.
Untuk membuat pagination anda perlu mengetahui penggunaan SQL query limit. Statement limit selalu
diawali dengan statement select. Cara penggunaanya adalah seperti:
select * from nama_tabel limit 0,10 /*limit mulai_data_ke, banyak_data_yang_ditampilkan*/

query di atas akan menampilkan data sebanyak 10 data mulai dari data ke 0 (data ke 0-9). Contoh lain
select * from nama_tabel limit 5,10

menampilkan data sebanyak 10 data mulai dari data ke 5 (data ke 5-14). Langkah selanjutnya adalah
mengintegrasikan cara penggunaan query limit dengan script php. Sebagai contoh, anda memiliki
sebuah table dengan nama data_siswa, seperti berikut:

Nama Field
nis
nama
kelas
alamat

Tipe Data Keterangan


varchar(20) primary key
varchar(50)
varchar(10)
text

Kemudian anda memiliki sebuah file tampil-data-siswa.php yang digunakan untuk menampilkan data
yang ada di tabel data_siswa sebanyak 10 data per halaman. Untuk itu anda menentukan link
pagination seperti http://localhost/tampil-data-siswa.php?page=1 untuk menampilkan halaman
pertama, http://localhost/tampil-data-siswa.php?page=2 untuk menampilkan halaman kedua, dan
seterusnya.
File tampil-data-siswa.php anda akan seperti di bawah:
<?php
$conn = mysql_connect("dbhost", "db_user", "db_password");
mysql_select_db("db_name");
//mencari banyak data yang ada dalam tabel
$sqlCount = "select count(nis) from data_siswa";
$rsCount = mysql_fetch_array(mysql_query($sqlCount));
$banyakData = $rsCount[0];
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$limit = 10;
$mulai_dari = $limit * ($page - 1);
$sql_limit = "select * from data_siswa order by nama limit $mulai_dari, $limit";
$hasil = mysql_query($sql_limit);
//menampilkan data
echo '<table border="1">
<tr>
<td>NIS</td>
<td>Nama</td>
<td>Kelas</td>
<td>Alamat</td>
</tr>';
while($dataSiswa = mysql_fetch_array($hasil)){
echo '<tr>';
echo '<td>'.$dataSiswa['nis'].'</td>';
echo '<td>'.$dataSiswa['nama'].'</td>';
echo '<td>'.$dataSiswa['kelas'].'</td>';
echo '<td>'.$dataSiswa['alamat'].'</td>';
echo '</tr>';
}
echo '</table>';
//membuat pagination
$banyakHalaman = ceil($banyakData / $limit);
echo 'Halaman: ';
for($i = 1; $i <= $banyakHalaman; $i++){
if($page != $i){
echo '[<a href="tampil-data-siswa.php?page='.$i.'">'.$i.'</a>] ';
}else{
echo "[$i] ";
}
}
?>

Di baris ke 6 sampai 8 untuk mencari berapa banyak data yang ada di tabel data_siswa. Di baris 10 - 14
adalah menentukan halaman mana yang diakses dan membuat sql query limit. Baris 16 - 32 digunakan
untuk menampilkan data siswa. Yang terakhir baris 34 - 42 untuk membuat pagination. Di baris ini
dilakukan perulangan sebanyak $banyakHalaman.
Pagination Untuk Pencarian
Pencarian data juga memerlukan pagination karena hasil pencarian bisa saja banyak sekali. Untuk itu
gunakan kode di bawah:
<?php
$conn = mysql_connect("dbhost", "db_user", "db_password");
mysql_select_db("db_name");
//membentuk klausa where pencarian
$where = '';
if(isset($_GET['q']) && $_GET['q']){
$where .= " where concat_ws(' ',nis,nama,kelas,alamat) like '%{$_GET['q']}%'";
}
//mencari banyak data yang ada dalam tabel
$sqlCount = "select count(nis) from data_siswa".$where;
$rsCount = mysql_fetch_array(mysql_query($sqlCount));
$banyakData = $rsCount[0];
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$limit = 10;
$mulai_dari = $limit * ($page - 1);
$sql_limit = "select * from data_siswa {$where} order by nama limit $mulai_dari, $limit";
$hasil = mysql_query($sql_limit);
//form pencarian
?>
<form name="search" method="get" action="tampil-data-siswa.php">
Search: <input type="text" name="q"/>
<input type="submit" value="GO"/>
</form>
<?php
//menampilkan data
echo '<table border="1">
<tr>
<td>NIS</td>
<td>Nama</td>
<td>Kelas</td>
<td>Alamat</td>
</tr>';
while ($dataSiswa = mysql_fetch_array($hasil)) {
echo '<tr>';
echo '<td>' . $dataSiswa['nis'] . '</td>';
echo '<td>' . $dataSiswa['nama'] . '</td>';
echo '<td>' . $dataSiswa['kelas'] . '</td>';
echo '<td>' . $dataSiswa['alamat'] . '</td>';
echo '</tr>';
}
echo '</table>';
//membuat pagination
$banyakHalaman = ceil($banyakData / $limit);
echo 'Halaman: ';
for ($i = 1; $i <= $banyakHalaman; $i++) {
if ($page != $i) {
echo '[<a href="tampil-datasiswa.php?page=' . $i .($where ? '&q='.$_GET['q'] : ''). '">' . $i . '</a>] ';
} else {
echo "[$i] ";
}
}
?>

Pada baris ke-5 sampai 8 ditambahkan pembentukan klausa sql where, jika pengguna melakukan
pencarian. Baris 20-23 ditambahkan form search, dan baris ke-47 ditambahkan kata kunci pencarian
sebelumnya.

4. Membuat Searching (Skrip Pencarian Data )


Searching atau pencarian data merupakan hal penting dalam sebuah aplikasi, apalagi aplikasi yang
menangani data yang banyak. Ada dua tipe searching yaitu: Quick Search dan Advanced Search. Quick
search adalah pencarian sederhana seperti google search, pengguna hanya memasukkan sebuah kata
kunci dari apa yang dicarinya. Sedangkan Advanced search adalah pencarian lanjut yang lebih kompleks
dengan beberapa kriteria pencarian, yang memungkinkan hasil pencarian yang lebih akurat.
Sebelum membuat script seaching ada baiknya untuk mempelajari dasar untuk menampilkan data. Pada
tutorial ini akan digunakan sebuah tabel siswa seperti berikut:

Fieldname
id
nama
ayah
ibu
alamat

Tipe Data Keterangan


int(11)
primary key
varchar(50)
varchar(50)
varchar(50)
text

Searching biasanya menggunakan query "like", seperti:


SELECT * FROM nama_table WHERE nama_field LIKE '%cari%'
hasilnya adalah semua data yang berisikan kata cari seperti "mencari", "pencarian".

Membuat Quick Search


Untuk membuat Quick Search gunakan skrip php di bawah:
<!-- form quick search -->
<form name="form1" method="get" action="">
Search : <input type="text" name="q" id="q"/> <input type="submit" value="Search"/>
</form>
<!-- menampilkan hasil pencarian -->
<?php
if(isset($_GET['q']) && $_GET['q']){
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("test");
$q = $_GET['q'];
$sql = "select * from siswa where nama like '%$q%' or
ayah like '%$q%' or ibu like '%$q%' or alamat like '%$q%'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0){
?>
<table>
<tr>
<td>Nama</td>
<td>Ayah</td>
<td>Ibu</td>
<td>Alamat</td>
</tr>
<?php
while($siswa = mysql_fetch_array($result)){?>
<tr>
<td><?php echo $siswa['nama'];?></td>
<td><?php echo $siswa['ayah'];?></td>
<td><?php echo $siswa['ibu'];?></td>
<td><?php echo $siswa['alamat'];?></td>
</tr>
<?php }?>
</table>
<?php
}else{
echo 'Data not found!';
}
}
?>

Membuat Advanced Search


Gunakan skrip di bawah untuk membuat advanced search.
<!-- form advanced search -->
<form name="form1" method="get" action="">
Nama : <input type="text" name="nama" id="nama"/> <br/>
Ayah : <input type="text" name="ayah" id="ayah"/> <br/>
Ibu : <input type="text" name="ibu" id="ibu"/> <br/>
Alamat : <input type="text" name="alamat" id="alamat"/>
<br/><input type="submit" value="Search" name="search"/>
</form>
<!-- menampilkan hasil pencarian -->
<?php
if(isset($_GET['search'])){
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("test");
$nama = $_GET['nama'];
$ayah = $_GET['ayah'];
$ibu = $_GET['ibu'];
$alamat = $_GET['alamat'];
$sql = "select * from siswa where nama like '%$nama%' and
ayah like '%$ayah%' and ibu like '%$ibu%' and alamat like '%$alamat%'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0){
?>
<table>
<tr>
<td>Nama</td>
<td>Ayah</td>
<td>Ibu</td>
<td>Alamat</td>
</tr>
<?php
while($siswa = mysql_fetch_array($result)){?>
<tr>
<td><?php echo $siswa['nama'];?></td>
<td><?php echo $siswa['ayah'];?></td>
<td><?php echo $siswa['ibu'];?></td>
<td><?php echo $siswa['alamat'];?></td>
</tr>
<?php }?>
</table>
<?php
}else{
echo 'Data not found!';
}
}
?>

Perbedaan advanced search dengan quick search adalah: Quick search menggunakan operator "or" pada
sql query, sedangkan Advanced search menggunakan operator "and" dengan beberapa kriteria
pencarian, seperti nama, ayah, ibu, alamat.
RANGKUMAN
Ada dua tipe searching/pencarian data: Quick search dan Advanced Search. Quick search adalah
pencarian sederhana hanya menggunakan satu kriteria pencaria. Advanced Search, pencarian lanjut
yang lebih kompleks dengan beberapa kriteria pencarian. Advanced search memberikan hasil yang lebih
akurat dibanding quick search.

5. Membuat ComboBox Bertingkat dengan PHP MYSQL


Combobox merupakan salah satu element form yang sering digunakan dalam aplikasi aplikasi
pendaftaran, pada umumnya combobox digunakan untuk memilih salah satu option dimana terdapat
banyak option yang ada. Value dalam combobox sebenarnya dapat ditulis langsung dalam html, namun,
bagaimana jika data yang ingin ditampilkan sangat banyak atau tergantung pada kondisi tertentu?
Misalkan, kita ingin menampilkan pilihan kota kota yang ada dalam negara Indonesia, maka kota yang
ditampilkan juga merupakan kota yg berada dalam Indonesia.
Misalkan, user ternyata berasal dari Inggris, maka kota yang ditampilkan juga merupakan kota yg berada
dalam negara Inggris.

Kita memerlukan combobox dinamis.


Pertama buat databasenya
CREATE DATABASE provkabkotkec ;

Kemudian kita buat tabel provinsi.


CREATE TABLE combobox_bertingkat.prov (
id_prov INT( 2 ) NOT <span id="z3rg31xm03_7" class="z3rg31xm03">NULL</span> ,
nama_prov CHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;

Kemudian buat tabel kabupaten/kota. Pada tabel kabupaten/kota ini terdapat kolom id_prov
yang nantinya berelasi dengan kolom id_prov pada tabel prov.
CREATE TABLE `combobox_bertingkat`.`kabkot` (
`id_prov` INT( 2 ) NOT NULL ,
`id_kabkot` INT( 4 ) NOT NULL ,
`nama_kabkot` CHAR( 40 ) NOT NULL
) ENGINE = MYISAM ;

Selanjutnya buat tabel kecamatan. Pada tabel ini terdapat kolom id_prov yang nantinya
berelasi dengan id_prov pada tabel prov dan id_kabkot yang nantinya berelasi dengan kolom
id_kabkot pada tabel kabkot.
CREATE TABLE `combobox_bertingkat`.`kec` (
`id_prov` INT( 2 ) NOT NULL ,
`id_kabkot` INT( 4 ) NOT NULL ,
`id_kec` INT( 4 ) NOT NULL ,
`nama_kec` CHAR( 40 ) NOT NULL
) ENGINE = MYISAM ;

Terakhir kita membuat tabel data yang akan kita gunakan untuk menyimpan data dari
combobox yang kita pilih. Disini terdapat id_prov, id_kabkot dan id_kec yang berelasi dengan
tabel prov, tabel kabkot dan tabel kec.
CREATE TABLE `combobox_bertingkat`.`data` (
`id_data` INT( 5 ) NOT NULL AUTO_INCREMENT <span id="z3rg31xm03_3" class="z3rg31xm03">PRIMARY
KEY</span> ,
`id_prov` INT( 2 ) NOT NULL ,
`id_kabkot` INT( 4 ) NOT NULL ,
`id_kec` INT( 4 ) NOT NULL
) ENGINE = MYISAM ;

Setelah semua tabel sudah siap, saatnya kita mengisi tabel satu persatu disesuaikan dengan
relasi antar tabelnya. Pasti capek ya harus ngisi satu-satu nama provinsinya belum kabupaten
tiap provinsinya belum lagi nama kecamatan tiap kabupatennya. Setelah semua tabel terisi
dengan baik, selanjutnya kita membuat form inputan combobox yang memanggil data dari
database dan tabel yang menampilkan data dari tabel data pada database. Kita beri nama
dengan index.php.
<html>
<head><title>Select Chain</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var htmlobjek;
$(document).ready(function(){
//apabila terjadi event onchange terhadap object <select id=propinsi>
$("#propinsi").change(function(){
var propinsi = $("#propinsi").val();
$.ajax({
url: "ambilkota.php",
data: "propinsi="+propinsi,
cache: false,
success: function(msg){
//jika data sukses diambil dari server kita tampilkan
//di <select id=kota>
$("#kota").html(msg);
}
});

});
$("#kota").change(function(){
var kota = $("#kota").val();
$.ajax({
url: "ambilkecamatan.php",
data: "kota="+kota,
cache: false,
success: function(msg){
$("#kec").html(msg);
}
});
});
});
</script>
</head>
<body>
<?php
mysql_connect("localhost","root","");
mysql_select_db("provkabkotkec");
?>
Pilih Provinsi :<br>
<select name="propinsi" id="propinsi">
<option>--Pilih Provinsi--</option>
<?php
//mengambil nama-nama propinsi yang ada di database
$propinsi = mysql_query("SELECT * FROM prov ORDER BY nama_prov");
while($p=mysql_fetch_array($propinsi)){
echo "<option value=\"$p[id_prov]\">$p[nama_prov]</option>\n";
}
?>
</select>
<br>Pilih Kabupaten/Kota :<br>
<select name="kota" id="kota">
<option>--Pilih Kabupaten/Kota--</option>
<?php
//mengambil nama-nama propinsi yang ada di database
$kota = mysql_query("SELECT * FROM kabkot ORDER BY nama_kabkot");
while($p=mysql_fetch_array($propinsi)){
echo "<option value=\"$p[id_kabkot]\">$p[nama_kabkot]</option>\n";
}
?>
</select>
<br>Pilih Kecamatan :<br>
<select name="kec" id="kec">
<option>--Pilih Kecamatan--</option>
</select>
</body>
</html>

Sebelumnya kita juga harus membuat file php untuk memanggil data pada tabel kabkot. Kita beri
nama dengan ambilkota.php
<?php
mysql_connect("localhost","root","");
mysql_select_db("provkabkotkec");
$propinsi = $_GET['propinsi'];
$kota = mysql_query("SELECT id_kabkot,nama_kabkot FROM kabkot WHERE id_prov='$propinsi' order
by nama_kabkot");
echo "<option>-- Pilih Kabupaten/Kota --</option>";
while($k = mysql_fetch_array($kota)){
echo "<option value=\"".$k['id_kabkot']."\">".$k['nama_kabkot']."</option>\n";
}
?>

Kemudian juga harus membuat script untuk memanggil data kecamatan dari database. Kita akan
menyebutnya dengan ambilkecamatan.php.

10

<?php
mysql_connect("localhost","root","");
mysql_select_db("combobox_bertingkat");
$kota = $_GET['kota'];
$kec = mysql_query("SELECT id_kec, nama_kec FROM kec WHERE id_kabkot='$kota' order by
nama_kec");
echo "
-- Pilih Kecamatan -";
while($k = mysql_fetch_array($kec)){
echo "".$k['nama_kec']."\n";
}
?>

Terakhir kita membuat file jika melakukan eksekusi penyimpanan ke tabel data pada database.
Biasa disebut dengan simpan.php.
<?php
mysql_connect("localhost","root","");
mysql_select_db("combobox_bertingkat");
$propinsi=$_POST['propinsi'];
$kota=$_POST['kota'];
$kec=$_POST['kec'];
$masuk = mysql_query ("
insert into data (id_prov,id_kabkot,id_kec) values ('$propinsi', '$kota', '$kec')");
if ($masuk){
echo '<script type="text/javascript" language="javascript">// <![CDATA[
alert("Berhasil")
// ]]></script>';
echo '<script type="text/javascript" language="javascript">// <![CDATA[
window.location = "index.php"
// ]]></script>';
} else {
echo '<script type="text/javascript" language="javascript">// <![CDATA[
alert("Data gagal disimpan")
// ]]></script>';
echo '<script type="text/javascript" language="javascript">// <![CDATA[
window.location = "index.php"
// ]]></script>';
}
?>

Anda dapat mengunduh source code combobox dan query sql, pada link yang telah tersedia.

TUGAS
1. Praktikkan masing-masing contoh diatas dengan benar dan printscreen hasilnya
2. Gunakan database lain untuk kasus yang berbeda.

Selamat mengerjakan semoga berhasil!


Salam Hangat Selalu,

Hadi Wijaya

11