php 分页类

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

分页公式:页数=(总记录数-1)/每页显示记录数+1;

借助这个公式,实现以下分页类;

<?php

    class Fpage{
        private $total; //数据表中总记录数
        private $listRows;    //每页显示的行数
        private $limit;
        private $uri;
        private $pageNum;    //行数
        private $config = array("header"=>"记录","pre"=>"上一页","next"=>"下一页","first"=>"首页",
                                "last"=>"尾页");
        
        public function __construct($total,$listRows=5){
            $this->total = $total;
            $this->listRows = $listRows;    
            $this->uri = $this->getUri();
            $this->page = !empty($_GET['page'])?$_GET['page']:1;
            $this->pageNum = ceil($this->total/$this->listRows);
            $this->limit = $this->setLimit();
        }
        
        private function setLimit(){
            return "Limit ".($this->page - 1)*$this->listRows.",{$this->listRows}";
        }
                
        private function getUri(){
            $url = $_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],'?')?'':"?");    
            $parse = parse_url($url);
            
            if(isset($parse["query"])){
                parse_str($parse["query"],$params);
                unset($params['page']);
                $url = $parse['path'].'?'.http_build_query($params);
            }
            return $url;
        }
        
        public function __get($args){
            if($args == "limit"){
                return $this->limit;    
            }
            else{
                 return null;    
            }
        }
        
        private function start(){
            if($this->total == 0){
                return 0;    
            }
            else{
            return ($this->page - 1)*$this->listRows + 1;
            }
        }
        
        private function end(){
                return min($this->page*$this->listRows,$this->total);
        }
        
        private function first(){
            if($this->page == 1){
                $html .='';    
            }
            else{
                $html.="&nbsp;&nbsp;<a href='{$this->uri}&page=1'>{$this->config['first']}</a>&nbsp;&nbsp;";    
            }
            return $html;
        }
        
        private function pre(){
            if($this->page == 1){
                $html .='';    
            }
            else{
                $html.="&nbsp;&nbsp;<a href='{$this->uri}&page=".($this->page-1)."'>{$this->config['pre']}</a>&nbsp;&nbsp;";    
            }
            return $html;
        }
        
        private function next(){
            if($this->page == $this->pageNum){
                $html .='';    
            }
            else{
                $html.="&nbsp;&nbsp;<a href='{$this->uri}&page=".($this->page+1)."'>{$this->config['next']}</a>&nbsp;&nbsp;";    
            }
            return $html;
        }
        
        private function last(){
            if($this->page == $this->pageNum){
                $html .='';    
            }
            else{
                $html.="&nbsp;&nbsp;<a href='{$this->uri}&page={$this->pageNum}'>{$this->config['last']}</a>&nbsp;&nbsp;";    
            }
            return $html;
        }
        
        private function pageList(){
            $pageLink = '';
            $inum = floor($this->pageNum/2);
            for($i=$inum;$i>=1;$i--){
                $page = $this->page-$i;
                if($page<1)continue;
                else{
                    $pageLink.="&nbsp;<a href='{$this->uri}&page={$page}'>{$page}</a>&nbsp;";    
                }
                }
            $pageLink.="&nbsp;{$this->page}&nbsp;";
            for($i=1;$i<$inum;$i++){
                $page = $this->page+$i;    
                if($page<=$this->pageNum){
                    $pageLink .= "&nbsp;<a href='{$this->uri}&page={$page}'>{$page}</a>&nbsp;";    
                }
                else break;
            }
            return $pageLink;
        }
        
        private function goPage(){
            return '&nbsp;&nbsp;<input type="text" οnkeydοwn="javascript:if(event.keyCode == 13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" style="width:35" value='.$this->page.'><input type="button" value="GO" οnclick="javascript:if(event.keyCode == 13){var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'}">&nbsp;&nbsp;';
            
        }
        
        public function fpage($display=array(0,1,2,3,4,5,6,7,8)){
            $html[0]= "&nbsp;&nbsp;共有<b>{$this->total}</b>条{$this->config['header']}&nbsp;&nbsp;";
            $html[1]= "&nbsp;&nbsp;每页显示<b>{$this->listRows}</b>条{$this->config['header']},
                    本页<b>{$this->start()}-{$this->end()}</b>条&nbsp;&nbsp;";
            $html[2]="&nbsp;&nbsp;<b>{$this->page}/{$this->pageNum}</b>页&nbsp;&nbsp;";
            $html[3]=$this->first();
            $html[4]=$this->pre();
            $html[5]=$this->pageList();
            $html[6]=$this->next();
            $html[7]=$this->last();
            $html[8]=$this->goPage();
            
            foreach($display as $key){
                $Fpage.=$html[$key];
            }
            return $Fpage;    
        }
    }
