Để hiểu hơn về ngôn ngữ PHP bạn sẽ phải thực hành nhiều bài tập với nó. Phân trang trong PHP là một phần kiến thức dành cho Newbie. Trong bài này bạn sẽ được hướng dẫn tạo ra một Pagenination rất đơn giản.
Bước 1: Trong thư mục htdocs mình sẽ tạo ra một thư mục nữa là hocphp trong đây sẽ có các file như connect.php, index.php và pagination.php
Đầu tiên bạn sẽ tạo ra file connect.php với nội dung
<?php $servername='localhost'; $username='root'; $password=''; $dbname = "data"; $conn=mysqli_connect($servername,$username,$password,$dbname); if(!$conn){ die('Không thể kết nối Database:' .mysql_error()); } ?>
Bạn lưu ý hãy điền đúng cơ sở dữ liệu. Hiện tại của mình là “data”.
Bước 2: Xây dựng một tập tin là index.php
với nội dung
- Trước tiên khởi tạo một biến là $limit = 3;
- Tiếp theo sử dụng isset để page=”.$i.” trong file pagination
- $start sẽ bằng tích của ($page – 1) * $limit.
- $result sẽ được sử dụng để lấy dữ liệu sau khi query vào Database
- Cuối cùng sử dụng vòng lặp để in dữ liệu ra
<!DOCTYPE html> <html lang="en"> <head> <title>Phân trang trong PHP</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> </head> <body> <?php include 'connect.php'; $limit = 3; if (isset($_GET["page"])) { $page = $_GET["page"]; } else{ $page=1; }; $start = ($page-1) * $limit; $result = mysqli_query($conn,"SELECT * FROM posts ORDER BY id ASC LIMIT $start, $limit"); ?> <div class="container"> <table class="table table-bordered table-striped"> <thead> <tr> <th>ID</th> <th>Tiêu đề</th> <th>Nội dung</th> </tr> <thead> <tbody> <?php while ($row = mysqli_fetch_array($result)) { ?> <tr> <td><?php echo $row["id"]; ?></td> <td><?php echo $row["title"]; ?></td> <td><?php echo $row["content"]; ?></td> </tr> <?php }; ?> </tbody> </table> <?php include 'pagination.php';?> </div> </body> </html>
Đến đây thì dữ liệu đã hiển thị lên trình duyệt nhưng vẫn chưa xuất hiện phân trang do là đang còn thiếu pagination.php
Bước 3: Ta sẽ viết code cho file này như sau
<?php include 'connect.php'; $limit = 3; $result_db = mysqli_query($conn,"SELECT COUNT(id) FROM posts"); $row_db = mysqli_fetch_row($result_db); $total_records = $row_db[0]; $total_pages = ceil($total_records / $limit); $pagLink = "<ul class='pagination'>"; for ($i=1; $i<=$total_pages; $i++) { $pagLink .= "<li class='page-item'><a class='page-link' href='index.php?page=".$i."'>".$i."</a></li>"; } echo $pagLink . "</ul>"; ?>
- Đầu tiên cũng phải tại ra $limit = 3;
- $result_db là dữ liệu được query trong bảng posts
- $row_db là dữ liệu mảng liên tục được lấy bằng cách dùng hàm mysqli_fetch_row()
- $total_records là tổng records trong cơ sở dữ liệu
- $total_pages là tổng số trang dùng hàm ceil để làm tròn số
- Cuối cùng sử dụng vòng lặp từ 1, 2, 3… trang
Như vậy là bạn đã tạo ra được phân trang. Sau khi đọc xong ví dụ này bạn nên tự viết lại bằng cách không nhìn vào code theo cách hiểu của mình. Như vậy sẽ học PHP hiệu quả hơn. Chúc bạn thành công!