PHP實(shí)現(xiàn)仿Google分頁效果的分頁函數(shù)
本文實(shí)例講述了PHP實(shí)現(xiàn)仿Google分頁效果的分頁函數(shù)。分享給大家供大家參考。具體如下:
/** * 分頁函數(shù) * @param int $total 總頁數(shù) * @param int $pagesize 每頁幾條 * @param string $pkey url中頁面變量名稱 * @param string $url 基礎(chǔ)url,其中的{page}會(huì)被替換為頁碼 * 依賴函數(shù) request_uri httpInt */ function page($total,$pagesize=10,$pkey='p',$url=null){ $a_num=10; $first=' 首頁 '; $last=' 尾頁 '; $pre=' 上頁 '; $next=' 下頁 '; $a_num=$a_num%2==0?$a_num+1:$a_num; if(!$url){ $url=preg_replace("/&?{$pkey}=[^&]{0,}/", '',request_uri()); $url=strpos($url, '?')===FALSE?$url.'?'.$pkey.'={page}':$url.'&'.$pkey.'={page}'; } $pages=ceil($total/$pagesize); $curpage=httpInt($pkey,false,1); $curpage=$curpage>$pages||$curpage<=0?1:$curpage;//當(dāng)前頁超范圍置為1 $body='';$prefix='';$subfix=''; $start=$curpage-($a_num-1)/2;//開始頁 $end=$curpage+($a_num-1)/2; //結(jié)束頁 $start=$start<=0?1:$start; //開始頁超范圍修正 $end=$end>$pages?$pages:$end;//結(jié)束頁超范圍修正 if($pages>=$a_num){//總頁數(shù)大于顯示頁數(shù) if($curpage<=($a_num-1)/2){$end=$a_num;}//當(dāng)前頁在左半邊補(bǔ)右邊 if($end-$curpage<=($a_num-1)/2){$start-=5-($end-$curpage);}//當(dāng)前頁在右半邊補(bǔ)左邊 } for($i=$start;$i<=$end;$i++){ if($i==$curpage){ $body.='<b>'.$i.'</b>'; }else{ $body.='<a href="'.str_replace('{page}',$i,$url).'"> '.$i.' </a>'; } } $prefix=($curpage==1?'':'<a href="'.str_replace('{page}',1,$url).'">'.$first.'</a><a href="'.str_replace('{page}',$curpage-1,$url).'">'.$pre.'</a>'); $subfix=($curpage==$pages?'':'<a href="'.str_replace('{page}',$curpage+1,$url).'">'.$next.'</a><a href="'.str_replace('{page}',$pages,$url).'">'.$last.'</a>'); $info=" 第{$curpage}/{$pages}頁 "; $go='<script>function ekup(){if(event.keyCode==13){clkyup();}}function clkyup(){if(!/\d+/.test(document.getElementById(\'gsd09fhas9d\').value)){alert(\'請輸入頁碼!\');return;};location=\''.$url.'\'.replace(/\\{page\\}/,document.getElementById(\'gsd09fhas9d\').value);}</script><input onkeyup="ekup()" type="text" id="gsd09fhas9d" style="width:40px;vertical-align:text-baseline;padding:0 2px;font-size:10px;border:1px solid gray;"/> <span id="gsd09fhas9daa" onclick="clkyup();" style="cursor:pointer;text-decoration:underline;">轉(zhuǎn)到</span>'; return $prefix.$body.$subfix.$info.$go; } /** * 說明:獲取 _SERVER['REQUEST_URI'] 值的通用解決方案 */ function request_uri() { if (isset($_SERVER['REQUEST_URI'])) { $uri = $_SERVER['REQUEST_URI']; } else { if (isset($_SERVER['argv'])) { $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0]; } else { $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING']; } } return $uri; } /** * 獲取HTTP傳遞的整數(shù) * @param string $key 參數(shù)名稱 * @param bool $ispost 采取POST傳遞方式,默認(rèn)為真http://blog.ddian.cn * @return 整數(shù),非法時(shí)默認(rèn)為 $default */ function httpInt($key, $ispost=true,$default=0) { if ($ispost) { if (isset($_POST[$key])) { if (empty($_POST[$key])) { return $default; } else { $val = trim($_POST[$key]); if (preg_match("/^\-?\d+$/", $val)) return intval($val); else return $default; } } else { return $default; } } else { if (isset($_GET[$key])) { if (empty($_GET[$key])) { return $default; } else { $val = trim($_GET[$key]); if (preg_match("/^\-?\d+$/", $val)) { return intval($val); } else { return $default; } } } else { return $default; } } }
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
- php jquery 實(shí)現(xiàn)新聞標(biāo)簽分類與無刷新分頁
- FCKEditor+jQuery+PHP實(shí)現(xiàn)分頁代碼
- 使用PHP+JQuery+Ajax分頁的實(shí)現(xiàn)
- 推薦一款PHP+jQuery制作的列表分頁的功能模塊
- ThinkPHP分頁實(shí)例
- 仿dedecms下拉分頁樣式修改的thinkphp分頁類實(shí)例
- ThinkPHP有變量的where條件分頁實(shí)例
- PHP分頁類集錦
- php 使用array函數(shù)實(shí)現(xiàn)分頁
- php簡單分頁類實(shí)現(xiàn)方法
- PHP讀取txt文本文件并分頁顯示的方法
- 分享php分頁的功能模塊
- PHP實(shí)現(xiàn)簡單數(shù)字分頁效果
- 分享PHP函數(shù)實(shí)現(xiàn)數(shù)字與文字分頁代碼
- jQuery+Ajax+PHP+Mysql實(shí)現(xiàn)分頁顯示數(shù)據(jù)實(shí)例講解
- PHP+jQuery+Ajax實(shí)現(xiàn)分頁效果 jPaginate插件的應(yīng)用
相關(guān)文章
PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析
這篇文章主要介紹了PHP MVC框架中類的自動(dòng)加載機(jī)制,結(jié)合實(shí)例形式分析了MVC框架中類的自動(dòng)加載機(jī)制原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09PHP實(shí)現(xiàn)動(dòng)態(tài)壓縮js與css文件的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)動(dòng)態(tài)壓縮js與css文件的方法,涉及php文件讀寫及字符串替換等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05用PHP調(diào)用Oracle存儲(chǔ)過程的方法
php程序訪問數(shù)據(jù)庫,完全可以使用存儲(chǔ)過程,有人認(rèn)為使用存儲(chǔ)過程便于維護(hù)。不過仁者見仁,智者見智,在這個(gè)問題上,偶認(rèn)為使用存儲(chǔ)過程意味著必須要dba和開發(fā)人員更緊密配合,如果其中一方更變,則顯然難以維護(hù)。2008-09-09PHP結(jié)合jQuery實(shí)現(xiàn)找回密碼
本文將使用PHP+Mysql+jQuery來實(shí)現(xiàn)一個(gè)密碼找回的功能,分享給大家思路和具體的代碼,有需要的小伙伴可以參考下。2015-07-07php中sprintf與printf函數(shù)用法區(qū)別解析
這篇文章主要介紹了php中sprintf與printf函數(shù)用法區(qū)別解析,需要的朋友可以參考下2014-02-02關(guān)于更改Zend Studio/Eclipse代碼風(fēng)格主題的介紹
本篇文章是對(duì)關(guān)于更改Zend Studio/Eclipse代碼風(fēng)格主題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06echo(),print(),print_r()之間的區(qū)別?
echo(),print(),print_r()之間的區(qū)別?...2006-11-11