这是一个分页类,主要是针对与ThinkPHP
,当然也可以用与其它的程序,其风格是仿照仿照 Discuz!
分页的风格,希望您会喜欢!
分页类文件代码如下:
PhptdPage.class.php
<?php
/**
* PHPTD
留言板 FOR ThinkPHP
分页类
*
此类是跟据 ThinkPHP
官方分页类修改而来
*
其风格是仿照 Discuz!
分页的风格
*/
if (!defined('THINK_PATH')) exit('Access Error');
class PhptdPage {
Public $maxRows; //
每页显示多少条记录
public $maxPages = 500; //
最多显示多少页
public $firstRows; //
起始行数
public $endRows; //
当前页面结束信息行数的实际值
public $parameter = 'p'; //
页数跳转时要带的参数
public $rollPage = 10; //
分页栏可以显示的总页数
public $coolPages; //
分页的栏实际显示的总页数
public $totalRows; //
总行数(
总记录数)
public $totalPages; //
共有多少页
public $nowPage; //
当前页数
public $urlDepr; //
各参数之间的分割符号
public function __construct($counts,$maxRows = 10){
$this->maxRows = $maxRows; //
每个页面显示多少条记录
$this->totalRows = $counts; //
计算总记录数
$this->totalPages =
ceil($this->totalRows/$this->maxRows); //
计算总页数
$this->nowPage =
$this->getPageNum(); //
返回当前页码
$this->firstRows = $this->nowPage *
$this->maxRows; //
计算当前页面信息的开始行数
$this->endRows =
$this->getEndRows(); //
计算当前页面信息的结束行数
$this->urlDepr =
C('URL_PATHINFO_DEPR'); //
各参数之间的分割符号
}
//
获取当前页码
function getPageNum(){
$pageNum = 0;
//
获取当前分页页码的整数值
$getPage =
intval($_GET[$this->parameter]);
if (isset($getPage) && $getPage
>= 1 && $getPage <= $this->totalPages) {
$pageNum = $getPage -
1;
}elseif(isset($getPage) &&
$getPage > $this->totalPages){
$pageNum =
$this->totalPages - 1;
}
return $pageNum;
}
//
当前页面结束信息行数的实际值
function getEndRows(){
$endRows = $this->firstRows +
$this->maxRows;
if($endRows >= $this->totalRows){
$endRows =
$this->totalRows;
}
return $endRows;
}
//
输出分页
public function showPage($set = array()){
$pages=$page_1=$page_2=$page_3=$page_4='';
if($set['css']){
$css .= '
class="'.$set['css'].'"';
}else{
$css .= '
class="pages"';
}
if ($set['id']){
$id .= '
id="'.$set['id'].'"';
}else{
$id .= '
id="pages"';
}
$url = trim(__ACTION__);
$p .=
$this->urlDepr.$this->parameter.$this->urlDepr;
if(strchr($url, $p)){
$b = strchr($url, $p);
$urlPar =
str_replace($b, '', $url).$p;
$url =
str_replace($b, '', $url);
}else{
$urlPar =
$url.$p;
$url = $url;
}
$nowPage =
intval($_GET[$this->parameter]);
$nowPage = $nowPage <= 1 ? 1 :
$nowPage;
$pages = '';
$realpages = 1; //
当前页码
if ($this->totalRows >
$this->maxRows){
$offset = 4; //
页码偏移量
$realpages = @ceil($this->totalRows
/ $this->maxRows);
if ($this->rollPage
> $realpages) {
$form = 1;
$to
= $realpages;
}else {
$form = $nowPage - $offset;
$to
= $form + $this->rollPage - 1;
if
($form < 1) {
$form = 1;
//$to = $curpage + 1 - $form;
if ($to - $form < $this->rollPage) {
$to = $this->rollPage;
}
}
}
$to = $to >=
$realpages ? $realpages : $to;
$pages = ($nowPage
>= 2 ? '<a href="'.$urlPar.'1'.'">
首 页</a> ' : '');
$pages .= ($nowPage
> 1 ? '<a href="'.$urlPar.($nowPage - 1).'">
上一页</a> ' : '');
for ($i = $form; $i
<= $to; $i++) {
$pages .= ($i == $nowPage ? '<strong>'.$i.'</strong> ' : '<a
href="'.$urlPar.$i.'">'.$i.'</a> ');
}
$pages .= ($nowPage
< $realpages ? '<a href="'.$urlPar.($nowPage + 1).'">
下一页</a> ' : '');
$pages .= (($nowPage
< $realpages && $nowPage >= 0)? '<a
href="'.$urlPar.$realpages.'">
尾 页</a>
' : '');
}
return <<<TIPS
<div$css$id>
<ul>
<li>
$pages
</li>
</ul>
</div>
TIPS;
}
}
?>
控制器文件代码如下:
IndexAction.class.php
<?php
if (!defined('THINK_PATH')) exit('Access Error');
class IndexAction extends Action
{
public function index()
{
$message = M('message');
$counts =
$message->limit(5000)->select(); //
查询数据库,返回一个总的信息数据集
$counts = count($counts); //
计算有多少条记录
// $counts = $message->count();
//
计算有多少条记录,若是不需要控制显示最多记录就可以使用此方式,效果同上
import("@.ORG.PhptdPage");
//
导入分页类
$pagep = new PhptdPage($counts,6); //
实例化分页类
$list2 = $message->limit($pagep->firstRows.','.$pagep->maxRows)->order('id
desc')->select();
$pageShow =
$pagep->showPage($setPage);
$this->assign('list',$list2);
$this->assign('page',$pageShow);
$this->display();
}
}
分享到:
相关推荐
thinkphp 分页类
【ThinkPHP5留言板】是一个基于ThinkPHP5框架开发的简易留言板应用。这个应用的主要功能是让用户能够方便地在网站上留下他们的信息,提供了一个基本的交互式平台。它是一个轻量级的系统,适合初学者了解和学习...
根据thinkphp官方分页类修改,弥补不足,优化分页逻辑,加入跳转页数,实现最具用户体验的分页类(类似discuz论坛分页)
当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、show函数...
在PHP开发中,分页是一项基础且重要的功能,...总的来说,ThinkPHP的`Page`类为开发者提供了强大的分页工具,通过简单的调用即可实现复杂分页需求。理解和掌握这个类的使用,将有助于提升PHP项目的开发效率和用户体验。
本篇文章将深入探讨ThinkPHP框架中的分页实现。 一、ThinkPHP分页基础 1. 分页配置: 在ThinkPHP中,分页配置主要通过`paginate()`方法完成。例如: ```php $articles = ArticleModel::where('status', 1)->order...
《基于ThinkPHP的论坛管理系统详解》 在当今互联网时代,论坛作为信息交流的重要平台,其管理系统的设计与实现显得尤为重要。ThinkPHP,一个国内广受欢迎的PHP框架,以其简洁的MVC设计模式、丰富的功能和良好的扩展...
当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、...
《基于ThinkPHP的留言板系统详解》 在信息技术领域,开发一款功能齐全的留言板系统是学习Web开发基础的重要一环。本篇文章将详细讲解一个由ThinkPHP框架构建的留言板系统,涵盖了用户登录、注册、注销以及回复等...
ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 <46445280@qq.com> 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试通过,其它版本未做测试 ...
在本项目中,我们主要探讨的是如何利用ThinkPHP 3.2.3版本来构建一个功能完备的留言板系统。ThinkPHP是一个广泛使用的PHP框架,它提供了丰富的功能和强大的性能优化,使得开发工作更加高效和便捷。以下是这个项目...
基于thinkPHP框架实现留言板是一个较为常见的开发实例,它能帮助开发者了解如何利用thinkPHP框架快速搭建出一个留言板系统。以下是详细知识点介绍: ### 知识点一:thinkPHP框架概述 ThinkPHP是一个轻量级的PHP开发...
《ThinkPHP5构建的留言板系统详解》 在Web开发领域,构建一个互动性强、功能完善的留言板是提升用户体验的重要手段。本篇文章将详细讲解基于ThinkPHP5框架开发的“ThinkPHP5留言板”系统,涵盖其主要功能及实现原理...
本知识点主要聚焦于ThinkPHP框架中结合Ajax实现的无刷新分页技术。 一、ThinkPHP框架基础 ThinkPHP是一个基于MVC(Model-View-Controller)模式的开源PHP框架,它提倡快速、简单的面向对象的开发方式。框架的核心...
thinkphp分页页面样式
thinkphp视图分页Page类分页功能代码下载 利用viewmodel模型多表分页功能 利用D封装类。进行分页代码
ThinkPHP的分页类位于`Think\Page`中,通过实例化该类并传入必要的参数(如总记录数、每页显示条数),可以生成分页链接。例如: ```php $Page = new \Think\Page($totalRows, $listRows); ``` 然后,你可以使用`...
paginate(每页数量,是否简洁分页,分页参数) 使用方式 $list = db('user')->paginate(10); 自定义参数传参 $list = db('user')->paginate(10,false,['query'=>array('id' => $id)]); 其它参数 // 总数据 $this->...
【ThinkPHP5 留言板系统详解】 ThinkPHP5 是一个基于 PHP 开发的轻量级、高性能的 MVC 框架,广泛应用于各种 Web 应用开发。本示例是一个基本的留言板系统的实现,涵盖了用户登录、发表留言等功能,非常适合初学者...