Basic Live search : PHP+AJAX+MySQL

ออกตัวก่อนเลยว่าต้องขอโทษด้วยครับ พอดีขี้เกียจนิดหน่อยเลยไม่ได้เขียนบทความเป็นภาษาอังกฤษ วันนี้ก็ลองนั่งเล่น นั่งทำไปเรื่อยก็เลยมาบันทึกเป็นบทความกันลืมซะหน่อย

ซึ่งจะเป็นการทำการ search แบบง่ายๆ จาก MySQL โดยใช้ AJAX มาช่วยในการแสดงผลครับ วิธีการก็ไม่ค่อยมีอะไรมาก ผมจะเริ่มจากการสร้าง Database เลยก็แล้วกันครับ

1. สร้าง Database ขึ้นมาชื่อว่า directory และสร้าง table จาก script ข้างล่างนี้ครับ

CREATE TABLE `Directory`.`member` (
`id` TINYINT( 2 ) NOT NULL AUTO_INCREMENT ,
`prefix` VARCHAR( 50 ) NOT NULL ,
`firstname` VARCHAR( 50 ) NOT NULL ,
`lastname` VARCHAR( 50 ) NOT NULL ,
`nickname` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`mobile` VARCHAR( 20 ) NOT NULL ,
`address` TEXT NOT NULL ,
PRIMARY KEY ( `email` ) ,
INDEX ( `id` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

เมื่อได้ Database แล้ว มาใส่ข้อมูลเล็กๆ น้อยๆ ลง Database กันครับ

INSERT INTO `member` (`prefix`, `firstname`, `lastname`, `nickname`, `email`, `mobile`, `address`) VALUES
('Mr.', 'John', 'Doe', 'John', 'john@email.com', '111-111111', 'on the road'),
('Miss', 'Jane', 'Doe', 'Jane', 'jane@email.com', '222-22222', 'same with John'),
('Mr', 'David', 'Beckham', 'David', 'david@email.com', '333-333', 'LA');

จากนั้นจะสร้างหน้าที่ไว้ใช้สำหรับค้นหาข้อมูล ซึ่งจะใช้ไฟล์ HTML ง่ายๆ ครับ ตาม code ข้างล่างนี้ ชื่อไฟล์คือ livesearch.html

<html>
    <head>
    <script src="livesearch.js"></script>
    <title>Search</title>
    <meta http-equiv=Content-Type content="text/html; charset=tis-620">
    </head>
    <body>
	<form>
	    Search: <input type="text" name="search" id="search" onkeyup="searchUser(this.value)">
	</form>
	<div id="searchresult" name="searchresult"> Search results ...</div>
    </body>
</html>

เมื่อมีการกดคีย์ใดๆ ก็ตามในช่อง input ค่าจะถูกส่งไปยังไฟล์ livesearch.js ที่ไว้ใช้เก็บ Javascript ครับ ซึ่งในไฟล์นี้ก็จะส่ง url และ string ข้อความ ไปยังไฟล์ PHP เพื่อใช้ในการค้นหาแบบง่าย ชื่อไฟล์นี้คือ livesearch.js

<?php
$q=$_GET["q"];
error_reporting(E_ALL);
function openDB ($host, $user, $pass){
    try {
        if ($db = mysql_connect ($host, $user, $pass)){
        return $db;
    } else {
        throw new exception ("Sorry, could not connect to mysql");
        }
    } catch (exception $e) {
        echo $e->getmessage();
    }
}
function selectDB ($whichdb, $db){
    try {
        if (!mysql_select_db($whichdb,$db)){
            throw new exception ("Sorry, could not be opened");
        }
    } catch (excetion $e){
            echo $e->getmessage();
    }	
}
function closeDB ($db){
    mysql_close($db);
}
$db = openDB("localhost","root","password");
selectDB("Directory", $db);
if ($query = mysql_query("SELECT * FROM member WHERE firstname LIKE '%$q%' OR lastname LIKE '%$q%' OR nickname LIKE '%$q%'")){
    while ($data = mysql_fetch_array($query)){
        echo "Firstname: " . $data['firstname'] . "<br />";
        echo "Lastname: " . $data['lastname'] . "<br />";
        echo "Nickname: " . $data['nickname'] . "<br />";			
        echo "E-mail: " . $data['email'] . "<br />";
        echo "Mobile: " . $data['mobile'] . "<br />";
        echo "Address: " . $data['address'] . "<br />";
        echo "---------------------------------<br />";
    }
} else {
    echo mysql_error();
}
closeDB($db);
?>

การใช้งานทำได้โดยเปิดไฟล์ livesearch.html แล้วทดลองพิมพ์ข้อความใดๆ เข้าไป ก็จะเห็นผลลัพท์ที่เกิดขึ้นครับ

ball Written by:

Teerapat Khunpech Live, Tech, Beers, Bike, Cafe Racer, Docker, Devops, Eco-System