您的位置:首页 > 其它

自己加工过的一个分页类

2006-11-23 01:26 302 查看
<?php
/**
* 一个用于Mysql数据库的分页类
*
*
* 使用实例:
* $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) //这是分页的前提,是记录大于1
{
$this->output.='共有'.$total.'条记录  当前<font color="red">'.$this->curr.'</font>/'.$this->tpage.'页  ';
$this->output.='<a href='.$this->file.'?'.$this->pvar.'=0'.($this->varstr).' title="首页">首页</a> ';
if($current!=1) //如果偏移量是0,不显示前一页的连接;
{
$f_page=$current-1;
$this->output.='<a href='.$this->file.'?'.$this->pvar.'='.$f_page.($this->varstr).' title="前一页">前一页</a> ';
}
if($current<$this->tpage)
{
$n_page=$current+1;
$this->output.='<a href='.$this->file.'?'.$this->pvar.'='.$n_page.($this->varstr).' title="下一页">下一页</a> ';
}
$this->output.='<a href='.$this->file.'?'.$this->pvar.'='.$this->tpage.($this->varstr).' title="尾页">尾页</a> ';

$this->output.="<select onChange=/"javascript:var strurl='".$this->file."?".$this->pvar."="."'+this.options[this.selectedIndex].value+'".$this->varstr."';window.location=strurl/" name=/"page/">";
for($i=1;$i<=$this->tpage;$i++)
{
if($i==$this->curr)
{
$this->output.="<option value=/"".$i."/" selected=/"selected/">第".$i."页</option>";
}
else
{
$this->output.="<option value=/"".$i."/">第".$i."页</option>";
}
}
$this->output.="</select>";
}//end if 语句
else
{
$this->output.=' 尚无任何记录!  ';
}
}

/**
* 要传递的变量设置
*
* @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
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: