Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Membuat Pencarian Data Real-time Tanpa Reload dengan PHP dan Ajax/jQuery

Tentu, ini artikelnya:


 

 

Pernahkah Anda menggunakan fitur pencarian di situs web seperti Google, Facebook, atau toko online? Saat Anda mengetikkan sesuatu, hasil pencarian muncul secara instan di bawah kolom input tanpa perlu memuat ulang seluruh halaman. Ini adalah contoh klasik penggunaan Ajax (Asynchronous JavaScript and XML) yang dipadukan dengan server-side scripting seperti PHP.

Artikel ini akan memandu Anda langkah demi langkah dalam membuat sistem pencarian data real-time menggunakan PHP untuk pemrosesan di server dan Ajax/jQuery untuk antarmuka pengguna yang interaktif.


 

Konsep Dasar

 

  1. HTML (Frontend): Kita akan memiliki sebuah kolom input teks tempat pengguna mengetikkan kata kunci pencarian, dan sebuah area kosong untuk menampilkan hasil.
  2. jQuery/Ajax (Frontend Logic): Saat pengguna mengetik, jQuery akan “mendengarkan” perubahan di kolom input. Setiap kali ada perubahan (atau setelah jeda singkat), ia akan mengirimkan permintaan Ajax ke server (PHP) yang berisi kata kunci pencarian.
  3. PHP (Backend Logic): File PHP di server akan menerima kata kunci pencarian, melakukan query ke database (atau sumber data lainnya), dan mengembalikan hasil pencarian dalam format yang mudah diproses (misalnya JSON atau HTML).
  4. jQuery (Frontend Display): Setelah menerima respons dari PHP, jQuery akan mengambil data tersebut dan menyisipkannya ke dalam area hasil pencarian di halaman web tanpa me-reload.

 

Persiapan Awal

 

Sebelum memulai, pastikan Anda memiliki lingkungan pengembangan PHP (misalnya XAMPP atau WAMP) dan sebuah database (misalnya MySQL). Untuk artikel ini, kita akan menggunakan database MySQL.

  1. File koneksi.php: Membuat file koneksi ke database.
    PHP

    <?php
    $host = "localhost"; // Sesuaikan jika berbeda
    $user = "root";      // Username database Anda
    $pass = "";          // Password database Anda
    $db   = "nama_database_anda"; // Nama database Anda
    
    $koneksi = new mysqli($host, $user, $pass, $db);
    
    if ($koneksi->connect_error) {
        die("Koneksi database gagal: " . $koneksi->connect_error);
    }
    ?>
    

    Penting: Ganti nama_database_anda dengan nama database yang sebenarnya.

  2. Struktur Tabel Database (Contoh: produk): Buat tabel di database Anda.
    SQL

    CREATE TABLE produk (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nama_produk VARCHAR(255) NOT NULL,
        deskripsi TEXT,
        harga DECIMAL(10, 2)
    );
    
    INSERT INTO produk (nama_produk, deskripsi, harga) VALUES
    ('Laptop Gaming ROG', 'Laptop canggih untuk gamer berat.', 20000000.00),
    ('Mouse Wireless Logitech', 'Mouse nyaman untuk bekerja dan bermain.', 250000.00),
    ('Keyboard Mekanikal Razer', 'Keyboard RGB dengan switch responsif.', 1200000.00),
    ('Monitor Samsung Curve', 'Layar lengkung 27 inci untuk pengalaman imersif.', 3500000.00),
    ('Webcam Full HD', 'Webcam berkualitas tinggi untuk video conference.', 400000.00);
    
  3. Integrasi jQuery: Pastikan Anda menyertakan jQuery di HTML Anda.
    HTML

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    

 

1. Struktur HTML (index.php)

 

