Cách phân trang trong PHP và MySQL

0
123
thuật toán phân trang trong php mysql pagination

Thuật toán phân trang thực chất nó cũng giống như việc bạn chia kẹo ở lớp một vậy, giả sử tôi có 100 cái kẹo, bây giờ tôi muốn mỗi bạn nhận 5 cái kẹo, hỏi có bao nhiêu bạn sẽ nhận được? Đơn giản phải không nào, ta lấy 100/5 = 20 bạn.

1) Tính toán chia trang theo số tự nhiên

Ví dụ: CSDL của bạn có 100 sản phẩm, đánh dấu từ 1 – 100 mỗi trang chứa 10 sản phẩm. Bạn thử tìm xem trang thứ 5 sẽ bắt đầu từ sản phấm số mấy và kết thúc ở sản phẩm số mấy?
– Trang 1: từ 1 – 10
– Trang 2: từ 11 – 20
– Trang 3: từ 21 – 30
– Trang 4: từ 31 – 40
– Trang 5: từ 41 – 50
– Trang 6: từ 51 – 60
– Trang 7: từ 61 – 70
– Trang 8: từ 71 – 80
– Trang 9: từ 81 – 90
– Trang 10: từ 91 – 100
Cách tìm trang thứ 5 bắt đầu từ đâu với thuật toán như sau:

product_start = ((trang_hien_tai – 1) * so_san_phan_tren_mot_trang) + 1
Kiểm tra: ((5 – 1) * 10) +1 = 41 // đến đây các bạn đã tìm ra giá trị $start

2) Truy vấn phân trang trong MySQL:

$SQL = “SELECT * FROM SAN_PHAM LIMIT $START, $LIMIT”;

Do MySQL bắt đầu từ 0 nên chúng ta sẽ áp dụng cách tính như bên dưới:
Đi tìm giá trị start và limit trong MySQL

Ví dụ: Trang 1 http://domain.com/sanpham.php?page=1
$start = (1 – 1) * 10 // $start 0

$SQL = “SELECT * FROM SAN_PHAM LIMIT 0,10”;

Ví dụ: Trang 2 http://domain.com/sanpham.php?page=2
$start = (2 – 1) * 10 // $start 10

$SQL = “SELECT * FROM SAN_PHAM LIMIT 10,10”;

3) Xây dựng lớp hiển thị trang trong PHP

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

72 − = 70