首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > PHP > 一个用于Mysql数据库的分页类
【标  题】:一个用于Mysql数据库的分页类
【关键字】:Mysql
【来  源】:http://www.cublog.cn/u/17173/showart.php?id=100958

一个用于Mysql数据库的分页类

<?php
/**
 * 一个用于Mysql数据库的分页类
 *
 * @author      Avenger <avenger@php.net>
 * @version     1.0
 * @lastupdate  2003-04-08 11:11:33
 *
 *
 * 使用实例:
 * $p = new show_page;  //建立新对像
 * $p->file="ttt.php";  //设置文件名,默认为当前页
 * $p->pvar="pagecount"; //设置页面传递的参数,默认为p
 * $p->setvar(array("a" => '1', "b" => '2')); //设置要传递的参数,要注意的是此函数必须要在 set 前使用,否则变量传不过去
 * $p->set(20,2000,1);  //设置相关参数,共三个,分别为'页面大小'、'总记录数'、'当前页(如果为空则自动读取GET变量)'
 * $p->output(0);   //输出,为0时直接输出,否则返回一个字符串
 * echo $p->limit();  //输出Limit子句。在sql语句中用法为 "SELECT * FROM TABLE LIMIT {$p->limit()}";
 *
 */

class show_page {
    /**
     * 页面输出结果
     *
     * @var string
     */
 var $output;
    /**
     * 使用该类的文件,默认为 PHP_SELF
     *
     * @var string
     */
 var $file;
    /**
     * 页数传递变量,默认为 'p'
     *
     * @var string
     */
 var $pvar = "p";
    /**
     * 页面大小
     *
     * @var integer
     */
 var $psize;
    /**
     * 当前页面
     *
     * @var ingeger
     */
 var $curr;
    /**
     * 要传递的变量数组
     *
     * @var array
     */
 var $varstr;
    /**
     * 总页数
     *
     * @var integer
     */
    var $tpage;
    /**
     * 分页设置
     *
     * @access public
     * @param int $pagesize 页面大小
     * @param int $total    总记录数
     * @param int $current  当前页数,默认会自动读取
     * @return void
     */
    function set($pagesize=20,$total,$current=false) {
  global $HTTP_SERVER_VARS,$HTTP_GET_VARS;
  $this->tpage = ceil($total/$pagesize);
  if (!$current) {$current = $HTTP_GET_VARS[$this->pvar];}
  if ($current>$this->tpage) {$current = $this->tpage;}
  if ($current<1) {$current = 1;}
  $this->curr  = $current;
  $this->psize = $pagesize;
  if (!$this->file) {$this->file = $HTTP_SERVER_VARS['PHP_SELF'];}
  if ($this->tpage > 1) {
           
   if ($current>10) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current-10).($this->varstr).' title="前十页">&lt;&lt;&lt;</a>&nbsp;';
   }
            if ($current>1) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current-1).($this->varstr).' title="前一页">&lt;&lt;</a>&nbsp;';
   }
            $start = floor($current/10)*10;
            $end = $start+9;
            if ($start<1)   {$start=1;}
            if ($end>$this->tpage) {$end=$this->tpage;}
            for ($i=$start; $i<=$end; $i++) {
                if ($current==$i) {
                    $this->output.='<font color="red">'.$i.'</font>&nbsp;';    //输出当前页数
                } else {
                    $this->output.='<a href="'.$this->file.'?'.$this->pvar.'='.$i.$this->varstr.'">['.$i.']</a>&nbsp;';    //输出页数
                }
            }
            if ($current<$this->tpage) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+1).($this->varstr).' title="下一页">&gt;&gt;</a>&nbsp;';
   }
            if ($this->tpage>10 && ($this->tpage-$current)>=10 ) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+10).($this->varstr).' title="下十页">&gt;&gt;&gt;</a>';
   }
  }
 }
    /**
     * 要传递的变量设置
     *
     * @access public
     * @param array $data   要传递的变量,用数组来表示,参见上面的例子
     * @return void
     */ 
 function setvar($data) {
  foreach ($data as $k=>$v) {
   $this->varstr.='&amp;'.$k.'='.urlencode($v);
  }
 }
    /**
     * 分页结果输出
     *
     * @access public
     * @param bool $return 为真时返回一个字符串,否则直接输出,默认直接输出
     * @return string
     */
 function output($return = false) {
  if ($return) {
   return $this->output;
  } else {
   echo $this->output;
  }
 }
    /**
     * 生成Limit语句
     *
     * @access public
     * @return string
     */
    function limit() {
  return (($this->curr-1)*$this->psize).','.$this->psize;
 }
} //End Class
?>
 
评:
    这个类不仅教我们什么分页,而且享受它的编程风格是一种极大的收获,特别是当你用Zend Studio时.
    学习class的时候有这么个例子,爽!
PHP 编码规范:【上一篇】
HTML小结:【下一篇】
【相关文章】
  • jboss4。0下mysql数据源的配置
  • mysql与oracle得到前几条数据
  • mysql使用心得
  • MySQL 查询缓存
  • mysql 数据备份和恢复方法
  • Win2K下安装IIS 配置asp+cgi+php+mysql
  • 如何在windows系统下安装MySQL
  • 优化MySQL数据库性能
  • [Perl]用snapshot方式备份MYSQL数据库
  • mysql权限问题
  • 【随机文章】
  • 把Session放入MySql
  • 转帖--献出一份爱心 共同援助重病程序员王俊(借用一下首页,大家都来关注一下吧)
  • 一些常用的代码
  • Nids.h详细注释
  • 巧用YUM在FC4下安装多媒体大全(by dsj)
  • Linux+Informix后台数据库系统安装配置
  • 利用集群技术实现Web服务器的负载均衡
  • 实例讲解-整合iBATIS和Spring在WEB开发中的应用
  • SYBASE dbcc
  • 结 构(struct)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.