Buat file index.php yang akan menjadi halaman utama Anda.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Pencarian Real-time PHP & Ajax</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        #search-input { width: 300px; padding: 10px; font-size: 16px; }
        #search-results { margin-top: 20px; border: 1px solid #ddd; padding: 10px; min-height: 100px; }
        .result-item { padding: 10px 0; border-bottom: 1px solid #eee; }
        .result-item:last-child { border-bottom: none; }
        .result-item h3 { margin: 0 0 5px 0; color: #337ab7; }
        .result-item p { margin: 0; font-size: 14px; color: #555; }
        .result-item span { font-weight: bold; color: #e44d26; }
    </style>
</head>
<body>

    <h1>Pencarian Produk</h1>
    <input type="text" id="search-input" placeholder="Cari produk...">

    <div id="search-results">
        <p>Mulai ketik untuk mencari produk...</p>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <script>
        // Kode jQuery akan ditambahkan di sini
    </script>

</body>
</html>

 

2. Skrip PHP untuk Pencarian (search.php)

 

Buat file search.php. File ini akan menerima kata kunci dari Ajax, mencari data di database, dan mengembalikan hasilnya.

PHP

<?php
include 'koneksi.php'; // Sertakan file koneksi database

header('Content-Type: application/json'); // Mengirimkan header JSON

$searchTerm = '';
if (isset($_GET['term'])) {
    $searchTerm = $koneksi->real_escape_string($_GET['term']);
}

$results = [];

if (!empty($searchTerm)) {
    // Query SQL untuk mencari produk
    $sql = "SELECT nama_produk, deskripsi, harga FROM produk 
            WHERE nama_produk LIKE '%$searchTerm%' 
            OR deskripsi LIKE '%$searchTerm%'";
    
    $result = $koneksi->query($sql);

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $results[] = $row;
        }
    }
}

echo json_encode($results); // Mengembalikan hasil dalam format JSON

$koneksi->close();
?>

Penjelasan search.php:

  • include 'koneksi.php';: Memanggil file koneksi database.
  • header('Content-Type: application/json');: Memberi tahu browser bahwa respons dari file ini adalah data JSON. Sangat penting!
  • $searchTerm = $koneksi->real_escape_string($_GET['term']);: Mengambil kata kunci pencarian dari parameter GET (term) dan membersihkannya untuk mencegah serangan SQL Injection.
  • SELECT ... WHERE nama_produk LIKE '%$searchTerm%' OR deskripsi LIKE '%$searchTerm%': Query SQL ini akan mencari produk yang nama atau deskripsinya mengandung kata kunci pencarian.
  • $results[] = $row;: Setiap baris hasil dari query ditambahkan ke array $results.
  • echo json_encode($results);: Mengubah array $results menjadi format JSON dan mengirimkannya sebagai respons ke permintaan Ajax.

 

3. Logika Ajax/jQuery (di dalam <script> di index.php)

 

Tambahkan kode jQuery ini ke dalam tag <script> di index.php.

JavaScript

$(document).ready(function() {
    let typingTimer;               // Timer untuk menunda pencarian
    const doneTypingInterval = 500;  // Jeda waktu (milidetik) setelah berhenti mengetik
    const searchInput = $('#search-input');
    const searchResults = $('#search-results');

    // Ketika input pencarian berubah (pengguna mengetik)
    searchInput.on('keyup', function() {
        clearTimeout(typingTimer); // Bersihkan timer sebelumnya
        
        // Atur timer baru
        typingTimer = setTimeout(performSearch, doneTypingInterval);
    });

    // Ketika pengguna menekan tombol pada input
    searchInput.on('keydown', function () {
        clearTimeout(typingTimer); // Reset timer jika pengguna masih mengetik
    });

    function performSearch() {
        const searchTerm = searchInput.val(); // Ambil nilai dari input

        // Jika kolom pencarian kosong, kosongkan hasil dan tampilkan pesan awal
        if (searchTerm.trim() === '') {
            searchResults.html('<p>Mulai ketik untuk mencari produk...</p>');
            return;
        }

        // Tampilkan indikator loading (opsional)
        searchResults.html('<p>Mencari...</p>');

        // Lakukan permintaan Ajax
        $.ajax({
            url: 'search.php', // Target file PHP
            type: 'GET',       // Metode GET
            data: { term: searchTerm }, // Data yang dikirim: { 'term': 'nilai_input' }
            dataType: 'json',  // Harapkan respons dalam format JSON
            success: function(data) {
                let html = '';
                if (data.length > 0) {
                    // Loop melalui setiap hasil yang diterima
                    $.each(data, function(index, item) {
                        html += `
                            <div class="result-item">
                                <h3>${item.nama_produk}</h3>
                                <p>${item.deskripsi}</p>
                                <span>Harga: Rp${parseFloat(item.harga).toLocaleString('id-ID')}</span>
                            </div>
                        `;
                    });
                } else {
                    html = '<p>Tidak ada produk ditemukan.</p>';
                }
                searchResults.html(html); // Tampilkan hasil di div
            },
            error: function(jqXHR,

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_astlj2astlj2astl
Gemini_Generated_Image_esblmjesblmjesbl
Gemini_Generated_Image_jix690jix690jix6
Gemini_Generated_Image_xaeywtxaeywtxaey

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek