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 Show
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 trangQuá trình phân trang trong PHP phục vụ các ưu điểm sau
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ủ
Nhược điểm của phân trangMặ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
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à MySQLBướ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ụ 1Trong 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ệuTạ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
Đ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ệuBâ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
Bước 3. Truy xuất số trang hiện đang hoạt độngTruy 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 webBâ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 URLHiể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<= $total_pages; $page_number++) { echo '' . $page_number . ' '; } Mã hoàn chỉnhCác đoạn mã trên có thể được kết hợp trong một tệp PHP duy nhất. Sau đây là mã kết hợp để thực hiện phân trang trong PHP. Lưu mã này dưới dạng tệp PHP có tên là “index. php” và chạy nó trong localhost <đầu>
$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'); } // biến để lưu trữ số hàng trên mỗi trang giới hạn $ = 5; // 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); // cập nhật số trang đang hoạt động nếu (. ngay lập tức ($_GET['trang']) ) { $trang_số = 1; } khác { $page_number = $_GET['trang']; } // lấy số trang ban đầu $initial_page = ($page_number-1) * $limit; // lấy dữ liệu của các hàng đã chọn trên mỗi trang $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']. ''; } // hiển thị số trang có liên kết for($page_number = 1; $page_number<= $total_pages; $page_number++) { echo '' . $page_number . ' '; } ?>
|