PHP 分頁

Subodh Poudel 2023年1月30日
  1. 在 PHP 中在 SQL 中使用 LIMIT 子句和 SELECT 語句對行進行分頁
  2. 在 PHP 的分頁中新增 PreviousNext 導航功能
PHP 分頁

本文將介紹一種在 PHP 中使用 LIMIT 子句和 SQL 中的 SELECT 語句在 PHP 中執行分頁的方法。我們將使用 LIMIT 子句選擇從特定索引開始的特定行數以顯示為分頁。

我們還將演示另一種在 PHP 分頁中新增 PreviousNext 導航功能的方法。此方法僅新增了將相應頁面導航到第一種方法的附加功能。

在 PHP 中在 SQL 中使用 LIMIT 子句和 SELECT 語句對行進行分頁

我們可以使用 LIMIT 子句和 SELECT 語句來指定要在頁面上顯示的前 n 個結果。我們可以在 anchor 標籤中提供頁碼作為 GET 方法來瀏覽頁面。在此方法中,我們定義每頁要顯示的行數,並從資料庫中檢索所有行以計算所需的總頁數。我們可以使用 $_GET 陣列和 isset() 函式來獲取使用者請求的頁碼。

例如,建立一個變數 $results_per_page 並在其中儲存 2。使用 mysqli_num_rows() 函式查詢資料庫中的行數並儲存在 $number_of_results 變數中。使用 ceil() 函式來確定顯示行所需的總頁數。將 $number_of_results 變數除以 ceil() 函式內的 $results_per_page 變數。使用 $_GET 超全域性變數和 isset() 函式來檢查 page 變數是否已設定。如果尚未設定,請將 $page 變數設定為 1。如果已設定變數,則將值分配給 $page 變數。用 1 減去 $page 變數並將其乘以 $this_page_first_result 變數。將操作儲存在變數 $this_page_first_result 中。編寫一個帶有 LIMIT 子句的 SQL 語句為 SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page. 執行查詢並顯示結果。最後,建立一個 for 迴圈以在 $page 變數和 $number_of_page 之間迴圈。在迴圈內,echo anchor 標籤並將 href 屬性的值設定為 index.php?page'.$page。在 anchor 標籤之間寫入 $page 變數。

在下面的示例中,資料庫中的 alpha 表包含六行。執行分頁後,每頁顯示兩行。ceil() 函式確定顯示行所需的總頁數。最初,$page 變數未設定,因此頁面從第 1 頁開始。$this_page_first_result 變數確定使用者當前所在的頁碼。變數 $this_page_first_result 表示頁面的第一行。變數 $results_per_page 表示每頁的結果數。輸出部分顯示 index.php 頁面。當點選頁面 2 時,它會從資料庫中輸出接下來的兩行。

示例程式碼:

#php 7.x
<?php
$number_of_pages = ceil($number_of_results/$results_per_page);
if (!isset($_GET['page'])) {
    $page = 1;
} else {
    $page = $_GET['page'];
}
$this_page_first_result = ($page-1)*$results_per_page;
$sql='SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)) {
    echo $row['id'] . ' ' . $row['value']. '<br>';
}
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
?>

輸出:

1 A 
2 B 
1 2 3

在 PHP 的分頁中新增 PreviousNext 導航功能

我們可以在第一種方法的程式碼示例中新增一些額外的程式碼片段,以在分頁中提供 PreviousNext 導航功能。我們可以將 $page 變數遞增和遞減 1 以指向上一頁和下一頁。我們可以使用 anchor 標籤中的遞增和遞減變數來實現 NextPrevious 功能。

例如,建立兩個變數,$prev$next。用 1 減去 $page 變數並將操作分配給 $prev 變數。類似地,將 1 新增到 $page 變數並將其分配給 $next 變數。在頁碼的 for 迴圈之前回顯一個 anchor 標籤,上面寫著 Previous。將 anchor 標籤的 href 屬性賦值為 index.php?page=' . $prev .。以同樣的方式,使用 $next 變數作為 href 屬性中 page 的值,為 Next 建立另一個 anchor 標記。

在下面的輸出部分,它顯示了第二頁。單擊 Previous 進入第一頁,單擊 Next 進入第三頁。

示例程式碼:

# php 7.x
<?php
$prev = $page -1;
$next = $page +1;
echo ' <a href="index.php?page=' . $prev . '"> Previous </a> ';
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
echo ' <a href="index.php?page=' . $next . '"> Next </a> ';
?>

輸出:

3 C 
4 D 
Previous 1 2 3 Next
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn