thinkphp中對數組元素進行分頁顯示
PHP模組代碼:class NewsAction extends Action{public $page = ''; //分頁,當前頁數 function News(){ $list = M("News")->field('id,title')->where("status = 5")->findAll(); //分頁 $list = $this->array_page($list); //結束 $num = 0; $URL = "http://www.baidu.com/"; $suffixName = '.html'; foreach($list as $key=>$val){ $num = $key + 1; $str .= ' '.$num.").".$val['title']."
"; } $str = preg_replace('/(.*),\s$/','\\1',$str); $str .= "".$this->page.""; return $str; } //數組分頁方法 /** * array $array 數組 * integer $showCount 每頁的記錄數 *------------------------------ * return array 返回數組 */ function array_page($array,$listRows = 12,$showCount = 4){ $p = C('VAR_PAGE'); $url = $_SERVER['REQUEST_URI']."/".$p."/"; $page = !empty($_GET[C('VAR_PAGE')])?$_GET[C('VAR_PAGE')]:1; $upRow = $page-1; $downRow = $page+1; $linkPage = ""; $totalPage = (int)count($array); $pagetotal = ceil($totalPage/$listRows); //總頁數 if($page <= ceil(($showCount)/2)){ $minpg = 1; $maxpg = $showCount+1; if($maxpg >= $pagetotal) $maxpg = $pagetotal + 1; }elseif($page > ceil(($showCount)/2) && $page < ($pagetotal - ceil($showCount/2))){ $minpg = $page - ceil(($showCount)/2) + 1; $maxpg = $page + ceil(($showCount)/2) + 1; if($maxpg >= $pagetotal) $maxpg = $pagetotal; }elseif($page >=$pagetotal - ceil(($showCount)/2)){ $minpg = $pagetotal - ($showCount-1); if($minpg == 1) $minpg = 2; $maxpg = $pagetotal + 1; } $linkPage .= " ".$totalPage." 條記錄 ".$page."/".$pagetotal." 頁 "; if($pagetotal == 1){ $linkPage .= " 1 "; }else{ if($page > 1){ $linkPage .= " 第一頁"; $linkPage .= " 上一頁"; } for($i = $minpg; $i < $maxpg; $i++){ if($page == $i){ $linkPage .= " ". $i .""; }else{ $linkPage .= " $i"; } } if($page < $pagetotal){ $linkPage .= " 下一頁"; $linkPage .= " 最後一頁"; } } if($listRows < $totalPage) { if($page <= 1 || empty($page)) { $page = 0; } else { $page = intval($page) - 1; } $array = array_slice($array,$page*$listRows,$listRows,true); } $this->page = $linkPage; if(1 == $pagetotal) $this->page = ''; return $array; } } 前台Html代碼:
?