+ -
当前位置:首页 → 问答吧 → 关于分页类的用法

关于分页类的用法

时间:2009-12-24

来源:互联网

这是我在php上面php开源这个里面下载 的一个php分页类,但是总是用不了出问题,其中$p->set(20,2000,1);        //设置相关参数,共三个,分别为'页面大小'、'总记录数'、'当前页(如果为空则自动读取GET变量)'。当前页的值总是获取不了,我是这样用的$current=$_GET[page];然后就是$p->set(20,$total,$current);
这个分页类还是实现不了,当前页的值获取不到。以下时我写调用分页类代码:
<?php
include_once ('global.php');
include_once('./admin/common/page.inc.php');
$db=new mysql("localhost","root","1975123","test","conn","gbk");
$db->select("test","","");
$total=$db->db_num_rows($rs);
echo $current =$_GET[page];
$p = new show_page;  //建立新对像
$p->file="index.php";  //设置文件名,默认为当前页
$p->pvar=$HTTP_GET_VARS[page]; //设置页面传递的参数,默认为p
$p->setvar(array("a" => '1', "b" => '2')); //设置要传递的参数,要注意的是此函数必须要在 set 前使用,否则变量传不过去
$p->set(20,$total,$current);  //设置相关参数,共三个,分别为'页面大小'、'总记录数'、'当前页(如果为空则自动读取GET变量)'
$p->output(0);   //输出,为0时直接输出,否则返回一个字符串
echo $p->limit();  //输出Limit子句。在sql语句中用法为 "SELECT * FROM TABLE LIMIT {$p->limit()}";
$db->findall("test LIMIT {$p->limit()}");
echo "<br />";
while($row = $db->fetch_array($rs)){
 echo "ID $row[id] , NAME $row[name] , SEX $row[sex]";
 echo "<br />";
}
?>

请高手给予代码,  万分感谢。
如下是php下载的分页类:
<?php
/**
* 一个用于Mysql数据库的分页类
*
* @author      Avenger <[url=mailto:[email protected]][email protected][/url]>
* @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="前十页"><<<</a> ';
            }
            if ($current>1) {
                $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current-1).($this->varstr).' title="前一页"><<</a> ';
            }

            $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> ';    //输出当前页数
                } else {
                    $this->output.='<a href="'.$this->file.'?'.$this->pvar.'='.$i.$this->varstr.'">['.$i.']</a> ';    //输出页数
                }
            }

            if ($current<$this->tpage) {
                $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+1).($this->varstr).' title="下一页">>></a> ';
            }
            if ($this->tpage>10 && ($this->tpage-$current)>=10 ) {
                $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+10).($this->varstr).' title="下十页">>>></a>';
            }
        }
    }

    /**
     * 要传递的变量设置
     *
     * @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
?>


[/php]

作者: missal   发布时间: 2009-12-24

问题解决了,include_once ('global.php');
include_once('./admin/common/page.inc.php');

$db=new mysql("localhost","root","1975123","test","conn","gbk");
$db->select("test","","");
echo "<br />".$total=$db->db_num_rows($rs)."<br />";
echo $current =$_GET[pagecount];


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

$db->findall("test LIMIT {$p->limit()}");
echo "<br />";
while($row = $db->fetch_array($rs)){
    echo "ID $row[id] , NAME $row[name] , SEX $row[sex]";
    echo "<br />";
}

作者: missal   发布时间: 2009-12-24