最全最詳細的php分頁函數(shù)

/*

  • 調(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;
}
             ```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末申窘,一起剝皮案震驚了整個濱河市弯蚜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偶洋,老刑警劉巖熟吏,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡牵寺,警方通過查閱死者的電腦和手機悍引,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帽氓,“玉大人趣斤,你說我怎么就攤上這事±栊荩” “怎么了浓领?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長势腮。 經(jīng)常有香客問我联贩,道長,這世上最難降的妖魔是什么捎拯? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任泪幌,我火速辦了婚禮,結(jié)果婚禮上署照,老公的妹妹穿的比我還像新娘祸泪。我一直安慰自己,他們只是感情好建芙,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布没隘。 她就那樣靜靜地躺著,像睡著了一般禁荸。 火紅的嫁衣襯著肌膚如雪右蒲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天屡限,我揣著相機與錄音品嚣,去河邊找鬼。 笑死钧大,一個胖子當著我的面吹牛翰撑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啊央,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼眶诈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瓜饥?” 一聲冷哼從身側(cè)響起逝撬,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乓土,沒想到半個月后宪潮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溯警,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年狡相,在試婚紗的時候發(fā)現(xiàn)自己被綠了梯轻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尽棕,死狀恐怖喳挑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滔悉,我是刑警寧澤伊诵,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站回官,受9級特大地震影響曹宴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歉提,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一浙炼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唯袄,春花似錦、人聲如沸蜗帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厅缺。三九已至蔬顾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間湘捎,已是汗流浹背诀豁。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窥妇,地道東北人舷胜。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像活翩,于是被迫代替她去往敵國和親烹骨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 作者:鄒峰立材泄,微博:zrunker沮焕,郵箱:zrunker@yahoo.com,微信公眾號:書客創(chuàng)作拉宗,個人平臺:ww...
    吾非言閱讀 1,128評論 0 1
  • 1.背景介紹 洗牌算法是我們常見的隨機問題峦树,在玩游戲辣辫、隨機排序時經(jīng)常會碰到,本質(zhì)是讓一個數(shù)組內(nèi)的元素隨機排列魁巩。 類...
    茍況勸學閱讀 1,177評論 0 0
  • 前段時間有好多朋友在問H-ui的分頁怎么整急灭,那么我今天來告訴大家我的分頁方式,第一次發(fā)可能做的不是太好歪赢,大佬請不要...
    微風間間閱讀 4,311評論 1 0
  • 當你飛得遠了化戳, 父母見你的第一眼, 是眼淚埋凯。 你以為点楼, 繁華浮世看得多了, 你見父母的第一眼白对, 是愧疚掠廓。
    SomeonelikeyouX閱讀 116評論 1 0
  • 最近媽媽身體出了一些問題,需要有人在家陪護甩恼,鄰居的父親的身體也出了一些問題蟀瞧。我是獨生子女,我媽媽生病条摸,義無反顧...
    青苗媽2016閱讀 623評論 5 0