โค้ดต่อไปนี้เป็นแนวทางการประยุกต์การใช้งาน jquery ในการดึงข้อมูลมาแสดง บางส่วนในเว็บไซต์
แบบกำหนดให้ดึงข้อมูลมาเป็นส่วนๆ เช่น เรามีข่าว และต้องการ ให้วนลูปแสดงข่าวนั้น ครั้งละ 4-5 หัวข้อ
โดยดึงจากฐานข้อมูล วนไปเรื่อยๆ จนครบ แบบนี้เป็นต้น
ก่อนอื่น ให้กำหนดส่วนของตำแหน่งข้อมูลที่เราต้องการแสดง ด้วย id เช่นตัวอย่่าง
<div id="place-data"> </div>
เรากำหนด div มี id เท่ากับ place-data ส่วนนี้ ก็คือส่วนที่เราจะอ้างอิง และดึงข้อมูลมาแสดง
โค้ดไฟล์ ทดสอบ ajax_autoload.php คำอธิบายแสดงในโค้ด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">-->
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
</head>
<body>
<br><br>
<div style="width:80%;margin:auto;">
<div class="container-fluid">
<div id="place-data">
</div>
</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var per_page=7; // จำนวนรายการที่ต้องการแสดงต่อหน้า
var start_page=0; // ค่าเริ่มต้นของหน้าแรก
var step_page=0; // ค่าสำหรับคำนวนการกำหนดหน้าแรก
var loadData; // กำหนดสำหรับเป็นชื่อตัวแปร ฟังก์ชั่น
var interValID=null; // เก็บค่าการวนทำงานของเวลา
function loadData(){
start_page=parseInt(step_page)*per_page;
step_page++;
$.get("load_data.php",{
per_page:per_page,
start_page:start_page
},function(data){
var numData = $(data).find(".data-return").length; // มีรายการหรือไม่ นับจำนวน
if(numData>0){ // ถ้ามีมากกว่า 0
$("#place-data").html(data); // นำข้อมูลมาแสดงใน div
if(numData<per_page){ // ถ้ารายการที่แสดงถึงหน้าสุดท้าย
// หากต้องการให้วนลูปไปเริ่มต้นนับใหม่ ให้ตั้งค่า step_page=0;
step_page=0; // วนมาเริ่มต้นใหม่ หรือใส่คำสั่งอื่นๆ ตามต้องการ
// หากต้องการหลุดการทำงานเมื่อถึงหน้าสุดท้าย เปิด ใช้งาน คำสั่งด้านล่าง
// clearInterval(interValID);
}
}else{
step_page=0; // วนมาเริ่มต้นใหม่ หรือใส่คำสั่งอื่นๆ ตามต้องการ
clearInterval(interValID);
loadData(); // ทำงานครั้งแรกทันทีอีกครั้ง
interValID = setInterval(loadData,5000); // ทำงานลูปอีกครั้ง และต่อไปทุก 5 วินาที
}
});
};
loadData(); // ทำงานครั้งแรกทันที 1 ครั้ง
interValID = setInterval(loadData,5000); // ทำงานอีกครั้ง และต่อไปทุก 5 วินาที
});
</script>
</body>
</html>
ต่อไป สร้างไฟล์ load_data.php สำหรับดึงข้อมูลจากฐานข้อมูล
ให้จัดรูปแบบโค้ดตามต้องการ
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// เชื่อมต่อกับฐานข้อมูล
$link=mysql_connect("localhost","root","test"); // เชื่อมต่อ Server
mysql_select_db("test"); // ติดต่อฐานข้อมูล
mysql_query("set character set utf8"); // กำหนดค่า character set ที่จะใช้แสดงผล
?>
<table class="table table-striped table-condensed">
<?php
$q="
SELECT * FROM province_th
LIMIT ".$_GET['start_page'].",".$_GET['per_page']."
";
$qr=mysql_query($q);
while($rs=mysql_fetch_assoc($qr)){
?>
<tr class="data-return">
<td><?=$rs['province_name']?></td>
</tr>
<?php } ?>
สังเกตในโค้ต ในลูปการวนแสดงข้อมูล เราต้องใส่ class ให้กับ tr ในที่นี้ใช้ชื่อว่า data-return
หากรูปแบบการแสดงของเราไม่ได้เป็นแบบตาราง เช่น ใช้ div ก็ให้ใส่ class เข้าไปใน div แทน tr
css class นี้เราจะเอาไว้ใช้ในการนับจำนวนข้อมูล เช่น ถ้าถึงหน้าสุดท้าย แสดงว่า
จำนวนก็จะน้อยกว่าหรือเท่ากับ เพื่อเป็นเงื่อนไขในการวนลูป หรือหยุดการทำงาน
จากโค้ดด้านบนของไฟล์ ajax_autoload.php จะเป็นคำสั่งในการทำงานแบบวนลูป
หากต้องการให้หยุดทำงาน เมื่อถึงหน้าสุดท้ายแล้ว สามารถปรับบางส่วนของโค้ดได้ดังนี้
var numData = $(data).find(".data-return").length; // มีรายการหรือไม่ นับจำนวน
if(numData>0){ // ถ้ามีมากกว่า 0
$("#place-data").html(data); // นำข้อมูลมาแสดงใน div
if(numData<per_page){ // ถ้ารายการที่แสดงถึงหน้าสุดท้าย
// หากต้องการให้วนลูปไปเริ่มต้นนับใหม่ ให้ตั้งค่า step_page=0;
// step_page=0; // วนมาเริ่มต้นใหม่ หรือใส่คำสั่งอื่นๆ ตามต้องการ
// หากต้องการหลุดการทำงานเมื่อถึงหน้าสุดท้าย เปิด ใช้งาน คำสั่งด้านล่าง
clearInterval(interValID);
}
}else{
step_page=0; // วนมาเริ่มต้นใหม่ หรือใส่คำสั่งอื่นๆ ตามต้องการ
clearInterval(interValID);
// loadData(); // ทำงานครั้งแรกทันทีอีกครั้ง
// interValID = setInterval(loadData,5000); // ทำงานลูปอีกครั้ง และต่อไปทุก 5 วินาที
}