Professional Documents
Culture Documents
net
=
=
=
=
"localhost";
"root";
"root";
"katalog";
16
http://rosihanari.net
Selanjutnya, kita siapkan pula file header dan footer. Kita buat sama saja dengan aplikasi
lain yang pernah kita buat.
header.php
<?
Header('Content-type:text/vnd.wap.wml'); // header untuk menghasilkan
dokumen wml
echo '<?xml version="1.0"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml"> ';
?>
<wml>
<template>
</template>
Catatan:
Anda dapat menambahkan bagian template dengan menu kembali atau yang lain bila
diinginkan.
footer.php
</wml>
17
http://rosihanari.net
<br />
<b>Perpustakaan Online</b>
<br />
</p>
<p>
<br />
Kategori pencarian :
<select name="kategori">
<option value="judul">Judul</option>
<option value="pengarang">Pengarang</option>
</select>
</p>
<p>
<br />
Keyword <input type="text" name="keyword" />
</p>
</card>
</wml>
Saya kira tidak perlu penjelasan lagi tentang script di atas, karena saya yakin Anda bisa
memahaminya dengan mudah (selama Anda memahami WML )
OK selanjutnya kita buat script untuk pencarian. Setelah user memilih kategori
pencarian dan memasukkan keyword lalu mensubmitnya, selanjutnya script submit.php
yang akan bekerja.
Karena jumlah buku hasil pencarian bisa jadi sangat banyak, maka sangat tidak
manusiawi apabila hasil pencarian tidak ditampilkan dengan menggunakan teknik paging
. Nah oleh karena itu, kita tambahkan saja teknik paging pada submit.php
submit.php
<?
include "header.php";
include "config.php";
?>
<card id="index" title="Katalog">
<p>
<small>
<?
$kategori = $_GET['kategori']; // membaca kategori dari form
$keyword = $_GET['keyword']; // membaca keyword dari form
$dataPerPage = 2;
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
18
http://rosihanari.net
else $pageNum = 1;
$offset = ($pageNum - 1) * $dataPerPage;
if ($kategori == "judul") {
// query pencarian apabila kategori berdasarkan judul
$query = "SELECT * FROM buku WHERE judul LIKE '%$keyword%'
LIMIT $offset, $dataPerPage";
}
else if ($kategori == "pengarang") {
// query pencarian apabila kategori berdasarkan pengarang
$query = "SELECT * FROM buku WHERE pengarang LIKE '%$keyword%'
LIMIT $offset, $dataPerPage";
}
$hasil = mysql_query($query);
// menampilkan data hasil pencarian
while ($data = mysql_fetch_array($hasil))
{
echo "Judul : ".$data['judul']."<br />Pengarang :
".$data['pengarang']."<br />Penerbit :
".$data['penerbit']."<br /><br />";
}
if ($kategori == "judul") {
// menghitung jumlah buku berdasarkan keyword dan kategori judul
$query = "SELECT COUNT(*) AS numrows FROM buku WHERE judul LIKE
'%$keyword%'";
}
else if ($kategori == "pengarang") {
// menghitung jumlah buku berdasarkan keyword dan kategori
// pengarang
$query = "SELECT COUNT(*) AS numrows FROM buku WHERE pengarang
LIKE '%$keyword%'";
}
$hasil
$row
= mysql_query($query) or die('Error');
= mysql_fetch_array($hasil, MYSQL_ASSOC);
$numrows = $row['numrows'];
$maxPage = ceil($numrows/$dataPerPage);
$self = $_SERVER['PHP_SELF'];
19
http://rosihanari.net
$nav
= '';
buku
WHERE
judul
LIKE
'%$keyword%'
LIMIT
$offset,
Digunakan untuk mencari data buku berdasarkan judul dengan keyword tertentu.
Mengapa SQL nya tidak menggunakan WHERE judul = '$keyword' ?
Penggunaaan WHERE judul LIKE '%$keyword%' dimaksudkan untuk menampilkan
buku yang judulnya mengandung kata dalam keyword.
Sebagai contoh misalkan ada 3 buah buku berjudul Pemrograman A, Pemrograman B,
Dasar-dasar Pemrograman. Apabila kita menggunakan WHERE judul LIKE
'%$keyword%' dengan $keyword = 'pemrograman', maka ketiga judul tersebut akan
muncul sebagai hasil pencariannya.
Lantas apa makna simbol % dalam perintah tersebut? Simbol % bisa berupa string atau
karakter apa saja. Sehingga apabila bentuk querynya berupa WHERE judul LIKE
'$keyword%' (tanda % paling depan dihapus) dengan $keyword = 'pemrograman',
maka hanya judul Pemrograman A dan Pemrograman B saja yang muncul. Sedangkan
apabila querynya berbentu WHERE judul LIKE '%$keyword' (tanda % paling belakang
20
http://rosihanari.net
Tahukah Anda makna dengan code yang dicetak merah itu? Ya.. kode itu untuk membuat
link sehubungan dengan keperluan navigasi halaman pada waktu paging. Link ini
menggunakan parameter kategori dan keyword yang telah dimasukkan user.
Mungkin Anda heran, mengapa bentuknya kok tidak seperti ini?
$nav .= " <a href=\"$self?page=$page&
kategori=$kategori&keyword=$keyword\">$page</a> ";
Perhatikan perbedaan pada bagian & (kode atas) dan tanda & (kode bawah).
Pernah saya coba menggunakan kode yang bawah, dan hasilnya error. Error inilah yang
pernah membuat saya frustasi berminggu-minggu, karena tidak tahu sebabnya. Secara
sintaks, tidak ada kesalahan.
Bahkan saya pernah berkesimpulan bahwa untuk aplikasi WAP tidak bisa membuat link
yang di dalamnya terdapat lebih dari 1 parameter. Padahal kita tahu bahwa untuk menulis
lebih dari satu parameter dalam link, setiap parameternya dipisahkan dengan tanda &,
misal http://.../script.php?a=5&b=6&c=8. Hal inilah yang membuat saya sempat
berpaling dari WAP
Tapi alhamdulillah saya mendapatkan ilham. (kadang seorang programmer
membutuhkannya untuk menyelesaikan permasalahan ). Terakhir tiba-tiba saya
langsung ingat bahwa WML merupakan bagian dari XML. Setahu saya, memang dalam
XML tidak mengenal tanda & di dalamnya. Jawaban atas sebab munculnya pesan
kesalahan sudah terjawab, lantas bagaimana cara mensiasatinya? Ya kita gunakan kode
&. Dalam HTML dan WML, kode & atau ampersand merupakan kode untuk
menampilkan tanda &. Setelah saya coba, alhamdulillah berhasil
21
http://rosihanari.net
OK dengan demikian aplikasi katalog WAP kita siap digunakan. Berikut ini beberapa
screenshotnya:
Tampilan awal
22