php+Mysql分页 类和引用详解
一下内容为专用于分页的类以及具体的方法和解析。<?phpclass Page {private $total; //数据表中总记录数private $listRows; //每页显示行数private $limit; //SQL语句使用limit从句,限制获取记录个数 limit m.nprivate $uri; //自动获取url的请求地址private $pageNum; //总页数private $page; //当前页 private $config = array( //config配置'head' => "条记录", 'prev' => "上一页", 'next' => "下一页", 'first'=> "首页", 'last' => "末页"); //在分页信息中显示内容,可以自己通过set()方法设置private $listNum = 10; //默认分页列表显示的个数// 共10页 1/10 上一页1 2 3 4 5 下一页/**构造方法,可以设置分页类的属性@param int $total 计算分页的总记录数@param int $listRows 可选的,设置每页需要显示的记录数,默认为25条@param mixed $query 可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式@param bool $ord 可选的,默认值为true, 页面从第一页开始显示,false则为最后一页*/public function __construct($total, $listRows=25, $query="", $ord=true){$this->total = $total;$this->listRows = $listRows;$this->uri = $this->getUri($query);//获取浏览器地址栏中的地址$this->pageNum = ceil($this->total / $this->listRows);//总共多少页/*以下判断用来设置当前面*/if(!empty($_GET["page"])) {$page = $_GET["page"];}else{if($ord)$page = 1;else$page = $this->pageNum;}if($total > 0) {if(preg_match('/\D/', $page) ){$this->page = 1;}else{$this->page = $page;}}else{$this->page = 0;}$this->limit = "LIMIT ".$this->setLimit();}用于设置显示分页的信息,可以进行连贯操作@param string $param 是成员属性数组config的下标@param string $value 用于设置config下标对应的元素值@return object 返回本对象自己$this, 用于连惯操作*/function set($param, $value){if(array_key_exists($param, $this->config)){$this->config[$param] = $value;}return $this;}/* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */function __get($args){if($args == "limit" || $args == "page")return $this->$args;elsereturn null;}/**按指定的格式输出分页@param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构@return string 分页信息内容*/ // 共10页 1/10 上一页1 2 3 4 5 下一页function fpage(){$arr = func_get_args();$html[0] = "<span class='p1'> 共<b> {$this->total} </b>{$this->config["head"]} </span>";//共100条记录$html[1] = " 本页 <b>".$this->disnum()."</b> 条 ";//本页10条(因最后一页不确定)$html[2] = " 本页从 <b>{$this->start()}-{$this->end()}</b> 条 ";//本页从11-20条$html[3] = " <b>{$this->page}/{$this->pageNum}</b>页 ";// 2/10页$html[4] = $this->firstprev();//首页 上一页$html[5] = $this->pageList();//1 2 3 4 5$html[6] = $this->nextlast();//下一页 尾页$html[7] = $this->goPage();// [] go (跳转)$fpage = '<div style="font:12px \'\5B8B\4F53\',san-serif;">';if(count($arr) < 1)$arr = array(0, 1,2,3,4,5,6,7);for($i = 0; $i < count($arr); $i++)$fpage .= $html[$arr[$i]];$fpage .= '</div>';return $fpage;}/* 在对象内部使用的私有方法,*/private function setLimit(){if($this->page > 0)return ($this->page-1)*$this->listRows.", {$this->listRows}";elsereturn 0;}/* 在对象内部使用的私有方法,用于自动获取访问的当前URL */private function getUri($query){ $request_uri = $_SERVER["REQUEST_URI"]; $url = strstr($request_uri,'?') ? $request_uri : $request_uri.'?';if(is_array($query))$url .= http_build_query($query);else if($query != "")$url .= "&".trim($query, "?&");$arr = parse_url($url);if(isset($arr["query"])){parse_str($arr["query"], $arrs);unset($arrs["page"]);$url = $arr["path"].'?'.http_build_query($arrs);}if(strstr($url, '?')) {if(substr($url, -1)!='?')$url = $url.'&';}else{$url = $url.'?';}return $url;}/* 在对象内部使用的私有方法,用于获取当前页开始的记录数 */private function start(){if($this->total == 0)return 0;elsereturn ($this->page-1) * $this->listRows+1;}/* 在对象内部使用的私有方法,用于获取当前页结束的记录数 */private function end(){return min($this->page * $this->listRows, $this->total);}//min 取两个里小的在对象内部使用的私有方法,用于获取上一页和首页的操作信息 private function firstprev(){if($this->page > 1) {$str = " <a href='{$this->uri}page=1'>{$this->config["first"]}</a> ";$str .= "<a href='{$this->uri},page=".($this->page-1)."'>{$this->config["prev"]}</a> ";return $str;}}在对象内部使用的私有方法,用于获取页数列表信息 private function pageList(){$linkPage = " <b>";$inum = floor($this->listNum/2);//floor向下取整/*当前页前面的列表 */for($i = $inum; $i >= 1; $i--){$page = $this->page-$i;if($page >= 1)$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";}/*当前页的信息 */if($this->pageNum > 1)$linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white'>{$this->page}</span> ";/*当前页后面的列表 */for($i=1; $i <= $inum; $i++){$page = $this->page+$i;if($page <= $this->pageNum)$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";elsebreak;}$linkPage .= '</b>';return $linkPage;}在对象内部使用的私有方法,获取下一页和尾页的操作信息 private function nextlast(){if($this->page != $this->pageNum) {$str = " <a href='{$this->uri}page=".($this->page+1)."'>{$this->config["next"]}</a> ";$str .= " <a href='{$this->uri}page=".($this->pageNum)."'>{$this->config["last"]}</a> ";return $str;}}在对象内部使用的私有方法,用于显示和处理表单跳转页面 private function goPage(){if($this->pageNum > 1) {return ' <input style="width:20px;height:17px !important;height:18px;border:1px solid #CCCCCC;" type="text" οnkeydοwn="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'"><input style="cursor:pointer;width:25px;height:18px;border:1px solid #CCCCCC;" type="button" value="GO" οnclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'"> ';}}在对象内部使用的私有方法,用于获取本页显示的记录条数 private function disnum(){if($this->total > 0){return $this->end()-$this->start()+1;}else{return 0;}}}
![](/assets/blank.gif)
引用操作如下:
![](/assets/blank.gif)
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <?php //引入类(分页类10-24博客) require_once "YIN.class.php"; require_once "../t/page.class.php"; $db = new YIN(); //取数据总条数 $zts = "select count(*) from wg"; $sql = $db->StrQuery($zts); //造对象 $page = new Page($sql,15); //在obj后边加上分页,拼接 $obj = "select * from wg ".$page->limit; $data = $db->Query($obj); ?> <table><tr><td>员工编号</td><td>工资</td><td>时间</td></tr><?phpforeach ($data as $i){echo "<tr><td>{$i[0]}</td><td>{$i[1]}</td><td>{$i[2]}</td></tr>";}?> </table> <div><?php 输出显示列表分页,上面类里面有具体哪个模块的功能和解析,这里选择的是3,4,5,6模块的功能,小伙伴们可以根据自己的需求用,不写的话就是全部使用echo $page->fpage(3,4,5,6);?> </div> </body> </html> 《--结束--》 孔雀东南飞,五里一徘徊。十三能织素,十四学裁衣。十五弹箜篌,十六诵诗书。十七为君妇,心中常苦悲。君既为府吏,守节情不移。贱妾留空房,相见常日稀。 鸡鸣入机织,夜夜不得息。三日断五疋,大人故嫌迟。非为织作迟,君家妇难为。妾不堪驱使,徒留无所施。便可白公姥,及时相遣归。府吏得闻之,堂上启阿母。 儿已薄禄相,幸复得此妇。结发同枕席,黄泉共为友。共事二三年,始而未为久。女行无偏斜,何意致不厚。阿母谓府吏,何乃太区区。此妇无礼节,举动自专由。
吾意久怀忿,汝岂得自由。东家有贤女,自名秦罗敷。可怜体无比,阿母为汝求。便可速遣之,遣去慎莫留。府吏长跪告,伏惟启阿母。今若遣此妇,终老不复娶。 阿母得闻之,槌床便大怒。小子无所畏,何敢助妇语。吾已失恩意,会不相从许。府吏默无声,再拜还入户。举言谓新妇,哽咽不能语。我自不驱卿,逼迫有阿母。 卿但暂还家,吾今且报府。不久当归还,还必相迎取。以此下心意,慎勿违我语。新妇谓府吏,勿复重纷纭。往昔初阳岁,谢家来贵门。奉事循公姥,进止敢自专。 昼夜勤作息,伶俜萦苦辛。谓言无罪过,供养卒大恩。仍更被驱遣,何言复来还。妾有绣腰襦,葳蕤自生光。红罗复斗帐,四角垂香囊。箱帘六七十,绿碧青丝绳。 物物各具异,种种在其中。人贱物亦鄙,不足迎后人。留待作遣施,于今无会因。时时为安慰,久久莫相忘。鸡鸣外欲曙,新妇起严妆。著我绣夹裙,事事四五通。 足下蹑丝履,头上玳瑁光。腰若流纨素,耳著明月当。指如削葱根,口如含珠丹。纤纤作细步,精妙世无双。上堂谢阿母,母听怒不止。昔作女儿时,生小出野里。 本自无教训,兼愧贵家子。受母钱币多,不堪母驱使。今日还家去,念母劳家里。却与小姑别,泪落连珠子。新妇初来时,小姑始扶床。今日被驱遣,小姑如我长。 勤心养公姥,好自相扶将。初七及下九,嬉戏莫相忘。出门登车去,涕落百余行。府吏马在前,新妇车在后。隐隐何甸甸,俱会大通口。下马入车中,低头共耳语。 誓不相隔卿,且暂还家去。吾今且赴府,不久当还归。誓天不相负,新妇谓府吏。感君区区怀,君既若见录。不久望君来,君当作磐石。
转载于:https://www.cnblogs.com/GP1014336455/p/7746192.html
php+Mysql分页 类和引用详解相关推荐
- mysql极限_SQL极限函数limit()详解分页必备
limit含义: limit英语中的含义是限制,限定的意思.小日本曾上映过一个电影就是叫limit是由漫画改编的电影,剧情很变态,但不可否认小日本由于地狭人稠的原因,在观念上的资源危机意识还是很强的哈 ...
- 关于Tomcat与MySQL连接池问题的详解
转载自 关于Tomcat与MySQL连接池问题的详解 研究了一天,终于有所收获,希望对大家有所帮助.首先请大家注意:这里尤其讨论Tomcat5.5版本中遇到的问题,为什么尤其单对这个版本,我一会儿 ...
- MySQL数据类型以及基本使用详解
MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...
- linux 用root安装mysql数据库_Linux上安装Mysql及简单的使用详解
1. 安装mysql sudo apt-get update sudo apt-get install mysql-server sudo apt-get install python-mysqldb ...
- c++类的构造函数详解
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...
- UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- java 重启线程_java 可重启线程及线程池类的设计(详解)
了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的 ...
- PHP之PHP文件引用详解
HP的文件引用涉及到四个函数: 文件引用 1.include() 2.include_once() 3.require() 4.require_once() 这四个函数常常会给PHP初学者造成困扰,总 ...
- [转]c++类的构造函数详解
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...
最新文章
- 往往客户的需求是逐渐被深入的真正的实际需求往往没刚开始所说的那么简单容易就可以搞定...
- SSH服务的渗透测试
- Building A New Barn(POJ-3269)
- 360集团或将推出数字安全免费新品
- python 列表为空_如果列表为空,则Python返回False
- git合并分支,发布代码
- 电影推荐系统 python简书_电影推荐系统:TMDB 5000 Movie Dataset(一)
- grads插值_常用grads函数
- 最通俗易懂的JavaScript入门教程
- Linux服务器跑机器学习代码报错记录
- php 微信公众号图片外链,如何制作微信图文链接?微信图文链接生成
- TIPC Cluster5
- IMX6ull_Linux驱动编写(1)
- TCP 的那些事 | SACK
- LUA脚本扩展wireshark自定义的协议
- python,调出黑白局部色彩照片,快去使用吧!
- css样式文件的引入方式
- 实验第五节——channel相关操作
- 网易邮箱回应“账号遭公开叫卖”:不涉及用户敏感信息 已报案
- 清华博士 计算机 论文,清华博士毕业生获智能交通系统学会最佳博士论文奖-清华大学新闻网...
热门文章
- 南华大学计算机学院ICT,【计算机学院】南华大学计算机学院2016级物联网工程系、网络工程系教育大会顺利举行...
- python无法print彩色字体
- 关于大学生创新创业训练项目
- hive内置操作符与内置函数
- 基于STM32+SIM800C+IoT开发平台设计的森林火灾预警系统(联动控制)
- 苹果7更新系统13没有服务器,ios14更新正式版能降级到ios13.7吗 苹果ios14怎么降级方法教程...
- 正则化贪心森林RGF(Regularized Greedy Forest)详解和实战
- Audio Weaver
- 2017年大数据 云计算 物联网发展趋势
- 百度将与日本雅虎开展广告业务合作