PHP 分頁
本文將介紹一種在 PHP 中使用 LIMIT 子句和 SQL
中的 SELECT
語句在 PHP 中執行分頁的方法。我們將使用 LIMIT
子句選擇從特定索引開始的特定行數以顯示為分頁。
我們還將演示另一種在 PHP 分頁中新增 Previous
和 Next
導航功能的方法。此方法僅新增了將相應頁面導航到第一種方法的附加功能。
在 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 的分頁中新增 Previous
和 Next
導航功能
我們可以在第一種方法的程式碼示例中新增一些額外的程式碼片段,以在分頁中提供 Previous
和 Next
導航功能。我們可以將 $page
變數遞增和遞減 1 以指向上一頁和下一頁。我們可以使用 anchor
標籤中的遞增和遞減變數來實現 Next
和 Previous
功能。
例如,建立兩個變數,$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 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