Làm cách nào để tạo phân trang động trong PHP?

Thông thường, truy vấn SQL SELECT có thể trả về kết quả chứa hàng nghìn hoặc hàng triệu bản ghi. hiển thị tất cả các bản ghi đó trên một trang không phải là một ý tưởng hay. Vì vậy, đầu ra có thể được chia thành nhiều trang

Phân trang là gì?

Phân trang cho phép bạn hiển thị tất cả các kết quả đã truy xuất của mình trên nhiều trang thay vì tất cả chúng trên một trang

PHP là ngôn ngữ phía máy chủ và chủ yếu được sử dụng để xử lý cơ sở dữ liệu được sử dụng trong một dự án. Để xử lý cơ sở dữ liệu của các trang web quy mô lớn hoặc các dự án khác, bạn có thể sử dụng phân trang trong PHP. Trong MySQL, bạn có thể phân trang bằng cách sử dụng các mệnh đề LIMIT và OFFSET/FETCH. Cả OFFSET và FETCH đều là đối số được sử dụng để lọc kết quả. Đối số OFFSET chỉ định số lượng hàng cần loại trừ và đối số FETCH chỉ định số lượng hàng cần tìm nạp hoặc truy xuất.   

Trong bài viết này, bạn sẽ khám phá phân trang trong PHP bằng cách sử dụng các cách tiếp cận khác nhau, bao gồm cả phương pháp dựa trên Ajax

Phân trang trong PHP là gì?

Phân trang là quá trình hiển thị dữ liệu trên nhiều trang thay vì hiển thị chúng trên một trang. Bạn thường thực hiện phân trang khi có một cơ sở dữ liệu có nhiều bản ghi. Việc chia các bản ghi đó làm tăng khả năng đọc dữ liệu. Nó có thể truy xuất dữ liệu này theo yêu cầu của người dùng. Ví dụ phổ biến nhất về phân trang là trang kết quả tìm kiếm của Google. Một truy vấn tìm kiếm được nhập vào thanh tìm kiếm có thể lấy hàng nghìn kết quả. Và nó chia những kết quả này thành nhiều trang. Bạn có thể nhấp vào bất kỳ số trang nào được cung cấp ở dưới cùng để truy cập trang đó.  

Ưu điểm của phân trang

Quá trình phân trang trong PHP phục vụ các ưu điểm sau

  • Phân trang trong PHP phù hợp nhất cho các dự án yêu cầu lượng dữ liệu lớn vì nó tăng thêm tính chuyên nghiệp cho công việc. Ngoài ra, nó làm tăng khả năng đọc của dự án bằng cách tách mã thành các trang và làm cho nó trông rõ ràng
  • Nó làm cho các trang web hoạt động hiệu quả hơn. Phân trang trong PHP làm cho các trang web tải trong thời gian ít hơn nhiều, do đó tiết kiệm rất nhiều thời gian và dữ liệu. Bạn sẽ hiểu điểm này tốt hơn với một ví dụ thực tế.  

Thí dụ. Giả sử bạn muốn truy cập một trang web hình ảnh và có hai trang web trước mặt bạn. cái đầu tiên có 2000 hình ảnh trên một trang web trong khi cái còn lại có 20 trang web với 100 hình ảnh trên mỗi trang. Ở đây, trang web có một trang mất nhiều thời gian hơn để tải so với trang web khác, vì máy chủ phải thực hiện nhiều yêu cầu HTTP và trang có thể không phản hồi. Trong khi đó, phân trang cho phép bạn hiển thị một lượng dữ liệu hạn chế trên một trang, đổi lại sẽ giới hạn các yêu cầu HTTP. Do đó đặt tải ít hơn trên máy chủ

  • Vì phân trang cho phép dữ liệu được phân phối trên một số trang, nên nó tạo cơ hội tuyệt vời để tạo doanh thu khổng lồ bằng cách tăng quảng cáo trên mỗi trang của trang web

Nhược điểm của phân trang

Mặc dù phân trang phục vụ nhiều lợi thế mạnh mẽ, nhưng nó cũng có một số nhược điểm. Nó thường gặp phải những nhược điểm sau, nó cũng có một số nhược điểm. Những nhược điểm sau đây gặp phải khi sử dụng phân trang trong PHP

  • Vì phân trang phân phối dữ liệu và tạo ra một số trang, nó có thể dẫn đến một trang có thứ hạng thấp. Điều này là do nếu một trang không được liên kết trực tiếp với trang chủ và yêu cầu nhiều lần nhấp chuột, công cụ tìm kiếm sẽ xếp hạng trang đó ở cấp độ thấp hơn
  • Một trong những lý do chính khiến việc phân trang bị tránh trong nhiều trường hợp là nó được coi là một chi phí rất lớn trong PHP. Nó thêm các chi phí gián tiếp không cần thiết về kiểu dáng, đánh dấu, phân tách dữ liệu và logic cho một dự án. Các dự án có cơ sở dữ liệu nhỏ hầu hết bỏ qua phân trang
  • Nó cũng có thể gây khó khăn cho việc tìm kiếm dữ liệu cụ thể. Để hiểu rõ hơn về điểm này, hãy xem xét ví dụ thực tế này.  

