首頁 > 後端開發 > php教程 > 如何實現智慧分頁以增強分頁控制?

如何實現智慧分頁以增強分頁控制?

Linda Hamilton
發布: 2024-10-17 16:12:02
原創
869 人瀏覽過

How to Implement Smart Pagination for Enhanced Pagination Control?

實作智慧分頁以最佳化分頁顯示

分頁透過將內容分割為可管理的頁面,在使用者瀏覽大型資料集的導覽中發揮著至關重要的作用。然而,傳統分頁可能會導致大量資料集出現大量頁面列表,使用戶難以有效導航。

為了解決這個問題,可以實現智慧分頁演算法,該演算法選擇性地僅顯示幾個相鄰頁面圍繞當前頁面。這種截斷技術最大限度地縮短了頁面清單的長度,透過提供更簡潔且易於管理的導航來增強使用者體驗。

在此示範中,我們將重點介紹智慧分頁演算法的PHP 實作:

<code class="php">// Limit the number of adjacent pages
$adjacents = 3;

// Fetch data for the current page
// ... (Code snippet omitted for brevity)

// Calculate pagination information
$total_pages = ceil($total_results / $limit);
$prev = $page - 1;
$next = $page + 1;
$lastpage = $lastpage - 1;

// Initialize pagination HTML markup
$pagination = '<nav aria-label="page navigation"><ul class="pagination">';

// Determine page range to display based on current page and adjacent page limit
if ($lastpage < 7 + ($adjacents * 2)) {
    // Display all pages
    for ($i = 1; $i <= $lastpage; $i++) {
        $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>";
    }
} else {
    // Display first and last pages
    $pagination .= "<li class='page-item'><a class='page-link' href='?page=1'>1</a></li>";
    $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>";
    $pagination .= "<li class='page-item'><a class='page-link' href='?page=$lastpage'>$lastpage</a></li>";

    // Display pages adjacent to the current page
    if ($page < 1 + ($adjacents * 2)) {
        // Display pages near the beginning
        for ($i = 1; $i < 4 + ($adjacents * 2); $i++) {
            $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>";
        }
    } elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
        // Display pages in the middle
        $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>";
        for ($i = $page - $adjacents; $i <= $page + $adjacents; $i++) {
            $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>";
        }
    } else {
        // Display pages near the end
        $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>";
        for ($i = $lastpage - (2 + ($adjacents * 2)); $i <= $lastpage; $i++) {
            $pagination .= "<li class='page-item" . ($i == $page ? ' active' : '') . "'><a class='page-link' href='?page=$i'>$i</a></li>";
        }
    }
}

// Display previous and next page links
if ($page != 1) {
    $pagination .= "<li class='page-item'><a class='page-link' href='?page=$prev'>Previous</a></li>";
}
if ($page != $lastpage) {
    $pagination .= "<li class='page-item'><a class='page-link' href='?page=$next'>Next</a></li>";
}

// Output pagination HTML
echo $pagination . '</ul></nav>';</code>
登入後複製

此實作使用循環和條件語句的組合來根據當前頁面和定義的相鄰頁面限制來決定要顯示的頁面。它還處理邊緣情況,例如第一頁或最後一頁,並相應地調整分頁顯示。透過利用這種智慧分頁演算法,您可以為廣泛的資料集提供更簡化且使用者友好的分頁體驗。

以上是如何實現智慧分頁以增強分頁控制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板