能告诉我这个PHP文章分页怎么用吗?谢谢!<?php 
/*  
*  长文章分页类  
*  @package    cutpage 
*/  
    class cutpage{    
        var $pagestr;       //被切分的内容    
        var $pagearr;       //被切分文字的数组格式    
        var $sum_word;      //总字数(UTF-8格式的中文字符也包括)    
        var $sum_page;      //总页数    
        var $page_word;     //一页多少字    
        var $cut_tag;       //自动分页符    
        var $cut_custom;    //手动分页符    
        var $ipage;         //当前切分的页数,第几页    
        var $url;    
        function __construct($pagesize){    
            $this->page_word = $pagesize;    
            $this->cut_tag = array("</table>", "</div>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ",","<img");    
            $this->cut_custom = "{nextpage}";    
            $tmp_page = intval(trim($_GET["ipage"]));    
            $this->ipage = $tmp_page>1?$tmp_page:1;    
        }    
        //统计总字数    
        function get_page_word(){    
            $this->sum_word = $this->strlen_utf8($this->pagestr);    
            return $this->sum_word;    
        }    
        /*  统计UTF-8编码的字符长度  
         *  一个中文,一个英文都为一个字  
         */  
        function strlen_utf8($str){    
           $i = 0;    
           $count = 0;    
           $len = strlen ($str);    
           while ($i < $len){    
               $chr = ord ($str[$i]);    
               $count++;    
               $i++;    
               if ($i >= $len)    
                   break;    
               if ($chr & 0x80){    
                   $chr <<= 1;    
                   while ($chr & 0x80) {    
                       $i++;    
                       $chr <<= 1;    
                   }    
               }    
           }    
           return $count;    
        }    
        //设置自动分页符号    
        function set_cut_tag($tag_arr=array()){    
            $this->cut_tag = $tag_arr;    
        }    
        //设置手动分页符    
        function set_cut_custom($cut_str){    
            $this->cut_custom = $cut_str;    
        }    
        function show_cpage($ipage=0){    
            $this->cut_str();    
            $ipage = $ipage ? $ipage:$this->ipage;    
            return $this->pagearr[$ipage];    
        }    
        function cut_str(){    
            $str_len_word = strlen($this->pagestr);     //获取使用strlen得到的字符总数    
            $i = 0;   
            if ($str_len_word<=$this->page_word){   //如果总字数小于一页显示字数    
                $page_arr[$i] = $this->pagestr;
            }else{    
                if (strpos($this->pagestr, $this->cut_custom)){    
                    $page_arr = explode($this->cut_custom, $this->pagestr);    
                }else{    
                    $str_first = substr($this->pagestr, 0, $this->page_word);   //0-page_word个文字    cutStr为func.global中的函数    
                    foreach ($this->cut_tag as $v){    
                        $cut_start = strrpos($str_first, $v);       //逆向查找第一个分页符的位置    
                        if ($cut_start){    
                            $page_arr[$i++] = substr($this->pagestr, 0, $cut_start).$v;    
                            $cut_start = $cut_start + strlen($v);    
                            break;    
                        }    
                    }    
                    if (($cut_start+$this->page_word)>=$str_len_word){  //如果超过总字数    
                        $page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);    
                    }else{    
                        while (($cut_start+$this->page_word)<$str_len_word){    
                            foreach ($this->cut_tag as $v){    
                                $str_tmp = substr($this->pagestr, $cut_start, $this->page_word);        //取第cut_start个字后的page_word个字符    
                                $cut_tmp = strrpos($str_tmp, $v);       //找出从第cut_start个字之后,page_word个字之间,逆向查找第一个分页符的位置    
                                if ($cut_tmp){    
                                    $page_arr[$i++] = substr($str_tmp, 0, $cut_tmp).$v;    
                                    $cut_start = $cut_start + $cut_tmp + strlen($v);    
                                    break;    
                                }    
                            }      
                        }    
                        if (($cut_start+$this->page_word)>$str_len_word){    
                            $page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word);    
                        }    
                    }    
                }    
            }    
            $this->sum_page = count($page_arr);     //总页数    
            $this->pagearr = $page_arr;    
        }    
        //显示上一条,下一条    
        function show_prv_next(){    
            $this->set_url();
            $page = 5;
            $offset = 2;
            if($page>$this->sum_page){
                $from = 1;
                $to = $this->sum_page;
            }else{
                $from = $this->ipage-$offset;
                $to = $from + $page -1;
                if($from<1){
                    $to = $this->ipage + 1 - $from;
                    $from = 1;
                    if($to-$from<$this->ipage){
                        $to = $this->ipage;
                    }
                }elseif($to>$this->sum_page){
                    $from = $this->sum_page - $page + 1;
                    $to = $this->sum_page;
                }
            }
            
            $multipage = "";
            if ($this->ipage - $offset > 1 && $this->sum_page > $page) {
                $multipage .= "<a ";
                
                $multipage .= "href=\"".$this->url.(1)."\"";
                
                $multipage .= " class=\"first\">1 ...</a>";
            }
            if ($this->ipage > 1) {
                $multipage .= "<a ";
                
                $multipage .= "href=\"".$this->url.($this->ipage - 1) . "\"";
                
                $multipage .= " class=\"prev\">‹‹</a>";
            }
            if($to!=$from){        
                for($i = $from; $i <= $to; $i ++) {
                    if ($i == $this->ipage) {
                        $multipage .= '<strong>[' . $i . ']</strong>';
                    } else {
                        $multipage .= "<a ";
                        
                        $multipage .= "href=\"".$this->url.($i)."\"";
                        
                        $multipage .= ">[$i]</a>";
                    }
                }
            }
            if ($this->ipage < $this->sum_page) {
                $multipage .= "<a ";
                
                $multipage .= "href=\"".$this->url.($this->ipage + 1) . "\"";
                
                $multipage .= " class=\"next\">››</a>";
            }
            if ($to < $this->sum_page) {
                $multipage .= "<a ";
                
                $multipage .= "href=\"".$this->url.($this->sum_page)."\"";
                
                $multipage .= " class=\"last\">... $this->sum_page</a>";
            }            
           return $multipage;    
        }    
        function show_page_select(){    
            if ($this->sum_page>1){    
                $str = "   <select onchange=\"location.href=this.options[this.selectedIndex].value\">";    
                for ($i=1; $i<=$this->sum_page; $i++){    
                    $str.= "<option value='".$this->url.$i."' ".(($this->ipage)==$i ? " selected='selected'":"").">第".$i."页</option>";    
                }    
                $str.= "</select>";    
            }    
            return $str;    
        }    
        function show_page_select_wap(){    
            if ($this->sum_page>1){    
                $str = "<select ivalue='".($this->ipage-1)."'>";    
                for ($i=1; $i<=$this->sum_page; $i++){    
                    $str.= "<option onpick='".$this->url.$i."'>第".$i."节</option>";    
                }    
                $str.= "</select>";    
            }    
            return $str;    
        }    
        function set_url(){    
            parse_str($_SERVER["QUERY_STRING"], $arr_url);    
            unset($arr_url["ipage"]);    
            if (empty($arr_url)){    
                $str = "ipage=";    
            }else{    
                $str = http_build_query($arr_url)."&ipage=";    
            }    
            $this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$str;    
        }    
    }
?> 

解决方案 »

  1.   

    确切的说,这是个分页的类!
    调用它,首先在文章页面实例化这个类
    比如
    haha=new cutpage();
    haha->show_page_select(这里面还要放上参数);
    因为是个公用类!
    所以你的数据信息还要用SQL语句读出来,用变量记录下来,作为参数,传到分页类的函数里去.
    ------------------
    这是思路,具体的变量,你的自己写!
    比如读取你数据库行数的:
    $hangshu=mysql_num_rows($sql)
    这个$hangshu就是你数据库里面的总条数.
    把他作为参数传递到这个分页类的函数里去
      

  2.   

    ..分页类太多了,看起来累,直接给个例子你吧~~
    *使用方法:
    <?php
    $result = mysql_query("select id from `mytable`");
    $total = mysql_num_rows($result);
    pageft($total, 10);
    if ($firstcount < 0) $firstcount = 0;
    ?>
    <tr><th colspan="5"><?php echo $pagenav;?></th></tr>
    *///分页类
    <?php
    //为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
    if(isset($_GET["page"])){
    $page = $_GET["page"];
    }
    if(!function_exists("pageft")){
    //定义函数pageft(),三个参数的含义为:
    //$totle:信息总数;
    //$displaypg:每页显示信息数,这里设置为默认是20;
    //$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
    //   默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
    function pageft($totle,$displaypg=20,$url=''){
    //定义几个全局变量:
    //$page:当前页码;
    //$firstcount:(数据库)查询的起始项;
    //$pagenav:页面导航条代码,函数内部并没有将它输出;
    //$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
    global $page,$firstcount,$pagenav,$_SERVER;
    //为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
    $GLOBALS["displaypg"]=$displaypg;
    if(!$page) $page=1;
    //如果$url使用默认,即空值,则赋值为本页URL:
    if(!$url){ $url=$_SERVER["REQUEST_URI"];}
    //URL分析:
    $parse_url=parse_url($url);
    $url_query=$parse_url["query"]; //单独取出URL的查询字串
    if($url_query){
    //因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
    //这里用到了正则表达式,请参考“PHP中的正规表达式”
    $url_query=ereg_replace("(^|&)page=$page","",$url_query);
    //将处理后的URL的查询字串替换原来的URL的查询字串:
    $url=str_replace($parse_url["query"],$url_query,$url);
    //在URL后加page查询信息,但待赋值:
    if($url_query) $url.="&page"; else $url.="page";
    }else {
    $url.="?page";
    }
    //页码计算:
    $lastpg=ceil($totle/$displaypg); //最后页,也是总页数
    $page=min($lastpg,$page);
    $prepg=$page-1; //上一页
    $nextpg=($page==$lastpg ? 0 : $page+1); //下一页
    $firstcount=($page-1)*$displaypg;
    //开始分页导航条代码:
    $pagenav="显示第 <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> 条记录,共 $totle 条记录";
    //如果只有一页则跳出函数:
    if($lastpg<=1) return false;
    $pagenav.=" <a href='$url=1'>首页</a> ";
    if($prepg) $pagenav.=" <a href='$url=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
    if($nextpg) $pagenav.=" <a href='$url=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
    $pagenav.=" <a href='$url=$lastpg'>尾页</a> ";
    //下拉跳转列表,循环列出所有页码:
    $pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
    for($i=1;$i<=$lastpg;$i++){
    if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
    else $pagenav.="<option value='$i'>$i</option>\n";
    }
    $pagenav.="</select> 页,共 $lastpg 页";
    }
    }
    ?>