Ide Membuat Script PHP untuk Pencarian dengan Multi Kategori
April 4th, 2009 | by rosihanari |
Cetak Artikel Ini
Dalam suatu aplikasi yang terkait dengan database, seringkali muncul fasilitas untuk pencarian data. Untuk mempersempit scope pencarian biasanya pencarian dilakukan berdasarkan kategori tertentu. Kategori pencarian bisa bersifat single category artinya hanya berdasar satu kategori pencarian saja atau ada yang bersifat multiple category atau multi kategori dimana user bisa melakukan pencarian berdasarkan lebih dari satu kategori.
Untuk membuat fasilitas pencarian berdasarkan satu kategori pada prinsipnya mudah. Sebagai contoh misalkan pencarian data mahasiswa, dimana user bisa melakukan pencarian berdasarkan salah satu dari kategori NIM, nama mahasiswa, alamat, jenis kelamin atau yang lain. Dalam hal ini (single category), prinsipnya hanyalah menggunakan statement kondisional saja. Jika yang dipilih adalah kategori NIM, maka jalankan query pencarian data berdasarkan kategori NIM. Jika yang dipilih adalah kategori nama mahasiswa, maka jalankan query pencarian data berdasarkan nama mahasiswa dan seterusnya. Saya kira mudah… dan tidak ada masalah.
Namun… bagaimana bila pencariannya berdasarkan multi kategori? misalkan user ingin mencari tahu siapa saja sih mahasiswa yang beralamat di Solo dan berjenis kelamin laki-laki misalnya
Kalau kita terapkan logika seperti halnya pada single kategori, maka akan sulit diimplementasikan. Mengapa sulit? ya.. karena akan banyak kemungkinan yang terjadi dalam pemilihan kategorinya. Coba bayangkan, seandainya untuk data mahasiswa terdapat 10 buah field. Untuk single kategori, tidak ada masalah karena kemungkinkan pemilihan kategorinya ada 10 buah (Anda membuat statement kondisional sebanyak 10 buah). Namun.. jika menggunakan multi kategori, wah… bisa-bisa Anda pusing karena terlalu banyak kemungkinannya si user tadi memilih kategorinya. Hitung-hitung ada sekitar jutaan kemungkinan. wow… capee dehh…
Sebagai gambaran saja, seperti apa pencarian multi kategori itu, bisa Anda lihat pada gambar di bawah ini.
Gambar di atas menggambarkan pencarian data mahasiswa, dimana user bisa memilih kategori pencarian lebih dari satu. Dalam contoh di atas terdapat 4 kategori, dimana user dapat mengkombinasikannya sesuai keinginan. Perhatikan, bahwa gambar di atas menunjukkan si user ingin mencari mahasiswa bernama ‘Joko’ yang beralamat di ‘Solo’. Kalau dihitung-hitung ada sebanyak 24 buah total pilihan yang mungkin dipilih user. Kalau Anda buat ke 24 kemungkinan tersebut dengan statement kondisional wah… repot
Nah… pada artikel ini akan dibahas bagaimana trik untuk membuat script guna keperluan pencarian multi kategori tersebut. Untuk mudahnya kita akan menerapkannya ke studi kasus saja. Studi kasus yang dipilih sama seperti contoh pada gambar di atas saja yah.. supaya mudah.
OK.. pertama.. kita siapkan databasenya terlebih dahulu, beserta tabelnya. Kalau perlu recordnya sekalian untuk contoh saja.
CREATE TABLE mhs (
nim varchar(10),
namamhs varchar(30)
alamat text,
sex varchar(10),
PRIMARY KEY (nim)
);
INSERT INTO `mhs` VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
INSERT INTO `mhs` VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
INSERT INTO `mhs` VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
INSERT INTO `mhs` VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
INSERT INTO `mhs` VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');
Selanjutnya kita siapkan form pencariannya.
form.htm
<h1>Cari Data Mahasiswa</h1> <p>Pilih kategori pencarian</p> <form method="post" action="proses.php"> <table> <tr><td><input type="checkbox" name="nimCat"> NIM</td><td><input type="text" name="nim"></td></tr> <tr><td><input type="checkbox" name="namaCat"> Nama Mahasiswa</td><td><input type="text" name="nama"></td></tr> <tr><td><input type="checkbox" name="alamatCat"> Alamat</td><td><input type="text" name="alamat"></td></tr> <tr><td><input type="checkbox" name="sexCat"> Jenis Kelamin</td><td><input type="radio" name="sex" value="L"> Laki-Laki <input type="radio" name="sex" value="P"> Perempuan</td></tr> <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr> </table> </form>
Karena bersifat multi kategori, maka sebaiknya kita gunakan komponen checkbox. Untuk masing-masing checkbox diberi nama yang berbeda-beda, misal di situ ada ‘nimCat’, ‘namaCat’ dst.
OK.. next.. ini yang paling penting yaitu script untuk pencariannya.
OK.. sekarang kita coba analisis sebentar tentang bagaimana query yang terbentuk bila user memilih suatu kategori tertentu. Sebagai contoh misalkan user memilih kategorinya adalah NIM saja, maka querynya berbentuk:
SELECT * FROM mhs WHERE nim = '...';
Bila user memilih kategorinya NIM dan nama mahasiswa, maka querynya berbentuk:
SELECT * FROM mhs WHERE nim = '...' AND namamhs LIKE '%...%';
Bila user memilih kategorinya nama mahasiswa, alamat dan jenis kelamin, maka querynya berbentuk:
SELECT * FROM mhs WHERE namamhs LIKE '%...%' AND alamat LIKE '%...%' AND sex = '...';
Dari beberapa contoh di atas, kita bisa simpulkan bahwa terdapat bagian query yang sama entah apapun pilihan kategorinya yaitu bagian: SELECT * FROM mhs WHERE. Sedangkan bagian yang berbeda-beda hanyalah bagian klausa WHERE nya saja. OK… berarti sekarang kita hanya fokus ke bagian WHERE saja
Sekarang kita analisis lagi bagian WHERE nya. Jika yang dipilih hanya NIM saja, maka dalam WHERE ditambahkan nim = '...'. Bila NIM dan nama mahasiswa yang dipilih maka nim = '...' ini ditambahkan AND namamhs LIKE '%...%' sehingga menjadi nim = '...' AND namamhs LIKE '%...%'. dan seterusnya. Dengan demikian konsep untuk pencarian multi kategori sebenarnya hanya menggabung-gabung syarat pada bagian WHERE saja.
Nah.. bagaimana jika ide di atas kita implementasikan dalam script?
OK.. mula-mula, kita beri inisialisasi untuk bagian WHERE nya adalah empty sting terlebih dahulu
<?php $bagianWhere = ""; ?>
Selanjutnya, kita buat script untuk mengkondisikan bila user memilih kategori NIM.
<?php
$bagianWhere = "";
if (isset($_POST['nimCat']))
{
$nim = $_POST['nim'];
$bagianWhere .= "nim = '$nim'";
}
?>
Maksud dari script di atas adalah, jika user memilih checkbox NIM yang tadi diberi nama ‘nimCat’, maka akan dibaca nilai NIM yang berasal dari textbox NIM. Selanjutnya setelah membaca nilai NIM yang mau dicari, maka pada bagian WHERE ditambahkan perintah nim = '$nim'. Supaya membentuk query SELECT * FROM mhs WHERE nim = nim = '$nim'.
Berikutnya script jika kategori nama mahasiswa dipilih
<?php
$bagianWhere = "";
if (isset($_POST['nimCat']))
{
$nim = $_POST['nim'];
$bagianWhere .= "nim = '$nim'";
}
if (isset($_POST['namaCat']))
{
$namamhs = $_POST['nama'];
if (empty($bagianWhere))
{
$bagianWhere .= "namamhs LIKE '%$namamhs%'";
}
else
{
$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
}
}
?>
Nah… untuk bagian script untuk kategori nama mahasiswa ini agak beda tapi sedikit. Pada prinsipnya hampir sama, yaitu dicek dulu apakah checkbox nama mahasiswa dipilih atau tidak. Jika dipilih maka baca value nama mahasiswa yang ingin dicari. Selanjutnya, dilakukan pengecekan lagi. Jika $bagianWhere kosong, maka $bagianWhere akan ditambahkan namamhs LIKE '%namamhs%'. Maksud dari $bagianWhere kosong adalah bila user tidak memilih kategori NIM. Jika user tidak memilih kategori NIM, maka otomatis $bagianWhere nya masih kosong bukan? Namun… bila user juga memilih kategori NIM, atau dengan kata lain $bagianWhere tidak kosong alias sudah terisi dengan nim = '$nim', maka $bagianWhere ditambahkan dengan AND namamhs LIKE '%$namamhs%' sehingga menjadi nim = '$nim' AND namamhs LIKE '%$namamhs%'. Simpel bukan idenya..
Nah.. konsep di atas bisa dilanjutkan untuk kategori yang lain. Akhirnya scriptnya menjadi seperti di bawah ini
<?php
$bagianWhere = "";
if (isset($_POST['nimCat']))
{
$nim = $_POST['nim'];
if (empty($bagianWhere))
{
$bagianWhere .= "nim = '$nim'";
}
}
if (isset($_POST['namaCat']))
{
$namamhs = $_POST['nama'];
if (empty($bagianWhere))
{
$bagianWhere .= "namamhs LIKE '%$namamhs%'";
}
else
{
$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
}
}
if (isset($_POST['alamatCat']))
{
$alamat = $_POST['alamat'];
if (empty($bagianWhere))
{
$bagianWhere .= "alamat LIKE '%$alamat%'";
}
else
{
$bagianWhere .= " AND alamat LIKE '%$alamat%'";
}
}
if (isset($_POST['sexCat']))
{
$sex = $_POST['sex'];
if (empty($bagianWhere))
{
$bagianWhere .= "sex = '$sex'";
}
else
{
$bagianWhere .= " AND sex = '$sex'";
}
}
?>
Nah… setelah selesai membentuk bagian WHERE nya, terakhir kita padukan bagian WHERE yang terbentuk ke dalam query utuhnya.
<?php
$bagianWhere = "";
if (isset($_POST['nimCat']))
{
$nim = $_POST['nim'];
if (empty($bagianWhere))
{
$bagianWhere .= "nim = '$nim'";
}
}
if (isset($_POST['namaCat']))
{
$namamhs = $_POST['nama'];
if (empty($bagianWhere))
{
$bagianWhere .= "namamhs LIKE '%$namamhs%'";
}
else
{
$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
}
}
if (isset($_POST['alamatCat']))
{
$alamat = $_POST['alamat'];
if (empty($bagianWhere))
{
$bagianWhere .= "alamat LIKE '%$alamat%'";
}
else
{
$bagianWhere .= " AND alamat LIKE '%$alamat%'";
}
}
if (isset($_POST['sexCat']))
{
$sex = $_POST['sex'];
if (empty($bagianWhere))
{
$bagianWhere .= "sex = '$sex'";
}
else
{
$bagianWhere .= " AND sex = '$sex'";
}
}
$query = "SELECT * FROM mhs WHERE ".$bagianWhere;
$hasil = mysql_query($query);
?>
Sederhana bukan idenya? Kalau kita buat satu-persatu IF nya tanpa trik di atas tentu kita butuh 24 buah IF untuk semua kemungkinannya. Namun dengan trik di atas hanya butuh 4 buah IF saja.
Nah… berikut ini script secara keseluruhan untuk menampilkan hasil query berdasarkan multi kategori yang dipilih user. Untuk mempercantik tampilan hasil pencarian saya tampilkan dalam bentuk tabel.
<?php
mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");
$bagianWhere = "";
if (isset($_POST['nimCat']))
{
$nim = $_POST['nim'];
if (empty($bagianWhere))
{
$bagianWhere .= "nim = '$nim'";
}
}
if (isset($_POST['namaCat']))
{
$namamhs = $_POST['nama'];
if (empty($bagianWhere))
{
$bagianWhere .= "namamhs LIKE '%$namamhs%'";
}
else
{
$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
}
}
if (isset($_POST['alamatCat']))
{
$alamat = $_POST['alamat'];
if (empty($bagianWhere))
{
$bagianWhere .= "alamat LIKE '%$alamat%'";
}
else
{
$bagianWhere .= " AND alamat LIKE '%$alamat%'";
}
}
if (isset($_POST['sexCat']))
{
$sex = $_POST['sex'];
if (empty($bagianWhere))
{
$bagianWhere .= "sex = '$sex'";
}
else
{
$bagianWhere .= " AND sex = '$sex'";
}
}
$query = "SELECT * FROM mhs WHERE ".$bagianWhere;
$hasil = mysql_query($query);
echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mahasiswa</td><td>Alamat</td><td>Jenis Kelamin</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
echo "<tr><td>".$data['nim']."</td><td>".$data['namamhs']."</td><td>".$data['alamat']."</td><td>".$data['sex']."</td></tr>";
}
echo "</table>";
?>
OK deh.. selamat mencoba. Artikel ini saya ambil dari salah satu modul dalam Kursus PHP Online Bersama Rosihan Ari Y, sekaligus request dari Mas Yoyok (salah satu member saya).
Oya.. bila script di atas tidak jalan silakan download scriptnya langsung di bawah ini
[ Download Script ]
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Script PHP Menampilkan Hasil Pencarian Multikategori dengan Advanced Paging
- Membuat Script PHP untuk Hapus Data dengan Multi Selection
- Script Cari Data File Yang Terupload Ke MySQL
- Ide Membuat Sistem Login Aplikasi Multi User
- Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)
- Perintah SQL (SELECT) untuk Multi Tabel (Bag. 2)
- Script PHP untuk Mengedit Data Via Form
- Script PHP untuk Menampilkan Data dalam Tabel dengan Warna Baris Selang-seling
- Script INSERT Data Dengan PHP dan MS. Access
- Teknik Debugging Script PHP + MySQL
Share this article on:
Kata kunci: form - PHP - search -






