程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 自動分頁類函數

php 自動分頁類函數

編輯:關於PHP編程

php教程 自動分頁類函數

不想重復的寫sql代碼,就用下面的函數去自動處理了。

$__t_page_moyo_html = '';
/**
*
* 臨時代碼:分頁處理函數
* @param string $sql
*/
function page_moyo($sql = '')
{
    global $__t_page_moyo_html;
    if ($sql == '')
    {
        return $__t_page_moyo_html;
    }
    // config
    $max = 12;
    $flag = 'page';
    // step .1 處理sql語句
    $sql_count = preg_replace('/select.*?from/is', 'select count(*) as mcnt from', $sql);
    // step .2 獲取數據量
    $result = dbc()->query($sql_count)->getrow();
    $total = $result['mcnt'];
    // step .3 判斷是否需要分頁
    if ($total < $max)
    {
        return $sql;
    }
    // step .4 獲取當前頁數
    $pn = isset($_get[$flag]) ? (int)$_get[$flag] : 1;
    if ($pn <= 0) $pn = 1;
    // step .5 重組sql語句
    $sql = $sql . ' limit '.($pn-1)*$max.','.$max;
    // step .6 組裝分頁html代碼
    $url = $_server['request_uri'];
    if (preg_match('/'.$flag.'=d+/i', $url))
    {
        $url = preg_replace('/[&]?'.$flag.'=d+/', '', $url);
    }
    $pageall = ceil($total/$max);
    $pre = '';
    if ($pn > 1)
    {
        $pre = ' / <a href="'.$url.'&'.$flag.'='.($pn-1).'">上一頁</a>';
    }
    $nxt = ' / <a href="'.$url.'&'.$flag.'='.($pn+1).'">下一頁</a>';
    $html = '<a href="'.$url.'">首頁</a>'.$pre.$nxt.' / <a href="'.$url.'&'.$flag.'='.$pageall.'">尾頁</a>';
    $__t_page_moyo_html = $html;
    return $sql;
}


在進行sql查詢前用page_moyo處理一下sql語句
     $sql = page_moyo($sql);
然後在需要顯示分頁鏈接的地方直接調用page_moyo輸出
     echo page_moyo();

如果要連續進行兩次大數據量sql查詢的話就要在第一次查詢後存儲下當時的分頁代碼,不然下個sql查詢就會覆蓋掉了

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved