Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Penomboran Pintar untuk Kawalan Penomboran Dipertingkatkan?

Bagaimana untuk Melaksanakan Penomboran Pintar untuk Kawalan Penomboran Dipertingkatkan?

Linda Hamilton
Linda Hamiltonasal
2024-10-17 16:12:02748semak imbas

How to Implement Smart Pagination for Enhanced Pagination Control?

Melaksanakan Penomboran Pintar untuk Paparan Penomboran Dioptimumkan

Penomboran memainkan peranan penting dalam navigasi pengguna melalui set data yang besar dengan membahagikan kandungan kepada halaman yang boleh diurus. Walau bagaimanapun, penomboran tradisional boleh membawa kepada senarai halaman yang luas untuk set data yang luas, menyukarkan pengguna untuk menavigasi dengan berkesan.

Untuk menangani isu ini, algoritma penomboran pintar boleh dilaksanakan, yang secara selektif menunjukkan hanya beberapa halaman bersebelahan mengelilingi halaman semasa. Teknik pemangkasan ini meminimumkan panjang senarai halaman, mempertingkatkan pengalaman pengguna dengan menyediakan navigasi yang lebih ringkas dan terurus.

Dalam demonstrasi ini, kami akan menumpukan pada pelaksanaan PHP bagi algoritma penomboran pintar:

<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>

Pelaksanaan ini menggunakan gabungan gelung dan pernyataan bersyarat untuk menentukan halaman yang hendak dipaparkan berdasarkan halaman semasa dan had halaman bersebelahan yang ditentukan. Ia juga mengendalikan kes tepi seperti halaman pertama atau terakhir dan melaraskan paparan penomboran sewajarnya. Dengan memanfaatkan algoritma penomboran pintar ini, anda boleh memberikan pengalaman penomboran yang lebih diperkemas dan mesra pengguna untuk set data yang luas.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penomboran Pintar untuk Kawalan Penomboran Dipertingkatkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn