Phân trang PHP là gì? 4 bước phân trang trong PHP bạn cần biết 2021

PHP chủ yếu được sử dụng để lưu trữ và hiển thị dữ liệu từ cơ sở dữ liệu. Việc phân trang PHP giúp phân chia danh sách thành nhiều trang.

Điều này giúp cho giao diện web trở nên gọn gàng và dễ nhìn hơn. Hãy cùng tôi tìm hiểu kỹ hơn về phân trang PHP (Pagination PHP) thông qua các ví dụ minh họa nhé.

1. Phân trang PHP là gì?

Phân trang là việc hiển thị tài liệu trên nhiều trang thay vì đặt toàn bộ chúng lên một trang duy nhất .

Phân trang còn giúp phân chia các bản ghi thành nhiều trang. Nhờ đó, người dùng sẽ dễ đọc và dễ hiểu các dữ liệu trên website.

Phân trang PHP là việc làm của những developer PHP. Các developer triển khai việc làm phân trang bằng cách sử dụng mệnh đề LIMIT trong MySQL. Mệnh đề này có hai đối số .
Đối số tiên phong là OFFSET và đối số thứ hai là số bản ghi sẽ được trả về từ cơ sở tài liệu .

2. 4 bước phân trang bằng PHP và MySQL

Để thực hiện phân trang trong PHP, bạn cần phải có một Dataset (tập dữ liệu). Chính vì thế, trước tiên, bạn cần tạo ra một cơ sở dữ liệu và bảng.

Tiếp theo, thêm những bản ghi vào bảng này và khởi đầu viết code để thực thi phân trang. Để tài liệu được nạp từ cơ sở tài liệu hoàn toàn có thể được chia thành nhiều trang .
Trong bài viết này, tôi sẽ ra mắt 2 ví dụ về phân trang PHP Pagination .
Ví dụ tiên phong khá cơ bản và đơn thuần, phân trang mà không cần CSS ( Cascading Style Sheet – tập tin định kiểu theo tầng ) .
Trong khi đó, ở ví dụ thứ 2, tôi sẽ sử dụng CSS và bootstrap để tạo phân trang .
Dưới đây là trình tự 4 bước để triển khai phân trang trong PHP :

  1. Tạo cơ sở dữ liệu và bảng. Thêm danh sách các bản ghi vào bảng.
  2. Kết nối với cơ sở dữ liệu MySQL.
  3. Tạo liên kết phân trang để chia nhỏ dữ liệu trên nhiều trang và thêm chúng vào cuối bảng.
  4. Nạp dữ liệu từ cơ sở dữ liệu và hiển thị nó trên nhiều trang.

3. Ví dụ 1 về phân trang trong PHP

Đoạn mã dưới đây là một ví dụ khá đơn giản về code phân trang PHP với sự hỗ trợ của cơ sở dữ liệu MySQL.

Nó chia nhỏ tài liệu được nạp từ cơ sở tài liệu thành nhiều trang. Trong ví dụ này, tôi đã tạo phân trang cho bảng vần âm để chúng hiển thị trên nhiều trang .

Tạo cơ sở dữ liệu

Trước tiên, tôi tạo một cơ sở dữ liệu được đặt tên pagination và một bảng bên trong nó có tên alphabet. Tạo thuộc tính theo tên idalphabet, đồng thời cung cấp dữ liệu vào bảng.

Kết nối cơ sở dữ liệu

Bước tiếp theo là liên kết tệp PHP với cơ sở tài liệu. Nhờ đó, tài liệu được tàng trữ trong cơ sở tài liệu sẽ được hiển thị lên trang web. Kết nối cơ sở tài liệu trong tệp PHP để hiển thị tài liệu lên trang web .
Bạn hoàn toàn có thể viết mã liên kết cơ sở tài liệu trong tệp đó hoặc để nó riêng không liên quan gì đến nhau trong tệp khác và đưa nó vào tệp PHP được nhu yếu của bạn .
Mã liên kết cơ sở tài liệu :
USD conn = mysqli_connect ( ‘ localhost ’, ‘ root ’, ” ) ;
if ( ! USD conn ) {
die ( “ Connection failed ”. mysqli_connect_error ( ) ) ;
}
else {
mysqli_select_db ( USD conn, ‘ pagination ’ ) ;
}