Thí dụ. Giả sử một kỳ thi đã được tiến hành tại trường đại học của bạn và kết quả đã được tải lên trang web của trường đại học. Bây giờ, bạn muốn kiểm tra cụ thể kết quả của mình. Người ta đã hiểu rằng một trường đại học có hàng ngàn sinh viên được phân biệt theo ngành và lớp. Trong trường hợp này, nếu trường đại học đã thực hiện phân trang dữ liệu thì trường đó phải phân phối dữ liệu trên nhiều trang và bạn phải kiểm tra mọi trang để tìm tên của mình trừ khi trang web đó có thuật toán “tìm kiếm theo”. Việc bổ sung một thuật toán như vậy dường như rất khó thực hiện và không thể đạt được dễ dàng như vậy. Vì vậy, tốt nhất là tránh phân trang trong những trường hợp như vậy

Triển khai phân trang với PHP và MySQL

Bước đầu tiên và quan trọng nhất để triển khai phân trang là tạo một bộ cơ sở dữ liệu lớn. Vì vậy, trước tiên bạn sẽ tạo một cơ sở dữ liệu mà bạn sẽ áp dụng phân trang trên đó. Sau đó, bạn sẽ tách các bản ghi dưới dạng bảng để bạn có thể phân phối dữ liệu trên nhiều trang

Các bước thực hiện để thực hiện phân trang với PHP và MySQL là

BƯỚC 1. Tạo cơ sở dữ liệu quy mô lớn

BƯỚC 2. Tạo một bảng và chèn danh sách các bản ghi trong đó

BƯỚC 3. Tạo một liên kết cho phân trang để phân tách/phân phối dữ liệu trên một số trang khác nhau và thêm nó vào cuối bảng được tạo ở bước 2

BƯỚC 4. Lấy dữ liệu từ bảng và hiển thị nó trên các trang khác nhau.  

ví dụ

Bây giờ, hãy hiểu phân trang trong PHP với sự trợ giúp của các ví dụ sau. Ví dụ đầu tiên là phiên bản cơ bản minh họa phân trang trong PHP mà không sử dụng kiểu dáng CSS. Ví dụ thứ hai hiển thị một ví dụ phân trang hoàn chỉnh bằng CSS và bootstrap.  

ví dụ 1

Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu đơn giản có tên của một số quốc gia. Bạn sẽ đánh số trang các kết quả lấy từ cơ sở dữ liệu này và hiển thị chúng trên một trang web

Bước 1. Tạo cơ sở dữ liệu

Tạo cơ sở dữ liệu trong phpMyAdmin bằng bảng điều khiển máy chủ XAMPP. Đặt tên cho cơ sở dữ liệu là “Phân trang” và bảng là “Quốc gia”. Tạo 2 cột

  1. ID - int
  2. Đất nước - varchar[20]

Điền vào bảng các tên quốc gia ngẫu nhiên và chèn tối đa 20 hàng

Bước 2. Kết nối cơ sở dữ liệu

Bây giờ hãy thiết lập kết nối giữa tệp PHP của bạn và cơ sở dữ liệu. Sau khi tạo kết nối, bạn có thể truy cập các bản ghi của cơ sở dữ liệu bằng cách sử dụng mã PHP

Để kết nối tệp PHP của bạn với cơ sở dữ liệu, hãy sử dụng đoạn mã sau. Bạn có thể chèn mã này trực tiếp vào tệp dự án của mình hoặc bạn cũng có thể chèn mã này vào một tệp riêng

$conn = mysqli_connect['localhost', 'root', ''];

// root là tên người dùng mặc định

// ' ' là mật khẩu mặc định

nếu [. $conn] {

die["Kết nối thất bại". mysqli_connect_error[]];

}

khác {

// kết nối với cơ sở dữ liệu có tên Pagination

mysqli_select_db[$conn, 'Phân trang'];

}

Hàm mysqli_connect[] chấp nhận các đối số sau

  • Tên của máy chủ. Máy chủ mặc định là localhost
  • Tên người dùng của cơ sở dữ liệu. Theo mặc định, tên người dùng là 'root' cho tất cả các cơ sở dữ liệu
  • Mật khẩu của cơ sở dữ liệu. Theo mặc định, mật khẩu trống. Vì vậy, hãy chuyển một chuỗi trống vào hàm.  

Bước 3. Truy xuất số trang hiện đang hoạt động

Truy xuất số trang hiện đang được truy cập. Nó gán giá trị 1 cho số trang mặc định

nếu [. ngay lập tức [$_GET['trang']] ] {

$trang_số = 1;

} khác {

$page_number = $_GET['trang'];

}

Bước 4. Công thức cho phân trang

