Kỹ thuật phân trang với PHP và Mysql

Áp dụng kỹ thuật phân trang là một phần quan trọng với bất kỳ ngôn ngữ lập trình web nào. Phân trang với PHP và Mysql có nhiều cách làm. Thế nhưng, với các bạn mới tiếp xúc thì chắc chắn đôi lúc gặp khó khăn về cách xử lý. Trong bài này mình sẽ hướng dẫn các bạn một cách đơn giản nhất của kỹ thuật phân trang trong php kết hợp với mysql.

Phân trang giúp giảm thời gian tải cho website, nâng cao hiệu suất. Từ đó, giúp website đạt thứ hạng cao hơn về tính thân thiện người dùng.

Trong bài này, mình sẽ thao tác với table `students` có 40 dòng dữ liệu. Mỗi trang ta sẽ lấy ra và hiển thị 10 dòng dữ liệu.

Để thực hiện phân trang trong PHP chúng ta cần xác định 2 giá trị quan trọng sau:

– Số lượng bản ghi bạn mong muốn hiển thị trên 1 trang là bao nhiêu ($limit). Bài này, mình sử dụng `$limit = 10`
– Chúng ta đang có tổng cộng bao nhiêu bản ghi trong bảng dữ liệu. Từ đó ta có thể tính toán xem bao nhiêu trang sẽ hiển thị.

Câu lệnh SQL để lấy ra tổng số bản ghi trong bảng như sau:

SELECT count(*) FROM `students`

Ta sẽ lấy ra được 40 dòng.

Tính số trang sẽ hiểu thị:

$total = 40;
$limit = 10;

$pages = ceil($total / $limit);

Ỏ đây, mình dùng hàm `ceil` để làm tròn lên. Vì có những trường hợp `40 < $total < 50` thì ta hiển thị là 5 page. Đúng không nào?

Tiếp tục với câu SQL Query phân trang

SELECT * FROM `students` LIMIT $limit OFFSET $offset

Ở đây, ta thấy có 2 biến cần được truyền vào.

1. Biến $limit : đây là giới hạn số bản ghi sẽ lấy ra trong câu lệnh sql. Nó đồng nghĩa với số lượng bản ghi mà ta muốn hiển thị trên 1 trang.

2. Biến $offset : xác định vị trí lấy bản ghi bắt đầu từ vị trí nào trong bảng dữ liệu.

Ở đây, ta sẽ để ý có 1 quy luật nhỏ thế này để có thể tính toán.
– Nếu page đầu tiên, offset page này sẽ là 0 (chúng ta lấy dữ liệu từ vị trí đầu tiên trong bảng dữ liệu)
– Page 2, offset lần này sẽ bắt đầu từ vị trí thứ 10 😀
– Page 3, offset lần này sẽ bắt đầu từ vị trí thứ 20 😀
– Tương tự như vậy cho đến page cuối cùng.

Chúng ta có thể thấy:

$offset = ($page - 1) * $limit;

Thông thường, biến page sẽ được truyền lên qua url. Nên bạn có thể lấy thông qua việc sử dụng hàm `$_GET[‘page’]` của PHP để lấy.

Tóm lại:
Mình đã giới thiệu kỹ thuật phân trang với PHP và Mysql cơ bản, đơn giản nhất. Mình không đi vào cách code cụ thể trong php như thế nào. Như vậy, sẽ làm các bạn lười suy nghĩ để code cho chức năng hoạt động.
Hi vọng sẽ giúp bạn hiểu hơn và tự code cho mình để nhớ lâu và quan trọng là bạn có thể tự code.

5 2 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

More Post

MySQL Procedure là gì?

Procedure trong MySQL là một tập các khai báo sql được lưu trữ trong cơ sở dữ liệu(database) thực...

Dependency Injection và Service Container trong Laravel

Service Container trong Laravel như là trung tâm của một ứng dụng, có mặt mọi nơi trong dự án,...

Laravel Swagger là gì? Hướng dẫn tạo Swagger trong Laravel

Swagger là một framework giúp bạn định nghĩa, mô tả các API trong dự án một cách trực quan, rõ...

2
0
Rất thích suy nghĩ của bạn, hãy bình luận.x