Postingan lainnya
Pencarian Nomor
Ceritanya saya membuat sebuah form pencarian, dalam form pencarian tersebut tersebut ada pencarian berdasarkan nomor. Tapi ada satu permasalahan yang sama alami yaitu ketika saya memasukkan angka 1 pada form pencarian yang muncul itu tidak nomor 1 saja, tetapi nomor yang terdapat angka 1 seumpama 10,11,12,21,31 dan seterusnya yang intinya terdapat angka 1. Bagimana solusi untuk permasalahan tersebut?
23 Jawaban:
source codenya boleh di tampilkan ngk bang?
<?php
include 'login/config/koneksi.php';
//pencarian
if(isset($_GET['cari']))
{
$kategori_peraturan = $_GET['kategori_peraturan'];
$nomor_peraturan = $_GET['nomor_peraturan'];
$status_peraturan = $_GET['status_peraturan'];
$tahun_peraturan = $_GET['tahun_peraturan'];
$kata = $_GET['kata'];
$result = mysql_query("select * from pusat_data where kategori_peraturan like '%".$kategori_peraturan."%' and status_peraturan like '%".$status_peraturan."%'and nomor_peraturan like '%".$nomor_peraturan."%' and tahun_peraturan like '%".$tahun_peraturan."%' and judul_peraturan like '%".$kata."%' ORDER BY id_peraturan DESC");
}
else
{
$result = mysql_query("select * from pusat_data ORDER BY id_peraturan DESC");
}
?>
coba di query pencariannya diganti jadi gini mas...
$result = mysql_query("select * from pusat_data where
kategori_peraturan = '".$kategori_peraturan."'
and status_peraturan = '".$status_peraturan."'
and nomor_peraturan = '".$nomor_peraturan."'
and tahun_peraturan = '".$tahun_peraturan."'
and judul_peraturan = '".$kata."' ORDER BY id_peraturan DESC
");
Tidak perlu menggunakan 'like' jika yang ingin ditampilkan sesuai dengan apa yang dicari
tambahan :
untuk penggunaan paramater WHERE, sendiri ada beberapa macam :
contoh 1 :
SELECT * FROM tabel WHERE id='$id'
jika menggunakan seperti ini maka data yang ditampilkan hanyalah yg memiliki id sama persis dengan $id...
contoh 2 :
SELECT * FROM tabel WHERE id like '%$id%'
ini akan menampilkan data yg memiliki id seperti $id (entah ditengah karakter ataupun dibelakang,
*note : karakter % ini biasa digunakan sebagai karakter 'whatever' (bagi saya :v ) soalnya % disini berfungsi sebagai pengganti karakter...
maaf kalau agak sulit dimengerti... heheh tpi kalau mau searching bisa baca2 disini -> https://www.root93.co.id/2013/03/menggunakan-perintah-select-from-di.html
klo like diganti = malahan gak muncul mas datanya
coba ditampilkan lgi source code nya mas...
dan kalau bisa gambar form pencariannya ditampilkan juga...
<?php
include 'login/config/koneksi.php';
//pencarian
if(isset($_GET['cari']))
{
$kategori_peraturan = $_GET['kategori_peraturan'];
$nomor_peraturan = $_GET['nomor_peraturan'];
$status_peraturan = $_GET['status_peraturan'];
$tahun_peraturan = $_GET['tahun_peraturan'];
$kata = $_GET['kata'];
$result = mysql_query("select * from pusat_data where
kategori_peraturan = '".$kategori_peraturan."'
and status_peraturan = '".$status_peraturan."'
and nomor_peraturan = '".$nomor_peraturan."'
and tahun_peraturan = '".$tahun_peraturan."'
and judul_peraturan = '".$kata."' ORDER BY id_peraturan DESC
");
}
else
{
$result = mysql_query("select * from pusat_data ORDER BY id_peraturan DESC");
}
?>
coba dijadiin gini :
$result = mysql_query("select * from pusat_data where
kategori_peraturan like '%".$kategori_peraturan."%'
and status_peraturan like '%".$status_peraturan."%'
and nomor_peraturan='".$nomor_peraturan."'
and tahun_peraturan like '%".$tahun_peraturan."%'
and judul_peraturan like '%".$kata."%' ORDER BY id_peraturan DESC
");
yg dipakein parameter = (sama dengan) cuman di bagian nomor_peraturannya doang.. biar pencarian akan akurat sesuai dengan nomer yg dimasukkan ....
udah bisa mas yang nomor cuma pake = (sama dengan)
alhamdulillah.. siap mas... heheh
biar bisa nambah2 pengetahuan tentang masalah nya mas yg tadi, bisa di cek kesini -> https://apriforhumanbeing.wordpress.com/2011/06/06/wildcard-pada-mysql/
Ada masalah yang baru muncul mas, form pencarian saya kan terdiri dari 5 kategori ketika saya hanya mencari tahun peraturan saja data tidak muncul tapi jika mencari nomor dan tahun bersamaan muncul datanya. intinya ketika saya mencari tanpa menggunakan nomor maka data tidak muncul jika menggunakan nomor maka muncul. gimana solusi nya mas?
ini source code nya
<?php
include 'login/config/koneksi.php';
//pencarian
if(isset($_GET['cari']))
{
$kategori_peraturan = $_GET['kategori_peraturan'];
$nomor_peraturan = $_GET['nomor_peraturan'];
$status_peraturan = $_GET['status_peraturan'];
$tahun_peraturan = $_GET['tahun_peraturan'];
$kata = $_GET['kata'];
$result = mysql_query("select * from pusat_data where
kategori_peraturan like '%".$kategori_peraturan."%'
and status_peraturan like '%".$status_peraturan."%'
and nomor_peraturan like '".$nomor_peraturan."'
and tahun_peraturan like '%".$tahun_peraturan."%'
and judul_peraturan like '%".$kata."%' ORDER BY id_peraturan DESC
");
}
else
{
$result = mysql_query("select * from pusat_data ORDER BY id_peraturan DESC");
}
?>
alasan kenapa masalah tersebut bisa terjadi karena ketika data nomor_peraturan dikosongkan, maka query akan mencari nomor_peraturan yg kosong (null/empty) DAN data yang tahunnya seperti (LIKE % %) tahun yg mas masukkan... sehingga query akan mencari data yg intinya nomor_peraturan nya bernilai kosong...
--
dari 5 kategori tersebut, kategori apa saja yg wajib diisikan mas (required)?? kalau ada nnti querynya beda lagi, ada yg pake 'OR' dan ada juga yg pake 'AND'
tapi, kalau semua datanya ada yg bisa dikosongkan maka, klausa AND nya bisa diganti dengan klausa OR sehingga jika salah satu dari kategori tersebut terpenuhi maka datanya akan ditampilkan....
$result = mysql_query("select * from pusat_data where
kategori_peraturan like '%".$kategori_peraturan."%'
OR status_peraturan like '%".$status_peraturan."%'
OR nomor_peraturan = '".$nomor_peraturan."'
OR tahun_peraturan like '%".$tahun_peraturan."%'
OR judul_peraturan like '%".$kata."%' ORDER BY id_peraturan DESC
");
Jawaban Terpilih
udah bisa mas ternyata pake ini..
<?php
include 'login/config/koneksi.php';
//pencarian
if(isset($_GET['cari']))
{
$kategori_peraturan = $_GET['kategori_peraturan'];
$nomor_peraturan = $_GET['nomor_peraturan'];
$status_peraturan = $_GET['status_peraturan'];
$tahun_peraturan = $_GET['tahun_peraturan'];
$kata = $_GET['kata'];
$add = "";
if ($kategori_peraturan)
$add = $add . " and kategori_peraturan like '%".$kategori_peraturan."%' ";
if ($status_peraturan)
$add = $add . " and status_peraturan like '%".$status_peraturan."%' ";
if($nomor_peraturan)
$add = $add . " and nomor_peraturan like '".$nomor_peraturan."' ";
if($tahun_peraturan)
$add = $add . " and tahun_peraturan like '%".$tahun_peraturan."%' ";
if($kata)
$add = $add . " and judul_peraturan like '%".$kata."%' ";
$q = "select * from pusat_data where (1=1) ".$add." ORDER BY id_peraturan DESC";
$result = mysql_query($q);
}
else
{
$result = mysql_query("select * from pusat_data ORDER BY id_peraturan DESC");
}
?>