Trong bài viết này, tôi sử dụng tiện ích mở rộng mysqli. Do đó, tất cả các truy vấn đều được viết theo định dạng mysqli.

Lấy số trang hiện tại

Đoạn code dưới đây xác lập số thứ tự trang mà người dùng hiện đang truy vấn. Đặc biệt, nếu nó không được hiển thị thì theo mặc định, số trang sẽ được thiết lập là 1 .
if ( ! isset ( USD _GET [ ‘ page ’ ] ) ) {
USD page = 1 ;
} else {
USD page = USD _GET [ ‘ page ’ ] ;
}

Công thức phân trang

Để phân trang, bạn cần đặt số lượng giới hạn số bản ghi được hiển thị trên một trang. Ở đây, tôi thiết lập số lượng giới hạn tác dụng trên mỗi trang là 10, và tác dụng được hiển thị trên mỗi trang như sau :
Trang1 – A đến J ( 1-10 )
Trang 2 – K đến T ( 11-20 )
Trang3 – U đến Z ( 21-26 )
USD results_per_page = 10 ;
USD page_first_result = ( USD page-1 ) * USD results_per_page ;

Nhận tổng số trang

USD query = “ select * from alphabet ” ;
USD result = mysqli_query ( USD conn, USD query ) ;
USD number_of_result = mysqli_num_rows ( USD result ) ;
/ / determine the total number of pages available
USD number_of_page = ceil ( USD number_of_result / USD results_per_page ) ;

Lấy dữ liệu và hiển thị trên trang web

Đoạn code dưới đây được sử dụng để truy xuất tài liệu từ cơ sở tài liệu và hiển thị lên trang web đã được phân loại tương ứng .
USD query = “ SELECT * FROM alphabet LIMIT ”. USD page_first_result. ‘, ’. USD results_per_page ;
USD result = mysqli_query ( USD conn, USD query ) ;
/ / display the retrieved result on the webpage
while ( USD row = mysqli_fetch_array ( USD result ) ) {
echo USD row [ ‘ id ’ ]. ‘ ‘. USD row [ ‘ alphabet ’ ]. ‘

’;
}

Hiển thị liên kết của các trang trong URL

Sử dụng mã code này, URL của website sẽ đổi khác theo từng trang .
for ( USD page = 1 ; USD page < = USD number_of_page ; USD page + + ) { echo ‘ ’. USD page. ‘ ’ ;

Thành quả

Và bước sau cuối chính là để tổng thể những đoạn code trên vào trong một tệp duy nhất .
Tệp : Index2. php

Pagination

/ / database connection
USD conn = mysqli_connect ( ‘ localhost ’, ‘ root ’, ” ) ;
if ( ! USD conn ) {
die ( “ Connection failed ”. mysqli_connect_error ( ) ) ;
}
else {
mysqli_select_db ( USD conn, ‘ pagination ’ ) ;
}
/ / define total number of results you want per page
USD results_per_page = 10 ;
/ / find the total number of results stored in the database
USD query = “ select * from alphabet ” ;
USD result = mysqli_query ( USD conn, USD query ) ;
USD number_of_result = mysqli_num_rows ( USD result ) ;
/ / determine the total number of pages available
USD number_of_page = ceil ( USD number_of_result / USD results_per_page ) ;
/ / determine which page number visitor is currently on
if ( ! isset ( USD _GET [ ‘ page ’ ] ) ) {
USD page = 1 ;
} else {
USD page = USD _GET [ ‘ page ’ ] ;
}
/ / determine the sql LIMIT starting number for the results on the displaying page
USD page_first_result = ( USD page-1 ) * USD results_per_page ;
/ / retrieve the selected results from database
USD query = “ SELECT * FROM alphabet LIMIT ”. USD page_first_result. ‘, ’. USD results_per_page ;
USD result = mysqli_query ( USD conn, USD query ) ;
/ / display the retrieved result on the webpage
while ( USD row = mysqli_fetch_array ( USD result ) ) {
echo USD row [ ‘ id ’ ]. ‘ ‘. USD row [ ‘ alphabet ’ ]. ‘

’;
}
/ / display the link of the pages in URL
for ( USD page = 1 ; USD page < = USD number_of_page ; USD page + + ) { echo ‘ ’. USD page. ‘ ’ ; } ? >

Kết quả :
Dưới đây chính là hiệu quả của ví dụ phân trang ở trên
php pagination

4. Ví dụ 2 về code phân trang PHP

Dưới đây là một ví dụ khác về việc phân trang. Tuy nhiên, ở đây, tôi sử dụng CSS cùng với HTML để làm cho chính sách xem website trở nên lôi cuốn hơn. CSS làm cho website trở nên sôi động và mê hoặc hơn .
Mặt khác, MySQL tàng trữ tài liệu trong cơ sở tài liệu. Chính cho nên vì thế, trải qua ví dụ này, bạn hoàn toàn có thể học thêm được nhiều kỹ năng và kiến thức hơn, ngoài phân trang PHP .
Tôi sẽ viết hàng loạt đoạn code trong một tệp duy nhất ngoại trừ liên kết cơ sở tài liệu. Chính vì vậy, tôi sẽ tạo 2 tệp, một tệp là connection.php và tệp còn lại là index1.php. Lưu cả 2 tệp này trong phần trong phần lan rộng ra. php .
Thông qua ví dụ này, bạn sẽ học được cách tạo phân trang trở nên phát minh sáng tạo và mê hoặc hơn .

  • php: Được tạo để kết nối cơ sở dữ liệu
  • php: Được tạo để phân trang

Tệp: connection.php

USD conn = mysqli_connect ( ‘ localhost ’, ‘ root ’, ” ) ;

if (! $conn) {

die ( “ Connection failed ”. mysqli_connect_error ( ) ) ;
}
else {
mysqli_select_db ( USD conn, ‘ pagination ’ ) ;
}
? >

Tệp: index1.php

Pagination

href = ” https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css ” >

/ / Import the file where we defined the connection to Database .
require_once “ connection.php ” ;
USD per_page_record = 4 ; / / Number of entries to show in a page .
/ / Look for a GET variable page if not found default is 1 .
if ( isset ( USD _GET [ “ page ” ] ) ) {
USD page = USD _GET [ “ page ” ] ;
}
else {
USD page = 1 ;
}
USD start_from = ( USD page-1 ) * USD per_page_record ;
USD query = “ SELECT * FROM student LIMIT USD start_from, USD per_page_record ” ;
USD rs_result = mysqli_query ( USD conn, USD query ) ;
? >

Pagination Simple Example

This page demonstrates the basic
Pagination using PHP and MySQL .

table-bordered ” >

ID Name College Score

while ( USD row = mysqli_fetch_array ( USD rs_result ) ) {
/ / Display each field of the records .
? >

} ;
? >

USD query = “ SELECT COUNT ( * ) FROM student ” ;
USD rs_result = mysqli_query ( USD conn, USD query ) ;
USD row = mysqli_fetch_row ( USD rs_result ) ;
USD total_records = USD row [ 0 ] ;
echo “ ” ;
/ / Number of pages required .
USD total_pages = ceil ( USD total_records / USD per_page_record ) ;
USD pagLink = “ ” ;
if ( USD page > = 2 ) {
echo “ Prev ” ;
}
for ( USD i = 1 ; USD i < = USD total_pages ; USD i + + ) { if ( USD i = = USD page ) {

$pagLink .= “
. USD i. ” ‘ > ”. USD i. ””;

}
else {
USD pagLink. = “
“. USD i. ”

”;
}
} ;
echo USD pagLink ;
if ( USD page < USD total_pages ) { echo “ Next ” ; } ? >

placeholder = ” php echo USD page. ” / ”. USD total_pages ; ? ” required >

Kết quả:

Dưới đây là tác dụng của ví dụ phân trang này :
pagination php

Lưu ý, đoạn code được viết trong thẻ