分页类-限定显示页数2012.12.04 20:55
PHP操作Mysql时,经常会使用分页,对数据的信息进行分页显示。
而对于数据量非常庞大的信息,页数势必会非常的多,如:论坛的帖子显示页面、搜索引擎等,一般会限定页数的显示,如:10页,这样当你查看第6也的内容时,分页实际上显示的是[2-11]页的内容,满足分页列表数不超过10.
核心算法:
class Page{ private $pageSize; //每页显示条数 private $pageNow; //当前页数 private $pageCount; //总页数 private $rowCount; //总记录数 private $listNum=5; //定义最多显示的页数 //...... //...... //显示页数列表,显示的最大页数根据$this->listNum值而定 private function pageList(){ $html=''; if($this->pageCount>1){ if($this->pageNow<=ceil($this->listNum/2)){ if($this->pageCount<$this->listNum) $max=$this->pageCount; else $max=$this->listNum; for($i=1;$i<=$max;$i++){ if($i==$this->pageNow) $html.='<span>'.$i.'</span>'; else $html.="<a href='".$this->uri.$this->and."p=".$i."'>".$i."</a>"; } }else if($this->pageNow>($this->pageCount-$this->listNum)){ for($i=($this->pageCount-$this->listNum+1); $i<=$this->pageCount; $i++){ if($i==$this->pageNow) $html.='<span>'.$i.'</span>'; else $html.="<a href='".$this->uri.$this->and."p=".$i."'>".$i."</a>"; } }else{ if($this->pageCount<(floor($this->listNum/2)+$this->pageNow)) $max=$this->pageCount; else $max=floor($this->listNum/2)+$this->pageNow; for($i=$this->pageNow-floor($this->listNum/2); $i<=$max; $i++){ if($i==$this->pageNow) $html.='<span>'.$i.'</span>'; else $html.="<a href='".$this->uri.$this->and."p=".$i."'>".$i."</a>"; } } } return $html; } //...... }
用此类进行数据分页:
include "ajaxpage.class.php"; $link=mysql_connect("localhost", "root", "123"); mysql_select_db("db"); $result=mysql_query("select id from test"); $total=mysql_num_rows($result); $p=new Page(5,$total); $sql="select * from chatbar {$p->limitPage()}"; $result=mysql_query($sql); echo '<table align="center" border="1" width="960">'; echo '<caption><h1>test</h1></caption>'; while($row=mysql_fetch_assoc($result)){ echo '<tr>'; echo '<td>'.$row["id"].'</td>'; echo '<td>'.$row["name"].'</td>'; echo '<td>'.$row["time"].'</td>'; echo '<td>'.$row["content"].'</td>'; echo '</tr>'; } echo '<tr><td colspan="5" align="right">'.$p->getPageInfo(array(0,1,2,3,4,5)).'</td></tr>'; echo '</table>';
相关文章
<< 上一篇 封装自己的Mysqli操作类 LAMP程序员精华库 下一篇 >>
- 正在加载用户留言,请稍后~