$limit = 20;
$page = $page ? $page:1;
$limitstart = ($page-1)*$limit;
$sql = "select * from fx limit $limitstart,$limit";
$rs = mysql_query($sql);
while($rows=mysql_fetch_array($rs))
{
   .....
}

解决方案 »

  1.   

    很久以前用过function getpage($sql,$page_size=20)
     {
          global $page,$totalpage,$sums;  //out param
          $page = $_GET["page"];
          //$eachpage = $page_size;
          $pagesql = strstr($sql," from ");
          $pagesql = "select count(*) as ids ".$pagesql;
          $result = mysql_query($pagesql);
          if($rs = mysql_fetch_array($result)) $sums = $rs[0];
          $totalpage = ceil($sums/$page_size);
          if((!$page)||($page<1)) $page=1;
       $startpos = ($page-1)*$page_size;
       $sql .=" limit $startpos,$page_size ";
        return $sql;
     }function showbar($string="")
    {     
        global $page,$totalpage;
     $out="共<font color='red'><b>".$totalpage."</b></font>页&nbsp;&nbsp;";
        $linkNum =4;
        $start = ($page-round($linkNum/2))>0 ? ($page-round($linkNum/2)) : "1";
        $end   = ($page+round($linkNum/2))<$totalpage ? ($page+round($linkNum/2)) : $totalpage;
        $prestart=$start-1;
        $nextend=$end+1;
        if($page<>1) 
     $out .= "<a href='?page=1&&".$string."'title=第一页>第一页</a>&nbsp;";
        if($start>1)
     $out.="<a href='?page=".$prestart."' title=上一页>..<<</a>&nbsp;";
     for($t=$start;$t<=$end;$t++)
        {
         $out .= ($page==$t) ? "<font color='red'><b>[".$t."]</b></font>&nbsp;" : "<a href='?page=$t&&".$string."'>$t</a>&nbsp;";
        }
     if($end<$totalpage)
     $out.="<a href='?page=".$nextend."&&".$string."' title=下一页>>>..</a>";
        if($page<>$totalpage)
       $out .= "&nbsp;<a href='?page=".$totalpage."&&".$string."' title=最后页>最后页</a>";
       return $out;
    }?>使用方法:$re=getpage($sql)
    while($r=mysql_fetch_array($re))
    {
    .....
    }
    echo showbar();
    显示为: 共10页 第一页  <<  [4] 5 [6] >> 最后页
      

  2.   

    不好意思,上面漏写了一句,在$re=getpage($sql);后加$re=mysql_query($re);
      

  3.   

    上PCONLINE.com.cn,上面有一篇文章是分页的,一步一步教你怎么写.
      

  4.   

    <?php
      连接数据库的地方就不要解释了吧!
      if(!$page){       //$page是传的页数参数,如果是该参数还没有被传,就设成是1,就是当前页
        $page=1;
      }else{
        if($page<1) $page=1;
      }
      $temp = ($page-1)*20; // $temp 显示每页的起点(数据库里面的记录起点,比方说从第11条显示)
      $str = "select * from fx  order by id DESC limit $temp,20"; //从上面的起点开始查询出20条数据
      $query = mysql_query($str);
      $num = mysql_num_rows($query); // 总的记录数
      $numbers = ceil($num/20);     总的页数(每页显示20条,当然20你可以自己去改)
      while($datarow=mysql_fetch_array($query)){   //开始循环输出,这个地方你只要用数组取出你想显示的字段值就可以了,比较简单,不说
     
    ?>下面简单和你说一下“上一页”“下一页”“首页”“尾页”<a href=index.php?page=1首页</a> 
    <a href=index.php?page=<?php echo $page-1;?>>上页</a>  
    <a href=index.php?page=<?php echo $page+1;?>>下页</a>  
    <a href=index.php?page=<?php echo $numbers;?>>尾页</a> //page 是参数,上面的语句会根据这个值显示相应的记录  index.php这个根据你自己的需要改变
    我上面写的比较简单,等你熟悉了,可以多加一下判断条件!
      

  5.   

    wy2000490(军) 的程序是不是应该在程序开头用
    $str = "select * from fx 
    $query = mysql_query($str);
    $num = mysql_num_rows($query);
    得到总记录数而不是
    $str = "select * from fx order by id DESC limit $temp,20"; 
    $query = mysql_query($str);
    $num = mysql_num_rows($query); // 总的记录数
      

  6.   

    $result=$db->sql_query($sql);
    $total=$db->sql_numrows($result);
    if(empty($page)){$page=1;}
    $pagesize=50;if ($total<=$pagesize){ $totalpage=1;}  

    if($total % $pagesize)
    {
    $totalpage=(int)($total/$pagesize)+1;
    }
    else
    {
      $totalpage=$total/$pagesize;
    }
    $totalpage;



    $page_string='';
    if($page==1){
    $page_string.='第一页|上一页|';  
    }
    else{
    $page_string.="<a href=a.php.php?page=1">第一页</a>|<a href=a.php.php?page=".($page-1).">上一页</a>|";
    }
    if(($page==$totalpage) || ($totalpage==0)){
    $page_string.='下一页|末页';  
    }
    else  
      {
    $page_string.="<a href=a.php.php?page=".($page+1)."&detail=".$detail.">下一页</a>|<a href=a.php.php?page=".$totalpage."&detail=".$detail.">最后一页</a>";
    }
    $page_string;
    $template->set_var("nowpage",$page);
    $template->set_var('totalpage',$totalpage);
    $template->set_var('uppage',$page_string);
      

  7.   

    关键是
    select语句的
    limit $offset,20
    第一个参数$offset 是(offset)偏移量
    第二个参数20表示取记录个数明白了原理后
    推荐使用
     antidestiny(周水水)的函数function getpage($sql,$page_size=20)
     {
          global $page,$totalpage,$sums;  //out param
    ...
     }function showbar($string="")
    {     
        global $page,$totalpage;
    ...
    }
    使用
    getpage()前保证程序使用?page=** 传递页数
    showbar()显示分页链接或着
    erldy(我还是我) 的类功能更好erldy实例部分可能用了phplib执行sql语句:
    $sql = "select count(*) from $tbl";
    $db->query($sql);
    $db->next_record();
    $recordcount = $db->f(0);  
    把$db->query换成传统的mysql_query()
    总之提供了类需要的属性值就行
    $page->PageSize = 20;        //每页记录个数
    $page->Total = $recordcount; //总记录个数
    类的
    $page->OffSet()得到limit的两个参数