php分页类
来源:互联网 发布:网页版淘宝旺旺无法 编辑:程序博客网 时间:2024/06/03 09:10
/** * 分页类 */class Page{ private $page_items_nums; // 每页显示的数据个数 private $nums; // 数据总数 private $current_page; // 当前页 private $sub_pages; // 页面显示的页数个数(如 1 2 3 4 5显示5个) private $total_page_nums; // 总页数 private $page_array = array(); // 用来构造分页的数组 private $page_link; // 分页链接 private $page_link_type; // 分页链接样式 1(example:共45条记录,每页显示10条,当前第1/45页 [首页] [上页] [下页] [尾页]) 2(example:当前第1/45页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]) function __construct() {} function __destruct() { unset($this->page_items_nums); unset($this->nums); unset($this->current_page); unset($this->sub_pages); unset($this->total_page_nums); unset($this->page_array); unset($this->page_link); unset($this->page_link_type); } /** * 初始化分页类 * @param int $page_items_nums 每页显示的数据个数 * @param int $nums 数据总数 * @param int $current_page 当前页 * @param int $sub_pages 页面显示的页数个数(如 1 2 3 4 5显示5个) * @param string $page_link 分页链接 * @param int $page_link_type 分页链接样式 1(example:共45条记录,每页显示10条,当前第1/45页 [首页] [上页] [下页] [尾页]) 2(example:当前第1/45页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]) * @return type */ public function initinfo($page_items_nums, $nums, $current_page, $sub_pages, $page_link, $page_link_type){ $this->page_items_nums = intval($page_items_nums); $this->nums = intval($nums); // 设置当前页 if (!$current_page) { $this->current_page = 1; } else { $this->current_page = intval($current_page); } $this->sub_pages = intval($sub_pages); // 计算总页数 $this->total_page_nums = ceil($nums / $page_items_nums); $this->page_link = $page_link; return $this->show_pages($page_link_type); } /** * 选择分页样式 * @param int $page_link_type 分页链接样式 * @return type */ function show_pages($page_link_type) { if ($page_link_type == 1) { return $this->page_css_1(); } else if ($page_link_type == 2) { return $this->page_css_2(); } else if($page_link_type == 3){ return $this->page_css_3(); } } /** * 用来给建立分页的数组初始化的函数 * @return type */ function initArray() { for ($i = 0; $i < $this->sub_pages; $i++) { $this->page_array[$i] = $i; } return $this->page_array; } /** * 构造显示的页数 如 1 2 3 4 5 * @return type */ function construct_num_Page() { if ($this->total_page_nums < $this->sub_pages) { $current_array = array(); for ($i = 0; $i < $this->total_page_nums; $i++) { $current_array[$i] = $i + 1; } } else { $current_array = $this->initArray(); if ($this->current_page <= 3) { for ($i = 0; $i < count($current_array); $i++) { $current_array[$i] = $i + 1; } } else if ($this->current_page <= $this->total_page_nums && $this->current_page > $this->total_page_nums - $this->sub_pages + 1) { for ($i = 0; $i < count($current_array); $i++) { $current_array[$i] = ($this->total_page_nums) - ($this->sub_pages) + 1 + $i; } } else { for ($i = 0; $i < count($current_array); $i++) { $current_array[$i] = $this->current_page - 2 + $i; } } } return $current_array; } /** * 构造普通模式的分页 共45条记录,每页显示10条,当前第1/45页 [首页] [上页] [下页] [尾页] */ function page_css_1() { $subPageCss1Str = ""; $subPageCss1Str.="共" . $this->nums . "条记录,"; $subPageCss1Str.="每页显示" . $this->page_items_nums . "条,"; $subPageCss1Str.="当前第" . $this->current_page . "/" . $this->total_page_nums . "页 "; if ($this->current_page > 1) { $firstPageUrl = $this->page_link . "1"; $prewPageUrl = $this->page_link . ($this->current_page - 1); $subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] "; $subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] "; } else { $subPageCss1Str.="[首页] "; $subPageCss1Str.="[上一页] "; } if ($this->current_page < $this->total_page_nums) { $lastPageUrl = $this->page_link . $this->total_page_nums; $nextPageUrl = $this->page_link . ($this->current_page + 1); $subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] "; $subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] "; } else { $subPageCss1Str.="[下一页] "; $subPageCss1Str.="[尾页] "; } echo $subPageCss1Str; } /** * 构造经典模式的分页(js交互) 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] * @return string */ function page_css_2() { $subPageCss2Str = ""; $subPageCss2Str.="当前第" . $this->current_page . "/" . $this->total_page_nums . "页 "; if ($this->current_page > 1) { $firstPageUrl = $this->page_link . "1"; $prewPageUrl = $this->page_link . ($this->current_page - 1); $prenum = $this->current_page - 1; $subPageCss2Str.="[<span style='cursor:pointer' name='1'>首页</span>] "; $subPageCss2Str.="[<span style='cursor:pointer' name='$prenum'>上一页</span>] "; } else { $subPageCss2Str.="[首页] "; $subPageCss2Str.="[上一页] "; } $a = $this->construct_num_Page(); for ($i = 0; $i < count($a); $i++) { $s = $a[$i]; if ($s == $this->current_page) { $subPageCss2Str.="[<b style='color:red;font-weight:bold;'>" . $s . "</b>]"; } else { $url = $this->page_link . $s; $subPageCss2Str.="[<span style='cursor:pointer' name='$s'>" . $s . "</span>]"; } } if ($this->current_page < $this->total_page_nums) { $lastPageUrl = $this->page_link . $this->total_page_nums; $nextPageUrl = $this->page_link . ($this->current_page + 1); $nextnum = $this->current_page + 1; $subPageCss2Str.=" [<span style='cursor:pointer' name='$nextnum'>下一页</span>] "; $subPageCss2Str.="[<span style='cursor:pointer' name='$this->total_page_nums'>尾页</span>] "; } else { $subPageCss2Str.="[下一页] "; $subPageCss2Str.="[尾页] "; } return $subPageCss2Str; } /** * 构造经典模式的分页(url交互) 当前第1/45页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] * @return string */ function page_css_3() { $subPageCss3Str = ""; $subPageCss3Str.="当前第" . $this->current_page . "/" . $this->total_page_nums . "页 "; if ($this->current_page > 1) { $firstPageUrl = $this->page_link . "1"; $prewPageUrl = $this->page_link . ($this->current_page - 1); $subPageCss3Str.="[<a href='$firstPageUrl'>首页</a>] "; $subPageCss3Str.="[<a href='$prewPageUrl'>上一页</a>] "; } else { $subPageCss3Str.="[首页] "; $subPageCss3Str.="[上一页] "; } $a = $this->construct_num_Page(); for ($i = 0; $i < count($a); $i++) { $s = $a[$i]; if ($s == $this->current_page) { $subPageCss3Str.="[<span style='color:red;font-weight:bold;'>" . $s . "</span>]"; } else { $url = $this->page_link . $s; $subPageCss3Str.="[<a href='$url'>" . $s . "</a>]"; } } if ($this->current_page < $this->total_page_nums) { $lastPageUrl = $this->page_link . $this->total_page_nums; $nextPageUrl = $this->page_link . ($this->current_page + 1); $subPageCss3Str.=" [<a href='$nextPageUrl'>下一页</a>] "; $subPageCss3Str.="[<a href='$lastPageUrl'>尾页</a>] "; } else { $subPageCss3Str.="[下一页] "; $subPageCss3Str.="[尾页] "; } return $subPageCss3Str; } // 可根据自己的需求再建立 page_css_*}function test(){ // 分页设置 $pageclass = new Page(); // 每页显示数目 $size = 10; // 总条目数 $nums = count(); // 得到当前是第几页 $pageCurrent = $p; // 分页链接显示的页数 $sub_pages = 5; // url 参数p一定要在最后 $url = './list.php?size='.$size.'&p='; // 获取分页链接 $page_link = $pageclass->initinfo($size, $nums, $pageCurrent, $sub_pages, $url, 4); // 获取数据 //$data = ...; return array('data'=>$data,'page_link'=>$page_link)}