?>

应用:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
    //自动加载函数类
    function __autoload($className){
        include strtolower($className).'.class.php';    
    }
    
    $link = mysql_connect("localhost","user","password") or die ("链接用户失败");
    @$db = mysql_select_db("dbname") or die("链接数据库失败");
    
    $result = mysql_query("select * from shops");
    $total = mysql_num_rows($result);
    
    $num = 5;
    
    $page = new Fpage($total,$num);
    $sql = "select * from shops {$page->limit}";
    $result = mysql_query($sql) or die ("操作错误");
    $cols = mysql_num_fields($result);
    
    echo "<table align='center' border='2' width='900'>";
    echo "<caption><h1>SHOPS</h1></caption>";
    
    echo '<tr>';
        for($i=0;$i<$cols;$i++){        
            echo '<th>'.mysql_field_name($result,$i).'</th>';
        }
    echo '</tr>';
        
    while($rows=mysql_fetch_assoc($result)){
        echo "<tr>";
        echo "<td>".$rows['id']."</td>";
        echo "<td>".$rows['name']."</td>";
        echo "<td>".$rows['dates']."</td>";
        echo "<td>".$rows['price']."</td>";
        echo "<td>".$rows['desnc']."</td>";
        echo "</tr>";
            
    }
    
    echo "<tr><td colspan='5' align='right'>".$page->fpage(array(3,4,5,6,7,8,0,1,2))."</td></tr>";
    echo "</table>";
?>

转载于:https://my.oschina.net/tianhuahua/blog/157194

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker中的Nginx搭建HTTPS环境

准备 1.已安装好docker环境 2.申请好域名 3.SSL证书&#xff08;可选&#xff09; 一、安装Nginx docker pull nginx 查看docker镜像&#xff1a; docker images 二、进行配置 建目录用于存放nginx配置文件、证书文件 mkdir /opt/docker/nginx/conf.d -p touch /opt/docke…

Android的引用jar包

先来个基础的&#xff0c;在eclips里在工程名上右键->build path->contigure bud path->java build path里有个几个选项add external jars 增加工程外部的包add jars 增加工程内包add library 增加一个库add class folder 增加一个类文件夹下面着重介绍add libra…

Android木马分析实验,Android木马简介与分析

本文介绍基于Android的手机恶意软件&#xff0c;是一个基础性的介绍&#xff0c;给新入门的人提供一个分析和工具指引。要分析的木马是一个2013年的syssecApp.apk&#xff0c;这个木马的分析能对Android恶意软件有个大概了解。基础&#xff1a;1 –Android应用基础Android是goo…

Visual Studio 2012资源管理器里单击打开改为双击打开文件

Visual Studio 2012资源管理器里&#xff0c;单击打开文件改为双击打开文件&#xff0c;如图&#xff1a;

监控服务器容量 MOM

http://xxglx.jxcfs.com/net/zyk/htmlfiles/practice/practice00097.htm转载于:https://www.cnblogs.com/Kazaf/p/3286409.html

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时&#xff0c;将显示蓝色诊断屏幕&#xff08;BSOD&#xff09;。 会看到类似于以下内容的错误&#xff1a; VMware Workstation和Device / Credential Guard不兼容。禁…

android怎么升级版本5.0,一加手机怎么升级安卓5.0系统

谷歌今天正式发布了最新的安卓5.0正式版&#xff0c;作为一次非常大的系统升级&#xff0c;安卓5.0带来了非常多明显的升级&#xff0c;体验上相比安卓4.4要精进不少。在众多手机纷纷向Android 5.0发起冲击之时&#xff0c;一加手机官方论坛也放出了首个Android 5.0固件&#x…

Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css

