设为首页 收藏本站
查看: 1112|回复: 0

[经验分享] 分页程序设计理解page.class.php

[复制链接]

尚未签到

发表于 2015-8-24 10:33:36 | 显示全部楼层 |阅读模式
  关于分页程序,我的理解是当点击某个链接如:[下一页]就显示下一页对应的数据.
  这本质是对数据库的操作,简而言之换成SQL语句就是 select some_fields from table limit Offset Num;
  这里Num是固定的,比如每页显示10条数据
  关键是Offset,即偏移量,每点击下一页时候,这个值就会发生变化;如:0,10     10,10     20,10....

  在页面上最终显示的只有两个东西,一个是对应的数据(图片,文字等...),一个是 分页链接(共xx条记录,每页显示10条,当前第1/32页 [首页] [上页] [下页] [尾页] )
  下面具体实现代码



<?php
class page{
//总记录数量
public $count;
//每页显示多少条
public $meiye;
//总页数
public $pages;
//当前是第几页
public $now_page;
//上一页
private $prev;
//下一页
private $next;
//偏移量
public $offset;
//样式
public $style;
//请求文件的地址
private $url;
//传入4个参数:1总记录条数,2每页显示条数,3执行脚本的文件名,4输出样式(可选)
public function __construct($count,$meiye,$url,$style=1){
$this->count=$count;
$this->meiye=$meiye;
$this->pages=ceil($this->count/$this->meiye);
$this->now_page=$this->get_now_page();
$this->url=$url;
$this->prev=$this->get_prev_page();
$this->next=$this->get_next_page();
$this->offset=$this->get_offset();
$this->style=$this->get_style($style);
}
//获得当前是第几页
private function get_now_page(){
return isset($_GET['page'])?$_GET['page']:1;
}
//获得上一页
private function get_prev_page(){
return $this->now_page-1?$this->now_page-1:false;
}
//获得下一页
private function get_next_page(){
return $this->now_page+1>$this->pages?false:$this->now_page+1;
}
//获得偏移量
private function get_offset(){
return $this->now_page<=1&&$this->now_page>0?0:($this->now_page-1)*($this->meiye);
}
//获得分页链接风格默认是:
//共30条记录,每页显示4条,当前第1/8页 [首页] [下一页] [尾页]
private function get_style($s){
$str='';
if ($this->pages>1) {
if($s==1){
$str.="共{$this->count}条记录,每页显示{$this->meiye}条,当前第{$this->now_page}/{$this->pages}页 ";
$str.="<a href='$this->url?page=1'>[首页]</a> ";
$this->prev?$str.="<a href='$this->url?page=$this->prev'>[上一页]</a> ":false;
$this->next?$str.="<a href='$this->url?page=$this->next'>[下一页]</a> ":false;
$str.="<a href='$this->url?page=$this->pages'>[尾页]</a>";
}else{
$str.= "当前第{$this->now_page}/{$this->pages}页";
$str.="<a href='$this->url?page=1'>[首页]</a> ";
$this->prev?$str.="<a href='$this->url?page=$this->prev'>[上一页]</a> ":false;
for ($j = 1; $j <= $this->pages; $j++) {
$str.="<a href=$this->url?page=$j>$j</a>  ";
}
$this->next?$str.="<a href='$this->url?page=$this->next'>[下一页]</a> ":false;
$str.="<a href='$this->url?page=$this->pages'>[尾页]</a>";
}
return $str;
}
}
}
  当使用的时候,取出偏移量Offset,和style



<?php
include 'mysql.class.php';
include 'page.class.php';
//实例化模型
$m=new Model('woliu');
//获得表中的所有数据
$c=$m->acount();
//实例化分页类(总条数,每页显示多少条记录,执行脚本,样式)
$p=new page($c,4,'page3.php',1);
//获得偏移量
$of=$p->offset;
//查询数据库
$res=$m->select('pic','','',"$of,4");
//便利结果集$res
//输出分页链接
echo $p->style;
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103340-1-1.html 上篇帖子: CI框架源码阅读笔记8 控制器Controller.php 下篇帖子: php需要掌握的东西
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表