分页类-限定显示页数

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>';

发表评论

电子邮件地址不会被公开。 必填项已用*标注