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â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.
- 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.
- 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:
- Các hàm xử lý chuỗi thường dùng trong PHP
- Hướng dẫn cách kết nối đến Database MySQL trong Eclipse
- Top 6 mẹo của PHP giúp anh em code tốt hơn
Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev
- G Giải Quyết Bài Toán Kinh Doanh Bằng Big Data và AI
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước