没人晓的吗?跟http://www.isso.com.cn/readarticle/24/24037.asp 一样的效果

解决方案 »

  1.   

    //------------------------>开始构建分页显示<------------------------------//  
     
    if($page!=""){  
           $page=$page;  
    }  
    else{  
           $page=0;  
    }  
    $total=$i;//-------------->这个是取出所有记录的总数参数  
    $topid=0;//显示留言传递参数  
    $pagesize=20;  
    $start=$page*$pagesize;  
    $end=$start+$pagesize;  
    if($end>$i)  $end=$i;  
    $totalpage=$i/$pagesize;  
    $info="  共有<font  color=red>"  .  $total  .  "</font>  张贴子<font  color=red>"  .  ($page+1)  .  "</font>/"  .  ceil($totalpage)  .  "页&nbsp;&nbsp;";  
    if($page>0)  $pagestr="<a  href=".$PHP_SELF."?page="  .($page-1)."&bord_id=".$bord_id.  ">上一页</a>";  
    $pagestr=$pagestr  .  "  [第  ";  
    //-------------------------------------判断页码------------------          
    for($i=0;$i<$totalpage;$i++){  
           if($i!=$page){  
                   $pagestr=$pagestr  .  "  <a  href=".$PHP_SELF."?page="  .  $i  ."&bord_id=".$bord_id.  ">"  .  ($i+1)  .  "</a>  ";  
           }  
           else{  
                   $pagestr=$pagestr  .  "  "  .  ($i+1)  .  "  ";  
           }  
    }  
    $pagestr=$pagestr  .  "页]";          
    if($page<$totalpage-1)  $pagestr=$pagestr  .  "<a  href=".$PHP_SELF."?page="  .  ($page+1)  ."&bord_id=".$bord_id.">下一页</a>\n";  
     
    ---------------------------------------------------------------  
     
    function  pageview($total_row,$perpage,$curpage,$page_name,$para)  
    {  
       //[总行数]转换为[总页数]  
       $total_page=floor($total_row/$perpage);  
       $leavenums=$total_row%$perpage;  
       if($leavenums<>0)    $total_page++;  
     
       $prev_page=$curpage-1;  
       $next_page=$curpage+1;  
       if(strrpos($page_name,'?'))    $page_name  =  $page_name.'&';  
       else    $page_name  =  $page_name.'?';  
     
       if($total_page>1)  
       {  
           $lastpage=($total_page-1);  
           echo  $prev_page<0?"  ":"&nbsp;<a  href=$page_name"."curpage=0$para>第一页</a>&nbsp;<A  href=\"".$page_name."curpage=$prev_page$para\">上一页</a>";  
           echo  $next_page>=$total_page?"  ":"&nbsp;<a  href=\"".$page_name."curpage=$next_page$para\">下一页</a>&nbsp;<a  href=".$page_name."curpage=$lastpage$para>最后一页</a>";  
           echo  "&nbsp;共[<b>$total_page</b>]页";  
       }  
    }  
    /*=================[数字]页码方式显示=================*/  
    function  no_pageview($total_row,$perpage,$curpage,$page_name,$para)  
    {  
       $tmpNo=$curpage;  
       //[总行数]转换为[总页数]  
       $total_page=floor($total_row/$perpage);  
       $leavenums=$total_row%$perpage;  
       if($leavenums<>0)      $total_page++;  
     
       //[总页数]转换为[总块数]  
       $display_page=10;  
       $total_block=floor($total_page/$display_page);  
       $leavepage=$total_page%$display_page;  
       if($leavepage<>0)  
           $total_block++;  
       $total_block=intval($total_block);  
     
       //[当前页]转换为[当前块]  
       $current_block=floor($curpage/$display_page);  
       $current_block=intval($current_block);  
     
       $prev_block=$current_block-1;  
       $prev_pages10=$prev_block*$display_page;  
       $next_block=$current_block+1;  
       $next_pages10=$next_block*$display_page;  
     
         if  (strrpos($page_name,'?')  )  
             $page_name  =  $page_name.'&';  
         else  
             $page_name  =  $page_name.'?';  
     
       if($total_page>1)  
       {  
           if($current_block==($total_block-1)){$cnt=$leavepage;}  
           else{$cnt=$display_page;}  
           for($i=0;$i<$cnt;$i++)  
           {  
               $curpage=$current_block*$display_page+$i;  
               $PageNo=$curpage+1;  
               if  ($tmpNo==$curpage)  
                       echo  "&nbsp;[<b>$PageNo</b>]&nbsp;";  
               else  
                 echo  "&nbsp;<a  href=".$page_name."curpage=$curpage$para>&nbsp;$PageNo&nbsp;</a>";  
           }  
       }  
       //-----显示[前十页]和[后十页]菜单  
       if($total_block>1)  
       {  
           echo  $prev_block<0?"  ":"&nbsp;<A  href=\"".$page_name."curpage=$prev_pages10$para\">前十页</a>";  
           echo  $next_block>=$total_block?"  ":"&nbsp;<a  href=\"".$page_name."curpage=$next_pages10$para\">后十页</a>";  
       }  
    }  
    ---------------------------------------------------------------  
     
      

  2.   

    思路.先统计你要显示的记录个数.然后确认你要一页显示多少条.  
     
    然后用sql中的limit  控制输出的记录条数.  
     
    点下一页时.limit变改就可以了.给你一个类.不想自己写的话.  
    <?    
    //【警告】:未经许可请勿随便修改    
    //------------------------------------------------------------------------------------------    
    //------------------------------------------------------------------------------------------    
    //        
    //  【文件名】:                                          c_mysql_page.inc    
    //  【作    用】:                                          MySQL分页函数类    
    //  【作    者】:                                          天灰    
    //      
    //  【最后修改日期】:                2001/07/16[cxx]              
    //  【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数组型    
    //------------------------------------------------------------------------------------------    
    //------------------------------------------------------------------------------------------    
    //        ※c_mysql_page()                                构造函数,设置分页初始参数    
    //        ※page_standard()                              分页显示函数(标准型)    
    //        ※GetRecordStartEnd()                      获得取记录的开始结束位置                    
    //        ※getmaxpage()                                    获得记录集的最大页数    
    //        ※checkpage()                                      检查当前页数是否在0和最大页数之间    
    //------------------------------------------------------------------------------------------    
     
     
    class  c_mysql_page    
    {    
               
    //------------------------------------------------------------------------------------------    
    //                变量定义    
    //------------------------------------------------------------------------------------------            
           var  $I_pagesize  =  10;                              //每页记录数    
           var  $C_width        =  '90%';                        //表格宽度          
    //------------------------------------------------------------------------------------------            
     
    //------------------------------------------------------------------------------------------    
    //                函数名:c_mysql_page  ($I_pagesize,  $c_width)      
    //                作    用:构造函数,设置分页初始参数    
    //                参    数:$I_pagesize,  $c_width    
    //                返回值:变量    
    //                备    注:构造函数随着类的建立而自动执行    
    //------------------------------------------------------------------------------------------    
           function  c_mysql_page  ($I_pagesize=10,  $C_width='85%')      
           {    
                   if  (isset($I_pagesize)){$this  ->  I_pagesize          =  $I_pagesize;}    
                   if  (isset($C_width)){$this  ->  C_width                  =  $C_width;}    
           }    
     
    //------------------------------------------------------------------------------------------    
    //                函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="")    
    //                作    用:分页显示函数(标准型)    
    //                参    数:$I_sumrecord                记录总数    
    //                                $C_url                            URL    
    //                                $C_page                          URL后的参数    
    //                                $C_otherpara                URL后的参数2    
    //                                $bgcolor                        表格的背景颜色    
    //                返回值:<table>    
    //                备    注:无    
    //------------------------------------------------------------------------------------------    
           function  page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="")    
           {    
                   //检查参数    
                   if  ((!$I_sumrecord)    |  |  (!$C_page)){AlertExit("参数不全!");}    
                       
                   global  $PHP_SELF,$$C_page;                                                        //全局变量$C_page    
                       
                   //检测$I_pagesize是否合法    
                   if($this  ->  I_pagesize  <  1){AlertExit("请设定每页的记录数!");}    
                       
                   if($I_sumrecord  <  1){return  false;}                                                //检测总记录数    
                       
                   if($C_url  ==  "self"){$C_url  =  $PHP_SELF;}                                //设置URL    
                       
                   $I_page  =  $$C_page;                                                                                //重新赋当前页值    
                   $I_maxpage  =  $this  ->  getmaxpage($I_sumrecord);                        //取出总页数    
                   $I_page  =  $this  ->  checkPage($I_maxpage,$I_page);                //检查当前页号    
                                       
                   //显示表      
                   echo  "<table  align=center  width=".  $this  ->  C_width  ."  bgcolor=".  $bgcolor  .">";    
                   echo  "<tr>";    
                   echo  "<td  align=left>共<font  color=red><b>"  .  $I_sumrecord.  "</b></font>条主题&nbsp;当前第<font  color=red><b>"  .  $I_page  .  "/".  $I_maxpage.  "</b></font>页</td>";    
                   if  ($I_maxpage  >  1)
      

  3.   

    这种分页在信息发布时以交互方式完成,大多asp整站系统都提供。改写成php的也非难事。
    前些天我曾发过此类代码,你可找一下
      

  4.   

    smarty好像有一个行的计算,用这个是不是好一点。具体的判断还是要好好想想,这时我的一点意见。
      

  5.   

    一个笨办法
    ==========
    在录入的时候加上一个分页的标识符(如‘&&’);
    输出的时候用explode分割;
      

  6.   

    讲一下原理吧,页内分页有好多办法,我比较习惯于用php来做,也有用js来做的。我只讲php的办法:假设置有一篇文章有5000字,设:$total = 5000;
    现在每页要显示2000字,设:$perpage = 2000;
    那就应分3页来显示,计算公式:$pagenum = ceil(5000/2000);
    知道了要分3页,然后就应该是进行切分文章。切分的依据应当是get到的分页标记如:page。
    因为一个新的页面的开始就是$begin = ($_GET['page']-1)*$perpage,用substr或中文字符截取函数进行截取,起始位置为$begin,截取长度为2000,就会得到一个新页面的内容。
    但是要显示一篇文章时往往大家都是直接的发送一个aid=XXX,然后进行数据库查询并输出,如article.php?aid=13。对于分页的第一页可以直接这样做,但对于第二页以后就不行了,因为缺少一个分页标记。
    在输出第一页时就要进行如上的操作,并在页脚部分生成一个翻页链接,如:<a href="article.php?aid=13&&page=2">第2页</a>,当点击此链接时便能发送一个分页标记,然后第三页如法炮制。