Makasih mas tutorialnya, step by step dan sangat jelas sekali. Nih baru kerasa enaknya bergabung dengan member mas Ari, setiap bertanya langsung dijawab ….
mas yoyok ntu dak punya blog, apakah punya…
mantap ini juga yang saya cari pak guru
makasih juga untuk mas yoyok
btw, mas yoyok ini member di source nya atau di kursus nya
to rais: mas yoyok ini salah satu peserta kursus, dan secara otomatis jadi member juga. Anda bisa chat langsung dengan beliau, dengan YM nya: yoyok678
saya coba kok gak jalan Pak
ini errornya
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/search/proses.php on line 60
padahal saya sudah copy n paste
to sta: coba download scriptnya saja mas… atau kalo masih error, coba cek kesesuaian nama tabelnya dan juga besar kecilnya huruf di nama tabel dan fieldnya.
terimakasih Pak, sudah bisa
mungkin saya tidak memberikan tanda cek di checkbox, langsung isi di kotak text dan submit atau langsung submit
httrack ah……………
trims
ass pak arie. gini pak
misal kita mau melakukan pencarian
1. kita ketik di text pencarian gini ” Bank Indonesia”. nah nati hasilnya semua yang mengandung Bank dan Indonesia keluar termasuk kata Bank Indonesia sendiri dan bank Negara Indonesia juga keluar (Note: ada Negara diantara Bank dan Indonesia).
2. Kita Ketik “Bank+Indonesia” nanti hasilnya hanya yang mengandung Bank Indonesia aja yang keluar. Terima Kasih
to ridwan: itu berarti hanya main string saja mas atau string processing… Mudah2an kali lain saya bisa menulis artikel tersebut
ass. pak ada script buat bikin jam analog dan membuat kalender.terima kasih. cos aku dah googling tapi masih bingung nempatin di script phpnya.cos kebanyakan pada pake java. n aku dah lupa. maklum lama ga nyentuh php
Pak kasus saya sama dengan mas sta, kesalahannya ada pada
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/search/proses.php on line 60
dan pada saat saya insert SQL Query punya bpk juga ada kesalahan pada sintaq penulisannya.
MySQL said:
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘alamat text,
sex varchar(10),
PRIMARY KEY (nim)
)’ at line 4
Namun kesalahan itu bisa saya atasi, dengan mengedit ulang. tapi untuk script phpnya saya belum bisa. saya dah cek semua tabel dan nama fieldnya, dan saya rasa gak ada yang salah dlm penulisan nama fieldnya ataupun besar kecilnya huruf tapi tetap gak mau jalan.
Mohon penjelasannya ya pak?
Makasih sebelumnya….
Upss..!!!
Sorry pak tdi program saya ada kesalahan dalam pemberian nomor.
while ($data=mysql_fetch_array($hasil)){
$nomor++;
echo “”.$nomor.”".$data['produk'].”".$data['harga_jual'].”".$data['status'].”";
}
dengan query diatas saya dah bisa jalankan script php saya dengan penambahan nomor urut.
thanks bgt pak tutorialnya sangat membantu. maju terus buat pak rosihanari.
to muadz: ok mas.. akhirnya ketemu juga salahnya kan. Perlu diketahui saja semua script yang saya tulis di blog ini sudah melalui proses pengujian yang lama dan dilakukan berkali-kali sehingga dijamin tidak ada error. Jika Anda menjumpai error, maka dapat dipastikan ada pada script Anda entah karena salah copy atau salah tulis
pak, bisa kasih script pencarian yang lengkap gak! maksud nya mulai dari form simpan data,pencarian,edit data,hapus data,dan data nya kalo bisa ada yang di tampilin foto atau gambar nya. tolog ya,pak. trima kasih.
to abdul: sebenarnya di blog ini sudah ada semua mas. Mungkin Anda belum mencarinya menggunakan fasilitas search yang saya sediakan di blog ini. Untuk simpan data biasanya sudah include di dalam artikel, jadi tidak ada judul artikel yang khusus simpan data. Demikian data untuk edit data dan hapus data. Untuk upload foto dan menampilkannya juga sudah ada dalam blog ini. Silakan cari ya.
Pa…
saya mau nanya….
apa ada script php untuk mengambil sekian huruf dari suatu kata atau kalimat…
seperti pada excel kan ada fungsi left, right, mid…
bisa tolong pencerahannya Pa…
trima kasih…
to rian: pakai function substr(). Artikel bisa dibaca di http://blog.rosihanari.net/php/mengambil-substring-dari-suatu-string-dengan-function-substr/
mas, gmana caranya membuat form multiple search? tapi antara satu table dengan table yang berkaitan.. ?. contoh seperti di,,
http://www.balidwipa.com
semoga mas berkenan untuk menjelaskan.. meskipun pada dasarnya saya bukan member mas rosihan,,.terima kasih..
to wiswa: konsepnya sama seperti postingan saya di atas, hanya bentuknya kan berupa combobox. Kemudian untuk menggabungkan beberapa kategori pencarian konsepnya sama seperti di atas.
terima kasih mas,,
http://anakkost.wordpress.com/
makasih banget mas.. dah mo sharing tak coba – coba dlu ya…
Pak Klo mau bikin multiple kategori pake combobox yang kebawah itu gmn caranya ya pak?
maaf masih newbie ne
mohon pencerahannya
to nandang: combo box ke bawah gimana maksudnya mas?
Hmm…
sangat bermanfaat sekali,
terima kasih banyak pak !!
^vee^
.-= vee´s last blog ..Reset Password Root di OpenSUSE =-.
Pak saya ingin tanya, di project saya,
bila saya membuat query seperti ini :
$sql = “SELECT * FROM data_ss WHERE $bagianwhere”;
(pesan error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘like ‘%zul%” at line 1 )
akhirnya saya membuat query seperti ini :
$sql = “SELECT * FROM data_ss WHERE $bagianwhere”;
(hasilnya bisa)
lalu perbedaanya apa ya pak ??
Terima Kasih
^Vee^
.-= vee´s last blog ..Reset Password Root di OpenSUSE =-.
to vee: lha… trus bedanya apa mas? kok querynya sama?
wah, bagus mas artikelnya..
tapi bagaimana kalau polanya jadi begini
// ada variabel baru bernama hitung_kondisi yang digunakan untuk jumlah where dipanggil
hitung_kondisi = 0;
// tidak perlu ada checkbox, tapi hanya mencek kalau $_POST itu diisi
if ($_POST['nama'] != “”){
$namamhs = $_POST['nama'];
// hitung_kondisi dicek
if(hitung_kondisi >= 1){
$bagianWhere .= ” AND “;
}
$bagianWhere .= “namamhs LIKE ‘%$namamhs%’”;
hitung_kondisi++; // akan bertambah sesuai dengan jumlah
}
dst…
dst
to khalifavi: bisa dicoba mas… ada banyak cara untuk menghasilkan output yang sama.
pak minta kalo untuk membuat kalender dengan php gmn pak?
.-= zahra´s last blog ..~ PERHITUNGAN QUICK COUNT VERSI LSI UNTUK PEMILU PRESIDEN 2009 ~ =-.
mas tolong dong kirimin script untuk membuat tombol search
pak tolong kirim kan cara pembuatan kalender menggunakan php ke email saya. terimakasih sebelumnya pak. uyadoang86@yahoo.co.id
tutorial ini sangat membantu..
yang ingin saya tanyakan adalah:
Bagaimana jika hasil pencarian masing – masing data itu mempunyai link sendiri – sendiri.. disini misal pencarian dg single category
(maaf pak saya pake kasus lain)
misalkan = pencarian data buku berdasarkan judul dan setelah data buku itu tampil dan pengunjung ingin membaca isi buku itu.
maka dibutuhkan links lagi untuk halaman isi buku.
mohon penjelasan dan scriptnya bagaimana, terima kasih
to wahid: berarti anda tinggal tambahkan saja link pada hasil pencarian menuju ke script lain untuk menampilkan detail informasi bukunya. Biasanya kan setiap buku ada nomor ID nya. Nah… nanti ID itu dijadikan parameter di linknya saja. Misal http://…./viewdetail.php?idbuku=12345. Anda tinggal bikin script viewdetail.php untuk menampilkan detail info bukunya berdasarkan idbuku tersebut.
Terima kasih sekali pak, komenku kemarin langsung di jawab, saya sangat senang dg situs ini tidak kaya situs laen yang berhari2 komenku tak liat tak kunjung ada jawaban..
Saya membuat script sperti ini pak (maaf pak saya mencantumkannya):
Menampilkan hasil pencarian
< ?php
// deleted...
while ($res=mysql_fetch_array($sql)) {
$nomor++; echo $nomor.'. ';
echo $res["judul"].'';
}
// deleted...
?>
bagaimana cara menambahkan script bapak:”http://…./viewdetail.php?idbuku=12345.”? sekali lagi terima kasih, pencerahan bapak saya tunggu…
Sangat – sangat membantu, smoga bpak selalu setia tuk beramal dgn berbagi ilmu kepada smua orang…
Sukses slalu buat Pak Ari
maaf pak dimana saya hrus menambahkan script bpak misal: “http://…./viewdetail.php?idbuku=12345.”
ini script saya:
while ($res=mysql_fetch_array($sql)) {
$nomor++; echo $nomor.’. ‘;
echo $res["judul"].’
to wahid: link nya ditaruh di dalam
echo $res["judul"].'';atauecho "<a href='viewdetail.php?idbuku=...'>".$res['judul']."</a>";karena link tersebut ditaruh di dalam judul buku yang muncul dari hasil pencarian. Atau kalau anda tidak ingin linknya dalam judul, anda bisa letakkan di bawah judulnya, asal link tsb harus di dalam while() nya.pak, saya seorang mahasiswa tingkat akhir. sekarang saya sedang bingung dalam menentukan judul skripsi saya..inginnya sih saya membuat program dengan php. Apa bapak bisa membantu saya dengan memberikan referensi? terima kasih sebelumnya pak..
to killua88: coba anda konsultasikan dengan dosen pembimbing Anda ya mas
allow ..numpang tanya tutorial.. gmana cara membuat script php & sql utk pencarian kategori, harga dan lokasi seperti http:ayokebali.com….pls infonya ya mas…sorry newbie abis O:)
isi komen yg sy tuliskan ko menjadi berkurang yah pak.. script’y jadi tidak lengkap..
while ($res=mysql_fetch_array($sql)) {
$nomor++; echo $nomor.’. ‘;
echo”“.$res['judul'].”“;”;
echo”“.$res['judul'].”“;”;
echo”“.$res['judul'].”“;”;
echo”“.$res['judul'].”“;”;
@wahid: kok $res['judul'] nya bisa ditulis berulang-ulang?
masih bingung pak, untuk ID itu dijadikan parameter di linknya, misal ada ID:1, 2, 3, 4, 5.
Apakah penulisannya cukup seperti ini saja pak:
echo”<a href=’viewdetail.php?idbuku=1, 2, 3, 4, 5,’ rel=”nofollow”>”.$res['judul'].”</a>”;
@wahid: untuk menampilkan ID ya berarti gunakan field ID dalam tabelnya, apakah betul nama field ID nya itu ‘judul’? kok pakainya echo $res['judul']? Sebaiknya gunakan ini deh
echo”<a href=’viewdetail.php?idbuku=”.$res['idbuku'].”‘ rel=”nofollow”>Lihat Detail</a>”;
Dengan asums nama field untuk ID bukunya adalah ‘idbuku’. Perintah di atas diletakkan di dalam looping ketika menampilkan setiap data buku. Pada link viewdetail.php ini nanti akan diberikan parameter ‘idbuku’ yang nilainya adalah ID buku masing-masing. ID buku yang ada dalam parameter itu akan digunakan untuk query menampilkan detail buku pada script viewdetail.php nya.
karena kata kunci yg dimasukan dalam form pencarian buku berdasarkan field judul pak, jadi saya tulis echo $res[\'judul\'].. trus bagaimana pak
@wahid: kalo begitu ya nulisnya echo “<a href=’viewdetail.php?idbuku=”.$res['idbuku'].”‘ rel=’nofollow’>”.$res['judul'].”</a>”;
Mungkin bapak bosen yah klo menjelaskan pada saya.
saya masih bingung untuk file” viewdetail.php?idbuku=” karna yg kluar akhirnya sama semua pak..
gimana kalo bapak buatkan tutorial dengan judul
“pencarian dan hasil pencarian masing – masing data itu mempunyai link sendiri”
Terima kasih dan mohon maaf bila saya membuat bapak bosan
@wahid: yang sama itu hasil script viedetail.php nya? atau di hasil pencarian?
yang sama di hasil script viewdetail.php pak…
biar tidak sama gimana pak?
Maaf pak, yang komentar aya sebelumnya itu sudah saya konfigurasi, jadi klo script yang punya bapak saat saya testing berhasil, akan tetapi sama saja permasalahannya, saat kita sama sekali tidak mengisi kotak kategori alias langsung tekan SUBMIT akan muncul pesan error :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/cobaphp/proses.php on line 60
nah gmn caranya agar pesan error itu tidak muncul atau kita mau memunculkan pesan “Maaf Anda harus mengisi salah satu atau lebih kategori telebih dahulu”
gmn pak ?
terima kasih.
@riza: nah… berarti sebelum menjalankan query pencarian harus ada validasi untuk memastikan bahwa kotak kategori harus terisi. Gunakan statement IF untuk hal ini. Logikanya adalah:
if (!isset($_POST['nimCat']) || !isset($_POST['namaCat']) || !isset($_POST['alamatCat']) || !isset($_POST['sexCat']))
{
echo “maaf anda belum memilih kategori”;
}
else
{
// jalankan script pencariannya
}
Terima kasih pak balesannya, sangat membantu
ada yang saya tanyakan lagi pak…kode :
if (!isset($_POST['nimCat']) || !isset($_POST['namaCat']) || !isset($_POST['alamatCat']) || !isset($_POST['sexCat']))
|| artinya AND bukan? berarti kan script diatas maksudnya jika tidak mengisi semua kategori akan keluar tulisan “maaf anda belum memilih kategori”,
jadi klo pake script diatas kan jika kita mengisi 1 kategori, tetep yang keluar tulisan tsb, baru jika kita mengisi semua kategori maka akan ditampilkan hasil pencarian,yang saya tanyakan simbol untuk OR gmn ya pak? jadi walaupun kita hanya mengisi 1 kategori saja hasil pencarian juga dapat ditampilkan.
Terima kasih sebelumnya pak…:D
Salam hangat dari saya juga…
@riza: oh maaf saya salah nulis operatornya. Yang bener && (AND). Kalau || itu OR
Makasih pak…bisa…*hore….*makasih sharing ilmunya sangat bermanaat..:D
pak… ada tdk script untuk pencarian kategori multi tapi berdasarkan kriteria fuzzy system… msalnya kategori untuk memcari barang dengan harga murah sedang mahal …… trimakasih sebelumnya…
@siska: wah belum ada mbak…
hik….hik………
ysdh makasi pak.. klo sudah ada saya mau pak… hehe
logikanya nggak salah tuh mas?
aq udah download scriptnya, dah aq praktekin, tapi gagal. setelah aq telusuri, ternyata, apabila cek di 2 kategori yg berbeda, error..
script querynya nggak otomatis nyambung, dan yg dipake hanya cek di kategori yg terakhir. sehingga querynya salah..
(querynya jadi : select * from mhs where AND alamat like…)
@azwar: sudah bener tuh mas.. saya dah coba berbagai macam kombinasi pilihan kategori bisa jalan.. yang belum bener dari script di atas cuman ketika tidak ada satupun kategori yang dipilih.. lalu disubmit. Nah… barulah ada error. Saya minta visitor untuk memperbaikinya sendiri…
Terima kasih artikelnya pak?? Pas sekali dengan kebutuhan. Btw sedikit mengalami kesulitan nih? Saya gunakan untuk searching data lagu :
2 form : Artis & Judul. Tapi kendalanya jika dua chekcbox serta 2 form tidak di isi apa2/kosong maka ditampilkan error supplied argument is not a valid MySQL result resource.
Yang ingin saya tanyakan adalah : menampilkan beberapa pesan kesalahan jika checkbokx tidak di tandai atau form tidak di isi semua/kosong.
Karna ini multi kategori dan menggunakan chekckbox jadi agak bingung. Bisa tidak ya 1 form input saja tetapi otomatis di SQLnya search ke beberapa field?
trm ksh sblumnya. snang mnjadi member di web pak Ari. ^^
sebelum nya saya ucapkan banyak trima kasih mas karna berkat script/code
Ide Membuat Script PHP untuk Pencarian dengan Multi Kategori dll
tugas kuliah web saya smakin baik tpi untuk
script pencarian tersebut lw inputan ya salah g bisa nampilkan
1.gambar
2.penanganan kesalahan apabila salah menginputkan
trus untuk gambar tidak bisa muncul gambarx napa ya?padahal dah saya kasih code biasa ya bisa tpi ini g bisa
tlong ksih penjelasan ya mas…
1000x saya ucapkan banyak terima kasih……
pa saya tanya,
klo misalkan di kotak pencarian nya () itu di kasih value misalkan ‘cari’, naj ketika di klik di kotak pencarian si value ‘cari’ nya hilang.
itu cara gmana ya pa???
mohon bantuannya.
trima kasih
Mas rosihanari saya coba pakai script tersebut sudah jalan dengan baik tapi untuk pagingnya begitu saya coba klik halamn selanjunya atau next muncul pesan spt ini
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\kanwiljakut\cPanel\cariSim.php on line 114
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\kanwiljakut\cPanel\cariSim.php on line 125
terimaksih…
mas klo cara membuat login untuk administrator dan user pada satu form hanya ada radio button…. trs untuk admin dia bsa mengakses smua halaman edit, tambah, hapus..sdangkan uses hanya halaman trtentu…trs ada software y instan ngk mas…tolong di balas ke email saya mas…makasih bnyak…??
@fendy: coba anda baca penjelasanya untuk paging di artikel http://blog.rosihanari.net/script-php-menampilkan-hasil-pencarian-multikategori-dengan-advanced-paging
thnks buat
script nya ! mas, dan semoga sukses artikelnya…
dan kalo bisa tolong scriptnya lebih beragam lagi
om rosihan ada script untuk buat sistem akademik online g , yg sederhana saja pengen belajar buat ne om , ada penawaran krs yg akan diambil, output khs , login mahasiswa , input krs ke system , dll … kalau ada kabari saya y om …
@arief: wah… untuk sementara ini gak ada mas, karena pembahasannya terlalu kompleks.
pak ari..
trima kasih sebelumnya untuk tutorialnya..
sangat membantu sekali..
hal yang ingin saya tanyakan..
script seperti ini namun dalam format file wml nya bagaimana yha pa ?
jika ada boleh di berikan scriptnya seperti apa..?
karena saya coba2 sulit ternyata,, hehehe..
tolong yha bapak.. thx ^^
terima kasih!
ini sangat membantu kari saya+kelompok sedang mengerjakan tugas dari pembimbing magang untuk membuat sebuah aplikasi pengolahan surat dengan PHP.
saya boleh minta script untuk searching berdasarkan periode tanggal (ex: 1Maret-10 Maret 2010)! Saya browsing di internet gak dapat”!!
Tolong dibantu ya..
TERIMA KASIH
ass mas ari…
bagaimana script php untuk mencarian berdasarkan nama tabel,,
kita menggunakan radio button untuk memilih tabel dalam proses pencariannya…
jika salah satu radio button tersebut dipilih, maka hanya tabel yang di pilh saja yang akan di tampilkan hasil pencariannya….
mohon pencerahannya….
mlm pak… pertanyaan sy sm dgn mas don2y d ats tp bd kasus, klo pk combo box yg kbwh gmn yh pak?? mksdny combo box k bwh itu yg list/menu itu lho pak… yg pk …
misal, ada 3 kriteria, hrga, efek samping, pengolahan, yg dplh user hny hrg dan efek samping, kriteria pengolahannya tdk aktf, jd yg aktf yg dplh oleh user saja… itu konsepnya bagaimna yh pak??
mohon penjelasannya… terimakasih sebelumnya…
mas mau tanya tentang codeIgniter doong?
@dimaz: saya gak bisa CI mas.
maaf pa, saya mau tanya kalo saya untuk pencarian multikategori menggunakan $res
bagaimana pa?agar dapat muncul hasil pencariannya..
mohon bantuannya pa..
@dinda: apa itu $res?
akhirnya ktmu jg…hehehe…. makasih atas tutorialnya…..
@teguh: sama-sama mas teguh…
pak saya mau tanya,, kalo hasil pencarian tidak ditemukan dalam web kita, kemudian kita alihkan ke search engine misal (google atau yahoo) dengan kata kunci yang telah dimasukan pada halaman cari web kita, itu bagaimana scriptnya/caranya?.terima kasih sebelumnya.
@kang fauz: maaf mas belum ada ide nih…
tutorialnya bagus pak.
saya baru coba2 belajar php, yang ingin saya tanya gimana caranya hasil pencariannya tetap di page yang sama. apa yang harus di tambah di script bpk.
terus kalo kategorinya pencariannya pake tanggal gmana scriptnya ya pak?
satu lagi pak gmana setting format angka, misalnya 999999.9900 di tampilkan menjadi 999,999.99 , sebelumnya terima kasih..
@mike: silakan baca artikel saya di http://blog.rosihanari.net/memformat-bilangan-dengan-function-number_format mas
numpang nanya Modul nya udah sy Donload..
terus di taruh dimana yah?
saya pakai Xampp
thx
@luk: ditaruh di folder HTDOCS yang ada di direktori XAMPP nya
mas kalau mau limit harus dibagian mana ?
script saya seperti ini.
$sql=mysql_connect($host,$name,$pass);
mysql_select_db($db,$sql);
$tabel=mysql_query(“select * from $tb where Word like ‘%$_POST[cari]%’ and id_kategori like ‘%$_POST[kategori]‘”);
$jumlah=mysql_num_rows($tabel);
$tb adalh string database saya
@tuma: tinggal ditambahin LIMIT saja di “select * from $tb where Word like ‘%$_POST[cari]%’ and id_kategori like ‘%$_POST[kategori]‘ LIMIT 0, 10″ misalnya
alhamdulillah saya dah bisa limit hasil , tapi kendala saya sekarang mas ingin nampilin , semacam switch untuk menampilkan hasil seperti view all , khan dah di limit ketika di klik view all nanti dia menampilka semua hasil, tanpa ada limit , thank u , maaf mas, script saya ada disini. (‘usaha cari2 jawaban)
http://www.forumphp.web.id/viewtopic.php?p=36847#36847
mas punya script pencarian yang bukan multikategori gag?
@tuma: ok… selamat ya mas… teruslah mencoba… dan berkreasi
pak, kalo pencarianny di kategorikan dari jenis kelamin dlu, stelah itu di pencariannya katakunci nya dari kategori nama atau alamat bagaimana?
ini scrip untuk form nya:
– Pilih Sumber –
Laki
Perempuan
-Cari Berdasarkan-
nana
alamat
jadi form nya menggunakan drop down, dan ada form untuk katakunci berdasarkan nama atau alamat yang telah di kategorikan terlebih dahulu dari jenis kelamin.
mohon bantuannya
ms, q download skripe ms bs,tp q bwt sndri lgi ko g bs y?slhny di baris 60
thnks
mass gw gagal scripnya..
ini errornya :
Gagal queryYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1
@ardi: itu errornya di query sql nya mas, silakan baca http://blog.rosihanari.net/teknik-debugging-script-php-mysql untuk debugging scriptnya…
@kitie: ya… berarti di baris 60 itu ada yg salah mas… coba cek lagi ya..
assalammu’alaikum wr wb pak rosihanari ,maaf pak ternyata menggunakan isset hanya benar di logika pak,sebab pada prakteknya yang di gunakanadalah !empty ,kecuali untuk komponen textarea.
oh ya pak ,kalau bapak tidak percaya silahkan tampilkan query nya dengan perintah echo pasti dapat bapak baca query where yang lain malah di ikutkan juga,padahal kita hanya mengklik salah satu checkbox,hmm selain itu solusi bagus adalah mengganti AND menjadi OR ,sebab sewaktu pencarian kan harus di temukan salah satu yang kita cari tadi ,kalau tidak bosan juga carinya ,lama ketemunya ..he..he..wassalammu’alaikum wr wb pak.
@charisma: oya??? ok deh ntar coba tak ceknya… thanks atas masukannya.
pak saya mau nanya…
klo searchnya pkenya list/menu bukan yang kaya diatas gimna caranya ya pak???????
terima kasih
@nova: search via menu/list gimana maksudnya mas?
maaf pak saya pemula mau tanya,
saya kesulitan untuk membuat sebuah pencarian dengan komponen option yang berisi kategori staff (dari tabel staff) dan mahasiswa (dari tabel mahasiswa) serta textbox untuk pencarian dan sebuah button.
Untuk melakukan pencarian, pertama kita pilih kategori terlebih dahulu, kemudian kita isi textbox dengan keyword.
mohon bantuannya. .
mas…,klo multi combo box dgn lbh dr 2 dropdown list yg slng berelasi bgmn caranya ya mas?tlg bngt…
assalamu’alaikum wr.wb
saya pemula pak
saya sedang membuat program akademik untuk sekolah pak,saat saya gunakan script diatas untuk pencarian dengan 3 kategori (jabatan,golonga,mata pelajaran)..gagal pak,karna jika diganti kategori pencariannya,,hasilnya tetap sama,,jadi tidak pengaruh pak,,,terimakasih pak.
wassalam