| 网站首页 | 文章中心 | 下载中心 | 图片中心 | 访客留言 | 数码商城 | 毕设、论文 | 彩票 | 
您现在的位置: 有昌网络 >> 文章中心 >> 特别研究 >> PHP技术区! >> 文章正文 用户登录 新用户注册
PHP分页的类         ★★★
PHP分页的类
作者:佚名 文章来源:本站原创 点击数: 更新时间:2006-12-20 12:10:39

PHP分页的类
<?php
/*
 +-----------------------------------------------------------------------------------------------------+
 | filename   : pp.php                                                                           |
 | -----------------------                                                                              |
 | create date : 2006-12-20                                                                  |
 | version     : NO.1.0                                                                           |
 | author      : -①℃冰洁/昌! <network021@163.com>                           |
 | last update : 2006-12-20                                                                   |
 | remark      : PHP分页的类,只需设定记录总数$number 的值,直接调用 $PP   |
 |               返回的值(字符串即可)                                                          |
 +-----------------------------------------------------------------------------------------------------+
 */

class showPage
{
    /*
     * 每页显示记录类
     * @var integer
     */
    var $psize                =  10;

    /*
     * 页码偏移量
     * @var integer
     */
    var $pernum               =  5;

    /*
     * 要传递的变量数组
     * @var string
     */
    var $varstr               =  '';

    /*
     * 总页数
     * @var integer
     */
    var $tpage                =  0;

    /*
     * 记录组总数
     * @var integer
     */
    var $pers                 =  0;

    /*
     * SQL server 分页支点
     * @var integer
     */
    var $sid                  = 0;

    /*
     * 当前页码
     * @var integer
     */
    var $page                 = 0;

    /*
     * MySQL分页生成语句
     * @var string
     */
    var $limit                =  '';


    /*
     * 取得传递变量精数组,并检测它是否为空
     * @return v
     */
    function get()
    {
        foreach($_GET as $k => $v) {
            $i++;
            $str          = ($i==1)      ? '?'            : '&';
            $this->varstr = ($k<>'page') ? $this->varstr.$str.$k.'='.$v : $this->varstr;
        }
        $this->varstr = $this->varstr ? $this->varstr.'&' : '?';
        $this->page   = $_GET['page'] ? $_GET['page'] : 1;

       
        // 用于 SQL server 分页记录读取值 //
        $this->sid    = ($this->page-1)*$this->psize;

        // 用于 MySQL 分页生成语句 // 
        $this->limit  = ($this->page -1)*$this->psize.','.$this->psize;
    }


    /*
     * 统计页码数
     */
    function total($number)
    {
        $this->tpage = ceil($number / $this->psize);
        $this->pers  = ceil($this->tpage / $this->pernum);
    }
     


    /*
     * 分类函数PP(parse page ),$page为当页数
     * $number 为记录总数, $psize 为每页显示数目
     * @return string
     */
    function PP($number=0 ,$psize=0)
    {
        $this->psize  = $psize ? $psize : $this->psize;;
        $this->get();
        $this->total($number);

        $setpage   = $this->page ? ceil($this->page/$this->pernum) : 1;
       
        $pagenum   = ($this->tpage > $this->pernum) ? $this->pernum : $this->tpage;
        if ($number  <= $this->psize) {
            $text  = '只有一页';
        } else {
            $text = '共 ( '.$this->tpage.' 页 ) :&nbsp;&nbsp;&nbsp;';
            if ($this->page > 1) {
                $text .= '<a title=第一页 href='.$this->varstr.'page=1>[1]</a>...';
            }
            if ($setpage > 1) {
                $lastsetid = ($setpage-1)*$this->pernum;
                $text .= '<a title=上一列 href='.$this->varstr.'page='.$lastsetid.'>[<<]</a>';
            }
            if ($this->page > 1) {
                $pre = $this->page-1;
                $text .= '<a title=上一页 href='.$this->varstr.'page='.$pre.'>[<]</a>';
            }
            $i = ($setpage-1)*$this->pernum;
            for($j=$i; $j<($i+$pagenum) && $j<$this->tpage; $j++) {
                $newpage = $j+1;
                if ($this->page == $j+1) {
                    $text .= '<b>['.($j+1).']</b>';
                } else {
                    $text .= '<a href='.$this->varstr.'page='.$newpage.'>['.($j+1).']</a>';
                }
            }           
            if ($this->page < $this->tpage){
                $next = $this->page+1;
                $text .= '<a title=下一页 href='.$this->varstr.'page='.$next.'>[>]</a>';
            }
            if ($setpage < $this->pers) {
                $nextpre = $setpage*($this->pernum+1);
                $text .= '<a title=下一列 href='.$this->varstr.'page='.$nextpre.'>[>>]</a>';
            }
            if ($this->page < $this->tpage) {
                $text .= '...<a title=最后一页 href='.$this->varstr.'page='.$this->tpage.'>['.$this->tpage.']</a>';
            }
        }
        return $text;
    }

 

}


/***********************************************
 ******************** 实例调用 *****************
 ***********************************************

申明一个分页新类
$p = new showPage;

$num   =  100;   //记录总数
$psize =  15;    //每页显示记录数

$smarty->assign('pp',$p->PP($num,$psize));

MySQL 和 SQL server 使用的实例与区别

// MySQL 分页实例
$db->query("select * from table milit $p->limit");

// SQL server 分页实例(一定要结合 ADOdb一起使用)
$SQL = "SELECT title FROM mytable ORDER BY id DESC";
$rs  = $db->SelectLimit($SQL,$p->psize,$p->sid);

*/

?>


文章录入:范有昌    责任编辑:范有昌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    PHP的日期时间函数date(
    C Java PHP Perl Python
    windows 下配置 apache 
    【分享】PHP 电子书集合
    Windows环境下smarty安装
    一个生成静态页面的类
    php与mysql三日通!
    php 分析rss代码一段
    很有用的php函数
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)