เขียน PHP ด้วยการค้นหาข้อมูล MySQL โดยใช้เทคนิค Ajax
Ajax
บทความนี้แนะนำเกี่ยวกับการค้นหาข้อมูล MySQL แล้วดึงข้อมูลออกมาโชว์ไม่ต้อง Refresh โดยใช้เทคนิค AJAX ในการทำงาน โดยตัวอย่าง source code เป็นตัวอย่างแบบง่ายๆ สามารถเข้าใจได้ไม่ยาก และนำไปประยุกต์ใช้ได้ทันที
1. สร้างตารางและ import ข้อมูล
CREATE TABLE IF NOT EXISTS `items` (
`id` int(11) NOT NULL,
`codename` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`itemname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`detail` text COLLATE utf8_unicode_ci NOT NULL,
`unit` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`price` decimal(10,2) NOT NULL,
`img` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'noimage.jpg',
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` int(11) NOT NULL,
`modified_by` int(11) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`item_type_id` int(11) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `items` (`id`, `codename`, `itemname`, `detail`, `unit`, `price`, `img`, `created`, `modified`, `created_by`, `modified_by`, `status`, `item_type_id`) VALUES
(2, 'CM00002', 'iPhone 6 Plus', '', 'เครื่อง', '25000.00', 'ecimage.jpg', '2015-03-30 18:38:43', '2015-03-30 18:38:43', 1, 1, 1, 6),
(3, 'CM00003', 'Macbook Pro mini', '', 'เครื่อง', '45000.00', 'ecimage.jpg', '2015-03-30 18:39:53', '2015-03-30 18:39:53', 1, 1, 1, 1),
(4, 'CM00004', 'Macbook Pro 4', '', 'เครื่อง', '60400.00', 'ecimage.jpg', '2015-03-30 18:40:33', '2015-03-30 18:40:33', 1, 1, 1, 1),
(5, 'CM00005', 'กระดาษ A4', '', 'รีม', '120.00', 'ecimage.jpg', '2015-03-30 18:41:14', '2015-03-30 18:41:14', 1, 1, 1, 2),
(6, 'CM00006', 'ปากกา', '', 'แท่ง', '5.00', 'ecimage.jpg', '2015-03-30 18:41:47', '2015-03-30 18:41:47', 1, 1, 1, 2),
(7, 'CM00007', 'ดินสอ', '', 'แท่ง', '1.00', 'ecimage.jpg', '2015-03-30 18:42:28', '2015-03-30 18:42:28', 1, 1, 1, 2),
(8, 'CM00008', 'ยางลบ', '', 'ก้อน', '2.00', 'ecimage.jpg', '2015-03-30 18:43:04', '2015-03-30 18:43:04', 1, 1, 1, 2),
(9, 'CM00009', 'Epson T320 Printer Laser', '', 'เครื่อง', '2300.00', 'ecimage.jpg', '2015-03-30 18:45:48', '2015-03-30 18:45:48', 1, 1, 1, 1),
(10, 'CM00001', 'Lenovo ThinkPad E203', '', 'เครื่อง', '21000.00', 'ecimage.jpg', '2015-03-30 18:47:38', '2015-03-30 18:47:38', 1, 1, 1, 1),
(11, 'CM00010', 'Microsoft Lumia 1043', '', 'เครื่อง', '23000.00', 'ecimage.jpg', '2015-03-30 18:49:22', '2015-03-30 18:49:22', 1, 1, 1, 6);
ALTER TABLE `items`
ADD PRIMARY KEY (`id`);
ALTER TABLE `items`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=12;
2. สร้างไฟล์ connect.php แล้วนำ code ด้านล่างนี้ใส่ลงไป
<?php
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'equipment';
mysql_connect($host, $user, $password);
mysql_select_db($database);
mysql_query("SET NAMES UTF8");
3. สร้างไฟล์ index.php แล้วนำ code? ด้านล่างใส่
<!DOCTYPE html>
<?php
include 'connect.php';
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ค้นหาข้อมูล : itoffside.com</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-theme.min.css" rel="stylesheet">
<style>
body{
margin-top: 20px;
}
.loading{
background-image: url("ajax-loader.gif");
background-repeat: no-repeat;
display: none;
height: 100px;
width: 100px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<form class="form-inline" name="searchform" id="searchform">
<div class="form-group">
<label for="textsearch" >ชื่อสินค้า</label>
<input type="text" name="itemname" id="itemname" class="form-control" placeholder="ข้อความ คำค้นหา!" autocomplete="off">
</div>
<button type="button" class="btn btn-primary" id="btnSearch">
<span class="glyphicon glyphicon-search"></span>
ค้นหา
</button>
</form>
</div>
</div>
<div class="loading"></div>
<div class="row" id="list-data" style="margin-top: 10px;">
</div>
</div>
<script type="text/javascript" src="jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnSearch").click(function () {
$.ajax({
url: "search.php",
type: "post",
data: {itemname: $("#itemname").val()},
beforeSend: function () {
$(".loading").show();
},
complete: function () {
$(".loading").hide();
},
success: function (data) {
$("#list-data").html(data);
}
});
});
$("#searchform").on("keyup keypress",function(e){
var code = e.keycode || e.which;
if(code==13){
$("#btnSearch").click();
return false;
}
});
});
</script>
</body>
</html>
การทำงานของไฟล์ index.php คือแสดงหน้าจอการกรอกคำค้นหา เมื่อมีการใส่ข้อมูลค้นหา ระบบจะดึกข้อมูลจาก serach.php มาแสดงโดยใช้เทคนิคของ AJAX นั้นเอง ซึ่งเมื่อมีการคลิกปุ่มค้นหา javascript ทำงานโดยเรียกไฟล์ search.php ซึ่งไฟล์ search.php เป็นไฟล์ที่ดึงข้อมูลจากฐานข้อมูล เมื่อไฟล์ search.php ดึงข้อมูลมาเรียบร้อยแล้วจะส่งค่าข้อมูลกลับไปให้กับไฟล์ index.php โดยใช้ $.ajax
4. สร้างไฟล์ search.php
<?php
include 'connect.php';
$sql = "select * from items where itemname like '%{$_POST['itemname']}%'";
$query = mysql_query($sql);
?>
<div class="col-md-12">
<table class="table table-bordered">
<thead>
<tr>
<th>ลำดับ</th>
<th>รหัสสินค้า</th>
<th>ชื่อสินค้า</th>
<th>ราคาสินค้า</th>
<th>หน่วยนับ</th>
</tr>
</thead>
<tbody>
<?php $i=1; while ($result = mysql_fetch_assoc($query)) { ?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo $result['codename'];?></td>
<td><?php echo $result['itemname'];?></td>
<td><?php echo number_format($result['price']);?></td>
<td><?php echo $result['unit'];?></td>
</tr>
<?php $i++; } ?>
</tbody>
</table>
</div>
จบแล้วสำหรับบทความนี้หากผู้อ่านมีคำถามสามารถเขียนคำถามไว้ใต้ Comment เลยครับ
แชร์บทความนี้
โปรแกรมเมอร์
itOffside

ความเห็น (32)