簡體   English   中英

分頁-頁數

[英]Pagination - number of pages

這是我的分頁:

if (isset(filter_input_array(INPUT_GET)["page"])) {
    $page= filter_input(INPUT_GET, 'page', FILTER_SANITIZE_SPECIAL_CHARS);
} else {
    $page= 1;
}

$request= "";

if (filter_input_array(INPUT_POST)) {
    $request= filter_input(INPUT_POST, 'request', FILTER_SANITIZE_SPECIAL_CHARS);
} else if (isset(filter_input_array(INPUT_GET)["request"])) {
    $request= filter_input(INPUT_GET, 'request', FILTER_SANITIZE_SPECIAL_CHARS);
}

數據庫:

$sql = DB::getInstance()->query("SELECT * FROM users LIMIT " . (($page* 50) - 50) . ",50");

index.php

<nav role="navigation">
   <ul class="cd-pagination custom-buttons">
       <li class="arrows"><a href="index.php?page=<?php
         if ($page > 1) {
           $prev= $page - 1;
           echo escape($prev);
         } else {
           echo 1;
         }?>&request=<?php echo escape($request) ?>">Prev</a></li>

         <li class="arrows">
         <a href="index.php?page=<?php echo escape(++$page); ?>&request=
         <?php echo escape($request) ?>">Next</a></li>
   </ul>
</nav> 

像這樣工作正常,但我希望它顯示的頁面數不僅僅是上一頁/下一頁。 我在互聯網上尋找溶液,但沒有任何效果。

沒有LIMIT查詢:

SELECT * FROM users;

從此查詢獲取行數。 我看不到您的數據庫類,所以不知道您正在使用哪種實現。 查看有關num_rows的文檔

然后,您需要執行以下操作: ceil($numRows / $numberOfResultsPerPage); 獲取頁數。

if (isset($_GET["p"])) { 
    $p = $_GET["p"]; 
} else { 
    $p = 1; 
}

$per_page = 50
$from = ($p-1) * $per_page; 


$sql = DB::getInstance()->query("SELECT COUNT(*) as total FROM users LIMIT $from,$per_page");

然后,使用總計,您可以使用ceil函數獲取頁面數

$total_pages = ceil($total / $per_page);

最后,在$ total_pages上進行分支,以將每個頁面顯示為<a href="?p=$i"></a>元素。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM