Tạo phân trang trong PHP và Mysql

Để 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.

phan-trang-php

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!

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…