Script PHP Pencarian Data Lebih Dari Satu Table



Asalamu alaikum wr.wb?


Sekarang saya akan mencoba menulis sebuah tutorial php, mengenai pencarian data lebih dari satu table pada database dengan menggunakan fungsi if pada php script.

Sepintas saja mengenai manfaat dengan menyediakan pasilitas pencarian pada website kita....
Biasanya sebuah website dinamis banyak yang menerapkan pasilitas pencarian untuk di gunakan oleh para pengunjung pada website nya, seperti blog-blog atau website toko online dan lain sebagainya, dimana fungsi pencarian ini untuk mempermudah para pengunjung mendapatkan informasi produk dan dan lain-lain didalam website tesebut.

Hal ini, perlu kita perhatikan, mungkin pasilitas pencarian ini adalah termasuk hal yang penting dengan keakuratan dalam pencarianya.

Mengapa saya katakan demikian? Karena jika seorang pengunjung yang datang langsung menuju ke halaman depan, biasanya malas untuk browse map situs, karena mungkin itu di sebabkan banyaknya link yang ada pada website kita, sehingga dia akan merasa jenuh dan akan meninggalkan website kita begitu saja, karena dia merasa tidak menemukan apa yang sedang di cari nya.

Hal demikian lah yang biasanya para pengunjung menggunakan jalan alternatif, yaitu fasilitas pencarian yang disediakan, dan sangat disayangkan jika pasilitas pencarian itu tidak ada pada website kita.

Satu hal lagi yang di anggap penting, yaitu mengenai optimalisasi data hasil pencarian tersebut, harus akurat dan sesuai dengan keyword yang di inputkan pada form pencarian, dan biasanya para pencari tidak hanya mengetikan satu keyword saja agar hasil yang dia cari lebih optimal, dan kenyataanya hasil pencarian itu tidak ada, wah.... Tentu itu sangat menjengkelkan sekali!

Baiklah, sekarang kita langsung saja buat contoh database mysql menggunakan phpMyAdmin, dimana nantinya data yang akan di cari berada pada database tersebut, dengan menggunakan fungsi if. Jika pencarian tidak ditemukan pada table ke satu, lalu akan di lanjutkan ke table yang ke dua, dan jika masih belum ditemukan juga, maka akan di lanjutkan kepada table yang ke tiga, dan seterus nya....

Pada kasus ini, saya hanya buat 3 table saja sebagai contoh proses nya, dan kamu bisa menerapkanya pada database yang ada pada website yang kamu miliki, tinggal di sesuaikan saja table dan field-field nya!

Buatlah database baru bernama "pencarian", kemudian buatlah 3 buah table di dalam database tersebut, seperti pada insert database di bawah ini yang sudah saya persiapkan sebagai contoh nya, lengkap dengan dumping data untuk ke 3 table tersebut, dengan isi field-field nya :


Table structure untuk table1 :

