Membuat Fitur Pencarian dengan PHP Lengkap

Ditulis Oleh:

Fitur pencarian PHP memang sangat dibutuhkan untuk sebuah aplikasi web. Fitur ini berfungsi untuk mencari data berdasarkan kata kunci yang dimasukan. Kali ini Kelas Programmer akan membagikan kepada kalian bagaimana membuat fitur pencarian dengan php.

Pencarian yang akan kita buat adalah pencarian basic yaitu ketika pengguna memasukan kata kunci pada sebuah text field, lalu kemudian menekan tombol cari maka akan menampilkan data berdasarkan kata kunci yang dimasukan tersebut. Pencarian yang kedua, kita akan membuat pencarian php berdasarkan kategori yang dipilih melalui combo box.

Fitur pencarian php yang kita buat bersifat dinamis berdasarkan data yang ada didalam tabel di database. Jadi apabila ada perubahan data didatabase maka otomatis fitur ini akan mengikutinya.

Untuk tampilannya saya menggunakan Bootstrap baik untuk form dan tabel. Kalo kalian mau belajar bootstrap bisa kunjungi link cara menggunakan bootstrap

Konfigurasi Database

Buat database dengan nama akademik

create database akademik;

Selanjutnya buat tabel dengan nama mahasiswa

create table mahasiswa (
    nik char(10) not null primary key,
    nama varchar(50) not null,
    jk char(1),
    tanggal_lhr date,
    jurusan char(2),
    umur int
    );

Kemudian terakhir masukan beberapa contoh data kedalam tabel mahasiswa

INSERT INTO mahasiswa
VALUES ('135410156','Ahmad Riko','1','1995-02-23','TI',22),
('135610157','Dahlan Iskan','1','1998-03-26','SI',20),
('135410189','Wawan Setiawan','1','1993-02-13','TI',23),
('135310156','Safitri Ayu','2','1995-09-01','TK',22),
('135310150','Rian Hidayat','1','1997-08-05','TK',20),
('135510920','Dani Hermawan','1','1996-05-05','SI',23),
('135518322','Nita Daniyatun','2','1994-09-05','TI',23),
('135518900','Mili Wilian','2','1995-10-08','SI',22),
('135510190','Marshel Saraun','1','1993-10-23','MI',23),
('135510191','Nacha Saraun','2','1995-01-13','MI',20),
('135558944','Bayu Mandalika','1','1997-01-15','SI',19),
('158984545','Juan Burnama','1','1993-01-20','SI',24),
('158549583','Candra Sidauruk','1','1994-10-22','TK',23),
('136349343','Kory Ubi','2','1992-10-29','MI',25),
('147343998','Chika Lestari','2','1996-11-12','MI',21);

Konfigurasi Bootstrap

Untuk membuat aplikasi dengan fitur pencarian php, disini saya menggunakan bootstrap untuk tampilannya. Bila kita sudah mendownload bootstrap kita hanya perlu memanggilnya lewat bagian <head>

 <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">

Buat file koneksi.php

Selanjutnya kita buat file dengan nama koneksi.php file ini berfungsi untuk membuat koneksi dari aplikasi ke database.

<?php
$host="localhost";
$user="root";
$password="";
$db="akademik";

$kon = mysqli_connect($host,$user,$password,$db);
if (!$kon){
	  die("Koneksi gagal:".mysqli_connect_error());
}
?>

Baca juga : Cara membuat koneksi database dengan PHP

Setelah semua tahapan diatas kalian telah membuatnya. Selanjutnya kita akan masuk pada poin utama

Membuat fitur pencarian sederhana dengan PHP

Buat sebuah file dengan nama index.php

