首頁 >資料庫 >mysql教程 >如何在MySQL中使用LIMIT和OFFSET動態生成分頁連結?

如何在MySQL中使用LIMIT和OFFSET動態生成分頁連結?

Linda Hamilton
Linda Hamilton原創
2024-12-05 15:17:10869瀏覽

How to Dynamically Generate Pagination Links in MySQL Using LIMIT and OFFSET?

使用MySQL LIMIT、OFFSET 進行分頁:動態頁面建立

分頁允許使用者透過每頁顯示有限數量的項目來導航大型資料集。透過利用 MySQL LIMIT 和 OFFSET 子句,我們可以有效地檢索特定頁的資料。

但是,為每個潛在頁碼建立單獨的頁是低效的。相反,我們可以根據資料庫中的總行數動態來確定頁數。

確定頁數

找出總頁數頁,我們必須先使用單獨的查詢計算表中的總行數。

SELECT COUNT(*) FROM menuitem

這將傳回帶有包含總行數的欄位。

計算頁數

然後,我們可以透過將總行數除以每頁所需的項目並四捨五入來計算總頁數直到最接近的整數。

$page_count = (int)ceil($row_count / $items_per_page);

調整無效頁面請求

當使用者要求不存在的頁面時(例如,只有3個頁面時,請求第5頁),我們可以根根據情況將其重定向到最後一頁或第一頁.

輸出頁面連結

一旦我們知道了總頁數,我們就可以產生頁面連結列表。對於當前頁面,我們將其顯示為文本,而對於其他頁面,我們會建立指向它們的連結。

for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) { // current page
    echo 'Page ' . $i . '<br>';
  } else { // link to other page
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}

修訂程式碼

使用動態頁面計算方法,修改後的程式碼可能如下所示:

// Get page number from URL
$page = 1;
if (!empty($_GET['page'])) {
  $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
  if (false === $page) {
    $page = 1;
  }
}

// Get total row count
$sql = "SELECT COUNT(*) FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
mysqli_free_result($result);

// Calculate page count
$page_count = (int)ceil($row_count / $items_per_page);

// Double check page is in range
if ($page > $page_count) {
  $page = 1;
}

// Calculate offset
$offset = ($page - 1) * $items_per_page;

// Select limited data
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
$result = mysqli_query($con, $sql);
// ... (Rest of your code) ...

// Output page links
for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) {
    echo 'Page ' . $i . '<br>';
  } else {
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}

此程式碼允許您根據頁面數量動態建立頁面資料庫中的行,無需硬編碼頁碼和偏移量。

以上是如何在MySQL中使用LIMIT和OFFSET動態生成分頁連結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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