Bài giảng Lập trình web nâng cao: Chương 11 Phân trang dữ liệu, cung cấp cho người học những kiến thức như: Kỹ thuật cơ bản dựa trên câu lệnh Select; phương pháp xây dựng các link để điều khiển trang. Mời các bạn cùng tham khảo!
Trang 202
03
04
05
03 03
Trang 302
Phân Trang Dữ Liệu
Kỹ thuật cơ bản dựa trên câu lệnh Select … limit start, total
Mỗi trang sẽ hiển thị total records, bắt đầu từ reocord thứ start
Record đầu tiên có thứ tự là 0
Có nhiều phương pháp xây dựng các link để điều khiển trang
Pre 1 2 3 4 5 Next
Giả sử test.php là trang PHP có chức năng hiển thị trang thứ $I với số record là $PageSize, tùy theo $i mà xác định
$start để xây dựng câu
lệnh Select cho từng lựa chọn
Phương pháp ưa thích được lựa chọn là sử dụng :
Trang 401 02 04
Phân Trang Dữ Liệu (tt)
05
Trong ứng dụng này, ta có 4 module:
Connect.inc có chức năng kết nối đến CSDL, sử dụng các hàm:
mysql_connect() và msql_select_db()
Trong lập trình CSDL, module này cần thiết kế tốt và lưu dưới một file inc riêng, trang nào cần thì include vào
Init.inc có chức năng khởi tạo các biến chung để điều khiển link
Test.php là trang chính, có chức năng hiển thị nội dung trang với các record bắt đầu từ $start đến ($start+$pagesize-1), bao gồm Connect.inc, Init.inc và Link.inc
Link.inc có chức năng tạo ra các liên kết dạng Prev 1 2 3 4 Next
Trong nhiều chương trình, LTV xây dựng hẵn một Class để truy cập CSDL Sinh viên xem trong phần Bài đọc thêm PHP trên website của giảng viên về nội dung này
Trang 502
Phân Trang Dữ Liệu (tt)
Tệp Connect.inc
<?php
$servername='localhost'; // Server Name hay địa chỉ IP dều được
$dbusername='root'; // Login user name
$dbpassword='root'; // User’s password
$dbname='paging'; // Tên CSDL MySQL cần thiết
connecttodb($servername,$dbname,$dbusername,$dbpassword);
function connectdb($svn,$dbn,$dbu,$db){
global $con; //$con sẽ dùng trong một số câu lệnh msql_
Trang 602
04
Phân Trang Dữ Liệu (tt)
05
Tệp Init.inc
<?php
$pagesize=15; // Mỗi trang hiển thị 15 record, trừ trang cuối có thế ít hơn
$start=$_GET['start'];
$start=($start-0); // chuyển $start thành số tự nhiên //Ban dau khong GET nen $start="" =>($start-0)=0;
$back = $start - $pagesize;
$next = $start + $pagesize;
$query="select * from Student";
$result=mysql_query($query);
$totalRecords=mysql_num_rows($result); // Total records of recordset
Trang 702
Phân Trang Dữ Liệu (tt)
Tệp Test.php
<?php
include("config.php");
include("init.inc");
mysql_query("SET NAMES 'utf8'");
$query="select * from Student limit $start,$pagesize";
$result=mysql_query($query);
$i=1;
while($row = mysql_fetch_array($result)){
Trang 802
04
Phân Trang Dữ Liệu (tt)
05
Tệp Link.inc
<?php echo "<hr>";
if($totalRecords > $pagesize ){
if($back >=0) {echo "<a href='test.php?start=$back'>Prev</a>"; }
$i=0; // theo dõi số thứ tự các record
$j=1; // theo số thứ tự của trang để tạo liên kết
for($i=0;$i < $totalRecords;$i+=$pagesize){
if($i <> $start){echo " <a href='test.php?start=$i'>$j</a> ";
} else { echo $j;}
$j=$j+1; }
if($next < $totalRecords) {echo "<a href='test.php?start=$next'>Next</a>";}
Trang 9Trân trọng cảm ơn!
Hỏi Đáp ?