/*
- 調(diào)用:$page=page(100,10,9,'page');
-
返回值:array('limit','html')
效果如下圖所示:
參數(shù)說明:$count:總記錄數(shù),$page_size:每頁顯示的記錄數(shù)洒疚,$num_btn:要展示的頁碼按鈕數(shù)目歹颓,$page:分頁的get參數(shù),
page.jpg
*/
function page($count,$page_size,$num_btn=10,$page='page'){
if($count==0){//如果沒有記錄返回空的字符串
$data=array(
'limit'=>'',
'html'=>''
);
return $data
};
//如果獲得的page參數(shù)不合法,默認參數(shù)等于1
if(!isset($_GET[$page])||!is_numeric($_GET[$page])||$_GET[$page]<1){
$_GET[$page]=1
};
$page_num_all=ceil($count/$page_size);//頁碼數(shù)向上取整
//如果頁碼參數(shù)大于頁碼總頁數(shù)油湖,page就默認等于最大頁碼數(shù)
if($_GET[$page]>$page_num_all){
$_GET[$page]=$page_num_all
};
//根據(jù)當前page參數(shù)計算起始數(shù)據(jù)值巍扛,比如有100條數(shù)據(jù),每頁顯示10條乏德,那么第三頁起始值得index就是$start
$start=($_GET[$page]-1)*$page_size;
$limit="limit {$start},{$page_size}";//從index為$start開始取撤奸,取$page_size條
$current_url=$_SERVER['REQUEST_URI'];//獲取當前url地址
$arr_current=parse_url($current_url);//將當前url拆分到數(shù)組里面
$current_path=$arr_current['path'];//將文件路徑部分保存起來
$url=''";///定義按鈕點擊的路徑
if(isset($arr_current['query'])){//判斷當前url地址是否存在參數(shù)部分
parse_str($arr_current['query'],$arr_query);//如果存在參數(shù)部分,則將參數(shù)拆分
unset($arr_query[$page]);//刪掉參數(shù)部分的page
if(empty($arr_query)){//刪掉page參數(shù)后判斷url是否沒有其他參數(shù)
$url="{$current_path}?{$page}=";//如果除了刪掉page后沒有其他參數(shù)喊括,直接在當前路徑后加上page=
}else{
$other=http_build_query($arr_query);//除了page還有其他參數(shù)的話就將其他參數(shù)轉(zhuǎn)換成字符串接在當前路徑后面
$url="{$current_path}?{$other}&{$page}=";//在當前路徑后接上拆分后處理好的參數(shù)
}
}else{
$url="{$current_path}?$page=";//如果不存在參數(shù)部分胧瓜,則直接在url后添加參數(shù)
};
$html=array();//定義$html為數(shù)組
if($num_btn>=$page_num_all){//如果傳入的按鈕數(shù)目參數(shù)大于總的頁碼數(shù)郑什,直接默認顯示所有頁碼按鈕
for($i=1;$i<=$page_num_all;$i++){//$i既是限制循環(huán)次數(shù)的變量府喳,也是頁碼號
if($_GET[$page]==$i){
$html[$i]="{$i} ";
}else{
$html[$i]="{$i} ";
}
}
}else{
$num_left=floor(($num_btn-1)/2);//獲得左邊的按鈕數(shù)目,向下取整
$start=$_GET[$page]-$num_left;//獲得左邊起始頁碼數(shù)字
$end=$start+($num_btn-1);//獲得最右邊頁碼數(shù)字
if($start<1){//如果最左邊按鈕數(shù)字小于1蘑拯,默認等于1
$start=1;
}
if($end>$page_num_all){//如果最右邊頁碼數(shù)大于最大頁碼數(shù)钝满,默認等于1
$start=$page_num_all-($num_btn-1);
}
for($i=0;$i<$num_btn;$i++){//$i既是限制循環(huán)次數(shù)的變量,也是頁碼號
if($_GET[$page]==$start){
$html[$start]="{$start} ";
}else{
$html[$start]="{$start}";
}
$start++;
}
//當按鈕數(shù)目大于等于三的時候做省略號效果
if(count($html)>=3){
reset($html);
$key_first=key($html);
$key_end=key($html);
if($key_first!=1){
array_shift($html);
array_unshift($html,"1...");
}
if($key_end!=$page_num_all){
array_pop($html);
array_push($html,"...{$page_num_all}");
}
}
}
if($_GET[$page]!=1){
$prev=$_GET[$page]-1;
array_unshift($html,"<上一頁 ");
}
if($_GET[$page]!=$page_num_all) {
$next = $_GET[$page] + 1;
array_push($html,"下一頁>");
}
$html=implode(' ',$html);
$data=array(
'limit'=>$limit,
'html'=>$html
);
return $data;
}
```