php mongodb實現分頁操作
阿新 • • 發佈:2018-12-24
最近在用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,博主正在研究,靜等更新。