热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php分页类程序员-PHP源码

ec(2);classPage{   publicparam   public$pageName   page;  默认page标签,即filename.php?pageName4中的pageName  &

class Page {
// public param
public $pageName = 'page'; // 默认 page 标签,即 filename.php?pageName=4 中的 pageName
public $prevPage = '<'; // 上一页
public $nextPage = '>'; // 下一页
public $prevBar = '<<'; // 上一分页条
public $nextBar = '>>'; // 下一分页条
// private param
private $_totalNums = 1; // 总记录数
private $_barNum = 10; // 分页条显示分页个数
private $_totalPage = 0; // 总页数
private $_nowPage = 1; // 当前页
private $_perPage = 10; // 每页显示记录数
private $_preUrl = ''; // url 前缀
private $_preNow = 0; // 当前页前显示分页个数 (范围应该是 0 至 $_barNum-1)
private $_fromPage = 0; // 分页条起点
private $_toPage = 0; // 分页条末端
private $_offset = 0; // sql 查询记录偏移量
// public functions -----------------------------------------------------------------
// 构造函数 初始化分页变量
// @param $nums int 总记录数
// @param $per int 每页显示记录数
// @param $now int 当前页数
// @param $url string url前缀 默认为空
public function __construct($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '') {
// 初始化
$this->_set($nums, $per, $preNow, $barNum, $now, $url);
$this->_totalPage = ceil($this->_totalNums/$this->_perPage);
$this->_offset = ($this->_nowPage - 1) * $this->_perPage;
}
// 上一页
public function getPrevPage() {
// 当前页不是第一页
if($this->_nowPage > 1) {
return $this->_setLink($this->_setUrl($this->_nowPage - 1), $this->prevPage, 'prevpage');
}
}
// 下一页
public function getNextPage() {
// 当前页小于总页数
if($this->_nowPage <$this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_nowPage + 1), $this->nextPage, 'nextpage');
}
}
// 第一页
public function getFirstPage() {
// 起点不是第一页
if(($this->_nowPage - $this->_preNow) > 1) {
return $this->_setLink($this->_setUrl(1), '1...', 'firstpage');
}
}
// 最后一页
public function getLastPage() {
// 末端不大于总页数
if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_totalPage), '...' . $this->_totalPage, 'lastpage');
}
}
// 上一分页条
public function getPrevBar() {
// 起点大于一个分页条数
if(($this->_nowPage - $this->_preNow) > $this->_barNum) {
return $this->_setLink($this->_setUrl(($this->_nowPage - $this->_preNow) - $this->_barNum), $this->prevBar, 'prevbar');
}
}
// 下一分页条
public function getNextBar() {
// 末端不大于总页数
if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_fromPage + $this->_barNum), $this->nextBar, 'nextbar');
}
}
// 分页条
public function pageBar() {
// 初始化分页条的始末端点
$this->_toPage = $this->_nowPage + ($this->_barNum - $this->_preNow - 1);
if($this->_toPage > $this->_totalPage) {
$this->_preNow = $this->_barNum - ($this->_totalPage - $this->_nowPage + 1);
$this->_toPage = $this->_totalPage;
}
if($this->_toPage <$this->_barNum) {
$this->_toPage = $this->_barNum;
}
$this->_fromPage = $this->_nowPage - $this->_preNow;
if($this->_fromPage <1) {
$this->_fromPage = 1;
}
// 初始化分页条
$return = '';
for($i = $this->_fromPage; $i <= $this->_toPage; $i++) {
if($i != $this->_nowPage) {
$return .= $this->_setLink($this->_setUrl($i), $i, 'page');
} else {
$return .= '' . $i . '';
}
}
return $return;
}
// 返回偏移量 用于 sql 查询
public function getOffset() {
return $this->_offset;
}
// 返回总记录数
public function getTotalNums() {
return '' . $this->_totalNums . '';
}
// 显示分页
public function showPage() {
return $this->getTotalNums() . $this->getFirstPage() . $this->getPrevBar() . $this->getPrevPage() . $this->pageBar() . $this->getNextPage() . $this->getNextBar() . $this->getLastPage();
}
// private functions ----------------------------------------------------------------
//
private function _set($nums, $per, $preNow, $barNum, $now, $url) {
// 设置总记录数
if($nums > 0) {
$this->_totalNums = $nums;
}
// 设置每页显示记录数
if($per > 0) {
$this->_perPage = $per;
}
// 设置当前页前显示分页个数
if($preNow > 0) {
$this->_preNow = $preNow;
}
// 设置分页条链接个数
if($barNum > 0) {
$this->_barNum = $barNum;
}
// 设置当前页
if(empty($now)) {
// 自动获取
if(isset($_GET[$this->pageName])) {
$this->_nowPage = intval($_GET[$this->pageName]);
}
} else {
// $now 已手动处理
$this->_nowPage = intval($now); //
}
// 设置 url 前缀
if(!empty($url)) {
// $url 已手动处理
$this->_preUrl = $url . (stristr($url, '?') ? '&' : '?') . $this->pageName . '=';
} else {
// 自动获取
if(empty($_SERVER['QUERY_STRING'])) {
// url 中不存在查询
$this->_preUrl = $_SERVER['REQUEST_URI'] . '?' . $this->pageName . '=';
} else {
if(stristr($_SERVER['QUERY_STRING'], $this->pageName . '=')) {
// 查询中有 page=n(2,3...)
$this->_preUrl = str_replace($this->pageName . '=' . $this->_nowPage, '', $_SERVER['REQUEST_URI']);
$lastCharacter = $this->_preUrl[strlen($this->_preUrl) - 1];
if($lastCharacter == '?' || $lastCharacter == '&') {
// page=n(2,3...) 在原 url 的末尾
$this->_preUrl .= $this->pageName . '=';
} else {
// page=n(2,3...) 不在原 url 的末尾
$this->_preUrl .= '&' . $this->pageName . '=';
}
} else {
// 查询中没有 page=n(2,3...)
$this->preUrl = $_SERVER['REQUEST_URI'] . '&' . $this->pageName . '=';
}
}
}
}
// 设置链接地址
private function _setUrl($pageNo) {
return $this->_preUrl . $pageNo;
}
// 设置链接
private function _setLink($url, $link, $style = '') {
$style = 'class="' . $style . '"';
return '' . $link . '';
}
}
//

使用方法

$total = 1245;
//class Page($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '')
$page = new Page($total);
$pager = $page->showPage();
$smarty->assign('pager', $pager);
$smarty->display('index.tpl');

推荐阅读
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 在使用dedecms过程中,添加自定义字段变量很有用,但删除并不容易。本文介绍了两种常用的删除方法:执行SQL语句和手动SQL删除。 ... [详细]
  • Linux环境变量$PATH的作用及使用方法
    本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
author-avatar
UP向日葵氵于磊Z
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有