首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP分頁函數完整實現:支援自定義顯示條數、URL參數保留與多種導航模式

     編輯:PHP 相關知識

功能完整的PHP分頁函數,支援自定義每頁顯示條數、保留原URL參數、首頁/尾頁/上下頁/頁碼下拉選單多種導航模式。

函數特性

  • 自動檢測REQUEST_URI保留查詢參數
  • 支援shownum(每頁條數)、page(當前頁)、total(總記錄數)參數
  • 智能生成首頁、上頁、下頁、尾頁、頁碼下拉選單
  • 顯示「第X-Y條,共Z條」統計信息
  • 防重複定義檢查

核心代碼

function pageDivide($total, $shownum = 20, $page = '', $showname = '', $showpage = '', $showselect = '') {
    if (!isset($_GET['page'])) $_GET['page'] = 1;
    $page = max(1, intval($_GET['page']));
    
    $url = $_SERVER['REQUEST_URI'];
    $parse = parse_url($url);
    $query = isset($parse['query']) ? $parse['query'] : '';
    $query = preg_replace("/([&?])page=\d+/", "", $query);
    $pageParam = $query ? "&page=" : "?page=";
    
    $start = ($page - 1) * $shownum;
    $prev = max(1, $page - 1);
    $next = min(ceil($total / $shownum), $page + 1);
    $last = ceil($total / $shownum);
    
    $html = "顯示第 " . ($start + 1) . "-" . min($start + $shownum, $total) . " 條記錄,共 <B>$total</B> 條記錄";
    
    if ($page > 1) {
        $html .= " <a href='$pageParam=1'>首頁</a> ";
        $html .= " <a href='$pageParam=$prev'>上頁</a> ";
    }
    
    $html .= " <a href='$pageParam=$next'>下頁</a> ";
    $html .= " <a href='$pageParam=$last'>尾頁</a> ";
    
    if ($showselect) {
        $html .= " 到第 <select name='topage' onchange='window.location=\"$pageParam=\"+this.value'>";
        for ($i = 1; $i <= $last; $i++) {
            $sel = ($i == $page) ? " selected" : "";
            $html .= "<option value='$i'$sel>$i</option>";
        }
        $html .= "</select> 頁,共 $last 頁";
    }
    
    return $html;
}

使用示例

// 基礎用法
echo pageDivide($totalRows, 20);

// 保留其他查詢參數
echo pageDivide($totalRows, 15, '', '', '', true); // 顯示下拉選單

// 在SQL中使用
$offset = ($page - 1) * $shownum;
$sql = "SELECT * FROM table LIMIT $offset, $shownum";

進階擴展建議

  • 添加ajax參數支援無刷新分頁
  • 實現...省略頁碼顯示模式(如1 2 3 ... 10 11 12)
  • 支援bootstrap/tailwind等CSS框架類名
  • 加入緩存機制避免重複計算總數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved