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

Bài viết được sự cho phép của tác giả Mai Đông Giang

Á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ách sử dụng hàm isset trong PHP

  Lộ trình học MySQL từ A đến Z

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?

Ứng tuyển ngay các vị trí tuyển dụng MySQL mới nhất trên TopDev

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.
  1. 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.

Xem thêm tuyển dụng PHP lương cao trên TopDev

Ở đâ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.

Bài viết gốc được đăng tải tại giangmd.net

Có thể bạn quan tâm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev