1 <?php 2 /** 3 * 分頁函數 4 * @param $countRows 5 * @param $pageNo 6 * @param string $url 7 * @return string 8 */ 9 function pager($countRows, $pageNo, $url = '') { 10 // 計算總頁數 11 $countPages = ceil($countRows / PAGE_ROWS); 12 // 當前頁碼先後間隔 13 $pageOffset = (PAGE_OFFSET - 1) / 2; 14 15 if(!$url) { 16 $url = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING']; 17 $url = preg_replace('/\&*page=\d*\b/','', $url); 18 $url .= empty($_SERVER['QUERY_STRING']) ? "page=[page]" : "&page=[page]"; 19 } 20 21 $pager = '<ul class="pager">'; 22 $pager .= (1 < $pageNo) 23 ? '<li><a href="'. str_replace('[page]', 1, $url) .'">首頁</a></li>' 24 . '<li><a href="'. str_replace('[page]', ($pageNo - 1), $url) .'">上一頁</a></li>' 25 : '<li><a class="disabled">首頁</a></li><li><a class="disabled">上一頁</a></li>'; 26 27 // 開始頁碼不能小於1 28 $startPage = max(1, $pageNo - $pageOffset); 29 // 開始頁碼加上要顯示頁碼的個數 要比總頁數小 30 $endPage = min($startPage + PAGE_OFFSET - 1, $countPages); 31 // 避免頁碼顯示不足位數 32 $startPage = max(1, $endPage - PAGE_OFFSET + 1); 33 34 $pageNumList = range($startPage, $endPage); 35 foreach ($pageNumList as $pageNum) { 36 $selected = ($pageNum == $pageNo) ? ' class="active" ' : ''; 37 $pager .= '<li><a href="'. str_replace('[page]', $pageNum, $url) .'"'. $selected .'>' . $pageNum . '</a></li>'; 38 } 39 40 $pager .= ($countPages > $pageNo) 41 ? '<li><a href="'. str_replace('[page]', ($pageNo + 1), $url) .'">下一頁</a></li>' 42 . '<li><a href="'. str_replace('[page]', $countPages, $url) .'">尾頁</a></li>' 43 : '<li><a class="disabled">下一頁</a></li><li><a class="disabled">尾頁</a></li>'; 44 $pager .= '</ul><div class="clear"></div>'; 45 46 return $pager; 47 }
效果以下圖:php