网上压缩css和js工具很多&#xff0c;但在我们的系统中总有特殊的地方。也许你会觉得用第三方的压缩工具很麻烦。我就遇到了这样问题&#xff0c;我不想在本地压缩,只想更新到服务器上去压缩&#xff0c;服务器压缩也不用备份之类的操作。于是我就想着自己实现压缩工具。 初步…

Android 自动化测试——Monkey测试

2019独角兽企业重金招聘Python工程师标准>>> 1、Monkey测试简介 Monkey主要应用在压力和可靠性测试上&#xff0c;运行该命令可以随机地向目标程序发送各种模拟键盘事件流&#xff0c;并且可以自己定义发送的次数&#xff0c;以此观察被测应用程序的稳定性和可靠性…

android默认开机动画,修改安卓开机动画(除了部分系统 如MIUI等)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这技术已经很久了&#xff0c;但还是忍不住搬运了一下。出处是百度的&#xff0c;很久很久以前玩手机在百度上学的我这里说的开机动画是指开机的第二屏开机动画可以在下载的rom里修改&#xff0c;也可以刷机后修改(推荐后者&#x…

MongoDB Query 的几个方法

Query.All("name", "a", "b");//通过多个元素来匹配数组Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足多个条件Query.EQ("name", "a");//等于Query.Exist…

android 页面无法点击,为什么点击不跳转到下一界面,哪位大神帮瞅瞅

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package com.example.udp;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.widget.Button;import android.widget.EditText;public class Temp ext…

一个网卡绑定多个IP

2019独角兽企业重金招聘Python工程师标准>>> 今天在做公司行业网站时&#xff0c;遇到这样一个问题&#xff0c;由于做了多个行业网站&#xff0c;每个行业网站都要一个会员模板网站&#xff0c;这种网站需要域名泛指向功能&#xff0c;而一个IP地址&#xff0c;80端…

如何在Jupyter中运行R语言(两种解决方案)

Python用Jupyter写分析记录比较舒服&#xff0c;学了R也想在Jupyter上运行。 复杂方案 安装R语言、Jupyter程序 在R Console中安装1 install.packages(c(repr, IRdisplay, evaluate, crayon, pbdZMQ, devtools, uuid, digest))安装需要的基础包 devtools::install_github(IRk…

android高仿天天动听,Android仿天天动听歌曲自动滚动view

最近项目中要做一个类似天天动听歌曲自动滚动行数的效果。首先自己想了下Android要滚动的那就是scroller类或者scrollto、scrollby结合了&#xff0c;或者view.layout()方法&#xff0c;或者使用动画。但是要循环滚动&#xff0c;貌似这些到最后一行滚动到第一行都有往回滚的效…

Pechkin:html - pdf 利器

Pechkin 是GitHub上的一个开源项目&#xff0c;可方便将html转化成pdf文档&#xff0c;使用也很方便&#xff0c;下面是winform项目中的示例代码&#xff1a; using System; using System.Diagnostics; using System.Drawing.Printing; using System.IO; using System.Windows.…

packer build 报错 无任何输出 一直报“skipping line: 1 skipping line: 2 skipping line: 3.....”

最近使用packer build 报错 无任何输出 一直报“skipping line: 1 skipping line: 2 skipping line: 3.....” &#xff0c; 解决方法如下&#xff1a; # Install wget and unzip before executing the below steps wget https://releases.hashicorp.com/packer/1.0.0/packer_…

使用ZeroClipboard解决跨浏览器复制到剪贴板的问题

Zero Clipboard的实现原理Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上&#xff0c;这样其实点击的不是按钮而是 Flash &#xff0c;这样将需要的内容传入Flash&#xff0c;再通过Flash的复制功能把传入的内容复制到剪贴板。 Zero Clipboard的安装方法首先需要下载 …

android inflate 三个参数的含义,LayoutInflater.inflate 3个参数的含义

LayoutInflater.inflate 天天都在用但对它 3 个参数的含义没有很好的理解之前 root 一直传 null , 现在才知道传 null 在多数情况下都是不对的public View inflate(LayoutRes int resource, Nullable ViewGroup root, boolean attachToRoot)第一个参数是布局ID 没什么说的第二个…

详解UML中的聚合,关联,泛化等关系

1. Overview UML设计类中&#xff0c;类的关系分为Generalization(泛化)&#xff0c;Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(组合关系)五种! 2. Generalization(泛化) Generalization(泛化)表现为继承或实现关系(is a)。具体形式为…