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 . ' '; } ?> đầu raKhóa học Full Stack Web DeveloperĐể trở thành chuyên gia về MEAN Stack Xem khóa họcví dụ 2Trong 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ệuTạ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
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ệuMã 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 độngLấ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ảngHiển thị các bản ghi bảng của cơ sở dữ liệu của bạn trong khi ($row = mysqli_fetch_array($result)) { // Đầu bàn ?> }; ?> Bước 5. Hiển thị số trang trong URLHiể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<=$total_pages; $i++) { nếu ($i == $page_number) { $pageURL. = "". $ tôi. " "; } khác { $pageURL .= "
". $ tôi. " } }; tiếng vang $pageURL; if($page_number<$total_pages){ echo " Next "; } Mã hoàn chỉnhĐoạn mã sau là mã kết hợp với CSS để định dạng trang web và bảng. Nó lấy dữ liệu của 15 hàng từ cơ sở dữ liệu và hiển thị 5 hàng trên mỗi trang. <�đầu> < p> href="https. //maxcdn. bootstrapcdn. com/bootstrap/3. 3. 7/css/khởi động. tối thiểu. css"> bàn { sụp đổ biên giới. sự sụp đổ; } . nội tuyến{ trưng bày. chặn Nội tuyến; trôi nổi. đúng; lề. 20px 0px; } đầu vào, nút { chiều cao. 34px; } . mặt hàng { trưng bày. chặn Nội tuyến; } . mục một { trọng lượng phông chữ. Dũng cảm; cỡ chữ. 18px; màu. màu đen; trôi nổi. bên trái; đệm. 8px 16px; trang trí văn bản. không ai; biên giới. 1px màu đen đặc; lề. 2px; } . mục một. tích cực { màu nền. rgba(175, 201, 244, 0. 97); } . mục một. bay lượn. không phải(. tích cực) { màu nền. #87ceeb; }
// 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'); } // biến để lưu trữ số hàng trên mỗi trang giới hạn $ = 5; // cập nhật số trang đang hoạt động if (isset($_GET["page"])) { $page_number = $_GET["trang"]; } khác { $trang_số=1; } // 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 mục $initial_page, $limit"; $result = mysqli_query ($conn, $getQuery); ?> Phân trang trong PHP
trong khi ($row = mysqli_fetch_array($result)) { // Đầu bàn ?> }; ?>
$getQuery = "CHỌN ĐẾM(*) TỪ Mục"; $result = mysqli_query($conn, $getQuery); $row = mysqli_fetch_row($result); $total_rows = $row[0]; tiếng vang " // lấy đủ số trang cần thiết $total_pages = ceil($total_rows / $limit); $pageURL = ""; if($page_number>=2){ echo " Prev "; } for ($i=1; $i<=$total_pages; $i++) { nếu ($i == $page_number) { $pageURL. = "". $ tôi. " "; } khác { $pageURL .= "
". $ tôi. " } }; tiếng vang $pageURL; if($page_number<$total_pages){ echo " Next "; } ?>
< p> placeholder="
hàm go2Page() { trang var = tài liệu. getElementById("trang"). giá trị; page = ((page>)?:((page<1)?1:page)); cửa sổ. vị trí. href = 'chỉ mục. php?page='+trang; }
OutputHow to Implement Ajax-Based Pagination?Pagination in PHP can also be done using an Ajax-based method. Using Ajax, you don’t have to refresh the page every time you go to a different page. So, for example, if you have your data divided into 4 pages. Then you can visit any page without refreshing it. In this method, you need to create the following three files
Step 1. Create an index. php fileCreate an index. php file to include AJAX which will allow you to visit a page without refreshing it. It will trigger the click event and load the page without refreshing it. This also makes the loading of the web pages faster. Insert the following code into the index. php file include('database. php'); $limit = 4; $query = "CHỌN ĐẾM(*) TỪ mục"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_row($result); $total_rows = $row[0]; $total_pages = ceil($total_rows / $limit); ?> <. DOCTYPE html>
Pagination in PHP using AJAX
loading...
$(document). ready(function() { $("#nội dung mục tiêu"). tải ("phân trang. php?page=1"); $(". trang liên kết"). nhấp (hàm () { var id = $(cái này). attr("id dữ liệu"); var select_id = $(cái này). cha mẹ(). attr("id"); $. ajax({ url. "phân trang. php", loại. "ĐƯỢC", dữ liệu. { trang. Tôi }, bộ đệm. sai, sự thành công. hàm (dataResult) { $("#nội dung mục tiêu"). html(kết quả dữ liệu); $(". mục trang"). removeClass("đang hoạt động"); $("#"+select_id). addClass("đang hoạt động"); } }); }); }); Bước 2. Tạo cơ sở dữ liệu. tập tin phpTạo một tệp để kết nối các tệp PHP của bạn với cơ sở dữ liệu “myDatabase”. Nó tạo một tệp riêng biệt, để chỉ cần nhập tệp đó vào tất cả các tệp khác thay vì chèn mã kết nối vào từng tệp. Chèn đoạn mã sau vào tệp này và lưu nó $server_name = "máy chủ cục bộ"; $user_name = "gốc"; $mật khẩu = ""; $db="cơ sở dữ liệu của tôi"; $conn = mysqli_connect($server_name, $user_name, $password,$db); nếu (. $conn) { die("Kết nối thất bại. ". mysqli_connect_error()); } ?> Bước 3. Tạo phân trang. tập tin phpTạo phân trang. php tệp sẽ chứa mã để tìm nạp các bản ghi bảng và phân trang chúng để hiển thị dữ liệu thành nhiều trang. Chèn đoạn mã sau vào tập tin này bao gồm ('cơ sở dữ liệu. php'); giới hạn $ = 5; if (isset($_GET["page"])) { $page_number = $_GET["page"]; $initial_page = ($page_number-1) * $limit; $sql = "CHỌN * TỪ GIỚI HẠN mục $initial_page, $limit"; $result = mysqli_query($conn, $sql); ?> trong khi ($row = mysqli_fetch_array($result)) { ?> }; ?>
Để hiển thị đầu ra trong một trang web, hãy lưu tất cả các tệp này vào thư mục dự án và chạy “chỉ mục. php” trong máy chủ localhost. OutputNâng cao sự nghiệp của bạn với tư cách là nhà phát triển MEAN stack với Nhà phát triển Web Full Stack - Chương trình Thạc sĩ MEAN Stack. đăng ký ngay bây giờ Suy nghĩ cuối cùngTóm lại, trong bài viết này, bạn đã học được kiến thức cơ bản về phân trang trong PHP. Bạn đã xem cách triển khai phân trang bằng PHP và MySQL bằng các ví dụ thực hành. Bạn đã hiểu những ưu điểm và nhược điểm của việc sử dụng PHP trong trang web của mình. Cuối cùng, bạn cũng đã xem qua một giải pháp đơn giản để triển khai phân trang dựa trên Ajax Nếu bạn muốn biết thêm về PHP và bắt đầu hành trình học PHP toàn diện của mình, bạn có thể tham khảo video hướng dẫn này. Hơn nữa, khóa học trực tuyến về Đào tạo PHP của Simplilearn chắc chắn sẽ giúp bạn hiểu các khái niệm cơ bản về PHP và bạn sẽ có thể tạo các ứng dụng web động nâng cao được hướng dẫn bởi các chuyên gia và chuyên gia trong ngành. Nếu bạn đã là một chuyên gia PHP, chúng tôi có một khóa Đào tạo Phát triển PHP Nâng cao được thiết kế đặc biệt mà bạn tận dụng để tìm hiểu các khái niệm PHP cấp cao như phiên, cookie, v.v. Tại sao dừng lại ở đây? . Kiểm tra khóa học của chúng tôi trên Full Stack Web Developer - MEAN Stack. Điều này sẽ giúp bạn học một số kỹ năng thịnh hành nhất như Node, Mongo, v.v. Nếu bạn muốn có danh sách đầy đủ các khóa học miễn phí do Simplilearn cung cấp, hãy truy cập Khóa học miễn phí Nếu bạn có bất kỳ câu hỏi nào cho chúng tôi liên quan đến bài viết “Phân trang trong PHP” này, vui lòng đề cập đến chúng trong phần bình luận và các chuyên gia của chúng tôi sẽ giải đáp cho bạn học tập vui vẻ Thông tin về các Tác giảRavikiran A S làm việc với Simplilearn với tư cách là Nhà phân tích nghiên cứu. Anh ấy là một người đam mê nhiệt tình, luôn săn lùng những công nghệ mới nhất. Anh ấy thành thạo Ngôn ngữ lập trình Java, Dữ liệu lớn và các Khung dữ liệu lớn mạnh mẽ như Apache Hadoop và Apache Spark Làm cách nào để tạo phân trang tùy chỉnh trong PHP?
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
Làm cách nào để hiển thị 10 bản ghi trên mỗi trang trong PHP?
Chúng tôi sẽ đặt biến $limit thành số lượng bản ghi trên mỗi trang sẽ được hiển thị. Mười bản ghi trên mỗi trang là cách hiển thị tiêu chuẩn và bạn có thể thay đổi bất kỳ giá trị nào. $eu = ($start - 0); $limit = 10; // Không có bản ghi nào được hiển thị .
Làm thế nào để sử dụng phân trang trong PHP với ví dụ?
Triển khai phân trang bằng PHP và MySQL .
Tạo cơ sở dữ liệu và bảng. Cung cấp một danh sách các bản ghi vào bảng
Kết nối với cơ sở dữ liệu MySQL
Tạo liên kết phân trang để phân chia dữ liệu trên nhiều trang và thêm chúng vào cuối bảng
Lấy dữ liệu từ cơ sở dữ liệu và hiển thị nó trên nhiều trang
Làm cách nào để sử dụng phân trang bootstrap trong PHP?
Phân trang Bootstrap trong PHP với cơ sở dữ liệu .
Tạo cấu trúc cơ sở dữ liệu và tải dữ liệu mẫu
Định cấu hình và ánh xạ kết quả cơ sở dữ liệu tới thành phần phân trang
Tính toán các biến như bắt đầu, giới hạn và số trang hiện tại để tạo liên kết phân trang
Đánh dấu trang hiện tại và trong số các liên kết phân trang có thể nhấp
|
