php mongodb实现分页操作


最近在用php写后台管理网站,改进功能时想到数据显示,实现的分页的功能显示,单纯用php+mongodb实现。代码如图:

<?php
require_once 'dengluclass.php';
$pagesize=8;   //一页显示的数据个数
$pagecount=0;  //数据一共多少页
$pagenow=1;    //当前页数
$test=new dengluclass();
$pagecount=$test->getpagecount($pagesize);      //通过count函数 获取数据显示多少页
if(!empty($_GET['pagenow']) )                   //初次调用当前页码为1  接下来通过href标签获取下页页数
	{
		if($_GET['pagenow']<=$pagecount)
			{
				$pagenow=$_GET['pagenow'];
			}
		else{};
}
$cursor=$test->getlist($pagenow,$pagesize);
while($cursor->hasnext()){
    $value=$cursor->getnext();      
    echo '<tr align=center class=d>';
	echo '<td>'.$value["kehuhao"].'</td>';
    echo '<td>'.$value["xingming"].'</td>';
	echo '</tr>';
	}
if($pagenow>1){
	$prePage=$pagenow-1;
    echo "<a href='dengluxinxi.php?pagenow=$prePage'>上一页</a> ";         //href标签上页
   }
if($pagenow<$pagecount){
	$nextPage=$pagenow+1;
	echo "<a href='dengluxinxi.php?pagenow=$nextPage'>下一页</a> ";
	}
	echo "<a href='#'><<</a>";
    echo "<a href='#'>>></a>"; 
    echo "当前页{$pagenow}/总共页{$pagecount}";
    echo "<br>";
													?>									
?>

dengluclass.php
<?php
	require_once 'dengluclass.php';
	error_reporting(E_ALL & ~E_NOTICE);
	class dengluclass{
		
		public function getpagecount($pagecount){
			$conn=new Mongo("mongodb://localhost:27017");
			$collection=$conn->kehuguanli->dengluxinxi;
			$count=ceil($collection->count()/$pagecount);
			return $count;
		}
		public function getlist($pageNow, $pageSize)
		{
		    $conn=new Mongo("mongodb://localhost:27017");
		    $collection=$conn->kehuguanli->dengluxinxi;
                    $res=$collection->find()->skip(($pageNow-1)*$pageSize)->limit($pageSize);
		    return $res;
		}
		
	}
?>

简单来说,就是通过skip+limit实现分页,但是目前skip对于市面上的数据库,都是一笔不小的开销。当数据量很大时,skip就会变得很慢,网上的有的说用where+limit

整体思想就是先排序然后在limit,博主正在研究,静等更新。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值