Tutorial kali ini sebetulnya hanyalah pengembangan dari tutorial sebelumnya, Metode Searching Sederhana ( selengkapnya dapat dilihat di http://www.ilmuwebsite.com/detil_php_tutorial/16/Metode_Searching_Sederhana_v.1/ ). Setelah menerima masukkan dari salah satu staff ilmuwebsite, akhirnya saya mencoba untuk sedikit memoles beberapa bagian.
Penambahan-penambahan yang saya lakukan :
Multiple Searching, dengan kata lain, user dapat melakukan searching dengan multiple keyword.
Bold dan Highlight pada setiap keyword yang dicari.
Seperti biasa, dalam tutorial kali ini, saya hanya menjelaskan sedikit saja, karena sebagian besar telah dijelaskan pada tutorial sebelumnya.
Tetapi sebelumnya, yang kita butuhkan adalah sebuah database :
create database cms_db;
use cms_db;
create table cms_artikel (id int(3) primary key auto_increment, judul_artikel varchar(100), penulis_artikel varchar(70), isi_artikel text);
insert into cms_artikel values('','Ryuzaki...','Al-k','Pada dasarnya ryuzaki itu tidak ganteng :D');
insert into cms_artikel values('','Sejati...','Al-k','Kegantengan sejati pemilik ketampanan ... ');
insert into cms_artikel values('','Kegantengan Sejati','Al-k','Begitulah, kadang orang melihat seseorang hanya dari penampilannya saja. Sebagian besar mengatakan, semuanya kan berawal dari penampilan, penampilan yang baik membuktikan yang berpenampilannya memiliki hati seperti itu. Padahalkan nggak kaya gitu, iya nggak ? Jujur aja, dalam hal ini gw sama kaya loe, termasuk orang yang berpenampilan apa adanya, yang ada ya gw pake, kalo yang nggak ada, gw nggak akan pake. to be continued !!!');
// file config.php
$host = "localhost";
$username = "root";
$password = "";
$databasename = "cms_db";
$connect = mysql_connect($host, $username, $password) or die ("Nggak bisa konek !");
mysql_select_db($databasename, $connect) or die("Nggak bisa konek !");
?>
// dan script inti, index.php
// Searching Multiple Keyword
// ///////////////////////////////
// by : Loka Dwiartara a.k.a Al-k
// alkemail@gmail.com
// http://www.ilmuwebsite.com
// ///////////////////////////////
include "config.php";
$mode = $_REQUEST['mode'] ;
$id = $_REQUEST['id'];
// menghilangkan space di kiri dan kanannya
$search = trim($_POST['search']);
// memisahkan array perkata
$search_array = explode(" ",$search);
$banyak_kata = (integer)count($search_array);
// query looping, sehingga menghasilkan
// select * from cms_artikel where isi_artikel
// like '%$search_array[$x]%' AND isi_artikel like '%%'
$searchquery = "select * from cms_artikel where " ;
for ( $x = 0; $x<= $banyak_kata; $x++)
{
$searchquery .= "isi_artikel like '%$search_array[$x]%'";
if ( $x < $banyak_kata )
{
$searchquery .= " AND ";
}
}
$runsearchquery = mysql_query($searchquery);
$viewquery = "select * from cms_artikel where id = '$id'";
$runviewquery = mysql_query($viewquery);
if ($mode == "search" )
{
$numrows = mysql_num_rows($runsearchquery);
// memberikan highlight dan bold pada string yang dicari
// dengan looping sebanyak $banyak_kata
print "String yang anda cari : ";
for ( $x = 0; $x<= $banyak_kata; $x++)
{
$search_replace[$x] = "
$search_array[$x]";
print "$search_replace[$x] ";
}
print "
Data yang anda cari, ada dalam database sebanyak : $numrows
" ;
while ( $result = mysql_fetch_array($runsearchquery))
{
$id = $result['id'];
$judul = $result['judul_artikel'] ;
$isi = $result['isi_artikel'];
// memberikan highlight dan bold pada setiap kata yang dicari
$isi_baru = str_replace($search_array, $search_replace, $isi);
$isi_display = substr($isi_baru, 0, 800);
$isi_display = substr($isi_baru, 0, strrpos($isi_display, " "));
print "$judul
$isi_display ...
";
}
print "
Kembali";
}
else if($mode == "view")
{
while ( $result = mysql_fetch_array($runviewquery))
{
$id = $result['id'];
$judul = $result['judul_artikel'] ;
$penulis = $result['penulis_artikel'];
$isi = $result['isi_artikel'];
print "$judul
Penulis : $penulis
$isi";
}
print "
Kembali";
}
else
{
?>
Search:
}
?>
Cukup Panjang tapi bermakna :D. Ya, sebelum saya jelaskan script diatas, ada baiknya kita lakukan review terlebih dahulu mengenai query sql untuk single keyword.
select * from cms_artikel where isi_artikel like '%$search%'
query diatas, berfungsi melakukan seleksi terhadap database, mengacu kepada field isi_artikel, dengan single keyword. Bagaimana jika sang user memasukkan multiple keyword ? jelas hasilnya akan 0. Terkecuali jika multiple keyword yang dicari berada secara berurutan dalam database.
Di sinilah letak jawabannya, mysql mengijinkan kita menggunakan multiple keyword sekaligus dalam melakukan pencarian database. Dengan penambahan operand AND di antara keyword yang dicari. Sehingga apabila kita mencari 3 keyword sekaligus, maka mysql mengizinkan kita menggunakan query seperti ini :
select * from cms_artikel where isi_artikel like '%$keyword1%' AND '%$keyword2%' AND '%$keyword3%'
Melihat query di atas, penggunaan looping pada php sangat dibutuhkan untuk mengimplementasikannya.
Ketika user memasukkan keyword ke dalam textbox search, yang harus dilakukan adalah memisahkan/memecah keyword tersebut dalam sebuah array :
$search_array = explode(" ",$search);
Langkah selanjutnya, menghitung berapa banyak variable yang terdapat dalam array tersebut. Hal ini digunakan sebagai titik acuan berapa banyak looping akan dilakukan nantinya.
$banyak_kata = (integer)count($search_array);
Setelah itu ? looping ?
$searchquery = "select * from cms_artikel where " ;
for ( $x = 0; $x<= $banyak_kata; $x++)
{
$searchquery .= "isi_artikel like '%$search_array[$x]%'";
if ( $x < $banyak_kata )
{
$searchquery .= " AND ";
}
}
Sehingga $searchquery nantinya menjadi :
select * from cms_artikel where isi_artikel like '%$search_array[0]%' AND '%$search_array[1]%' AND '%$search_array[2]%' AND '%$search_array[n]%'
Untuk melakukan bold dan highlight pada keyword yang dicari pada dasarnya hanya mereplace string sebelumnya dengan tag bold dan highlight.
Sebagai contoh dalam sebuah variable
$sejati = ?Ryuzaki pada dasarnya tidak ganteng ?;
Kemudian kita akan melakukan perubahan ganteng menjadi ganteng
Maka ?
Str_replace (?ganteng?,?ganteng?,$sejati);
Hasilnya ?
Ryuzaki pada dasarnya tidak ganteng
Karena dalam bentuk array maka perlu dilakukan looping masal terhadap isi array tersebut.
print "String yang anda cari : ";
for ( $x = 0; $x<= $banyak_kata; $x++)
{
$search_replace[$x] = "
$search_array[$x]";
print "$search_replace[$x] ";
}
Sehingga ?
Lakukan bold dan highlight :
$isi_baru = str_replace($search_array, $search_replace, $isi);
Ex :
Pencarian ?
Hasilnya ?
Cukup sekian penjelasan dari saya.
Silahkan dikembangkan.
Terima kasih.
Script lengkapnya bisa anda download di sini :
Article Last Update on 23 Februari 2008
Download Ebooknya disini -> Download Semua Ebook Tutorial PHP ilmuwebsite
http://unair.info/img/loka-multiplesearching.zip
Greetz :
// b_scorpio, phii_ , safril, ryuzaki etc
// anak-anak PHP Club STTT
http://www.networkandgame.890m.com
Blog Archive
-
▼
2009
(65)
-
▼
January
(65)
- Membuat System LOG dengan FLAT FILE
- Counter, Visitor | Hits, dengan MySql
- Penggunaan image dalam website
- Membuat Security Code | Security Image | Anti Spam
- Validasi Form dengan PHP
- Membuat PAGE 1 2 3
- Tutorial Membuat Komentar pada artikel
- Multiple Delete Record dengan checkbox
- Script PHP Informasi Anda - IP - Proxy - Koneksi
- Validasi Form dengan PHP 2
- Membuat Halaman Login ... v.1
- Membuat Dynamic Title
- Metode Searching Sederhana v.1
- Root Mapping Menu
- Metode Searching - Multiple Keyword
- Membuat Cuplikan Artikel
- Memperbaiki kode HTML dengan ekstensi php_tidy.dll
- Membuat Polling dengan PHP
- Register | Login | Logout Script
- Batasi Download File dengan PHP Script
- Pemisahan Warna Per Baris
- Membuat Halaman Admin dengan Akses 1 IP
- Membuat URL Mod Rewrite Part 1 - http conf
- Dynamic Google Sitemap - Write File
- Mengirim Email massal
- URL Mod Rewrite Part 2 - htaccess
- Membuat Grafik Data Vertikal dengan PHP
- Membuat Smilies
- Instalasi Word Processor tinyMCE - WYSIWYG
- Multi Languagedengan PHP
- Membuat Zip dengan PHP
- ZIP Archive Extractor and Creator
- Total Visitor
- menyembunyikan lokasi image
- Downloader Function With PHP
- Membuat PDF dengan fpdf
- Scanning All Files and Directories
- Membuat Title Friendly
- Script pengatur waktu Session, Logout Otomatis
- Membuat Password Generator
- Perkenalan dengan PHP
- Membahas Fungsi if - ifelse - else
- Membahas Fungsi include - include_once - require
- Mengecek Karakter dengan Regular Expressions
- Penjelasan | Multi Line String |
- Strpos Mencari Tahu Dimana Posisi Sebuah Karakter
- Fungsi - fungsi untuk memfilter input form
- Redirect Halaman
- Passing By Value VS Passing By Reference
- Membuat login ala cpanel
- Menangkap Variabel Post
- Lebih dalam mengenal array
- PHP dan Class Part1
- PHP dan Class Part2
- Penggunaan POST dan GET
- PHP dan Class Part3
- Lebih dalam dengan OOP
- Passing variable menggunakan Session
- Database in OOP way: Select data mysql with mysqli
- Update, Delete Database with OOP
- Redirect Halaman Kompleks
- Operasi String
- Operasi string
- PHP Looping
- Download Semua Ebook Tutorial PHP ilmuwebsite
-
▼
January
(65)
0 comments:
Post a Comment