<!DOCTYPE html>
<html>
<head>
    <!-- Load file CSS Bootstrap offline -->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <br>
    <h4>Menampilkan Data pada Tabel berdasarkan pilihan Combo Box di PHP</h4>

    <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
    <div class="form-group">
        <label for="sel1">Kata Kunci:</label>
        <?php
        $kata_kunci="";
        if (isset($_POST['kata_kunci'])) {
            $kata_kunci=$_POST['kata_kunci'];
        }
        ?>
        <input type="text" name="kata_kunci" value="<?php echo $kata_kunci;?>" class="form-control"  required/>
    </div>
    <div class="form-group">
        <input type="submit" class="btn btn-info" value="Pilih">
    </div>
    </form>

    <table class="table table-bordered table-hover">
        <br>
        <thead>
        <tr>
            <th>No</th>
            <th>NIK</th>
            <th>Nama</th>
            <th>Jenis Kelamin</th>
            <th>Tanggal Lahir</th>
            <th>Jurusan</th>
            <th>Umur</th>

        </tr>
        </thead>
        <?php

        include "koneksi.php";
        if (isset($_POST['kata_kunci'])) {
            $kata_kunci=trim($_POST['kata_kunci']);
            $sql="select * from mahasiswa where nik like '%".$kata_kunci."%' or nama like '%".$kata_kunci."%' or jurusan like '%".$kata_kunci."%' order by nik asc";

        }else {
            $sql="select * from mahasiswa order by nik asc";
        }


        $hasil=mysqli_query($kon,$sql);
        $no=0;
        while ($data = mysqli_fetch_array($hasil)) {
            $no++;

            ?>
            <tbody>
            <tr>
                <td><?php echo $no;?></td>
                <td><?php echo $data["nik"]; ?></td>
                <td><?php echo $data["nama"];   ?></td>
                <td><?php echo $data["jk"];   ?></td>
                <td><?php echo $data["tanggal_lhr"];   ?></td>
                <td><?php echo $data["jurusan"];   ?></td>
                <td><?php echo $data["umur"];   ?></td>
            </tr>
            </tbody>
            <?php
        }
        ?>
    </table>
</div>

</body>
</html>

Saya akan sedikit jelaskan bagian-bagian penting dari program diatas.

 <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
    <div class="form-group">
        <label for="sel1">Kata Kunci:</label>
        <?php
        $kata_kunci="";
        if (isset($_POST['kata_kunci'])) {
            $kata_kunci=$_POST['kata_kunci'];
        }
        ?>
        <input type="text" name="kata_kunci" value="<?php echo $kata_kunci;?>" class="form-control"  required/>
    </div>
    <div class="form-group">
        <input type="submit" class="btn btn-info" value="Cari">
    </div>
    </form>

Yang pertama perhatikan pada bagian sintak ini yang merupakan form dimana terdapat sebuah text field dan button, alur kerjanya adalah ketika pengguna memasukan kata kunci pada text field tersebut lalu menekan tombol “Cari” maka form tersebut akan dikirim melalui variabel global $_SERVER[“PHP_SELF”] variabel ini berfungsi untuk mengirim form pada file itu sendiri tanpa harus berpindah pada halaman lainya. Jadi form akan dikirim dan diproses pada file php itu sendiri. Selanjutnya saya juga menggunakan method POST agar kata kunci yang saya masukan tersembunyi/tidak tampil pada url.

      <?php
        $kata_kunci="";
        if (isset($_POST['kata_kunci'])) {
            $kata_kunci=$_POST['kata_kunci'];
        }
        ?>

Perhatikan sintak diatas kita membuat kondisi untuk mengecek apakah terdapat nilai kiriman form untuk method post dengan nama “kata_kunci” jika iya maka kita definisikan variabel $kata_kunci dengan nilai tersebut.

 <input type="text" name="kata_kunci" value="<?php echo $kata_kunci;?>" class="form-control"  required/>

Kemudian kita tampikan nilai dari variabel $kata_kunci pada atribut value di text field tersebut. Hal ini berfungsi agar kata kunci yang dimasukan oleh pengguna akan tetap tampil pada text field saat form dikirim.

 include "koneksi.php";

Sintak diatas berfungsi untuk menyertakan file koneksi.php yang telah kita buat.

if (isset($_POST['kata_kunci'])) {
    $kata_kunci=trim($_POST['kata_kunci']);
    $sql="select * from mahasiswa where nik like '%".$kata_kunci."%' or nama like '%".$kata_kunci."%' or jurusan like '%".$kata_kunci."%' order by nik asc";
} else {
    $sql="select * from mahasiswa order by nik asc";
   }

