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查詢就會覆蓋掉了