페이지 매김을 구현할 때 사용자에게 부담을 주지 않도록 표시되는 페이지 링크 수를 제한하는 것이 바람직한 경우가 많습니다. 이는 현재 페이지에 인접한 몇 개의 페이지만 표시하는 "스마트" 페이지 매김 알고리즘을 사용하여 달성할 수 있습니다.
다음 PHP 코드는 페이지를 자르는 스마트 페이지 매김 알고리즘을 보여줍니다. 현재 페이지에 인접한 두 페이지만 표시하는 페이지 목록:
<code class="php"><?php // Define number of adjacent pages to show $adjacents = 2; // Define number of items per page $limit = 5; // Get current page number $page = (int)$_GET["page"] ?? 1; // Calculate first item to display on this page $start = ($page - 1) * $limit; // Get data $data = $db ->query("SELECT * FROM mytable LIMIT $start, $limit") ->fetchAll(); // Calculate total number of pages $total_pages = count($data); // Setup page variables $prev = $page - 1; $next = $page + 1; $lastpage = ceil($total_pages / $limit); $lpm1 = $lastpage - 1; // Generate pagination markup $pagination = "<nav aria-label='page navigation'><ul class='pagination'>"; // Previous button $pagination .= "<li class='page-item" . ($page === 1 ? " disabled" : "") . "'><a class='page-link' href='?page=$prev'>« previous</a></li>"; // First pages $pagination .= "<li class='page-item" . ($page <= 2 ? " active" : "") . "'><a class='page-link' href='?page=1'>1</a></li>"; $pagination .= "<li class='page-item" . ($page <= 3 ? " active" : "") . "'><a class='page-link' href='?page=2'>2</a></li>"; // Ellipsis $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>"; // Main pagination if ($lastpage > 5 + ($adjacents * 2)) { // Close to beginning if ($page < 1 + ($adjacents * 2)) { for ($i = 3; $i <= 4 + ($adjacents * 2); $i++) { $pagination .= "<li class='page-item" . ($i === $page ? " active" : "") . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } // Close to end elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { 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>"; } } // In middle else { $pagination .= "<li class='page-item" . ($lpm1 === $page ? " active" : "") . "'><a class='page-link' href='?page=$lpm1'>$lpm1</a></li>"; $pagination .= "<li class='page-item" . ($lastpage === $page ? " active" : "") . "'><a class='page-link' href='?page=$lastpage'>$lastpage</a></li>"; } } else { for ($i = 3; $i <= $lastpage; $i++) { $pagination .= "<li class='page-item" . ($i === $page ? " active" : "") . "'><a class='page-link' href='?page=$i'>$i</a></li>"; } } // Ellipsis $pagination .= "<li class='page-item disabled'><span class='page-link'>...</span></li>"; // Last pages $pagination .= "<li class='page-item" . ($page >= $lastpage - 2 ? " active" : "") . "'><a class='page-link' href='?page=$lpm1'>$lpm1</a></li>"; $pagination .= "<li class='page-item" . ($page >= $lastpage - 1 ? " active" : "") . "'><a class='page-link' href='?page=$lastpage'>$lastpage</a></li>"; // Next button $pagination .= "<li class='page-item" . ($page >= $lastpage ? " disabled" : "") . "'><a class='page-link' href='?page=$next'>next »</a></li>"; $pagination .= "</ul></nav>"; if ($lastpage <= 1) { $pagination = ""; } echo $pagination; // Display data foreach ($data as $row) { // Display row data } echo $pagination;</code>
이 알고리즘은 인접 변수를 사용하여 현재 페이지의 각 측면에 표시되는 인접 페이지 수를 제어합니다. 또한 다음 기능도 포함되어 있습니다.
위 내용은 스마트 페이지 매김 알고리즘을 사용하여 PHP에서 페이지 매김 링크를 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!