一个比较简单的PHP 分页分组类

2014-08-19  来源:本站原创  分类:php实例  人气:1 

最近写的一个PHP 分页分组类,写完后才看到,网上有太多的了,但是这个比较简单,记到此处,备用,对于学习php的朋友也是一个不错的参考。

<?php
class mysqlPager{
var $pagePerNum=5;//每页显示数据项数
var $pagePerGroup=5;//每分页组中页数
var $curPage=0;//当前页,Defualt 第一页
var $totalPage=0;//总页数
var $totalNum=0;//数据项总数
var $curPageGroup=0;//当前分页组
var $curPageUrl="";//当前用到分页的 URL
var $customStyle="";//自定义风格
var $pageQuerySql="";
function mysqlPager(){//构造函数 PHP4
}
/**
* 初始化所有变量
*/
function InitAllVar($totalNum,$pagePerGroup,$curPageUrl,$curPage=1,$curPageGroup=1)
{
$this->totalNum=$totalNum;
$this->pagePerGroup=$pagePerGroup;
$this->curPageUrl=$curPageUrl;
$this->curPage=$curPage;
$this->curPageGroup=$curPageGroup;
}
/**
* 设置当前页变量
*
* @param 数字 $curPage
*/
function setCurPage($curPage)
{
$this->curPage=$curPage;
}
/**
* 设置当前分页组变量
*
* @param mixed $curPageGroup
*/
function setCurPageGroup($curPageGroup)
{
$this->curPageGroup=$curPageGroup;
}
/**
* 设置当前用到分布类的URL
* $curPageUrl string
*/
function setCurPageUrl($curPageUrl)
{
$this->curPageUrl=$curPageUrl;
}
/**
* 获取所有
*
* @param 数字 $totalNum
* @param 数字 $curPage
* @return float
*/
function getTotalPage($totalNum,$curPage=0)
{
return $this->totalPage=ceil($totalNum/$this->pagePerNum);
}
/**
* 设置用户自定义风格
*
* @param mixed $customStyle
*/
function setCustomStyle($customStyle)
{
$this->customStyle=$customStyle;
}
/**
* 设置用户自定义风格返回字符串
*
*
* @param mixed $pagerString
*/
function setCustomStyleString($pagerString)
{
return $styleString="<span class=".$customStyle.">".$pagerString."</span>";
}
/**
* 输出导航页信息 可以不用参数,但是在使用前一定要设置相应的变量
*
* @param mixed $curPageGroup
* @param mixed $curPage
* @param mixed $curPageUrl
*/
function showNavPager($curPageGroup=0,$curPage=0,$curPageUrl=0)
{
if($curPageGroup)
{
$this->curPageGroup=$curPageGroup;
}
if($curPage)
{
$this->curPage=$curPage;
}
if($curPageUrl)
{
$this->curPageUrl=$curPageUrl;
}
$rtnString="";
//判断变量是否以经初始化
if($this->curPageGroup && $this->curPageUrl && $this->totalNum && $this->curPage)
{
$this->totalPage=$this->getTotalPage($this->totalNum);
if($this->curPage==1)
$this->curPage=($this->curPageGroup-1)*$this->pagePerGroup+1;
if($this->curPageGroup!=1)
{
$prePageGroup=$this->curPageGroup-1;
$rtnString.="<a href=".$this->curPageUrl."?cpg=$prePageGroup >".$this->setCustomStyleString("<<")."</a> ";
}
for($i=1;$i<=$this->pagePerGroup;$i++)
{
$curPageNum=($this->curPageGroup-1)*$this->pagePerGroup+$i;
if($curPageNum<=$this->totalPage){
if($curPageNum==$this->curPage)
{
$rtnString.=" ".$this->setCustomStyleString($curPageNum);
}else
{
$rtnString.=" <a href=$this->curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >";
$rtnString.=$this->setCustomStyleString($curPageNum)."</a>";
}
}
}
if($this->curPageGroup<ceil($this->totalPage/$this->pagePerGroup)-1)
{
$nextPageGroup=$this->curPageGroup+1;
$rtnString.=" <a href=$this->curPageUrl?cpg=$nextPageGroup >".$this->setCustomStyleString(">>")."</a>";
}
$this->pageQuerySql=" limit ".(($this->curPage-1)*$this->pagePerNum).",".$this->pagePerNum; 

}
else
{
$rtnString="错误:变量未初始化!";
}
return $rtnString;
}
/**
* 得到完整的查询MYSQL的Sql语句
*
* @param mixed $sql
*/
function getQuerySqlStr($sql)
{
$allsql=$sql.$this->pageQuerySql;
return $allsql;
}
/**
* 设置每页有多少数据项
*
* @param INT $num
*/
function setPagePerNum($num)
{
$this->pagePerNum=$num;
}
}
?>
使用方法:
$curPage=$_GET['cp'];
$curPageGroup=$_GET['cpg']
if($curPage=="")
$curPage=1;
if($curPageGroup=="")
$curPageGroup=1;
//都是从1开始,之前要对传入的数据进行验证,防注入
//。。。
$pager=new MysqlPager();
$pager->initAllVar(...)
$pager->showNavPager();
//后面的SQL可以是任意的输出
$sql="select id form dbname ";
$querysql=$pager->getQuerySqlStr($sql)
//以后用$querysql 查询数据库就可以得到相应的结果集了
相关文章
  • 一个比较简单的PHP 分页分组类 2014-08-19

    最近写的一个PHP 分页分组类,写完后才看到,网上有太多的了,但是这个比较简单,记到此处,备用,对于学习php的朋友也是一个不错的参考. <?php class mysqlPager{ var $pagePerNum=5;//每页显示数据项数 var $pagePerGroup=5;//每分页组中页数 var $curPage=0;//当前页,Defualt 第一页 var $totalPage=0;//总页数 var $totalNum=0;//数据项总数 var $curPageGroup=

  • 一个超级简单的csv读取工具类 2010-03-24

    话说我们项目决定把游戏数据静态文件都从csv读取,所以就写了这个类了,非常简单的,可以把csv的一行映射到一个pojo上 上代码!! import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.lang.reflect.Me

  • 分享一个自己写的简单的javascript分页组件 2014-07-03

    这篇文章主要分享一个自己写的简单的javascript分页组件,效果十分不错,代码也很详尽,这里推荐给小伙伴们. 自己写的一个简单的分页组件,主要功能还有实现都在JS中,html页面中只用增加一个放置生成分页的DIV,并给定容器的id. html结构如下: <ul class="pagination" id="pageDIV"> </ul> class="pagination" 给定了分页的样式, id="pag

  • 一个分页的类及调用的例子 2015-04-14

    //PageCt.java 分页的类 /* *** @version *********** *** Created on 2001年6月25日, 下午14:41 ************************************** */ package vod; import java.sql.*; import java.util.*; public class PageCt { private long l_start; //开始纪录 private long l_end; //结

  • 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载 2013-10-23

    现在自己写的webform都不用服务器控件了,所以自己仿照aspnetpager写了一个精简实用的返回分页显示的html方法,其他话不说了,直接上代码 之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnetpager写了一个精简实用的返回分页显示的html方法,其他话不说了,直接上代码. 分页显示信息的实体类: public class Pager {

  • 一个很不错的PHP翻页类 2013-12-10

    一个很不错的PHP翻页类,包含了使用例子,感谢Alan <?php /* * Created on 2007-6-8 * Programmer : Alan , Msn - [email protected] * PHP100.com Develop a project PHP - MySQL - Apache * Window - Preferences - PHPeclipse - PHP - Code Templates */ //为了避免重复包含文件而造成错误,加了判断函数是否存在的条件

  • C#实现一个最简单的HTTP服务器 2013-12-22

    简介 本文用C#实现了一个最简单的HTTP服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于HTTP协议的知识. 背景 高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS, Apache, 和Tomcat.然而,HTML是非常灵活的UI标记语言,也就是说任何应用和后端服务都可以提供HTML的生成支持.在这个小小的例子中,像IIS,.Apache这样的服务器消耗的资源太大了,我们需要自己实现一个简单的HTTP服务器,将它嵌入到我们的应用中用来处理WEB请求.我们仅需要

  • 利用QT写一个极简单的图形化Python闹钟程序 2013-12-30

    这篇文章主要介绍了利用QT写一个极简单的图形化Python闹钟程序,核心代码只有25行,显示屏幕提示而没有闹铃声音,需要的朋友可以参考下 今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. 看到这里想必大家要问了,何必去做一个这样弱爆了的程序呢.显然,教育意义大于其实际用处. 像其他的模块一样,QT界面包是需要加载的. 我们用到了命令行输入,所以,s

  • 一个ASP创建动态对象的工厂类(类似PHP的stdClass) 2014-05-05

    这篇文章主要介绍了一个ASP创建动态对象的工厂类,可以动态创建对象,和无限制的增加类的属性,和PHP中的stdClass功能类似,需要的朋友可以参考下 最近整理ASP/VBScript代码,发现过去的一个ASP实现的MVC框架,可惜是个半成品,效率也成问题,不过发现里面有些我写的代码,感觉还稍稍可以拿出来见人,于是今天作此文以记之. 说是ASP,其实和VBScript也脱不了干系,VBScript语言传承于Visual Basic,VB的语法灵活度已经不尽如人意了,VBS作为其子集可想而知.神马

  • C#实现简单获取及设置Session类 2014-07-04

    这篇文章主要介绍了C#实现简单获取及设置Session类,涉及C#针对session的设置及获取的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#实现简单获取及设置Session类.分享给大家供大家参考.具体分析如下: 这是一个简单的C#获取Session.设置Session类文件,本类主要实现大家最常用的两个功能: 1.GetSession(string name)根据session名获取session对象: 2.SetSession(string name, object

  • 基于C#实现一个最简单的HTTP服务器实例 2014-08-04

    这篇文章主要介绍了基于C#实现一个最简单的HTTP服务器的方法,详细分析了http服务器的实现原理与相关技巧,以及对应的注意事项,需要的朋友可以参考下 本文详细分析了基于C#实现一个最简单的HTTP服务器的方法.分享给大家供大家参考.具体如下: 一.简介 本文用C#实现了一个最简单的HTTP服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于HTTP协议的知识. 二.背景 高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS, Apache, 和Tomcat.然而,HT

  • SqlParser 一个利用正则表达式解析单句SQL的类 2014-08-23

    一个利用正则表达式解析单句SQL的类,需要的朋友可以参考下 先看要解析的样例SQL语句: select * from dual SELECT * frOm dual Select C1,c2 From tb select c1,c2 from tb select count(*) from t1 select c1,c2,c3 from t1 where condi1=1 Select c1,c2,c3 From t1 Where condi1=1 select c1,c2,c3 from t1

  • php实现分页工具类分享 2014-10-21

    本文分享一个php实现的分页工具类,代码内有注释,大家参考使用吧 代码: /** * 把中间的看成一个可以滑动的固定长度的尺子 * * 把$this->_totalShowPages 当成一个可以滑动的固定长度尺子, * 然后$this->_totalPages就是一个给定长度的木块,尺子在这个 * 木块上滑动.情况两种: * 1. 尺子长度大于木块长度,那么就直接输出所有的页码: * 2. 尺子长度小于木块长度,那么就只用找到输出这个尺子长度页 * 数的起始点--$start, $end;

  • 简单的php写入数据库类代码分享 2014-11-05

    简单的php写入数据库类代码分享,学习php的朋友可以参考下. 不知道原创要写到随笔里. All right ,第一篇博文. 有三个类: 1 . 过滤输入(轻量级的) class input_filter 负责将参数,如$_GET,$_POST 这些过滤 返回值类型为 数组,用作 made_sql 类的参数 2 . 转换成SQL语句 class made_sql 参数的类型为数组和表名(字符串),数组的键名为表的列名,值为插入值 返回值类型为 字符串 ,用作 mysql ->query方法 的参

  • 一个经典的PHP文件上传类分享 2014-11-30

    这篇文章主要介绍了一个经典的PHP文件上传类分享,本文详细全面的讲解了文件上传相关的需求分析及功能实现,并同时给出了使用代码,需要的朋友可以参考下 文件上传是项目开发中比较常见的功能,但文件上传的过程比较繁琐,只要是有文件上传的地方就需要编写这些复杂的代码.为了能在每次开发中降低功能的编写难度,也为了能节省开发时间,通常我们都会将这些反复使用的一段代码封装到一个类中.帮助开发者在以后的开发中,通过编写几条简单代码就可以实现复杂的文件上传功能.对于基础薄弱的读者,只要会使用本类即可,而对一些喜欢挑

  • 实现Visual Studio 2010一个很简单的很酷的扩展 2012-03-09

    基本介绍篇 在实现这个扩展之前,让我们先弄清楚这个扩展实现什么功能.这个扩展实际上是在你的VS窗口的右上角创建了一个信息框代码.该信息框显示您的源代码的统计信息.这些信息包括: 1.文件的代码行数 2.文件的字符数 3.命名空间的个数 4.字段个数 5.接口个数 6.类的个数 7.函数个数 8.属性个数 9.注释的数量 10.统计文件的大小(Bytes, KB, MB等). 当您键入您的代码,你会看到信息窗口中的数据会即时更新. 这个信息窗口,是利用可扩展面板.你可以把它看成两个部分,每一个部分

  • 分享一个jQuery的超酷分页插件 - jPages 2012-04-18

    日期:2012-4-18 来源:GBin1.com 在线演示 本地下载 jQuery的分页插件很多,但是大都的功能都比较简单,今天我们分享一个非常酷的分页插件 - jPages,拥有丰富的功能和特效,大家肯定会喜欢! jPages是一个典型的客户端分页插件,提供了相比其它分页插件更多的特性和功能. 主要特性 自动翻页 键盘和鼠标滚动浏览 延缓页面内容显示 完全自定义的分页导航支持 如果需要特效或者lazyload,可和其它js类库整合:Animate.css 和 Lazy Load 支持各种类型

  • 用eclipse创建一个最简单的velocity项目 2014-01-03

    必备环境: JDK(不低于1.6建议1.7). eclipse java EE版 .tomcat(不低于5建议7.0) 为eclipse安装velocity编辑插件: 在Eclipse的Help->Install New Software... 点击"Add加 Veloeclipse,值:http://veloeclipse.googlecode.com/svn/trunk/update/ 注:如果无法安装,在安装插件的界面中把 Group Items by Catagory 前打钩去掉.

  • 一个很简单的无限分类树实现代码 2013-11-03

    一个很简单的无限分类树实现代码,需要的朋友可以参考下. 简单树形 国务院 省级办公单位 安徽 河南省 阜阳市 界首市 河北省 广东省 省级办公单位2 范冰冰2 范冰冰4 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 范冰冰2 范冰冰2 省级办公单位3 省级办公单位4 国务院 省级办公单位 安徽 河南省 阜阳市 界首市 河北省 广东省 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • php简单操作mysql数据库的类 2013-11-19

    这篇文章主要介绍了php简单操作mysql数据库的类,涉及php操作mysql的连接.查询.插入.删除等基本操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php简单操作mysql数据库的类.分享给大家供大家参考.具体如下: <?php /** * Database class * * @version: 2.2 * @revised: 27 may 2007 * **/ class Database { var $host; var $name; var $user; var