เขียน PHP ด้วยการค้นหาข้อมูล MySQL โดยใช้เทคนิค Ajax

บทความนี้แนะนำเกี่ยวกับการค้นหาข้อมูล MySQL แล้วดึงข้อมูลออกมาโชว์ไม่ต้อง Refresh โดยใช้เทคนิค AJAX ในการทำงาน โดยตัวอย่าง source code เป็นตัวอย่างแบบง่ายๆ สามารถเข้าใจได้ไม่ยาก และนำไปประยุกต์ใช้ได้ทันที

demo ทดสอบคลิกที่นี้

ดาวน์โหลดไฟล์ทั้งหมด ที่นี้

1. สร้างตารางและ import ข้อมูล

2. สร้างไฟล์ connect.php แล้วนำ code ด้านล่างนี้ใส่ลงไป

3. สร้างไฟล์ index.php แล้วนำ code? ด้านล่างใส่

การทำงานของไฟล์ index.php คือแสดงหน้าจอการกรอกคำค้นหา เมื่อมีการใส่ข้อมูลค้นหา ระบบจะดึกข้อมูลจาก serach.php มาแสดงโดยใช้เทคนิคของ AJAX นั้นเอง ซึ่งเมื่อมีการคลิกปุ่มค้นหา javascript ทำงานโดยเรียกไฟล์ search.php ซึ่งไฟล์ search.php เป็นไฟล์ที่ดึงข้อมูลจากฐานข้อมูล เมื่อไฟล์ search.php ดึงข้อมูลมาเรียบร้อยแล้วจะส่งค่าข้อมูลกลับไปให้กับไฟล์ index.php โดยใช้ $.ajax

4. สร้างไฟล์ search.php

5. ผลลัพธ์
ajax-php

จบแล้วสำหรับบทความนี้หากผู้อ่านมีคำถามสามารถเขียนคำถามไว้ใต้ Comment เลยครับ

You May Also Like

About the Author: Onmobile

โปรแกรมเมอร์
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

32 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
manee
manee
9 years ago

ถ้าอยาก search แบบ dropdown list + คำค้นด้วย ต้องแก้ไขอย่างไรค่ะ

artzja
artzja
9 years ago

ถ้าอยาก search แบบ radio button check + คำค้นด้วย ต้องแก้ไขเพิ่มเติม code อย่างไรบ้างครับ มีตัวอย่างมั้ยครับ

Mint
Mint
8 years ago

ทำแล้วแต่ไม่แสดงผลน่ะค่ะ มันทำในฟังก์ชัน sucess แต่ไม่ยอมโชว์ข้อมูลจากไฟล์ search.php

M_Project
8 years ago

ถ้าผมอยาก ให้ ค้นหาได้หลาย ฟิลด์ ต้องทำยังไง ครับ ??

ฺBHC
ฺBHC
Reply to  M_Project
8 years ago

select * from items where itemname1 like ‘%{$_POST[‘itemname’]}%’ or itemname2 like ‘%{$_POST[‘itemname’]}%’

wichai
7 years ago

select * from items where itemname1 like ‘%{$_POST[‘itemname’]}%’ or itemname2 like ‘%{$_POST[‘itemname’]}%’

ลองแล้วไม่ได้คับ กรณีต้องการค้นหาหลายๆ ฟิวส์คับ

deeg
deeg
7 years ago

ถ้าจะแบ่งหน้าต่อทำยังไงครับ

Jump
Jump
7 years ago

รบกวนหน่อยครับ ถ้าจะคนหาหลายฟิลดิ์อ่ะครับ ต้องเขียนประมาณไหนอ่ะครับ
SELECT tbl_stud.stud_name, tbl_stud.stud_nickname, tbl_timestud.time_wrktime, tbl_timestud.time_outtime, tbl_stud.stud_id FROM tbl_stud, tbl_timestud WHERE tbl_timestud.stud_id=tbl_stud.stud_id and tbl_stud.stud_nickname or tbl_stud.stud_name like ‘%{$_POST[‘itemname’]}%’;
อันนี้ คือที่ผมเขียนไว้อ่ะครับ แต่มันแสดงข้อมูลซ้อนกันไปมา จาก 10 เพิ่มเป็น 30

Jump
Jump
Reply to  Jump
7 years ago

เป็น ดาต้าเบส ของผมเองนะครับ

Jump
Jump
Reply to  Onmobile
7 years ago

รบกวนอีกนิดนึงนะครับ ถ้าจะให้มันแสดงตารางข้อมูลไว้ก่อนกดค้นหาได้มั้ยครับ เพราะปกติ จะไม่มีตารางแสดงอยู่ก่อน ผมอยากให้ตารางมันแสดงอยู่ก่อนด้วยอ่ะครับ

Jump
Jump
Reply to  Onmobile
7 years ago

รบกวนอีกนิดนึงนะครับ พอดีผมอยากจะให้แสดงตารางก่อนกดค้นกาด้วย ต้องทำยังไงอ่ะครับ

AOD
AOD
7 years ago

text ตรวจสอบค่าว่างไม่ได้ครับ ไม่กรอกคำค้นหา กด submit มันแสดงข้อมูลทั้งหมดเลย แก้ยังไงให้ครับให้ text ไม่รับค่าว่าง

หนึ่ง
หนึ่ง
6 years ago

ถ้า search หลาย input ต้องทำยังไงอ่ะครับ ? ขอความกรุณาด้วยครับ!

king
king
6 years ago

Fatal error: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\databind\search.php:4 Stack trace: #0 {main} thrown in C:\xampp\htdocs\databind\search.php on line 4
แก้ยังไง

Somsak
Somsak
6 years ago

แสดงรายการมาแล้ว กดเลือกอย่างไรครับ

kru
kru
6 years ago

สามารถแสดงผลตาม “คำ” ที่ต้องการค้นหาได้แล้วครับ แต่หลังจากที่ผมค้นหาได้แล้ว ผมต้องการให้สามารถคลิกที่ข้อความชื่อของคำที่ค้นหาไปหาตามลิ้งที่เราต้องการได้ไหมอ่ะครับ ขอบคุณครับ

ธีระชัย ใจใส
5 years ago

ขอบคุณครับ ราบรื่น ^^

Jeng
Jeng
5 years ago

search ตอนนี้ เปลี่ยนเป็น mysqli รันแล้ว error ครับ

่jeng
่jeng
Reply to  Onmobile
5 years ago

รบกวนท่านชี้แนะเพิ่มเติม ครับ ลองทำแล้วครับ มือใหม่สด ๆ

jeng
jeng
Reply to  Onmobile
5 years ago

รบกวนชี้แนะเพิ่มเติมครับ

jeng
jeng
Reply to  jeng
5 years ago

รบกวนชีแนะ search.php แบบ Mysqli ทีครับ ขอบคุณครับ

aon
aon
5 years ago

ผมติดตรง connect.php บรรทัดที่ 7 อ่าครับ
ตรงหน้า
<?php
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'equipment';

mysql_connect($host, $user, $password);
mysql_select_db($database);
mysql_query("SET NAMES UTF8");