php : 自定义分页类
Page.class.php :
<?php
namespace Tools; class Page
{
private $total; //数据表中总记录数
private $listRows; //每页显示行数
private $limit;
private $uri;
private $pageNum; //页数
private $config = array('header' => "个记录", "prev" => "上一页", "next" => "下一页", "first" => "首 页", "last" => "尾 页");
private $listNum = 8;
/*
* $total
* $listRows
*/
public function __construct($total, $listRows = 10, $pa = "")
{
$this->total = $total;
$this->listRows = $listRows;
$this->uri = $this->getUri($pa);
$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($pa)
{
$url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?") . $pa;
$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()
{
$html = "";
if ($this->page == 1) {
$html .= '';
} else {
$html .= " <a href='{$this->uri}&page=1'>{$this->config["first"]}</a> ";
} return $html;
} private function prev()
{
$html = "";
if ($this->page == 1) {
$html .= '';
} else {
$html .= " <a href='{$this->uri}&page=" . ($this->page - 1) . "'>{$this->config["prev"]}</a> ";
} return $html;
} private function pageList()
{
$linkPage = ""; $inum = floor($this->listNum / 2); for ($i = $inum; $i >= 1; $i--) {
$page = $this->page - $i; if ($page < 1) {
continue;
} $linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> "; } $linkPage .= " {$this->page} "; for ($i = 1; $i <= $inum; $i++) {
$page = $this->page + $i;
if ($page <= $this->pageNum) {
$linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> ";
} else {
break;
} } return $linkPage;
} private function next()
{
$html = "";
if ($this->page == $this->pageNum) {
$html .= '';
} else {
$html .= " <a href='{$this->uri}&page=" . ($this->page + 1) . "'>{$this->config["next"]}</a> ";
} return $html;
} private function last()
{
$html = "";
if ($this->page == $this->pageNum) {
$html .= '';
} else {
$html .= " <a href='{$this->uri}&page=" . ($this->pageNum) . "'>{$this->config["last"]}</a> ";
} return $html;
} private function goPage()
{
return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.value;location=\'' . $this->uri . '&page=\'+page+\'\'}" value="' . $this->page . '" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.previousSibling.value;location=\'' . $this->uri . '&page=\'+page+\'\'"> ';
}
public function fpage($display = array(0, 1, 2, 3, 4, 5, 6, 7, 8))
{
$html[0] = " 共有<b>{$this->total}</b>{$this->config["header"]} ";
$html[1] = " 每页显示<b>" . ($this->end() - $this->start() + 1) . "</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 ";
$html[2] = " <b>{$this->page}/{$this->pageNum}</b>页 "; $html[3] = $this->first();
$html[4] = $this->prev();
$html[5] = $this->pageList();
$html[6] = $this->next();
$html[7] = $this->last();
$html[8] = $this->goPage();
$fpage = '';
foreach ($display as $index) {
$fpage .= $html[$index];
} return $fpage; } }
使用例子:
$goods = D("Goods");
// 1)分页设置
$total = $goods->count(); // 总记录数
$listRows = 7; // 每页显示条数
// 2)实例化分页对象
$page = new \Tools\Page($total, $listRows);
// 3)分页 sql 语句
$sql = "select * from sw_goods order by goods_id desc " . $page->limit;//limit 方法返回'limit xx,xx'
$info = $goods->query($sql);
// 4)制作页码列表
$fpage = $page->fpage(array(3,4,5,6,7,8)); // 前面的统计信息不要
// 5)分配数组
$this->assign("info", $info);
$this->assign("pagelist", $fpage);
$this->display("showgoodslist");
---->>>
php : 自定义分页类的更多相关文章
- Django 自定义分页类
分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...
- thinkphp自定义分页类
先来看下这个分页的样式,没写css,确实丑 什么时候写样式再来上传下css吧...... 就是多一个页面跳转功能 先把这个代码贴一下 <?php namespace Component; cla ...
- PHP24 自定义分页类
分页类的定义 <?php /** * Class MyPage 分页类 * @package core */ class MyPage { private $totalCount; //数据表中 ...
- python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)
今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...
- python---django中自带分页类使用
请先看在学习tornado时,写的自定义分页类:思路一致: python---自定义分页类 1.基础使用: 后台数据获取: from django.core.paginator import Pagi ...
- [ Laravel 5.6 文档 ]laravel数据库操作分页(自定义分页实现和自定义分页样式)
简介 在其他框架中,分页可能是件非常痛苦的事,Laravel 让这件事变得简单.易于上手.Laravel 的分页器与查询构建器和 Eloquent ORM 集成在一起,并开箱提供方便的.易于使用的.基 ...
- 好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字
在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ...
- TP5 分页类,自定义样式
结合X-admin 后台框架 在做项目,为了保持分页风格的一致,所以需要自定义 一个分页类. 一.在项目的 extend 目录,创建 cus 目录 二.创建 Page 分页类,代码如下 <?ph ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
随机推荐
- AngularJS 2.0
https://angular.io/docs/ts/latest/guide/learning-angular.html QuickStart: git clone https://github.c ...
- Ubuntu16.04安装vim插件YouCompleteMe
原文 1 下载 git clone --recursive git://github.com/Valloric/YouCompleteMe 如果执行该命令没报错, 就ok了. 但是中途有可能会断掉, ...
- Ref和Out参数的区别(转帖)
首先,如果不使用这两个关键字,那是什么样 呢? 看下面的例子: using System; class Test { static void Swap(ref int x, ref int ...
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- 通什翡翠商城大站协议邮件群发系统日发20-30万封不打码不换ip不需发件箱100%进收件箱
用一种新的技术思维去群发邮件一种不用换IP,不需要任何发件箱的邮件群发方式一种不需要验证码,不需要**代码变量的邮件群发方式即使需要验证码也能全自动识别验证码的超级智能软件教你最核心的邮件群发思维和软 ...
- Apache+Tomcat实现负载均衡
反向代理负载均衡 (Apache2+Tomcat7/8) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方 ...
- Buge's Fibonacci Number Problem
Buge's Fibonacci Number Problem Description snowingsea is having Buge’s discrete mathematics lesson, ...
- jexus部署ASP.NET MVC网站
1.新建项目,我这里新建的空项目中的MCV 2.用nuget删除这两个类库 Microsoft.CodeDom.Providers.DotNetCompilerPlatform Microsoft.N ...
- ExtJs combobox模糊匹配
下拉列表模糊查询(重要代码): listeners : { beforequery : function(e) { var combo = e.combo; if(!e.forceAll){ var ...
- 【数学】Jersey Politics
Jersey Politics Time Limit: 1000MS Memory ...