发现thinkphp框架中自带分页类Page.class.php
使用也很简单,在控制器中实例化page类,并且调用它的方法,在HTML直接输出变量$pagelist就可以了。
下面附上我自己写的分页代码
一、前端代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
.show_page a{
height:32px;
width:30px;
border:1px solid #DCDCDC;
background-color:#F3F2F2;
text-decoration:none;
text-align:center;
cursor:pointer;
border-collapse:collapse;
font-size:14px;
}
span{
height:32px;
width:30px;
border:1px solid #DCDCDC;
background-color:#F3F2F2;
text-align:center;
border-collapse:collapse;
}
span.current,.show_page a:hover{
border:1px solid #F3F2F2;
background-color:#FFFFFF;
}
.disable{
border:#eee 1px solid;
color:#ddd;
}
</style>
</head>
<body>
{$page_banner}
</body>
</html>
二、后端代码
//传入页码
public function forPage(){
$page = I('get.page',1);//初始值为1
$allMessages= D('Message')->getAll(0,$page);
$allMessages = $this->change($allMessages);
$number = D("message")->getcount();
$number = ceil($number['number']/1);//向上取整
$show_page = 3;//显示页码数
$page_offset = ($show_page-1)/2;
$page_banner = "<div class='show_page'>";
if($page>1){
$page_banner .=" <a href='".$_SERVER['PHP_SELF']."?page=".($page-1)."'><</a>";
}else{
$page_banner .= "<span class='disable'><</span>";
}
$start = 1;
$end = $number;
if($number > $show_page){
//头部
if($page > $page_offset+1){
$page_banner .="<span class='disable'>...</span>";
}
if($page > $page_offset){
$start = $page-$page_offset;
$end = $number>$page+$page_offset?$page+$page_offset:$number;
}else{
$start = 1;
$end = $number>$show_page?$show_page:$number;
}
//尾部省略
if($page+$page_offset > $number){
$start = $start-($page+$page_offset-$end);
}
}
for($i=$start;$i<=$end;$i++){
if($i == $page){
$page_banner .= "<span class='current'>{$i}</span>";
}else{
$page_banner .= "<a href='".$_SERVER['PHP_SELF']."?page=".($i)."'>{$i}</a>";
}
}
if($show_page<$number && $page<$number-$page_offset){
$page_banner .= "<span class='disable'>...</span>";
}
if($page < $number){
$page_banner .="<a href='".$_SERVER['PHP_SELF']."?page=".($page+1)."'>></a>";
}else{
$page_banner .= "<span class='disable'>></span>";
}
$this->assign('number',$number);//总页数
$this->assign('page',$page);//当前页
$this->assign('page_banner',$page_banner);
$this->display();
}
三、sql语言
//获取留言(按时间先后顺序排列)
public function getAll($page){
$where["comment_id"] = 0;//查找所有comment_id为0的数据
$allMessages = $this->relation('user')->where($where)->order('time desc')->page("$page,6")->select();
if(empty($allMessages)){
return array();
}
return $allMessages;
}