Tải bản đầy đủ (.pdf) (9 trang)

Bài giảng Lập trình web nâng cao: Chương 11 - Trường ĐH Văn Hiến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.26 MB, 9 trang )

24/05/2021

Lập trình web nâng cao

1


01
02
Chương

11 – Phân Trang Dữ Liệu

03
04
05
24/05/2021

Lập trình web nâng cao

2


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

01

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



02

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 :

04

$start : vị trí record bắt đầu của trang hiện tại
$prev : vị trí bắt đầu cho trang liền trước trang hiện tại (link PREV)
$next : vị trí bắt đầu cho trang liền sau trang hiện tại (link NEXT)

05

24/05/2021

Lập trình web nâng cao

3


Phân Trang Dữ Liệu (tt)
Trong ứng dụng này, ta có 4 module:

01

 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()

02

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

04

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.

05

24/05/2021

Lập trình web nâng cao

4


Phân Trang Dữ Liệu (tt)
Tệp Connect.inc
01
$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_
$con=mysql_connect ("$svn","$dbu","$dbp");
if(!$con){die(“Không thể kết nối đến MySQL Server");}
mysql_select_db("$dbn",$con) or die (“Không thể mở CSDL, lý do: ".mysql_error());
}
?>
24/05/2021
Lập trình web nâng cao

02

04
05

5


Phân Trang Dữ Liệu (tt)

01
02

Tệp Init.inc

$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;

04
05
24/05/2021

$query="select * from Student";
$result=mysql_query($query);

$totalRecords=mysql_num_rows($result); // Total records of recordset
echo "Total records $totalRecords
";
?>
Lập trình web nâng cao

6


Phân Trang Dữ Liệu (tt)

01
02

04

05
24/05/2021

Tệp Test.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)){
echo $i."  ".$row[1]."
"; $i++;
}
include("link.inc");
mysql_close($link);
?>
Lập trình web nâng cao

7


Phân Trang
Dữ
Liệu
(tt)
Tệp Link.inc

01
02


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;
}

04
05
24/05/2021

if($next < $totalRecords)
{echo "<a href='test.php?start=$next'>Next</a>";}
}

Lập trình web nâng cao

8


Hỏi Đáp ?

Trân trọng cảm ơn!


24/05/2021

Lập trình web nâng cao

9



×