flexigrid
เป็น jQuery Plugin สำหรับการแสดงเป็นรายการตารางข้อมูล ที่สามารถปรับขนาดของคอลัมน์
ให้สอดคล้องกับข้อมูล รวมทั้งคุณสมบัติในการเชิ่อมต่อกับข้อมูลไฟล์ xml หรือ json โดยใช้ ajax
คุณสมบัติเด่น
---ปรับขนาดของคอลัมน์แสดงหัวข้อรายการเนื้อหาได้
---ปรับขนาดความกว้างและความสูงได้
---สามารถเรียงการแสดงข้อมูลได้โดยการคลิกที่ห้วข้อรายการข้อมูลนั้นๆ
---รูปแบบ theme การแสดงผลที่สวยงาม
---เชื่อมต่อกับข้อมูลทั้ง xml และ json ไฟล์ หรือประยุกต์ข้อมูลจากฐานข้อมูลได้
---กำหนดการแบ่งหน้าข้อมูลตามต้องการได้
---ซ่อน หรือแสดงคอลัมน์ได้
---กำหนดปุ่มควบคุมเพิ่มเติมได้
---กำหนดฟอร์มการค้นหาเพิ่มเติมได้
---และอื่นๆ
สามารถเข้าไปศึกษาการใช้งาน Flexigrid สำหรับ jQuery เพิ่มเติม ได้ด้วยตัวเองที่
http://www.flexigrid.info/
หรือดาวน์โหลดไฟล์พร้อมใช้งานได้ที่
https://www.ninenik.com/download/flexigrid.rar
ดาวน์โหลดไฟล์ แล้วแตกโฟลเดอร์ flexigrid ไว้ใช้งาน
จากนั้นสร้างไฟล์ สำหรับทดสอบ อีก 2 ไฟล์ตามตัวอย่างด้านล่าง
ตัวอย่างโค้ดไฟล์ทดสอบ simple_flexigrid_01.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>simple flexigrid jquery plugin</title>
<link rel="stylesheet" type="text/css" href="flexigrid/css/flexigrid.css" />
</head>
<body>
<table id="myflexigrid" style="display:none"></table>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="flexigrid/flexigrid.pack.js"></script>
<script type="text/javascript">
$(function(){
$("#myflexigrid").flexigrid({ // กำหนดให้สร้าง data grid ให้กับ แท็ก table ที่มี id=myflexigrid
url: 'get_flexigriddata.php', // กำหนด url ของไฟล์ที่จะใช้เชื่อมต่อฐานข้อมูลมาแสดง
dataType: 'json', // กำหนดชนิดของไฟล์ข้อมูลที่ต้องการใช้งานในที่นี้ใช้ json
colModel : [ // กำหนดลักษณะการแสดงของคอลัมน์ในตาราง อ่านคำอธิบายด้านล่าง
{display: 'ลำดับ', name : 'arti_id', width : 40, sortable : true, align: 'center'},
{display: 'หัวข้อบทความ', name : 'arti_topic', width : 500, sortable : true, align: 'left'},
{display: 'คนอ่าน', name : 'hit', width : 40, sortable : true, align: 'center'},
{display: 'วันที่', name : 'adddate', width : 100, sortable : true, align: 'center'}
],
sortname: "arti_id", // กำหนดการจัดเรียงเริ่มต้น เรียงจาก field ใดในฐานข้อมูล
sortorder: "desc", // กำหนดเรียกจากมากไปน้อย หรือน้ยอไปมาก desc / asc
usepager: true, // กำหนดให้แสดงส่วนการแบ่งหน้าหรือไม่ true / false
title: 'รายการบทความใน www.ninenik.com', // หัวข้อตาราง
useRp: false, // กำหนดให้แสดงการ กำหนดจำนวนรายการแสดงต่อหน้า หรือไม่ true / false
rp: 10, // กำหนดจำนวนรายการที่จะแสดงในแต่ละหน้า
showTableToggleBtn: false, // กำหนดให้แสดงปุ่ม ซ่อน / แสดงตารางหรือไม่ true / false
width: 750, // กำหนดความกว้าง
height: 255 // กำหนดความสูง
});
// กำหนดลักษณะการแสดงของคอลัมน์ในตาราง
// display คือ กำหนด ชื่อข้อความที่ต้องการแสดงหัวข้อคอลัมน์
// name คือ ชื่อ field ของตารางในฐานข้อมูลที่สอดคล้องกัน
// widh คือ ความกว้างของคอลัมน์ที่ต้องการแสดง หน่วยเป็น pixel (กำหนดแต่ตัวเลข)
// sortable คือ กำหนดว่าคอลัมน์สามารถทำการเรียงข้อมูลได้หรือไม่ ค่า true / false
// align คือ กำหนดการจัดตำแหน่่งการแสดงข้อมูล ค่า left / center / right
// hide คือ กำหนดให้แสดงหรือไม่แสดงคอลัมน์นั้น ค่า true / false (ส่วนเพิ่มเติม กำหนดหรือไม่ก็ได้)
});
</script>
</body>
</html>
ตัวอย่างโค้ดไฟล์ติดต่อกับฐานข้อมูล
<?php
header("Content-type:text/x-json; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// ส่วนการเชื่อมต่อกับฐานข้อมูลอย่างง่าย
mysql_connect("localhost","root","test") or die("Cannot connect the Server");
mysql_select_db("db_test") or die("Cannot select database");
mysql_query("set character set utf8");
// ส่วนของการกำหนดการรับค่ามากำหนดเงือนไข
$page = $_POST['page']; // รับค่าหน้าที่ต้องการนำมาแสดง
$rp = $_POST['rp']; // รับค่าจำนวนแสดงต่อ 1 หน้า
$sortname = $_POST['sortname']; // รับค่าเงื่อนไข field ที่ต้องการจัดเรียง
$sortorder = $_POST['sortorder']; // รับค่ารูปแบบการจัดเรียงข้อมูล
// ส่วนการกำหนดค่า กรณีไม่ได้ส่งค่ามา
if (!$sortname) $sortname = 'arti_id'; // ถ้าไม่ส่งค่ามา กำหนดเป็น field ชื่อ arti_id (ขึ้นกับข้อมูลแต่ละคน)
if (!$sortorder) $sortorder = 'desc'; // ถ้าไม่ส่งรูปแบบการจัดเรียงข้อมูลมา ให้กำหนดเป็น จากมากไปหาน้อย desc
if (!$page) $page = 1; // ถ้าไม่ได้ส่งหน้าที่ต้องการแสดงมา ให้แสดงหน้าแรก เป็น 1
if (!$rp) $rp = 10; // หากไม่กำหนดรายการที่จะแสดงต่อ 1 หน้ามา ให้กำหนดเป็น 10
// ส่วนสำหรับจัดรูปแบบขอบเขตและเงื่อนไขข้อมูลที่ต้องการแสดง
$start = (($page-1) * $rp);
$limit = "LIMIT $start, $rp";
$sort = "ORDER BY $sortname $sortorder";
// ส่วนหรับหาว่ามีข้อมูลทั้งหมดเท่าไหร่ เก็บในตัวแปร $total
$q = "SELECT * FROM article WHERE 1 ";
$qr = mysql_query($q);
$total = mysql_num_rows($qr);
// ส่วนสำหรับดึงข้อมูลมาสร้าง json ไฟล์ สำหรับแสดง
$q = "SELECT * FROM article WHERE 1 $sort $limit";
$qr = mysql_query($q);
$data['page'] = intval($page); //
$data['total'] = intval($total); //
while ($row = mysql_fetch_array($qr)) {
$rows[] = array(
"id" => $row['arti_id'],
"cell" => array(
$row['arti_id']
,$row['arti_topic']
,$row['hit']
,date("Y-m-d",$row['adddate'])
)
);
}
$data['rows'] = $rows;
echo json_encode($data);
exit;
//บรรทัดที่ 40 arti_id
// บรรทัดที่ 42 arti_id
// บรรทัดที่ 43 arti_topic
// บรรทัดที่ 44 hit
// บรรทัดที่ 45 date("Y-m-d",$row['adddate'])
// ให้เปลี่ยนไปตามชื่อฟิลด์ของข้อมูลที่ต้องการแสดงของแต่ละคน
// หากมีมากกว่าตัวอย่าง ให้เพิ่มเข้าไปตามต้องการ
// (ในตัวอย่างมีแค่ 4 คอลัมน์ หากมีมากกว่านี้ ให้เพิ่มตามต้องการ
// เช่น เพิ่มเป็น
// ,$row['reply'] ในบรรทัดต่อมา เป็นต้น)
?>
ตัวอย่าง
ข้างต้นเป็นเพียงการนำมาใช้ในบางส่วน เนื้อหา หรือรายละเอียดในส่วนอื่นๆ เพิ่มเติม
จะได้นำมาแนะนำต่อๆ ไป