CREATE TABLE `table1` (
  `id` int(11) NOT NULL auto_increment,
  `detail` varchar(500) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;



 Dumping data untuk table1 : 

INSERT INTO `table1` VALUES (1, 'ini adalah detail table ke satu silahkan tes dengan kata kunci ke satu');


Table structure untuk table2 :

CREATE TABLE `table2` (
  `id` int(11) NOT NULL auto_increment,
  `detail` varchar(500) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;



 Dumping data untuk table2 : 

INSERT INTO `table2` VALUES (1, 'ini adalah detail table ke dua silahkan tes dengan kata kunci ke dua');


Table structure untuk table3 :

CREATE TABLE `table3` (
  `id` int(11) NOT NULL auto_increment,
  `detail` varchar(500) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;


 Dumping data untuk table3 :  

INSERT INTO `table3` VALUES (1, 'ini adalah detail table ke tiga silahkan tes dengan kata kunci ke tiga');


Sekarang saatnya untuk membuat koneksi ke database mysql tersebut, yang nantinya akan kita include ke script pengolahan hasil pencarian yang berada pada file hasil-cari.php

config.php


<?php
  $dbhost = 'localhost'; //server hosting kamu
  $dbuser = 'root'; //username mysql kamu biasanya root
  $dbpass = 'password'; //password mysql kamu
  $dbname = 'pencarian'; //nama database yang kamu buat
  mysql_connect("$dbhost","$dbuser","$dbpass"); //koneksi ke mysql
  mysql_select_db("$dbname") or error(mysql_error()); //memilih nama database
  ?>

Kemudian buatlah sebuah formulir untuk pencarian, sebagai berikut :

form.php

<form action="hasil-cari.php" method="post" name="pencarian" id="pencarian">
  <input type="text" name="search" id="search">
  <input type="submit" name="submit" id="submit" value="Cari Data!">
</form>

Dan untuk proses data hasil pencarian yang dikirim via POST dari formulir form.php, akan di terima dan di proses oleh hasil-cari.php

hasil-cari.php
<?php
//include kan koneksi ke database disini
include "config.php";

//jika form pencarian mengandung isi maka akan di proses
if ((isset($_POST['submit'])) AND ($_POST['search'] <> ""))
{
  //menerima dan membaca data yang di terima via form metode POST
  $search = $_POST['search'];
 
  //memilih table ke satu dari database mysql
  $sql1 = mysql_query("SELECT * FROM table1 WHERE detail LIKE '%$search%' ") or die(mysql_error());
 
  //membuat jumlah hasil pencarian pada table ke satu
  //dengan fungsi mysql_num_rows()
  $jumlah1 = mysql_num_rows($sql1);
 
  //jika hasil pada table ke satu lebih dari pada 0 maka akan di proses
  if ($jumlah1 > 0)
  {
   //menampilkan jumlah hasil pencarian pada table ke satu
   echo '<p>Ditemukan '.$jumlah1.' data yang sesuai pada table ke satu!</p>';
  
   //membuat pengulangan dengan fungsi while
   //untuk tampilan hasil table ke satu
   while ($hasil1 = mysql_fetch_array($sql1))
  {
   //menampilkan nomor urut
   $num++; echo $num.'. ';
  
   //menampilkan hasil pencarian pada table ke satu
   echo $hasil1[detail].'<br>';
  }
  }

  //jika data tidak di temukan pada table ke satu
  //maka akan dilanjutkan ke table yang ke dua
  else
  {
   //memilih table ke satu dari database mysql
   $sql2 = mysql_query("SELECT * FROM table2 WHERE detail LIKE '%$search%' ") or die(mysql_error());
  
   //membuat jumlah hasil pencarian pada table ke dua
   //dengan fungsi mysql_num_rows()
   $jumlah2 = mysql_num_rows($sql2);
  
   //jika hasil pada table ke dua lebih dari pada 0 maka akan di proses
   if ($jumlah2 > 0)
   {
   //menampilkan jumlah hasil pencarian pada table ke dua
    echo '<p>Ditemukan '.$jumlah2.' data yang sesuai pada table ke dua!</p>';
   
   //membuat pengulangan dengan fungsi while
   //untuk tampilan hasil table ke dua
    while ($hasil2 = mysql_fetch_array($sql2))
    {
    //menampilkan nomor urut
    $num2++; echo $num2.'. ';
   
    //menampilkan hasil pencarian pada table ke dua
    echo $hasil2[detail].'<br>';
    }
    }
 
  //jika data tidak di temukan pada table ke dua, maka akan dilanjutkan ke table yang ke tiga
  else
  {
  //memilih table ke tiga dari database mysql
  $sql3 = mysql_query("SELECT * FROM table3 WHERE detail LIKE '%$search%' ") or die(mysql_error());
 
  //membuat jumlah hasil pencarian pada table ke tiga
  //dengan fungsi mysql_num_rows()
  $jumlah3 = mysql_num_rows($sql3);
 
  //jika hasil pada table ke tiga lebih dari pada 0 maka akan di proses
  if ($jumlah3 > 0)
  {
   //menampilkan jumlah hasil pencarian pada table ke dua
   echo '<p>Ditemukan '.$jumlah3.' data yang sesuai pada table ke tiga!</p>';
  
   //membuat pengulangan dengan fungsi while
   //untuk tampilan hasil table ke tiga
   while ($hasil3 = mysql_fetch_array($sql3))
  {
   //menampilkan nomor urut
   $num3++; echo $num3.'. ';
  
   //menampilkan hasil pencarian pada table ke tiga
   echo $hasil3[detail].'<br>';
  }
  }
  
  //jika semua data tidak di temukan pada ke 3 table
  else
  {
  echo "Data yang kamu cari tidak ada pada ke tiga table database kami!";
  }
 
  }
  }
  }
 
  //jika form pencarian kosong
  else
  {
  echo 'Silahkan masukkan kata kunci yang kamu cari!';
  }
?>



Untuk download script di atas dengan lengkap, silahkan Klick Disini!

Artikel Lainnya