thinkphp实现根据页码从数据中获取数据,并实现分页

发现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;
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值