PHP分页类
2017-03-29 10:44
267 查看
实例演示简易通用的PHP分页类
关于php分页类,网上有无数多个例子。水平参差不齐,孰优孰劣也没有一一考量。但可以肯定的是,一定有很多优秀的代码。开源最大的好处就是能使功能不断的完善,分享也是一样的道理,众人拾柴火焰高嘛!
笔者在这里把代码贴出来,抛砖引玉。
先来看一下最终的显示效果
1 .简易php分页类.png
2 .[PHP]代码
3 .页面代码
简单分页
PHP分页类,支持自定义样式,中间5页等
万能的分页类
关于php分页类,网上有无数多个例子。水平参差不齐,孰优孰劣也没有一一考量。但可以肯定的是,一定有很多优秀的代码。开源最大的好处就是能使功能不断的完善,分享也是一样的道理,众人拾柴火焰高嘛!
笔者在这里把代码贴出来,抛砖引玉。
先来看一下最终的显示效果
1 .简易php分页类.png
2 .[PHP]代码
<?php /*********************************************** * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 源码布道者 */ class page { private $myde_total; //总记录数 private $myde_size; //一页显示的记录数 private $myde_page; //当前页 private $myde_page_count; //总页数 private $myde_i; //起头页数 private $myde_en; //结尾页数 private $myde_url; //获取当前的url /* * $show_pages * 页面显示的格式,显示链接的页数为2*$show_pages+1。 * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页] */ private $show_pages; public function __construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){ $this->myde_total = $this->numeric($myde_total); $this->myde_size = $this->numeric($myde_size); $this->myde_page = $this->numeric($myde_page); $this->myde_page_count = ceil($this->myde_total/$this->myde_size); $this->myde_url = $myde_url; if($this->myde_total<0) $this->myde_total=0; if($this->myde_page<1) $this->myde_page=1; if($this->myde_page_count<1) $this->myde_page_count=1; if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count; $this->limit = ($this->myde_page-1)*$this->myde_size; $this->myde_i=$this->myde_page-$show_pages; $this->myde_en=$this->myde_page+$show_pages; if($this->myde_i<1){ $this->myde_en=$this->myde_en+(1-$this->myde_i); $this->myde_i=1; } if($this->myde_en>$this->myde_page_count){ $this->myde_i = $this->myde_i-($this->myde_en-$this->myde_page_count); $this->myde_en=$this->myde_page_count; } if($this->myde_i<1)$this->myde_i=1; } //检测是否为数字 private function numeric($num){ if(strlen($num)){ if(!preg_match("/^[0-9]+$/",$num)){ $num=1; }else{ $num = substr($num,0,11); } }else{ $num=1; } return $num; } //地址替换 private function page_replace($page){ return str_replace("{page}",$page,$this->myde_url); } //首页 private function myde_home(){ if($this->myde_page!=1){ return "<a href="".$this->page_replace(1)."" title="首页">首页</a>"; }else{ return "<p>首页</p>"; } } //上一页 private function myde_prev(){ if($this->myde_page!=1){ return "<a href="".$this->page_replace($this->myde_page-1)."" title="上一页">上一页</a>"; }else{ return "<p>上一页</p>"; } } //下一页 private function myde_next(){ if($this->myde_page!=$this->myde_page_count){ return "<a href="".$this->page_replace($this->myde_page+1)."" title="下一页">下一页</a>"; }else{ return"<p>下一页</p>"; } } //尾页 private function myde_last(){ if($this->myde_page!=$this->myde_page_count){ return "<a href="".$this->page_replace($this->myde_page_count)."" title="尾页">尾页</a>"; }else{ return "<p>尾页</p>"; } } //输出 public function myde_write($id='page'){ $str ="<div id="".$id."">"; $str.=$this->myde_home(); $str.=$this->myde_prev(); if($this->myde_i>1){ $str.="<p class="pageEllipsis">...</p>"; } for($i=$this->myde_i;$i<=$this->myde_en;$i++){ if($i==$this->myde_page){ $str.="<a href="".$this->page_replace($i)."" title="第".$i."页" class="cur">$i</a>"; }else{ $str.="<a href="".$this->page_replace($i)."" title="第".$i."页">$i</a>"; } } if( $this->myde_en<$this->myde_page_count ){ $str.="<p class="pageEllipsis">...</p>"; } $str.=$this->myde_next(); $str.=$this->myde_last(); $str.="<p class="pageRemark">共<b>".$this->myde_page_count. "</b>页<b>".$this->myde_total."</b>条数据</p>"; $str.="</div>"; return $str; } } ?>
3 .页面代码
<?php require_once('./page.class.php'); //分页类 $showrow = 3;//一页显示的行数 $curpage = empty($_GET['page'])?1:$_GET['page'];//当前的页,还应该处理非数字的情况 $url = "?page={page}";//分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q'] //省略了链接mysql的代码,测试时自行添加 $sql = "SELECT * FROM table"; $query = mysql_query($sql); $total = mysql_num_rows($query);//记录总条数 if(!empty($_GET['page']) && $total !=0 && $curpage > ceil($total/$showrow)) $curpage = ceil($total_rows/$showrow);//当前页数大于最后页数,取最后一页 //获取数据 $get_data = "select * from table limit ".($curpage-1)*$showrow.",$showrow;"; ... ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>实例演示简易通用的PHP分页类</title> <style type="text/css"> #page{ height:40px; padding:20px 0px; } #page a{ display:block; float:left; margin-right:10px; padding:2px 12px; height:24px; border:1px #cccccc solid; background:#fff; text-decoration:none; color:#808080; font-size:12px; line-height:24px; } #page a:hover{ color:#077ee3; border:1px #077ee3 solid; } #page a.cur{ border:none; background:#077ee3; color:#fff; } #page p{ float:left; padding:2px 12px; font-size:12px; height:24px; line-height:24px; color:#bbb; border:1px #ccc solid; background:#fcfcfc; margin-right:8px; } #page p.pageRemark{ border-style:none; background:none; margin-right:0px; padding:4px 0px; color:#666; } #page p.pageRemark b{ color:red; } #page p.pageEllipsis{ border-style:none; background:none; padding:4px 0px; color:#808080; } </style> </head> <body> <div class="main"> <div class="showData"> <!--显示数据区--> </div> <div class="showPage"> <?php if($total>$showrow){//总记录数大于每页显示数,显示分页 $page = new page($total,$showrow,$curpage,$url,2); echo $page->myde_write(); } ?> </div> </div> </body> </html>
简单分页
/** * 自定义分页方法 * @param unknown_type $url #分页url,页码采用'%s'表示,例如:http://test.ebers.com/tags/xxx/%s/ * @param unknown_type $cur_page #当前页码 * @param unknown_type $page_fix #当前页码前后需要显示多少个页码 * @param intval $total_rows #数据总数 * @param intval $pagesize #每页显示多少数据 * @param string $cur_page_calss #当前页css样式名称 */ public function pagenation($url, $cur_page=1, $page_fix=2, $total_rows=0, $pagesize=10, $cur_page_calss='disable'){ #计算总页数 $pagesize = $pagesize>0?$pagesize:10; $total_page = ceil($total_rows / $pagesize); $code = ''; if($total_page>1){ $pager = array(); #首页 $pager[] = sprintf( '<ul><li><a href="%s">首页</a></li>', sprintf($url, 1) ); #页码列表 for($page_num=$cur_page-$page_fix; $page_num<$cur_page+$page_fix; $page_num++){ if($page_num<1 || $page_num>$total_page){ continue; } $pager[] = sprintf( '<li class="%s"><a href="%s">%s</a></li>', ( $page_num==$cur_page?$cur_page_calss:'' ), sprintf($url, $page_num), $page_num ); } #末页 $pager[] = sprintf( '<li><a href="%s">末页</a></li><li>共%s条,第%s/%s页</li></ul>', sprintf($url, $total_page), $total_rows, $cur_page, $total_page ); $code = implode("\n", $pager); unset($pager); } return $code; }
PHP分页类,支持自定义样式,中间5页等
<?php //namespace Component; /** * 2016-3-27 * @author ankang */ class Page { private $ShowPage; private $CountPage; private $Floorp; private $PageUrl; private $PageClass; private $CurClass; /** * @author ankang * @param number $CountNum 数据总数 * @param string $PageUrl 跳转链接 * @param string $PageClass <a>标签 总体样式 * @param string $PageUrl 当前页样式 * @param number $PageSize 每页显示的数据条数 * @param number $ShowPage 每次显示的页数 */ public function __construct($CountNum, $PageUrl = NULL, $PageClass = NULL,$CurClass = NULL, $PageSize = 20, $ShowPage = 5) { $this->ShowPage = $ShowPage; $this->CountPage = ceil ( $CountNum / $PageSize ); $this->Floorp = floor ( $ShowPage / 2 ); // 偏移量 $this->PageClass = is_null ( $PageClass ) ? '' : $PageClass; $this->CurClass = is_null ( $CurClass ) ? '' : $CurClass; // $ServerURL = ( preg_match('/\?/i', $_SERVER['REQUEST_URI']))?preg_replace('/\&p\=[0-9]+/i', "", $_SERVER['REQUEST_URI']) : $_SERVER['REQUEST_URI']."?"; // if( substr($ButURL,0,2)=='//' ){ // $ServerURL = substr($ServerURL,1); // } // $url = preg_replace('/p=[\d]*/i', '', $ServerURL); $url = ''; //推荐自己传url,不传也可以打开上面的代码自动获取 $this->PageUrl = is_null ( $PageUrl ) ? $url : $PageUrl; } /** * * @param number $Page * @param string $ShowToPage * 首页,上下页,尾页 * @param string $Html 标签元素,li,p * @return string */ public function getPage($Page = 1, $ShowToPage = true, $Html = null) { $StartPage = ($Page - $this->Floorp); // 开始页码 $EndPage = ($Page + $this->Floorp); // 结束页码 if ($this->CountPage < $this->ShowPage) { $StartPage = 1; $EndPage = $this->CountPage; } if ($StartPage < 1) { $StartPage = 1; $EndPage = $this->ShowPage; } if ($EndPage > $this->CountPage) { $StartPage = $this->CountPage - $this->ShowPage + 1; $EndPage = $this->CountPage; } $PageHtml = ''; if (! is_null ( $Html )) { if ($Html == 'li') { $Shtml = '<li>'; $Ehtml = '</li>'; } else { $Shtml = '<p>'; $Ehtml = '</p>'; } } if (true == $ShowToPage) { $PageHtml .= "$Shtml<a href='{$this->PageUrl}p=1'>« 首页</a>$Ehtml"; $PrveUrl = $this->getPrve($Page); $PageHtml .= "$Shtml<a href='{$PrveUrl}'>« 上一页</a>$Ehtml"; } for($i = $StartPage; $i <= $EndPage; $i ++) { if ($Page == $i) { $PageHtml .= "$Shtml<a href='{$this->PageUrl}p={$i}' class='{$this->CurClass}'>{$i}</a>$Ehtml"; } else { $PageHtml .= "$Shtml<a href='{$this->PageUrl}p={$i}' class='{$this->PageClass}'>{$i}</a>$Ehtml"; } } if (true == $ShowToPage) { $NextUrl = $this->getNext($Page); $PageHtml .= "$Shtml<a href='{$NextUrl}'>下一页 »</a>$Ehtml"; $PageHtml .= "$Shtml<a href='{$this->PageUrl}p={$this->CountPage}' >尾页 »</a>$Ehtml"; } return $PageHtml; } public function getPrve($Page){ if ($Page != 1) { $Prve = $Page - 1; $PrveUrl = "{$this->PageUrl}p={$Prve}"; } else { $PrveUrl = "{$this->PageUrl}p=1"; } return $PrveUrl; } public function getNext($Page){ if ($Page != $this->CountPage) { $Next = $Page + 1; $NextUrl = "{$this->PageUrl}p={$Next}"; } else { $NextUrl = "{$this->PageUrl}p={$this->CountPage}"; } return $NextUrl; } }
万能的分页类
<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * 分页类 * 使用方式: * $page = new Page(); * $page->init(1000, 20); * $page->setNotActiveTemplate('<span> {a} </span>'); * $page->setActiveTemplate('{a}'); * echo $page->show(); * * * @author 风居住的地方 */ class Page { /** * 总条数 */ private $total; /** * 每页大小 */ private $pageSize; /** * 总页数 */ private $pageNum; /** * 当前页 */ private $page; /** * 地址 */ private $uri; /** * 分页变量 */ private $pageParam; /** * LIMIT XX,XX */ private $limit; /** * 数字分页显示 */ private $listnum = 8; /** * 分页显示模板 * 可用变量参数 * {total} 总数据条数 * {pagesize} 每页显示条数 * {start} 本页开始条数 * {end} 本页结束条数 * {pagenum} 共有多少页 * {frist} 首页 * {pre} 上一页 * {next} 下一页 * {last} 尾页 * {list} 数字分页 * {goto} 跳转按钮 */ private $template = '<div><span>共有{total}条数据</span><span>每页显示{pagesize}条数据</span>,<span>本页{start}-{end}条数据</span><span>共有{pagenum}页</span><ul>{frist}{pre}{list}{next}{last}{goto}</ul></div>'; /** * 当前选中的分页链接模板 */ private $activeTemplate = '<li class="active"><a href="javascript:;">{text}</a></li>'; /** * 未选中的分页链接模板 */ private $notActiveTemplate = '<li><a href="{url}">{text}</a></li>'; /** * 显示文本设置 */ private $config = array('frist' => '首页', 'pre' => '上一页', 'next' => '下一页', 'last' => '尾页'); /** * 初始化 * @param type $total 总条数 * @param type $pageSize 每页大小 * @param type $param url附加参数 * @param type $pageParam 分页变量 */ public function init($total, $pageSize, $param = '', $pageParam = 'page') { $this->total = intval($total); $this->pageSize = intval($pageSize); $this->pageParam = $pageParam; $this->uri = $this->geturi($param); $this->pageNum = ceil($this->total / $this->pageSize); $this->page = $this->setPage(); $this->limit = $this->setlimit(); } /** * 设置分页模板 * @param type $template 模板配置 */ public function setTemplate($template) { $this->template = $template; } /** * 设置选中分页模板 * @param type $activeTemplate 模板配置 */ public function setActiveTemplate($activeTemplate) { $this->activeTemplate = $activeTemplate; } /** * 设置未选中分页模板 * @param type $notActiveTemplate 模板配置 */ public function setNotActiveTemplate($notActiveTemplate) { $this->notActiveTemplate = $notActiveTemplate; } /** * 返回分页 * @return type */ public function show() { return str_ireplace(array( '{total}', '{pagesize}', '{start}', '{end}', '{pagenum}', '{frist}', '{pre}', '{next}', '{last}', '{list}', '{goto}', ), array( $this->total, $this->setPageSize(), $this->star(), $this->end(), $this->pageNum, $this->frist(), $this->prev(), $this->next(), $this->last(), $this->pagelist(), $this->gopage(), ), $this->template); } /** * 获取limit起始数 * @return type */ public function getOffset() { return ($this->page - 1) * $this->pageSize; } /** * 设置LIMIT * @return type */ private function setlimit() { return "limit " . ($this->page - 1) * $this->pageSize . ",{$this->pageSize}"; } /** * 获取limit * @param type $args * @return type */ public function __get($args) { if ($args == "limit") { return $this->limit; } else { return null; } } /** * 初始化当前页 * @return int */ private function setPage() { if (!empty($_GET[$this->pageParam])) { if ($_GET[$this->pageParam] > 0) { if ($_GET[$this->pageParam] > $this->pageNum) return $this->pageNum; else return $_GET[$this->pageParam]; } } return 1; } /** * 初始化url * @param type $param * @return string */ private function geturi($param) { $url = $_SERVER['REQUEST_URI'] . (strpos($_SERVER['REQUEST_URI'], "?") ? "" : "?") . $param; $parse = parse_url($url); if (isset($parse["query"])) { parse_str($parse["query"], $params); unset($params["page"]); $url = $parse["path"] . "?" . http_build_query($params); return $url; } else { return $url; } } /** * 本页开始条数 * @return int */ private function star() { if ($this->total == 0) { return 0; } else { return ($this->page - 1) * $this->pageSize + 1; } } /** * 本页结束条数 * @return type */ private function end() { return min($this->page * $this->pageSize, $this->total); } /** * 设置当前页大小 * @return type */ private function setPageSize() { return $this->end() - $this->star() + 1; } /** * 首页 * @return type */ private function frist() { $html = ''; if ($this->page == 1) { $html .= $this->replace("{$this->uri}&page=1", $this->config['frist'], true); } else { $html .= $this->replace("{$this->uri}&page=1", $this->config['frist'], false); } return $html; } /** * 上一页 * @return type */ private function prev() { $html = ''; if ($this->page > 1) { $html .= $this->replace($this->uri.'&page='.($this->page - 1), $this->config['pre'], false); } else { $html .= $this->replace($this->uri.'&page='.($this->page - 1), $this->config['pre'], true); } return $html; } /** * 分页数字列表 * @return type */ private function pagelist() { $linkpage = ""; $lastlist = floor($this->listnum / 2); for ($i = $lastlist; $i >= 1; $i--) { $page = $this->page - $i; if ($page >= 1) { $linkpage .= $this->replace("{$this->uri}&page={$page}", $page, false); } else { continue; } } $linkpage .= $this->replace("{$this->uri}&page={$this->page}", $this->page, true); for ($i = 1; $i <= $lastlist; $i++) { $page = $this->page + $i; if ($page <= $this->pageNum) { $linkpage .= $this->replace("{$this->uri}&page={$page}", $page, false); } else { break; } } return $linkpage; } /** * 下一页 * @return type */ private function next() { $html = ''; if ($this->page < $this->pageNum) { $html .= $this->replace($this->uri.'&page='.($this->page + 1), $this->config['next'], false); } else { $html .= $this->replace($this->uri.'&page='.($this->page + 1), $this->config['next'], true); } return $html; } /** * 最后一页 * @return type */ private function last() { $html = ''; if ($this->page == $this->pageNum) { $html .= $this->replace($this->uri.'&page='.($this->pageNum), $this->config['last'], true); } else { $html .= $this->replace($this->uri.'&page='.($this->pageNum), $this->config['last'], false); } return $html; } /** * 跳转按钮 * @return string */ private function gopage() { $html = ''; $html.=' <input type="text" value="' . $this->page . '" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.value;location=\'' . $this->uri . '&page=\'+page+\'\'}" style="width:25px;"/><input type="button" onclick="javascript:var page=(this.previousSibling.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.previousSibling.value;location=\'' . $this->uri . '&page=\'+page+\'\'" value="GO"/>'; return $html; } /** * 模板替换 * @param type $replace 替换内容 * @param type $result 条件 * @return type */ private function replace($url, $text, $result = true) { $template = ($result ? $this->activeTemplate : $this->notActiveTemplate); $html = str_replace('{url}', $url, $template); $html = str_replace('{text}', $text, $html); return $html; } } 很随意的写出来的 <?php /** * Created by PhpStorm. * User: zerodeng * Date: 15-5-12 * Time: 下午4:09 */ class pagination { private $total; private $per_page; private $link; private $page; private $page_offset; private static $instance; public function __construct(){ $this->per_page = 40; } public static function get_instance(){ if(!isset(self::$instance)){ self::$instance = new self; } return self::$instance; } public function set_total($num){ $this->total = $num; } public function set_link($link=''){ if($link){ $this->link = $link.'?page='; }else{ $this->link = $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?page='; } } public function set_page(){ if(!empty($_GET['page'])){ $this->page = $_GET['page']; }else{ $this->page = 1; } } public function set_page_offset(){ if(isset($this->page)){ $this->page_offset = ($this->page-1)*$this->per_page; } } public function page_limit($mode=''){ $this->set_page(); $this->set_page_offset(); if($mode == 'str'){ $limit = $this->page_offset.','.$this->per_page; return $limit; } $limit = array($this->page_offset,$this->per_page); return $limit; } public function show_page($page_num=5){ if(!isset($this->page)){ $this->set_page(); } $first_page = 1; $last_page = ceil($this->total/$this->per_page); if(!isset($this->link)){ $this->set_link(); } $html = ''; $html .= '<div id="show_page">总共'.$this->total.'条记录 '.$this->page.'/'.$last_page; if($this->page != $first_page){ $html .= '<a href="http://'.$this->link.$first_page.'">首页</a> '; } if($page_num>=$last_page){ for($i = 1;$i<=$last_page;$i++){ $html .= '| <a href="http://'.$this->link.$i.'">'.$i.'</a> '; } }else{ $page_offset = $this->page+$page_num; if($page_offset<$last_page){ for($i=$this->page;$i<=($this->page+$page_num);$i++){ $html .= '| <a href="http://'.$this->link.$i.'">'.$i.'</a> '; } }else{ for($i=$this->page;$i<=$last_page;$i++){ $html .= '| <a href="http://'.$this->link.$i.'">'.$i.'</a> '; } } } if($this->page != $last_page){ $html .= '<a href="http://'.$this->link.$last_page.'">最后一页</a> '; } $html .= '</div>'; return $html; } } 又是一个随便写的分页类!看原理,很强大 <?php class page { private $pagesize; private $lastpage; private $totalpages; private $nums; private $numPage=1; function __construct($page_size,$total_nums) { $this->pagesize=$page_size; //每页显示的数据条数 $this->nums=$total_nums; //总的数据条数 $this->lastpage=ceil($this->nums/$this->pagesize); //最后一页 $this->totalpages=ceil($this->nums/$this->pagesize); //总得分页数 if(!empty($_GET[page])) { $this->numPage=$_GET[page]; if(!is_int($this->numPage)) $this->numPage=(int)$this->numPage; if($this->numPage<1) $this->numPage=1; if($this->numPage>$this->lastpage) $this->numPage=$this->lastpage; } } function show_page_result() { $row_num=(($this->numPage)-1) * $this->pagesize; //表示每一页从第几条数据开始显示 $row_num=$row_num.","; $SQL="SELECT * FROM `test` LIMIT $row_num $this->pagesize"; $db=new database(); $query=$db->execute($SQL); while($row=mysql_fetch_array($query)) { echo "<b>".$row[name]." | ".$row[sex]."<hr>"; } $db=null; } function show_page_way_1() //以"首页 上一页 下一页 尾页"形式显示 { $url=$_SERVER["REQUEST_URI"]; $url=parse_url($url); //parse_url -- 解析 URL,返回其组成部分,注: 此函数对相对路径的 URL 不起作用。 $url=$url[path]; if($this->nums > $this->pagesize) //判断是否满足分页条件 { echo " 共 $this->totalpages 页 当前为第<font color=red><b>$this->numPage</b></font>页 共 $this->nums 条 每页显示 $this->pagesize 条"; if($this->numPage==1) { echo " 首页 "; echo "上一页 "; } if($this->numPage >= 2 && $this->numPage <= $this->lastpage) { echo " <a href=$url?page=1>首页</a> " ; echo "<a href=$url?page=".($this->numPage-1).">上一页</a> " ; } if($this->numPage==$this->lastpage) { echo "下一页 "; echo "尾页<br>"; } if($this->numPage >= 1 && $this->numPage < $this->lastpage) { echo "<a href=$url?page=".($this->numPage+1).">下一页</a> "; echo "<a href=$url?page=$this->lastpage>尾页</a><br> "; } } else return; } function show_page_way_2() //以数字形式显示"首页 1 2 3 4 尾页" { $url=$_SERVER["REQUEST_URI"]; $url=parse_url($url); //parse_url -- 解析 URL,返回其组成部分,注: 此函数对相对路径的 URL 不起作用。 $url=$url[path]; if($this->nums > $this->pagesize) { if($this->numPage==1) echo "首页"; else echo "<a href=$url?page=1>首页</a>"; for($i=1;$i<=$this->totalpages;$i++) { if($this->numPage==$i) { echo " ".$i." "; } else { echo " <a href=$url?page=$i>$i</a> "; } } if($this->numPage==$this->lastpage) echo "尾页"; else echo "<a href=$url?page=$this->lastpage>尾页</a>"; } } function show_page_way_3() { global $c_id; $url=$_SERVER["REQUEST_URI"]; $url=parse_url($url); //parse_url -- 解析 URL,返回其组成部分,注: 此函数对相对路径的 URL 不起作用。 $url=$url[path]; if($this->nums > $this->pagesize) //判断是否满足分页条件 { if($c_id) { echo "到第<select name='select1' onChange=\"location.href='$url?c_id=$c_id&page='+this.value+'&pagesize=$this->pagesize'\">"; } else echo "到第<select name='select1' onChange=\"location.href='$url?page='+this.value+'&pagesize=$this->pagesize'\">"; for($i = 1;$i <= $this->totalpages;$i++) echo "<option value='" . $i . "'" . (($this->numPage == $i) ? 'selected' : '') . ">" . $i . "</option>"; echo "</select>页, 每页显示"; if($c_id) { echo "<select name=select2 onChange=\"location.href='$url?c_id=$c_id&page=$this->numPage&pagesize='+this.value+''\">"; } else echo "<select name=select2 onChange=\"location.href='$url?page=$this->numPage&pagesize='+this.value+''\">"; for($i = 0;$i < 5;$i++) // 将个数定义为五种选择 { $choice= ($i+1)*4; echo "<option value='" . $choice . "'" . (($this->pagesize == $choice) ? 'selected' : '') . ">" . $choice . "</option>"; } echo "</select>个"; } else return; //echo "没有下页了"; } } ?>