文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一个用于Mysql数据库的分页类

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

时间:2006-04-17  来源:webvista


* @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
  $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.='file.'?'.$this->pvar.'='.($current-10).($this->varstr).' title="前十页"> ';
   }
            if ($current>1) {
    $this->output.='file.'?'.$this->pvar.'='.($current-1).($this->varstr).' title="前一页"> ';
   }
            $start = floor($current/10)*10;
            $end = $start+9;
            if ($start$this->tpage) {$end=$this->tpage;}
            for ($i=$start; $ioutput.=''.$i.' ';    //输出当前页数
                } else {
                    $this->output.='file.'?'.$this->pvar.'='.$i.$this->varstr.'">['.$i.'] ';    //输出页数
                }
            }
            if ($currenttpage) {
    $this->output.='file.'?'.$this->pvar.'='.($current+1).($this->varstr).' title="下一页">>> ';
   }
            if ($this->tpage>10 && ($this->tpage-$current)>=10 ) {
    $this->output.='file.'?'.$this->pvar.'='.($current+10).($this->varstr).' title="下十页">>>>';
   }
  }
}
    /**
     * 要传递的变量设置
     *
     * @access public
     * @param array $data   要传递的变量,用数组来表示,参见上面的例子
     * @return void
     */
function setvar($data) {
  foreach ($data as $k=>$v) {
   $this->varstr.='&'.$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的时候有这么个例子,爽!


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载