澳门新葡萄京官网注册php 分页类 扩展代码

这是一个xml 解析类

原来发表过一个脱离数据库的分页类,最近使用的时候发现有些时候搜索的东西过于大的时候,采用url传递参数的方式,可能会有一定的影响或者叫已知的bug,这次做了一些扩展,同时兼容了以前的模式,使用上面很简单的,只需要多设置一个参数就可以了代码如下:
复制代码 代码如下:

?phpclass Message_XML extends DOMDocument{const file_name =
e:/myphp/xmldom/xml/message.xml;private $root; //根节点private $PageNo;
//当前页private $allNum; //记录总数private $PageSize; //页大小private
$allPages; //总页数public function
__construct(){parent::__construct();if(!file_exists(self::file_name)){$xmlStr
= ?xml version=’1.0′ encoding=’utf-8′ ?root /;$this –
loadXML($xmlStr);$this – save(self::file_name);}else{$this –
load(self::file_name);}$this – root = $this – documentElement;$this –
get_pagemsg();}//得到页信息private function get_pagemsg(){$this –
PageSize = 3; //页大小$allNode = $this –
getElementsByTagName(record);$this – allNum = $allNode – length;
//记录总数$this – allPages = ceil($this – allNum / $this – PageSize);
//总页数$this – PageNo = $_GET[PageNo];if($this – PageNo 1 ||
!is_numeric($this – PageNo)){$this – PageNo = 1;}else if($this – PageNo
$this – allPages){$this – PageNo = $this – allPages;}$this – PageNo =
(int)$this – PageNo;}//显示留言public function
show_message(){$start_num = ($this – PageNo – 1) * $this – PageSize;
//记录开始数$end_num = $start_num + $this – PageSize – 1;
//记录结束数$allNode = $this – getElementsByTagName(record);$i =
0;foreach($allNode as $v){if($i = $start_num $i = $end_num){$autoid =
$v – getElementsByTagName(autoid) – item(0) – nodeValue;$subject = $v –
getElementsByTagName(subject) – item(0) – nodeValue;$content = $v –
getElementsByTagName(content) – item(0) – nodeValue;$str = div
class=’msgInfo’p class=’msgT’span留言标题:/span$subject/pp
class=’msgC’span留言内容:/spanbr /br
/nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;$content/p;$str .= p
class=’msgCMD’a
href=’?Action=edit_messageAutoID=$autoidPageNo=$_GET[PageNo]’编辑/a
a
href=’?Action=delete_messageAutoID=$autoidPageNo=$_GET[PageNo]’删除/a/p/div;print
$str;}$i++;}$this – get_pageCode();}//得到当前页码public function
get_pageCode(){$str = div class=’pageCode’当前页:.$this – PageNo. /
.$this – allPages.nbsp;nbsp;nbsp;a href=’?PageNo=1’首页/anbsp;a
href=’?PageNo=.($this-PageNo – 1).’/anbsp;a href=’?PageNo=.($this-PageNo

/**
* 功能: 分页类,根据提供的数据总量和页面大小
* 创建日期:Fri Apr 20 16:45:21 CST 2007
* 最后更新:
* 作者: sanshi
*/

  • 1).’/anbsp;a href=’?PageNo=.($this-allPages).’末页/a;$str .=
    nbsp;nbsp;nbsp;input type=’text’ size=’2′ id=’goPage’
    value=’.$this-PageNo.’input type=’button’ value=’GO’
    onclick=window.location=’?PageNo=’+document.getElementById(‘goPage’).value;print
    $str;}//添加留言页面public function post_message(){print divform
    method=’post’ action=’?Action=add_messagePageNo=$_GET[PageNo]’;print
    p标题:input type=’text’ name=’Subject’ size=’50’ //p;print
    p内容:textarea name=’Content’ cols=’50’ rows=’5’/textarea/p;print
    pinput type=’submit’ value=’添加留言’/p/div/form;}//添加留言public
    function add_message($Subject,$Content){$autoid = microtime();
    //留言ID$autoid = substr(strrchr(str_replace(
    ,,$autoid),.),1);$node_top = $this – root -appendChild($this –
    createElement(record));$node_top – appendChild($this –
    createElement(autoid,$autoid));$node_top – appendChild($this –
    createElement(subject,$Subject));$node_top – appendChild($this –
    createElement(content,$Content));$this – save(self::file_name);echo
    scriptalert(‘添加留言成功!’);window.location=’.$_SERVER[‘PHP_SELF’].?PageNo=.$_GET[‘PageNo’].’/script;}//清空留言public
    function clear_message(){$fp = @
    fopen(self::file_name,w+);if($fp){$str = ?xml version=’1.0′
    encoding=’utf-8′ ?root /;fwrite($fp,$str);fclose($fp);echo
    scriptalert(‘清空成功!’);window.location=’.$_SERVER[‘PHP_SELF’].’/script;}else{echo
    scriptalert(‘清空失败!’);history.back();/script;}}//设置节点路径和操作对象IDprivate
    function set_nodePath($AutoID){$xpath = new DOMXPath($this);$node_top
    = $xpath – query(//record[autoid=$AutoID]);return
    $node_top;}//删除留言public function
    delete_message($AutoID){$node_top = $this –
    set_nodePath($AutoID);$this – root – removeChild($node_top –
    item(0));$this – save(self::file_name);echo
    scriptalert(‘删除成功!’);location=’.$_SERVER[‘PHP_SELF’].?PageNo=.$_GET[‘PageNo’].’/script;}//编辑留言页面public
    function edit_message($AutoID){$node_top = $this –
    set_nodePath($AutoID);//取值方法1//$subject = $node_top – item(0) –
    getElementsByTagName(subject) – item(0) – nodeValue;//$content =
    $node_top – item(0) – getElementsByTagName(‘content’) – item(0)
    -nodeValue;//取值方法2foreach($node_top – item(0) – childNodes as
    $v){$value[] = $v – textContent;
    //注意:这里的$value必须这样写成一个数组,否则要出错}print divform
    method=’post’
    action=’?Action=save_messageAutoID=$AutoIDPageNo=$_GET[PageNo]’;print
    p标题:input type=’text’ name=’Subject’ value=$value[1] size=’50’
    //p;print p内容:textarea name=’Content’ cols=’50’
    rows=’5’$value[2]/textarea/p;print pinput type=’submit’
    value=’编辑留言’/p/div/form;}//编辑留言public function
    save_message($AutoID,$Subject,$Content){$node_top = $this –
    set_nodePath($AutoID);$replace_info[0] = $AutoID;$replace_info[1]
    = $Subject;$replace_info[2] = $Content;$i = 0;foreach($node_top –
    item(0) – childNodes as $v){$new_content = $this –
    createTextNode($replace_info[$i]);$v – replaceChild($new_content,$v
  • lastChild);$i++;}$this – save(self::file_name);echo
    scriptalert(‘编辑成功!’);location=’.$_SERVER[‘PHP_SELF’].?PageNo=.$_GET[‘PageNo’].’/script;}}?

class pagination
{
    var $result = array();
    var $pVar = “myp”;//page参数分页记数
    var $urlParamStr = “”; //页面的所有参数
    var $sqlMoveNumber = 0; //数据的偏移量
    var $is_post = false;

    public function pagination()
    {

    }
    public function set($sum,$pageSize,$page=””,$is_post = false)
    {
        $this->is_post = $is_post;
        $this->pVar = defined(‘PAGE_BAR’) ? PAGE_BAR : ‘myp’ ;
        $url =
$_SERVER[‘PHP_SELF’].’?’.$_SERVER[‘QUERY_STRING’];
        //计算出总页数
        $curPage = $this->getCurPage();

        $temp[‘sumPage’] = ceil($sum/$pageSize);
        //修改了,页码超出的bug
        if($curPage>$temp[‘sumPage’])
$curPage=$temp[‘sumPage’];
        $temp[‘curPage’] = $curPage;
        $temp[‘nextPage’] = $temp[‘sumPage’] > $curPage ?
($curPage+1) : $temp[‘sumPage’];
        $temp[‘upPage’] = $curPage >1 ? $curPage-1 :1;
        $temp[‘endPage’] = $temp[‘sumPage’];
        $this->urlParamStr = $this->_makeUrl($url);
        $temp[‘urlPageStr’] = ($page==””) ? $this->_makeUrl($url)
: $page.$this->urlParamStr;

        $this->sqlMoveNumber = $curPage <2 ? 0 :
($curPage-1)*$pageSize;
        $temp[‘sqlMoveNumber’] = $this->sqlMoveNumber;
        $temp[‘rowNo’] = $sum;
        $this->result = $temp;
        return $this->result;
        //print_r($temp);exit();
    }
    public function getSqlMove()
    {
        return $this->sqlMoveNumber;
    }
    public function getFooter()
    {
        $str= “共有 {$this->result[‘rowNo’]} 条
result[‘upPage’]}'”;
        if($this->is_post) $str .=” onclick=’return
sanshi_page_post(this.href,{$this->result[‘upPage’]});’ “;
        $str .=”
>上一页 “;
        $str .=” 当前 {$this->result[‘curPage’]} 页”;
        $str .=” 共有 {$this->result[‘sumPage’]} 页”;
        $str .=” result[‘nextPage’]}'”;
        if($this->is_post) $str .=” onclick=’return