Selanjutnya pada bagian sintak diatas berfungsi untuk menampilkan data mahasiswa berdasarkan kata kunci yang dimasukan.

Untuk mencari data pada tabel mahasiswa saya gunakan operator LIKE pada kolom nik, nama dan jurusan. Jadi ketika pengguna memasukan kata kunci maka sistem akan mengecek data pada kolom nik,nama dan jurusan yang mengandung kata kunci tersebut.

Baca : Operator LIKE di MySQL

Uji Coba

Sekarang kita coba jalankan aplikasi pencarian dengan PHP. Tampilan awalnya akan seperti pada gambar berikut

Ketika saya memasukan kata kunci “1355” pada form inputannya lalu menekan tombol cari, maka akan menampilkan data yang mengandung kata kunci tersebut.

pencarian dengan php

Selain pada kolom nik, kita juga bisa mencari data berdasarkan data pada kolom nama dan jurusan. Bila kita ingin menambahkan untuk kolom lainnya kita bisa tambahkan pada bagian query sql nya.

$sql="select * from mahasiswa where nik like '%".$kata_kunci."%' or nama like '%".$kata_kunci."%' or jurusan like '%".$kata_kunci."%' order by nik asc";

Membuat Form Pencarian berdasarkan combo box

Pada contoh yang kedua kita akan sedikit modifikasi program diatas, kita akan menambahkan tag select untuk drop down atau bisa kita sebut sebagai combo box.

Alur kerjanya adalah pengguna akan mencari data dengan sebuah kata kunci yang mengacu pada pilihan combo box nya. Sebagai contoh disini saya hanya membuat 3 pilihan pada combo box tersebut. yang pertama adalah pencarian berdasarkan NIK, yang kedua nama dan terakhir jurusan.

Untuk membuatnya tambahkan sintak berikut pada bagian form

    <div class="form-group">
        <label for="sel1">Pencarian pada kolom:</label>
        <?php
        $nik="";
        $nama="";
        $jurusan="";
        if (isset($_POST['kolom'])) {

            if ($_POST['kolom']=="nik")
            {
                $nik="selected";
            }else if ($_POST['kolom']=="nama"){
                $nama="selected";
            }else {
                $jurusan="selected";
            }
        }
        ?>
            <select class="form-control" name="kolom" required>
                <option value="" >Silahkan pilih kolom dulu</option>
                <option value="nik" <?php echo $nik; ?> >NIK</option>
                <option value="nama" <?php echo $nama; ?> >Nama</option>
                <option value="jurusan" <?php echo $jurusan; ?> >Jurusan</option>
         </select>
     </div>

Kemudian selanjutnya ganti pada bagian querynya

       if (isset($_POST['kata_kunci'])) {
            $kata_kunci=trim($_POST['kata_kunci']);

            $kolom="";
            if ($_POST['kolom']=="nik")
            {
                $kolom="nik";
            }else if ($_POST['kolom']=="nama"){
                $kolom="nama";
            }else {
                $kolom="jurusan";
            }

            $sql="select * from mahasiswa where $kolom like '%".$kata_kunci."%'  order by nik asc";

        }else {
            $sql="select * from mahasiswa order by nik asc";
        }

Modifikasi sintak diatas kita buat kondisi berdasarkan pilihan pada combo box nantinya akan di cek pada tabel mahasiswa berdasarkan kolom yang dipilih melalui combo box.

Uji Coba

Tampilan awal untuk pencarian data dengan combo box sebagai berikut:

Contoh pertama saya mencari data berdasarkan nama dengan kata kunci “wan” ketika dilakukan pencarian maka akan tampil data mahasiswa dengan nama yang mengandung kata “wan“.

hasil pencarian data dengan php dan combo box

Contoh lain

Contoh yang kedua saya mencari data berdasarkan jurusan dengan kata kunci “ti” hasilnya seperti pada gambar berikut: