`
kaindy7633
  • 浏览: 80307 次
  • 性别: Icon_minigender_1
  • 来自: 绵阳
社区版块
存档分类
最新评论

【转】PHPTD留言板 FOR ThinkPHP 分页类 仿照 Discuz! 分页的风格

阅读更多

这是一个分页类,主要是针对与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 分页类

    thinkphp 分页类

    ThinkPHP5留言板_thinkphp5_

    【ThinkPHP5留言板】是一个基于ThinkPHP5框架开发的简易留言板应用。这个应用的主要功能是让用户能够方便地在网站上留下他们的信息,提供了一个基本的交互式平台。它是一个轻量级的系统,适合初学者了解和学习...

    thinkPHP分页类(Page.class.php)类似discuz分页效果

    根据thinkphp官方分页类修改,弥补不足,优化分页逻辑,加入跳转页数,实现最具用户体验的分页类(类似discuz论坛分页)

    ThinkPHP分页类

    当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、show函数...

    thinkphp分页功能类

    在PHP开发中,分页是一项基础且重要的功能,...总的来说,ThinkPHP的`Page`类为开发者提供了强大的分页工具,通过简单的调用即可实现复杂分页需求。理解和掌握这个类的使用,将有助于提升PHP项目的开发效率和用户体验。

    thinkphp分页

    本篇文章将深入探讨ThinkPHP框架中的分页实现。 一、ThinkPHP分页基础 1. 分页配置: 在ThinkPHP中,分页配置主要通过`paginate()`方法完成。例如: ```php $articles = ArticleModel::where('status', 1)-&gt;order...

    thinkPHP论坛管理系统!!!!!!!!!

    《基于ThinkPHP的论坛管理系统详解》 在当今互联网时代,论坛作为信息交流的重要平台,其管理系统的设计与实现显得尤为重要。ThinkPHP,一个国内广受欢迎的PHP框架,以其简洁的MVC设计模式、丰富的功能和良好的扩展...

    ThinkPHP分页类.zip

    当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、...

    留言板(thinkphp)

    《基于ThinkPHP的留言板系统详解》 在信息技术领域,开发一款功能齐全的留言板系统是学习Web开发基础的重要一环。本篇文章将详细讲解一个由ThinkPHP框架构建的留言板系统,涵盖了用户登录、注册、注销以及回复等...

    ThinkPhp3.1.3仿百度分页类

    ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 &lt;46445280@qq.com&gt; 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试通过,其它版本未做测试 ...

    使用ThinkPHP3.2.3创建留言板项目

    在本项目中,我们主要探讨的是如何利用ThinkPHP 3.2.3版本来构建一个功能完备的留言板系统。ThinkPHP是一个广泛使用的PHP框架,它提供了丰富的功能和强大的性能优化,使得开发工作更加高效和便捷。以下是这个项目...

    基于thinkPHP框架实现留言板的方法

    基于thinkPHP框架实现留言板是一个较为常见的开发实例,它能帮助开发者了解如何利用thinkPHP框架快速搭建出一个留言板系统。以下是详细知识点介绍: ### 知识点一:thinkPHP框架概述 ThinkPHP是一个轻量级的PHP开发...

    ThinkPHP5留言板

    《ThinkPHP5构建的留言板系统详解》 在Web开发领域,构建一个互动性强、功能完善的留言板是提升用户体验的重要手段。本篇文章将详细讲解基于ThinkPHP5框架开发的“ThinkPHP5留言板”系统,涵盖其主要功能及实现原理...

    thinkphp ajax分页

    本知识点主要聚焦于ThinkPHP框架中结合Ajax实现的无刷新分页技术。 一、ThinkPHP框架基础 ThinkPHP是一个基于MVC(Model-View-Controller)模式的开源PHP框架,它提倡快速、简单的面向对象的开发方式。框架的核心...

    thinkphp分页页面样式

    thinkphp分页页面样式

    thinkphp视图分页Page类分页功能代码下载

    thinkphp视图分页Page类分页功能代码下载 利用viewmodel模型多表分页功能 利用D封装类。进行分页代码

    ThinkPHP分页的二次封装

    ThinkPHP的分页类位于`Think\Page`中,通过实例化该类并传入必要的参数(如总记录数、每页显示条数),可以生成分页链接。例如: ```php $Page = new \Think\Page($totalRows, $listRows); ``` 然后,你可以使用`...

    ThinkPHP5分页paginate代码实例解析

    paginate(每页数量,是否简洁分页,分页参数) 使用方式 $list = db('user')-&gt;paginate(10); 自定义参数传参 $list = db('user')-&gt;paginate(10,false,['query'=&gt;array('id' =&gt; $id)]); 其它参数 // 总数据 $this-&gt;...

    thinkphp5 留言板代码 登录 发表留言等功能示例

    【ThinkPHP5 留言板系统详解】 ThinkPHP5 是一个基于 PHP 开发的轻量级、高性能的 MVC 框架,广泛应用于各种 Web 应用开发。本示例是一个基本的留言板系统的实现,涵盖了用户登录、发表留言等功能,非常适合初学者...

Global site tag (gtag.js) - Google Analytics