`
nakupanda
  • 浏览: 410038 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个简单易用的PHP分页类

    博客分类:
  • php
阅读更多
使用实例:
$sql = "select * from `table1`"; //一个简单的查询
$page = new Page('',$sql,$_GET['page'],20,"?page=");
$rows = $page->list;
foreach($rows as $row)
{
	echo $row['title']."<br>";
}

echo $page->getPageList();  //输出分页列表


<?
/*
 * 使用: 
 * $page = new Page(连接符,查询语句,当前页码,每页大小,页码符) 
 * 连接符:一个MYSQL连接标识符,如果该参数留空,则使用最近一个连接 
 * 查询语句:SQL语句 
 * 当前页码:指定当前是第几页 
 * 每页大小:每页显示的记录数 
 * 页码符:指定当前页面URL格式 
 *  
 * 使用例子: 
 * $sql = "select * from aa"; 
 * $page = new Page($conn,$sql,$_GET['page'],4,"?page="); 
 *
 * 获得当前页码 
 * $page->page; 
 *  
 * 获得总页数 
 * $page->pageCount; 
 *  
 * 获得总记录数 
 * $page->rowCount; 
 *  
 * 获得本页记录数 
 * $page->listSize; 
 *  
 * 获得记录集 
 * $page->list; 
 * 记录集是一个2维数组,例:list[0]['id']访问第一条记录的id字段值. 
 *  
 * 获得页码列表 
 * $page->getPageList(); 
 */

class Page
{
	//基础数据
	var $sql;
	var $page;
	var $pageSize;
	var $pageStr;

	//统计数据
	var $pageCount; //页数
	var $rowCount;  //记录数
	
	//结果数据
	var $list = array();  //结果行数组
	var $listSize ;
	//构造函数
	function Page($conn,$sql_in,$page_in,$pageSize_in,$pageStr_in)
	{
		$this->sql = $sql_in;
		$this->page = intval($page_in);
		$this->pageSize = $pageSize_in;
		$this->pageStr = $pageStr_in;
		
		//页码为空或小于1的处理
		if(!$this->page||$this->page<1)
		{
			$this->page = 1;
		}
		
		//查询总记录数
		$rowCountSql = preg_replace("/([\w\W]*?select)([\w\W]*?)(from[\w\W]*?)/i","$1 count(0) $3",$this->sql);
		if(!$conn)
			$rs = mysql_query($rowCountSql) or die("bnc.page: error on getting rowCount.");
		else
			$rs = mysql_query($rowCountSql,$conn) or die("bnc.page: error on getting rowCount.");
		$rowCountRow = mysql_fetch_row($rs);
		$this->rowCount=$rowCountRow[0];
		//计算总页数
		if($this->rowCount%$this->pageSize==0)
			$this->pageCount = intval($this->rowCount/$this->pageSize);
		else
			$this->pageCount = intval($this->rowCount/$this->pageSize)+1;
		
		//SQL偏移量
		$offset = ($this->page-1)*$this->pageSize;
		if(!$conn)
			$rs = mysql_query($this->sql." limit $offset,".$this->pageSize) or die("bnc.page: error on listing.");
		else
			$rs = mysql_query($this->sql." limit $offset,".$this->pageSize,$conn) or die("bnc.page: error on listing.");
		while($row=mysql_fetch_array($rs))
		{
			$this->list[]=$row;
		}
		$this->listSize = count($this->list);

	}
	
	/*
	 * getPageList方法生成一个较简单的页码列表
	 * 如果需要定制页码列表,可以修改这里的代码,或者使用总页数/总记录数等信息进行计算生成.
	 */
	function getPageList()
	{
		$firstPage;
		$previousPage;
		$pageList;
		$nextPage;
		$lastPage;
		$currentPage;
		
		//如果页码>1则显示首页连接
		if($this->page>1)
		{
			$firstPage = "<a href=\"".$this->pageStr."1\">首页</a>";
		}
		//如果页码>1则显示上一页连接
		if($this->page>1)
		{
			$previousPage = "<a href=\"".$this->pageStr.($this->page-1)."\">上一页</a>";
		}
		//如果没到尾页则显示下一页连接
		if($this->page<$this->pageCount)
		{
			$nextPage = "<a href=\"".$this->pageStr.($this->page+1)."\">下一页</a>";
		}	
		//如果没到尾页则显示尾页连接
		if($this->page<$this->pageCount)
		{
			$lastPage = "<a href=\"".$this->pageStr.$this->pageCount."\">尾页</a>";
		}
		//所有页码列表
		for($counter=1;$counter<=$this->pageCount;$counter++)
		{
			if($this->page == $counter)
			{
				$currentPage = "<b>".$counter."</b>";
			}
			else
			{
				$currentPage = " "."<a href=\"".$this->pageStr.$counter."\">".$counter."</a>"." ";
			}
			$pageList .= $currentPage;
		}
		
		return $firstPage." ".$previousPage." ".$pageList." ".$nextPage." ".$lastPage." ";
	}


}


?>
分享到:
评论

相关推荐

    我写的一个很详细的php分页类

    一个很详细的php分页类,非常方便,只用按注释输入参数就可以用了,非常简单方便,易用

    php 分页类 源码

    php 分页类源码,包含了多种样式,简单易用,支持ajax

    灵活实用的PHP分页类

    灵活实用的PHP分页,带演示页代码 /********************** * 灵活易用的PHP分页类 * 作者:深 蓝 * single * ********************/ 带注释

    PHP分页类简单易用很好

    很好用的~!还能强大!非常好! 错过了就是你的损失哈!!!!!!

    长篇文章内容分页,多种样式分页

    长篇文章内容手动分页,此分页类克服了按字数自动分页导致文章段落截断以及文章图片显示不全缺点,也是简单易用的分页类,支持自定义多种样式分页

    PHP+AJAX分页程序

    AJAX分页 简单易用,包数据库

    功能强大的php分页函数

    分页是每一个程序需要去理解的东西,学习过的几门语言中我发现分页原理都是一样的,下面为php初学者分析一下php分页实现与最后面补充了一个超级强大的分页函数。 文章内容分页主要有两个办法: 办法一、按字数控制...

    ajax_分页Thinkphp5_jquery_php

    只求分享, 分页,ajax,Thinkphp5,jquery,php, 采用最新TP5多层开发, ajax jquery 无刷新分页效果,并带图, 带数据库, 简单易用,本人新手开发,恳请多多关照!!谢谢,祝贺 2018大家一起发财!!!

    Tommy framework v1.0.2 易用的轻量级PHP框架.zip

    Tommy framework是一个简单易用易于扩展的轻量级PHP框架,遵循Apache2开源协议发布。本框架操作灵活而不失功能强大,使用简单而又能扩展自如。作为PHP框架里的 “后起者”,Tommy framework秉承了以往那些优秀PHP...

    MonkeyPHP 3.7.456.zip

    MonkeyPHP(以下简称MKP)是一个小巧灵活、简单易用、易于扩展的轻量级PHP框架,并且遵循MVC模式的PHP开发框架!MKP秉承了很多优秀的PHP框架共有的:代码的OOP编写风格、URL的路由功能、MVC的架构思想、ORM的数据库...

    基于PHP 漂亮的全站程序-JOYS的小窝的毕业设计,实现用户的博客发布、修改、删除等功能,并包括博客分类、博客标签、博客评论等

    本毕设旨在设计和实现一个基于PHP的漂亮的全站程序,名为JOYS的小窝。该程序将包括以下模块: ## 用户模块 该模块将实现用户注册、登录、修改密码等基本功能,并包括用户信息展示页、用户上传头像等功能。 ## ...

    Yourphp企业网站管理系统 3.0 1119.zip

    2.数据库内容模型结构的改变,把以前分离的各模型表的主要字段统一到一个主表中,以方便简单实现全站搜索和sitemap的制作等等的功能实现。 3.重新统一了Yourphp模板标签,由于之前有使用Thinkphp默认的模板标签和...

    苹果CMS程序是一套采用PHP+MYSQL环境下运行的完善而强大的快速建站系统

    程序易用性和功能上一直以来都积极采纳广大站长提出的各种好的建议,迅速响应各种紧急问题,我们的服务理念贯穿其中,保证每一位站长每一个环节都可以从容应对。 v10采用tp5.x内核进行开发,扩展了模板处理引擎,将...

    Tommy framework v1.0.2.zip

    Tommy framework是一个简单易用易于扩展的轻量级PHP框架,遵循Apache2开源协议发布。本框架操作灵活而不失功能强大,使用简单而又能扩展自如。作为PHP框架里的 “后起者”,Tommy framework秉承了以往那些优秀PHP...

    PHP框架DoitPHP v1.3.zip

    DoitPHP(原Tommyframework)是一个基于BSD开源协议发布的轻量级PHP框架。简而言之:DoitPHP运行高效,易学易用,易于扩展。换而言之:DoitPHP运行高效而不失功能强大,操作灵活而又能扩展自如。作为PHP框架里的...

    BZCMS v1.0 正式版.rar

    经过几月的认真开发,以最简单、实用、易用、适合小网站使用为最大目标的BZCMS于6月25日发布1.0正式版本。 程序特点: 1.PHP MYSQL 开源简单, 2.无限级分类, 3.自定义字段, 4.生成静态,可以生成自定义文件...

    Dircms 地方生活门户系统2009 Sp4 UTF-8.rar

    Dircms 是国内开发的一款操作简便,简单易用的网站内容管理系统,同时也是一个开源的PHP开发框架。采用模块化开发,支持自定义内容模型和会员模型,并且可以自定义字段。正式版V1.0于2010年7月5**正式对外发布。 ...

    DoitPHP 1.0

    DoitPHP(原Tommyframework)是一个简单易用,易于扩展的轻量级PHP框架。运行高效而不失功能强大,操作灵活而又能扩展自如。作为PHP框架里的“后起之秀”,DoitPHP秉承了那些优秀的PHP框架所共有的:代码的OOP编写风格...

    PhP框架DoitPHP v1.5 MySql版.zip

    DoitPHP(原Tommyframework)是一个基于BSD开源协议发布的轻量级PHP框架。简而言之:DoitPHP运行高效,易学易用,易于扩展。换而言之:DoitPHP运行高效而不失功能强大,操作灵活而又能扩展自如。作为PHP框架里的...

    PHP框架DoitPHP v1.5 SAE版.zip

    DoitPHP(原Tommyframework)是一个基于BSD开源协议发布的轻量级PHP框架。简而言之:DoitPHP运行高效,易学易用,易于扩展。换而言之:DoitPHP运行高效而不失功能强大,操作灵活而又能扩展自如。作为PHP框架里的...

Global site tag (gtag.js) - Google Analytics