sanshi_page_post(this.href,{$this->result[‘nextPage’]});’ “;
        $str .=”
>下一页”;
        return $str;
    }
    public function getJumpPage()
    {
        if($this->is_post)
        {
            $str = ” 跳到第 n”;
        }else{
            $str = ” 跳到第 n”;
        }
for($i=1;$i<=$this->result[‘sumPage’];$i++)
{
$str .= ($i==$this->result[‘curPage’]) ? “$in” : “$in”;
}
$str.=” 页”;
         //输出form表单
        if($this->is_post)
        {
            $str .=”

“;
            $str .=”

“;
            $str .=””;
            $_POST = isset($_POST) ? $_POST : array();
            foreach($_POST AS $k=>$v)
            {
                $str .=””;
            }
            $str .=”

“;
        }
return $str;
    }
    public function getCurPage()
    {
        return isset($_GET[$this->pVar]) ?
intval($_GET[$this->pVar]) : 1 ;
    }
    //分析出url的参数返回?后的参数,页码为空 包括问号
    private function _makeUrl($url)
    {
        $arrayUrl=parse_url($url);
        if(isset($arrayUrl[‘query’]))
        {
            $q=$arrayUrl[‘query’];
            parse_str($q,$qParam);
            //print_r($qParam);
            if(array_key_exists($this->pVar,$qParam))
            {
                foreach ($qParam AS $k=>$v)
                {
                    if($k !=$this->pVar) $temp[$k] = $v;
                }
                $temp[$this->pVar] = “”;
                if(function_exists(“http_build_query”))
                    return ‘?’.http_build_query($temp);
                else
                    return ‘?’.sanshi_http_build_query($temp);
            }else {
                return “?{$q}&{$this->pVar}=”;
            }
        }else{
            return “?{$this->pVar}=”;
        }

    }
}
function sanshi_http_build_query($a,$b=”,$c=0)
{
    if (!is_array($a)) return false;
    foreach ((array)$a as $k=>$v)
    {
        if ($c)
            $k=$b.”[“.$k.”]”;
        elseif (is_int($k))
            $k=$b.$k;
        if (is_array($v)||is_object($v))
        {
            $r[]=http_build_query($v,$k,1);
            continue;
        }
        $r[]=$k.”=”.urlencode($v);
    }
    return implode(“&”,$r);
}
/*
//print_r($_SERVER);
$p = new pagination();
$p->set(10,2,’thi.php’);
echo $p->getFooter();
echo $p->getJumpPage();
*/
?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注