天天看點

用ZF架構模仿google分頁

<?php

        /**

*

* @param unknown_type $model 表類型

* @param unknown_type $ncontroller 那個控制器送出的controller

* @param unknown_type $naction 那個action送出的action

*/

public function fenyepage2($model,$ncontroller,$naction){

if(!isset($_SESSION))

{session_start();}

$pageSize = $_SESSION['pagesize'];

$pageNow = $_SESSION['pagenow'];

$offset = ($pageNow-1)*$pageSize;

$db = $this->getAdapter();

$select = $db->select();

$select->from('student','*');

if($_SESSION['qsname']!=""){

$sname = $_SESSION['qsname'];

$select->where('sname like ?',"%$sname%");

}

if($_SESSION['qsaddress']!=""){

$saddress = $_SESSION['qsaddress'];

$select->where('saddress like ?',"%$saddress%");

if($_SESSION['qsdept']!=""){

$sdept = $_SESSION['qsdept'];

$select->where('sdept like ?',"%$sdept%");

$coutNews = $db->fetchAll($select);

$pageCount = ceil(count($coutNews)/$pageSize);

$select->limit($pageSize,$offset);//第一個參數:總共顯示多少個。第二個參數:從第幾個開始顯示

$res = $db->fetchAll($select);

$native = null;

$native = "<a href='\\$ncontroller\\$naction?pageNow=1&pagesize=$pageSize'>首頁</a>&nbsp";

if($pageNow>1){

$nextPage = $pageNow-1;

$native.="&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$nextPage&pagesize=$pageSize'>上一頁</a>&nbsp;";

if(($pageNow-1)>5){

if($pageNow+4>$pageCount){//如果最後的頁數和理應前面開始的頁數小于10則

$start = $pageCount-9;//開始的頁數和結束的頁數相差9

}else{

$start=$pageNow-5;//開始位置和結束位置相差5

}

}else{

$start = floor(($pageNow-1)/10)*10+1;

}

if($pageCount>=$start+10){

$index = $start+10;

else{

$index = $pageCount+1;

for(;$start<$index;$start++){

$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$start&pagesize=$pageSize'>$start</a>";

if($pageNow<$pageCount){

$nextPage = $pageNow+1;

$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$nextPage&pagesize=$pageSize'>下一頁</a>&nbsp;";

$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$pageCount&pagesize=$pageSize'>末頁</a>&nbsp;";

$native.="&nbsp;&nbsp;目前{$pageNow}||總共{$pageCount}頁";

$model->arrs = $res;

$model->native = $native;

}

?>