//------------------------>开始构建分页显示<------------------------------//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";

解决方案 »

  1.   

    最主要的是看你用什么样的数据库,MYSQL 的话就比较简单,使用 LIMIT  语句每次根据当前页码,只选择当前页码的记录就可以了。
      

  2.   

    那你可以加入一个
    <form name=form1 action=<? echo $PHP_SELF;?> method=post>
    输入页码:<input type=text name=page>
    <input type=submit value=go></form>试试,这个没测试,
    因为上面的程序那段for($i=0;$i<$totalpage;$i++){
    。。
    已经把所有的页列出来了,如果要把这个也分页,原理是一样的,自己写一下程序,不要什么都靠别人,那样你永远也不会懂了
      

  3.   

    eagle_qui同志:
        这样写好象不行
      

  4.   

    输入框转到第几页:
    <select name=paaaa onchange="self.location='<?=$PHP_SELF?>?page='+this.value;">
    <?=$pageOption?>
    </select>
      

  5.   

    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>";
      }
    }
      

  6.   

    思路.先统计你要显示的记录个数.然后确认你要一页显示多少条.然后用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) 
            { 
                echo "<td align=right>"; 
                if($I_page > 1 && $I_page < $I_maxpage) 
                { 
                    echo "<a href= $C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";         
                    $pre=$I_page-1; 
                    echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;";     
                    $next=$I_page+1; 
                    echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";         
                    echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;"; 
                } 
                elseif($I_page == 1) 
                { 
                    $next = $I_page+1; 
                    echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";     
                    echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;";     
                } 
                elseif($I_page == $I_maxpage) 
                {         
                    echo "<a href=$C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";     
                    $pre=$I_page-1; 
                    echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;&nbsp;"; 
                } 
                 
                //显示select 
              //  echo "转到"; 
               // echo "<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=WindowLocation($C_url,$C_otherpara,$C_page)>";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)." 
               // for($i=1;$i <= $I_maxpage;$i++) 
              //  { 
                    //如$i==$I_page,此选项选中(selected) 
              //      if($i == $I_page){echo "<option value=$i selected>$i&nbsp;</option>";} 
              //      else{echo "<option value=$i>$i&nbsp;</option>";} 
             //   } 
              //  echo "</SELECT>页</td>"; 
            } 
            echo "</tr>"; 
            echo "</table>"; 
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:GetRecordStartEnd($I_page) 
    //        作  用:获得取记录的开始结束位置 
    //        参  数:$I_page            当前页 
    //        返回值:全局变量$I_rowstart,$I_pagesize 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function GetRecordStartEnd($I_page) 
        { 
            global $I_rowstart;         
            global $I_pagesize; 
            $I_rowstart = ($I_page-1)*$this -> I_pagesize; 
            $I_pagesize = $this -> I_pagesize;             
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:getmaxpage($intRecordNum) 
    //        作  用:获得记录集的最大页数 
    //        参  数:$I_sumrecord        记录总数 
    //        返回值:最大页数$I_maxpage(整型) 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function getmaxpage($I_sumrecord) 
        { 
            if (!$I_sumrecord){AlertExit("参数不全!");}//检查参数 
            $I_maxpage = ceil($I_sumrecord / $this -> I_pagesize);  
            return $I_maxpage; 
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:checkpage($I_maxpage,$I_page) 
    //        作  用:检查当前页数是否在0和最大页数之间 
    //        参  数:$I_maxpage        最大页数 
    //                $I_page            当前页数 
    //        返回值:当前页数$I_page(整型) 
    //        备  注:无 
    //--------------------------------------------------------------
      

  7.   

    关于简单的分页程序 
    做数据库分页最重要的在于得到分页时的超链接。 当然,每页的能显示的最大记录可以设置为变量,本文只想起一个抛砖引玉的作用,这个程序还有待于进一步改进,请大家多多提意见。文中head.php 和 foot.php 是一个网页的头部和尾部。其实,说得明白点这里只是一个数学计算的问题。 
    <?php 
    include ("head.php"); 
    function connect() 

    $handler=mysql_connect("","user","password"); 
    if(!$handler) 

    $error= "对不起,不能链接到数据库!"; 

    else 
    $result=mysql_select_db(dongzhengfei); 
    if($result) 
    return $handler; 

    $handler=connect(); 
    if($handler) 

    $maxrows="12"; 
    if(isset($from))//判定当前是否第一次打开 

    $step=($total-$from>$maxrows)?$maxrows$total-$from); 
    $query="select * from teacher limit $from,$step"; 
    $result=mysql_query($query); 
    $num=mysql_num_rows($result); 

    else 

    $query="select * from teacher"; 
    $result=mysql_query($query,$handler); 
    $num=mysql_num_rows($result); 
    $total=$num; 
    $pages=ceil($num/$maxrows); 
    $step=($num>$maxrows)?$maxrows:$num; 

    if($num==0) 

    echo "当前没有任何老师信息!!!"; 

    echo "<p>今天网上注册老师:".$total."</p>"; 
    $i=0; 
    echo "<table width=\"760\" bgcolor=\"#33cc66\" cellpadding=\"1\"><tr><td align=\"center\" bgcolor=\"#ffffff\" width=\"85\"><p>姓  名</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"75\"><p>民族</p></td><td bgcolor=\"#ffffff\" width=\"240\" align=\"center\"><p>辅导科目</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"210\"><p>学    校</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"150\"><p>专    业</p></td></tr>";//设置表头 
    while($row=mysql_fetch_array($result)and ($i<$maxrows)) 

    echo "<tr>"; 
    $tea_info="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["name"]."</p></td>"; 
    $tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["nation"]."</p></td>"; 
    $tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["subject"]."</p></td>"; 
    $tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["school"]."</p></td>"; 
    $tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["specialty"]."</p></td>"; 
    echo $tea_info. "</tr>"; 
    $i++; 

    echo "</table>"; 
    echo "<p align=\"right\">"; 
    if($pages>1) 

    echo "<a href=\"$php_self?from=0&total=$total&pages=$pages\" target=\"top\">首页</a>  "; 

    else 
    echo "首页  "; 
    if($from>=$maxrows) 

    echo "<a href=\"$php_self?from=".($from-$maxrows); 
    echo "&total=$total&pages=$pages\""; 
    echo "target=\"top\">上一页</a>  "; 

    else 
    echo "上一页   "; 
    if($from+$maxrows<$total) 

    echo "<a href=\"$php_self?from=".($from+$maxrows); 
    echo "&total=$total&pages=$pages\""; 
    echo "target=\"top\">下一页</a>  "; 

    else 
    echo "下一页  "; 
    if($pages>=2) 

    echo "<a href=\"$php_self?from="; 
    if($total%$maxrows==0) 
    echo $total-$maxrows; 
    else 
    echo $total-$total%$maxrows; 
    echo "&total=$total&pages=$pages\""; 
    echo "target=\"top\">末页</a>  "; 

    else 
    echo "末页  "; 
    echo "</p>"; 
    include ("foot.php"); 

    else 
    echo "数据库出错!!!" 
    ?> 
    另注:从数据库中取得的记录,从0开始排号。