首頁  >  文章  >  後端開發  >  PHP 分頁

PHP 分頁

WBOY
WBOY原創
2024-08-28 12:10:031121瀏覽

什麼是分頁?

PHP 中的分頁是指將大量資料分割為更小、更易於管理的部分(稱為「頁面」)的過程。它通常在 Web 應用程式中用於在每頁顯示有限數量的記錄或結果,從而允許使用者輕鬆瀏覽資料。

在處理大型資料集時,分頁至關重要,因為在單一頁面上顯示所有記錄可能會導致效能問題和令人難以承受的使用者介面。透過實施分頁,您可以改善使用者體驗並優化應用程式的效能。

分頁的PHP程式

  • 在您的工作位置建立一個新的 PHP 文件,並使用您想要的名稱儲存它。

  • 這裡我們使用本地主機資料庫中包含 121 筆記錄的學生資料表。

範例

這是一個在 PHP 中實現分頁的範例,用於從資料庫中每頁顯示 10 筆記錄的學生資料。

<!DOCTYPE html>
<html>
<head>
   <style>
     /* Grid styles */
     .grid-container {
       display: grid;
       grid-template-columns: repeat(3, 1fr);
       grid-gap: 10px;
       margin-bottom: 20px;
     }

     .grid-item {
       background-color: #f2f2f2;
       padding: 10px;
       text-align: center;
     }

     /* Table styles */
     table {
       border-collapse: collapse;
       width: 100%;
     }

     th, td {
       padding: 8px;
       text-align: left;
       border-bottom: 1px solid #ddd;
     }

     th {
       background-color: #4CAF50;
       color: white;
     }

     /* Pagination styles */
     .pagination {
       display: inline-block;
     }

     .pagination a {
       color: black;
       float: left;
       padding: 8px 16px;
       text-decoration: none;
       border: 1px solid #ddd;
     }

     .pagination a.active {
       background-color: #4CAF50;
       color: white;
       border: 1px solid #4CAF50;
     }

     .pagination a:hover:not(.active) {
       background-color: #ddd;
     }
   </style>
</head>
<body>
   <?php
   // Database connection details
   $servername = "localhost";
   $username = "root";
   $password = "";
   $dbname = "assignments";

   // Create connection
   $conn = new mysqli($servername, $username, $password, $dbname);

   // Check connection
   if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
   }

   // Number of records per page
   $recordsPerPage = 10;

   // Current page number
   if (isset($_GET['page'])) {
     $currentPage = $_GET['page'];
   } else {
     $currentPage = 1;
   }

   // Calculate the starting record index
   $startFrom = ($currentPage - 1) * $recordsPerPage;

   // Fetch student data with pagination
   $sql = "SELECT * FROM studentdata LIMIT $startFrom, $recordsPerPage";
   $result = $conn->query($sql);

   if ($result->num_rows > 0) {
     // Display student data
     echo "<div class='grid-container'>";
     echo "<div class='grid-item'><strong>ID</strong><
/div>";
     echo "<div class='grid-item'><strong>Name</strong><
/div>";
     echo "<div class='grid-item'><strong>Age</strong><
/div>";

     while ($row = $result->fetch_assoc()) {
       echo "<div class='grid-item'>" . $row["id"] . "</div>";
       echo "<div class='grid-item'>" . $row["name"] . "</div>";
       echo "<div class='grid-item'>" . $row["age"] . "</div>";
     }

     echo "</div>";
   } else {
     echo "No records found.";
   }

   // Pagination links
   $sql = "SELECT COUNT(*) AS total FROM studentdata";
   $result = $conn->query($sql);
   $row = $result->fetch_assoc();
   $totalRecords = $row["total"];
   $totalPages = ceil($totalRecords / $recordsPerPage);

   echo "<div class='pagination'>";

   if ($totalPages > 1) {
     for ($i = 1; $i <= $totalPages; $i++) {
       if ($i == $currentPage) {
         echo "<a class='active' href='?page=$i'>$i</a> ";
       } else {
         echo "<a href='?page=$i'>$i</a> ";
       }
     }
   }

   echo "</div>";

   // Close the connection
   $conn->close();
   ?>
</body>
</html>

輸出

PHP Pagination

解釋

程式碼的第一部分使用提供的伺服器名稱、使用者名稱、密碼和資料庫名稱建立資料庫連線。然後它檢查連接是否成功。接下來,它會設定每頁顯示的記錄數,並根據 URL 參數確定目前頁碼。它使用當前頁和每頁記錄值計算起始記錄索引。然後,程式碼執行資料庫查詢來取得學生數據,使用 LIMIT 子句僅檢索目前頁面的相關記錄。它迭代查詢結果並以網格佈局顯示學生資料。

程式碼的第二部分處理分頁。它執行另一個資料庫查詢以確定“studentdata”表中的記錄總數。它透過將記錄總數除以每頁記錄數值並向上捨去來計算總頁數。然後,程式碼使用循環生成分頁連結。如果總頁數大於 1,則為每個頁面產生一個連結。目前頁面以「活動」類別突出顯示。最後關閉資料庫連接,關閉HTML程式碼。總體而言,此程式碼透過分頁檢索和顯示學生數據,並提供用於在頁面之間切換的導航連結。

結論

PHP 程式碼示範了 PHP 中分頁的實作。它利用 MySQL 資料庫來獲取學生資料的子集並將其顯示在網格佈局中。程式碼根據每頁的記錄數計算總頁數,並對應生成分頁連結。用戶可以透過點擊頁面連結來瀏覽數據。此實作透過將大型資料集劃分為可管理的部分來改善使用者體驗,從而提高效能並防止出現過多的 UI。它展示了實現分頁所涉及的基本步驟,包括建立資料庫連接、透過分頁檢索資料以及動態生成分頁連結。

以上是PHP 分頁的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn