X
活动推荐

阿里云高性能云主机2折293元/年

企业级性能云服务器限时2折起
新用户5折爆款服务器会场
查看详情
阅读模式:

php分页类代码

查看:2339  回复:0  类型:  来源:php自学网  标签 php php分页

        php分页使用sql语句的limit实现。分页时每页会有不同的内容和固定的条数。在实际应用中后端会计算出总页数并输出展示到前端,前端通过请求相应的页数,后端处理后并返回相应页数的内容。

一、分页关键词

        当前页:每次要跳转到的页数

        分页大小:每页显示的内容条数

        总记录数:表中总共有的数据条数

        总页数:总记录条数/分页大小 (ceil向上取整数)

二、分页公式

        (page-1)*pagesize,pagesize

        ps :  (当前页-1)*分页大小,分页大小  假如用户表为user,sql语句:select * from user limit ($page-1)*$pagesize,$pagesize,比如每页取10条,

        第1页:select * from user limit 0,10;          (1-1)*10,10

        第2页:select * from user limit 10,10 ;       (2-1)*10,10

        第3页:select * from user limit 30,10 ;       (3-1)*10,10

        第4页:select * from user limit 40,10 ;       (4-1)*10,10

        .....

三、分页类代码

<?php

class page{
	
	public $dbh;  //数据库连接
	public $sql;  //sql语句
	public $url;  //分页url
	public $pagesize;  //分页大小
	public $page;  //当前页
        public $count_page;  //总页数
        
        
        //初始化数据
        public function __construct($dbh,$sql,$url,$pagesize,$page){
            $this -> dbh = $dbh;
            $this -> sql = $sql;
            $this -> url = $url;
            $this -> pagesize = $pagesize;
            $this -> page = intval($page);
    		if(empty($this->page)){
    			$this->page=1;
    		}
    		
        }
	
	//分页数据sql
	public function pages(){
		
		if(empty($this -> pagesize)){
			$this -> pagesize = 6;
		}
		
		$sql1 = $this->sql.' LIMIT '.($this->page-1)*$this->pagesize.','.$this->pagesize;
		$res = $this -> dbh -> query($sql1);
		return $res -> fetchAll();
	
	}
        
        //分页样式输出
	public function page_nums (){

            $sql = $this -> sql;
            $res = $this -> dbh -> query($sql);
            $res1 = $res -> fetchAll();
            $allnum = count($res1);//总条数
            $allpage = ceil($allnum/$this->pagesize);//总页数
		if($allpage<2&&$allpage>0){

		}else{
			$p='';
			$p.= '<nav aria-label="Page navigation"><ul class="pagination">';
			
			if($this->page>1){
				$nurl1 = explode('.',$this->url);
				$p.='<li><a href="'.$nurl1[0].($this->page-1).'.'.$nurl1[1].'" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>';
			}

			if($this->page<=($allpage)&&$this->page<6){

                if($allpage>=10){
                    $allpages=10;
                }else{
                    $allpages=$allpage;
                }
                for($i=1;$i<=$allpages;$i++){
                    $nurl = explode('.',$this->url);
                    $nurls = $nurl[0].$i.'.'.$nurl[1];

                    if($i==$this->page){
                        $p.= "<li class='active'><a href=\"{$nurls}\">{$i}</a></li>";
                    }else{
                        $p.= "<li><a href=\"{$nurls}\">{$i}</a></li>";
                    }
                }

            }else if($allpage>5&&$this->page<=($allpage)&&$this->page<=$allpage-5){
                $offset_u = ($this->page-5);
                $offset_d = ($this->page+5);
                //偏移上5个
                for($i=$offset_u;$i<$this->page;$i++){
                    $nurl = explode('.',$this->url);
                    $nurls = $nurl[0].$i.'.'.$nurl[1];

                    if($i==$this->page){
                        $p.= "<li class='active'><a href=\"{$nurls}\">{$i}</a></li>";
                    }else{
                        $p.= "<li><a href=\"{$nurls}\">{$i}</a></li>";
                    }
                }
                //偏移下5个
                for($i=$this->page;$i<=$offset_d;$i++){
                    $nurl = explode('.',$this->url);
                    $nurls = $nurl[0].$i.'.'.$nurl[1];

                    if($i==$this->page){
                        $p.= "<li class='active'><a href=\"{$nurls}\">{$i}</a></li>";
                    }else{
                        $p.= "<li><a href=\"{$nurls}\">{$i}</a></li>";
                    }
                }
            }else{
                $offset_u = ($this->page-5);
                $offset_d = ($allpage);
                //偏移上5个

                if($allpage>5){
                    for($i=$offset_u;$i<$this->page;$i++){
                        $nurl = explode('.',$this->url);
                        $nurls = $nurl[0].$i.'.'.$nurl[1];

                        if($i==$this->page){
                            $p.= "<li class='active'><a href=\"{$nurls}\">{$i}</a></li>";
                        }else{
                            $p.= "<li><a href=\"{$nurls}\">{$i}</a></li>";
                        }
                    }
                }

                //偏移下5个
                for($i=$this->page;$i<=$offset_d;$i++){
                    $nurl = explode('.',$this->url);
                    $nurls = $nurl[0].$i.'.'.$nurl[1];

                    if($i==$this->page){
                        $p.= "<li class='active'><a href=\"{$nurls}\" >{$i}</a></li>";
                    }else{
                        $p.= "<li><a href=\"{$nurls}\">{$i}</a></li>";
                    }
                }
            }

			
			if($this->page<($allpage)){
				$nurl1 = explode('.',$this->url);
				$p.='<li><a href="'.$nurl1[0].($this->page+1).'.'.$nurl1[1].'" aria-label=\"Next\"><span aria-hidden="true">&raquo;</span></a></li>';
			}

            if($allpage>1){
                $p.='<li><a href="javascript:;">共'.$allpage.'页</a></li>';
            }


			$p.= '</ul></nav>';
			return $p;
		}

    }

}

    调用:

$res = new page($dbh,$sql,$url,$pagesize=20,$page);
$res1['page']= $res -> page_nums();
$res1['res'] = $res -> pages();
return $res1;

    效果图:

page1.png

page2.png

分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:9585centos 7 添加 redis 3.2.9 开机启动脚本   阅读:8257最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:9585php 读取和设置redis的键值   阅读:6517“米粉节”背后的故事——小米网抢购系统开发实践   阅读:3557简单的DOS攻击之死亡之ping详解   阅读:43540centos 7 添加 redis 3.2.9 开机启动脚本   阅读:8257php翻转字符串   阅读:2685centos 7 设置 nginx-1.11.10 开机启动   阅读:7150php打印三角形   阅读:7044centos7中颁发CA证书并开启web https   阅读:5399浅谈javascript的函数节流   阅读:4011centos7开启交换内存   阅读:9431php翻转字符串   阅读:2685给网站添加一键qq登录的功能   阅读:6366centos 7 设置 nginx-1.11.10 开机启动   阅读:7150TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:2343centos7中颁发CA证书并开启web https   阅读:5399面试都会问你为什么你从上一家公司离职的真实意思   阅读:9733用php从1加到100的值   阅读:7391php生成二维码   阅读:5513shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:7615Mysql在大型网站的应用架构演变   阅读:3934centos 7 添加 redis 3.2.9 开机启动脚本   阅读:8257centos 7搭建zabbix3.4   阅读:5362php冒泡排序法   阅读:12311centos 7搭建zabbix3.4   阅读:5362crontab+shell脚本实现定时备份mysql数据库   阅读:6586mysql的四种索引类型   阅读:18721面试的时候和你谈理想,是理想or入坑?   阅读:8596php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:7122centos 7 安装 redis 3.2.9   阅读:5814ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:7908php+redis实现消息队列   阅读:11757nginx安装mysql和json模块   阅读:3574浅谈javascript的函数节流   阅读:4011程序员找工作三要素(必看)   阅读:4985web项目高并发量网站解决方案   阅读:3923php 读取和设置redis的键值   阅读:6517最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:9585纯干货,程序员面试的超实用技巧   阅读:3642用php从1乘到100的值   阅读:5544mysql数据一键导出到csv文件   阅读:4833nginx安装mysql和json模块   阅读:3574php swoole搭建简单的聊天室   阅读:2466面试的时候回去等通知,等电话的真实意思   阅读:20941linux教程,鸟哥私房菜(pdf全集)   阅读:7799php打印三角形   阅读:7044把php session 会话保存到redis   阅读:6317十张GIF让你弄懂递归等概念   阅读:5253