PHP,分页函数封装成类
来源:互联网 发布:fifaonline3国服数据库 编辑:程序博客网 时间:2024/05/16 15:00
最近因为项目用到php。查看文档,基本看懂怎么用,怎么说呢,很多特性或者习惯,习惯了python,就觉得php很多不可理喻之处。当然,可能我对于php的造化尚浅吧。
写了一个分页函数,然后封装成类,一边其他地方调用。不足之处,就是这个分页没有提供ajax无刷新。有时间,再改得更健壮。
文档结构
pageing
+css
index.css
+class
Page.class.php
index.php
写了一个分页函数,然后封装成类,一边其他地方调用。不足之处,就是这个分页没有提供ajax无刷新。有时间,再改得更健壮。
文档结构
pageing
+css
index.css
+class
Page.class.php
index.php
//index.php
<?php/* Report all errors except E_NOTICE */error_reporting(E_ALL ^ E_NOTICE);//设置utf-8编码header('Content-Type:text/html;charset=utf-8');//设置硬路径define('ROOT_PATH',dirname(__FILE__));//引入 分页类,当然还可以改写为自动加载require ROOT_PATH.'/Page.class.php';//分页入口,创建对象 传入三个参数,总数据条目,每页显示条目,当前页前后间隔数$_page = new Page(20,5,3); echo $_page->limit;echo '<br />';print_r($_page->url);?><!doctype html><html><head><title>分页类</title><link rel="stylesheet" type="text/css" href="css/index.css"></head><body><div style="margin:100px 0 0 0;"><div id="page"><?phpecho $_page->showPage();?></div></div></body></html>//index.css
@CHARSET "UTF-8";body,h1,h2,h3,p,form,ul,ol,li,dl,dt,dd {padding:0;margin:0;}body {background:#fff;font-size:12px;}#page {text-align:center;padding:10px;}#page a {border:1px solid #666;padding:2px 5px;margin:0 2px;}#page a:hover,#page span.me {color:#fff;border:1px solid #000;background:#000;text-decoration:none;}#page span.disabled {border:1px solid #ccc;padding:2px 5px;margin:0 2px;color:#ccc;}#page span.me {padding:2px 5px;margin:0 2px;}
// Page.calss.php
<?phpclass Page{private $total;//总记录数,即数据库的record数private $page;//当前页数private $pagesize;//每页显示的条目数private $pagenum;//页码数private $limit;//查询数据库的分页参数private $url;//获取地址private $bothnum;//获取当前页前后间隔数//构造函数,初始化字段,传入总条目数$_total,通常是查询数据库后返回的值,每页显示条目数$_pagesize,获取当前页前后间隔数$bothnumpublic function __construct($_total,$_pagesize,$bothnum){$this->total = $_total;$this->pagesize = $_pagesize;$this->pagenum = ceil($this->total / $this->pagesize);$this->page = $this->setPage();$this->url = $this->setUrl();$this->bothnum = $bothnum;$this->limit = 'LIMIT '.($this->page-1) * $this->pagesize.','.$this->pagesize;}public function __get($_key){return $this->$_key;}//获取传过来的当前页private function setPage(){if(!empty($_GET['page'])){if($_GET['page'] > 0){if($_GET['page'] < $this->pagenum){return $_GET['page'];}else{return $this->pagenum;}}else{return 1;}}else{return 1;}}//获取地址private function setUrl(){$_url = $_SERVER['REQUEST_URI']; //获取地址,包含完整路径和查询字符串$_par = parse_url($_url);//将$_url拆分为数组 path->路径,query-> 查询字符串if(isset($_par['query'])){parse_str($_par['query'],$_query);//将查询字符串按照连接符分组,组成一个数组,例如 action->show,page->5unset($_query['page']);//销毁 查询字符串的page组 只剩下前面的 action$_url = $_par['path'].'?'.http_build_query($_query);//将剩下的查询字符串数组指向 action->show转行成 action=show}return $_url;}//数字分页private function pageList(){for($i=($this->page - $this->bothnum);$i<$this->page;$i++){if($i < 1) continue;$_pageList .= '<a href="'.$this->url.'&page='.$i.'" title="">'.$i.'</a>';}$_pageList .= '<span class="me">'.$this->page.'</span>';for($i=($this->page+1);$i<=($this->page + $this->bothnum);$i++){if($i > $this->pagenum) break;$_pageList .= '<a href="'.$this->url.'&page='.$i.'" title="">'.$i.'</a>';}return $_pageList;}//首页private function first(){return '<a href="'.$this->url.'&page=1">首页</a>...';}//上一页private function prev(){return '<a href="'.$this->url.'&page='.($this->page-1).'">上一页</a>';}//下一页private function next(){return '<a href="'.$this->url.'&page='.($this->page+1).'">下一页</a>';}//尾页private function last(){return '...<a href="'.$this->url.'&page='.$this->pagenum.'">尾页</a>';} //对外接口函数,用来显示分页页码public function showPage(){$_page .= $this->first();$_page .= $this->pageList();$_page .= $this->last();$_page .= $this->prev();$_page .= $this->next();return $_page;}}?>
代码解析
1.构造函数 __construct 用来初始化字段,将入口传入的总条目数,每页显示数和当前页前后间隔数。
2. 获取当前页码函数 setPage,如果传空值或者小于零的值,则页码数指向第一页,如果页码大于总页数,则指向最后一页。
3 捕捉地址方法 setUrl;为了让分页类在其他地方也能调用,分离出传过来的url路径。$_SERVER['REQUEST_URI']获取完整的url,包含主机路径和查询字符串。
>parse_url 函数,将完整路径切割成数组,一项为网址路径 path ,一项为查询字符串query。这里为 action=show?page=2
>parse_str 函数 将查询字符串 再分割成一个数组 例如 [action->show,page->2],
unset 函数 销毁 page系列 ,因为每次点击页码都会传新的。
最后返回 包含查询字符串的硬路径,没有传分页参数
4.分页间隔控制 pageList方法 确定当前页,先向前循环间隔数 ,当当前页小于首页的时候,跳出当前循环。然后向后循环间隔数,当当前页大于总页数是停止循环,返回循环的字符串。用来宣示分页
5.首页尾页上下页方法
6.对外接口,用来执行私有方法,返回分页字符串,用来前台显示。
源码分享 下载地址
- PHP,分页函数封装成类
- php封装分页类+分页实例
- 分页封装成类
- PHP封装的分页导航处理类
- PHP分页功能使用类封装实现
- PHP 自己封装数据分页类
- php 分页代码的封装
- 将php调用MySQL数据的函数封装成类
- PHP+MySql实现的简单分页类的封装
- php封装一个显示页码的分页类
- php过滤函数封装
- php函数封装
- php封装数据库函数
- php函数封装相关
- PHP-封装函数练习
- PHP分页函数
- PHP的分页函数-----
- PHP分页函数
- android:布局参数,控件属性及各种xml的作用
- VMware的组网模式详解
- StreamTokenizer的用法
- 我离开了Autodesk
- Android build error
- PHP,分页函数封装成类
- linux sz rz
- soj1111 Gnome Tetravex dfs搜索
- 硬盘数据恢复技巧总结
- Linux系统统计目录下的文件总数
- HTML5中添加多媒体支持(三)
- UltraEdit V18.10.1018 烈火绿色版
- 约瑟夫环问题
- ICS statusbar