Đặt giới hạn số hàng được hiển thị trên mỗi trang. Bạn có 20 hàng, vì vậy bạn sẽ chia các hàng này thành 5 hàng trên mỗi trang. Tổng số trang yêu cầu sẽ là 4. Đoạn mã sau đặt công thức cần thiết để phân trang trong PHP

// biến lưu số hàng trên mỗi trang

giới hạn $ = 5;

// lấy số trang ban đầu

$initial_page = [$page_number-1] * $limit;

Biến $initial_page lưu số trang ban đầu. Điều này sẽ lấy số lượng hàng cần thiết.  

Bước 5. Nhận tổng số trang

Để truy xuất tổng số trang cần thiết để hiển thị cơ sở dữ liệu với giới hạn 5 hàng trên mỗi trang, hãy sử dụng mã được đề cập bên dưới

// truy vấn để lấy tất cả các hàng từ bảng Quốc gia

$getQuery = "chọn *từ Quốc gia";

// lấy kết quả

$result = mysqli_query[$conn, $getQuery];

$total_rows = mysqli_num_rows[$result];

// lấy đủ số trang cần thiết

$total_pages = ceil [$total_rows / $limit];

Bạn có thể xác định tổng số trang bằng cách sử dụng công thức.  

=[số hàng trong cơ sở dữ liệu/số hàng trên mỗi trang]

Vì vậy, trong trường hợp này, tổng số trang cần thiết sẽ là

=[20/5]

= 4 trang

Bước 6. Tìm nạp dữ liệu cần thiết và hiển thị trên trang web

Bây giờ hiển thị cơ sở dữ liệu với các hàng của nó được chia thành nhiều trang web. Một truy vấn có thể được sử dụng với mệnh đề LIMIT cùng với việc chỉ định giới hạn của các hàng sẽ được hiển thị trên mỗi trang. Đoạn mã sau tìm nạp dữ liệu của các hàng đã chỉ định từ cơ sở dữ liệu và hiển thị kết quả trên trang web

// lấy kết quả đã chọn từ cơ sở dữ liệu

$getQuery = "CHỌN *TỪ GIỚI HẠN Quốc gia". $initial_page. ','. $giới hạn;

$result = mysqli_query[$conn, $getQuery];

//hiển thị kết quả truy xuất trên trang web

trong khi [$row = mysqli_fetch_array[$result]] {

tiếng vang $row['ID']. ''. $row['Quốc gia']. '
';

}

Bước 7. Hiển thị số trang trong URL

Hiển thị số trang ở cuối mỗi trang và cập nhật URL với số trang. Đoạn mã sau chèn số trang với một liên kết đến từng trang

// hiển thị số trang có liên kết

for[$page_number = 1; $page_number

  

 

đầu ra

Khóa học Full Stack Web Developer

Để trở thành chuyên gia về MEAN Stack Xem khóa học

ví dụ 2

Trong ví dụ này, bạn sẽ tạo cơ sở dữ liệu chứa tên của một số mặt hàng và danh mục của chúng. Bạn sẽ định dạng bảng cơ sở dữ liệu và các trang web bằng CSS. Sau đó, bạn phải đánh số trang cơ sở dữ liệu này và hiển thị kết quả trên trang web

Bước 1. Tạo cơ sở dữ liệu

Tạo cơ sở dữ liệu trong phpMyAdmin bằng bảng điều khiển máy chủ XAMPP. Đặt tên cơ sở dữ liệu là “myDatabase” và bảng là “Items”. Tạo 4 cột

  1. ID - int
  2. Tên - varchar[20]
  3. Thể loại - varchar[20]
  4. Giá - int

Chèn 15 hàng và điền dữ liệu vào bảng.  

Bước 2. Kết nối cơ sở dữ liệu

Mã tương tự được sử dụng trong ví dụ trên có thể được sử dụng để thiết lập kết nối. Đoạn mã sau kết nối cơ sở dữ liệu “myDatabase” với tệp PHP

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

$conn = mysqli_connect['localhost', 'root', ''];

nếu [. $conn] {

die["Kết nối thất bại". mysqli_connect_error[]];

}

khác {

mysqli_select_db[$conn, 'myDatabase'];

}

Bước 3. Truy xuất số trang hiện đang hoạt động

Lấy số trang của trang hiện tại bằng phương thức isset[].  

// cập nhật số trang đang hoạt động

if [isset[$_GET["page"]]] {

$page_number  = $_GET["trang"];

}

khác {

$trang_số=1;

}

Bước 4. Hiển thị Bản ghi Bảng

Hiển thị các bản ghi bảng của cơ sở dữ liệu của bạn

Bước 5. Hiển thị số trang trong URL

Hiển thị số trang trong URL của mỗi trang. Đoạn mã trên cập nhật URL với số trang. Nó cũng chèn một liên kết “trước đó” và “tiếp theo” với số trang

if[$page_number>=2]{

            echo "  Prev ";   

}

for [$i=1; $i


Phân trang trong PHP

        

ID

Tên

Danh mục

Giá

            

   

          

   

   

        

          

    

Chủ Đề