首页 > 其他 > 详细

时间:2014年4月13日19:01:06 分页类

时间:2014-04-14 01:24:17      阅读:498      评论:0      收藏:0      [点我收藏+]


总条数为:$total

每页条数为:$perpage

当前页:$page


总页数为:$cnt =ceil($total/$perpage)向上取整


$page页,

前面已经有$page-1页,每页显示$perpage

已经跳过($page-1)*$perpage

即从($page-1)*$perpage+1开始取,再取出$perpage


分页导航:

根据总页数,生成页码:

page导航中,根据页码来生成,同时不能把其他参数丢失

因此需要把地址栏的参数获取,并保存起来

<?php

defined(‘ACC‘)||exit(‘Acc Denied‘);


class PageTool {

protected $total = 0;//总条数

protected $perpage = 10;//每一页的条数

protected $page = 1;//当前的页码


public function __construct($total,$page=false,$perpage=false) {

$this->total = $total;

if($perpage) { //没有传递默认10

$this->perpage = $perpage;

}

if($page) { //当前页没传默认 1

$this->page = $page;

}

}


// 主要函数,创建分页导航

public function show() {

$cnt = ceil($this->total/$this->perpage);// 得到总页数

/*获取当前页面 URI 用来指定要访问的页面*/

$uri = $_SERVER[‘REQUEST_URI‘];

/*parse_url 解析 URL,返回其组成部分

$url=‘http://username:password@hostname/path?arg=value#anchor‘ ;

print_r ( parse_url ( $url ));

Array

(

[scheme] => http

[host] => hostname

[user] => username

[pass] => password

[path] => /path

[query] => arg=value

[fragment] => anchor

)


*/

$parse = parse_url($uri);

/*将字符串解析成多个变量*/

$param = array();

if(isset($parse[‘query‘])) {

parse_str($parse[‘query‘],$param);

}

// 不管$param数组里,有没有page单元,unset一下,确保没有page单元,

// 即保存除page之外的所有单元

unset($param[‘page‘]);

$url = $parse[‘path‘] . ‘?‘;

if(!empty($param)) {

/*http_build_query 生成 URL-encode 之后的请求字符串 */

$param = http_build_query($param);

$url = $url . $param . ‘&‘;

}

// 下一个关键,就是计算页码导航

$nav = array();

$nav[0] = ‘<span>‘ . $this->page .  ‘</span>‘;


for($left = $this->page-1,$right=$this->page+1;($left>=1||$right<=$cnt)&&count($nav)  <= 5;) {

if($left >= 1) {

array_unshift($nav,‘<a  href="‘ . $url . ‘page=‘ . $left . ‘">[‘ . $left .  ‘]</a>‘);

$left -= 1;

}

if($right <= $cnt) {

array_push($nav,‘<a  href="‘ . $url . ‘page=‘ . $right . ‘">[‘ . $right .  ‘]</a>‘);

$right += 1;

}

}

return implode(‘‘,$nav);


}


}

/*分页类调用测试

new pagetool(总条数,当前页,每页条数);

show() 返回分页代码.

*/

/*$page = $_GET[‘page‘]?$_GET[‘page‘]:1;

$p = new PageTool(120,$page,6);

echo $p->show();*/






本文出自 “杜国栋个人PHP学习博文” 博客,请务必保留此出处http://duguodong.blog.51cto.com/7667978/1395021

时间:2014年4月13日19:01:06 分页类,布布扣,bubuko.com

时间:2014年4月13日19:01:06 分页类

原文:http://duguodong.blog.51cto.com/7667978/1395021

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!