分页显示需要两个参数,一个是第几页,一个是每页显示多少条记录,通常通过url传递参数,既page(第几页),和pagesize(通常为程序内部定义)
所谓的分页是指,根据这两个参数,查询数据库记录,找出你想要的内容,不是一次得到所有记录.
比如有32条记录符合条件,没页显示10条(即pagesize=10),第一次只查询10条,limite 0,10.
第二次也只查询10条,limite 10,10
第三次也只查询10条,limite 20,10
依此类推(关于sql中的limite,请查阅mysql手册)

解决方案 »

  1.   

    说明一下:是limite $startpage, $pagesize
      

  2.   

    3702765.xml?temp=2430536&spage=19&psize=20
      

  3.   

    limit
    把页码传过去,不然不知道你是第几页
      

  4.   

    每页显示20条
     <?php
         if(!$page){
    $page=1;
         }else{
    if($page<1) $page=1;
         }
         $temp = ($page-1)*20;            //每页显示的起始位置
         $str = "select * from table where ******* limit $temp,20";
         $query = mysql_query($str);
         $nums = mysql_num_rows($query); //总的记录数
         $totalpages=ceil($nums/20);     //总的页数
     ?>     $page是点击“下一页”、“上一页”、“首页”、“尾页”、“跳到**页”传过来的参数
         下一页:$page = $page + 1
         上一页:$page = $page - 1
         首页:   $page = 1
         尾页:   $page = $totalpages
        跳到**页:$page = **
          
        别的你看着办,很简单的
      
      

  5.   

    是吗???  如上面诸位说的这么容易的话,谁不能解决啊?  
        我早在去年就提出查询结果分页的问题,一直没有得到真正的解决,也在这个上面花了不少功夫的,直到前不久才解决!!
        这样吧,你把邮箱告诉我,我把自己做的一个小系统发给你。
        不过我可以告诉你,我采用的是session的方式将查询条件保存下来,然后在分页中用的。
        
      

  6.   

    to hbgth:
    可不可以把代码贴出来看看,
    为什么一定要用session保存查询条件呢?
    通过url,用get方法把查询条件传回来也是可以的啊?
      

  7.   

    [email protected]
    你把情况说清楚,我看看
      

  8.   

    to turtlevan(你是猪啊,亲我还愣着干嘛)     通过url,用get方法把查询条件传回来也是可以的啊?    这种方法不行,查询页面search只能传到第一分页fy1的,从第二分页fy2起就不再能接受到search传的参数了,它只接受fy1的参数,而fy1此时所接受到的所有参数已经为空了,自然就没有任何参数可传到fy2了。
        我曾经试过隐藏字段,结果经过试验发现从search传出的所有参数在按下“查询”键鼠标事件结束并传到fy1页面后,它们的生命周期就结束了,想再把这些参数通过fy1继续传到下一页fy2就不可能了。 所以:往往在点“下一页”后,出现的错误提示就是:查询条件为空!!!!!
         所以,唯一可行的办法就是:在search页面传出参数的时候,打开session,将它们保存为session,我是专门用一个页面search1做这个工作的,然后由search页面采用header("Location: search.php");直接跳回到search页面,让人以为是从search页面点“查询”后直接得到了查询结果分页的,而其实以后的fy1,fy2,fy3.....等所有的页面需要的查询参数直接从session过的变量中去取得。不再与search页面相关。
      

  9.   

    我把原代码贴在下面:search.php [处理查询条件输入,以及结果显示的]
    ---------------------------------------------
    <?php
    session_start();  //注意:session_start()必须放在页面的最开头,前面不能有任何字符存在!!
    ?><html>
    <head>              
    <meta http-equiv=Content-Type content=text/html;charset=gb2312>
    <title>查询</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script language="JavaScript">
    function Initial() 
    {
      document.all.xz3.disabled =true;
      document.all.xz4.disabled =true;
      document.all.search2.disabled =true;  document.all.stxt1.value="bookname";
      document.all.stxt2.value="like";
      document.all.stxt3.value="";
      document.all.stxt4.value=""; 
      document.all.stxt5.value="10";
    }function Ischecked(x) 
    {
       if(x.checked == true) 
       {
         document.all.xz3.disabled =false;
         document.all.xz4.disabled =false;
         document.all.search2.disabled =false;
       } 
       else 
       {
         document.all.xz3.disabled =true;
         document.all.xz4.disabled =true;
         document.all.search2.disabled =true;
       }
    }function myxz1()
    {document.all.stxt1.value=document.all.xz1.options[document.all.xz1.selectedIndex].value;}function myxz2()
    {document.all.stxt2.value=document.all.xz2.options[document.all.xz2.selectedIndex].value;}function myxz3()
    {document.all.stxt3.value=document.all.xz3.options[document.all.xz3.selectedIndex].value;}function myxz4()
    {document.all.stxt4.value=document.all.xz4.options[document.all.xz4.selectedIndex].value;}function myxz5()
    {document.all.stxt5.value=document.all.xz5.options[document.all.xz5.selectedIndex].value;}
    </script>
    </head>
    <!--=======================================前台页面============================================-->
    <body onload=Initial()>
    <!--将查询条件传到search1页面,使它们以session的方式保存下来,以供后台程序分页时使用-->
    <form method="post" action="search1.php"> <?php 
    require_once('./header.php');
    ?>§查 询§ <font color='blue'>[注:日期格式 2000-10-1 | 近似查询 like | 精确查询 = | 大于 &gt; | 小于 &lt; | 不等于 &lt;&gt;]</font><br>
    <TABLE border="0" bgcolor="black" width="594" cellspacing="1" cellpadding="0">
    <TR>
    <TD bgcolor="#7399BF" width="20">&nbsp;</TD>
    <TD bgcolor="#7399BF">
            <select id="xz1" name="select1" align="absmiddle" onClick=myxz1()>      
              <option value="bookname" selected>书名</option>
              <option value="writer">作者</option>
              <option value="booktype">类别</option>
              <option value="publisher">出版社</option>
              <option value="price">定价</option>
              <option value="publishdate">出版日期</option>
              <option value="buydate">购买日期</option>
              <option value="isdn">书号</option>
              <option value="comment">内容简介</option>
              <option value="islend">是否借出</option>
            </select> 
        <select id="xz2" name="select2" align="absmiddle" onClick=myxz2()> 
              <option value="like" selected>like</option>
              <option value="=" >=</option>
              <option value=">">&gt;</option>
              <option value="<">&lt;</option>
              <option value="<>">&lt;&gt;</option>
            </select>
    </TD>
    <TD bgcolor="white">
          <input type="text" name="search1" value="" size="65"  style="background-color:transparent;border:#6699cc 0px solid;height:19px">
    </TD>
    </TR>
    <TR>
    <TD bgcolor="#7399BF"><input type=checkbox id=chk2 value="" size="10" onClick=Ischecked(this)></TD>
    <TD bgcolor="#7399BF">
            <select id="xz3" name="select3" align="absmiddle" onClick=myxz3()>      
              <option value="bookname" selected>书名</option>
              <option value="writer">作者</option>
              <option value="booktype">类别</option>
              <option value="publisher">出版社</option>
              <option value="price">定价</option>
              <option value="publishdate">出版日期</option>
              <option value="buydate">购买日期</option>
              <option value="isdn">书号</option>
              <option value="comment">内容简介</option>
              <option value="islend">是否借出</option>
            </select> 
        <select id="xz4" name="select4" align="absmiddle" onClick=myxz4()>      
              <option value="like" selected>like</option>
              <option value="=" >=</option>
              <option value=">">&gt;</option>
              <option value="<">&lt;</option>
              <option value="<>">&lt;&gt;</option>
            </select>
    </TD>
    <TD bgcolor="white">
          <input type="text" name="search2" value="" size="65" style="background-color:transparent;border:#6699cc 0px solid;height:19px">       
    </TD>
    </TR>
    </table>
    <input type="Submit" name="BtSech" value="查 询">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <select id="xz5" name="select5" align="absmiddle" onClick=myxz5()>      
      <option value="10" selected>每页显示</option> 
      <option value="5">5</option>
      <option value="10">10</option>
      <option value="15">15</option>
      <option value="20">20</option>
      <option value="25">25</option>
      <option value="30">30</option>
      <option value="35">35</option>
      <option value="40">40</option>
      <option value="45">45</option>
      <option value="50">50</option>
      <option value="100">100</option>
    </select><input id="stxt1" name="txt1" type="hidden" size="20">
    <input id="stxt2" name="txt2" type="hidden" size="20">
    <input id="stxt3" name="txt3" type="hidden" size="20">
    <input id="stxt4" name="txt4" type="hidden" size="20">
    <input id="stxt5" name="txt5" type="hidden" size="20">
    </form>
    </body>
    </html>
    <!--========================================================================================-->
      

  10.   

    <?php
    //========================================后台程序======================================
    require_once('./conn.php'); 
    require_once('./fy_class.php');$mypage = new G_Page;   //创建自定义类G_Page的新对象$mypage$G_Table = "book";        //确定数据表//接收search1页面以session方式保存过的查询条件,以后分页导航时反复用到的查询条件就直接从这里找,
    //而不需回到前台页面去找了!
    $txt1  = $_SESSION['txt1'];
    $txt2  = $_SESSION['txt2'];
    $txt3  = $_SESSION['txt3'];
    $txt4  = $_SESSION['txt4'];
    $txt5  = $_SESSION['txt5'];
    $sech1 = $_SESSION['sech1'];
    $sech2 = $_SESSION['sech2'];$PageSize = $txt5;         //确定每页显示记录数if(!$sech1=="")//如果查询项不为空
    {
       if ($txt2=="like") //模糊查询  .$txt1." ".$txt2.[两个txt之间的空格" "必不可少,否则sql语句会出错!]
       {
      $WhereStr=$txt1." ".$txt2." '%".$sech1."%'";
       }
       else               //精确查询
       {
          if ($txt3=="")
      {
             $WhereStr=$txt1." ".$txt2." '".$sech1."'";
      }
      else
      {
             $WhereStr=$txt1." ".$txt2." '".$sech1."' AND ".$txt3." ".$txt4." '".$sech2."'";
      }
       }   //确定查询条件[$WhereStr]、符合条件的记录数[$RecCount]、总页数[$PageCout]、当前页码[$curPageID]
       $RecCount  = $mypage->RecCount($G_Table,$WhereStr);            //统计符合条件的记录数
       $PageCout  = $mypage->PageCount($G_Table,$WhereStr,$PageSize); //统计页数
       $curPageID = $mypage->CurPageID();                            //取得当前页码   $p1 = $curPageID-1;          //当前页码-1   传到print页面
       $p2 = $PageSize;             //每页显示的记录数   //确定查询语句 [大量查询时出于速度考虑,最好不要用SELECT *...的方式,而应直接写出需查询的字段]
       $myStr = "SELECT bookid,bookname,writer,booktype,publisher,publishdate FROM book WHERE ";
       $sql   = $myStr.$WhereStr." ORDER BY bookid ASC LIMIT ".($curPageID-1)*$PageSize.",".$PageSize;   //执行查询语句
       $result = mysql_query($sql,$conn) or die("查询失败!" . mysql_error());    //显示查询结果
       $row_count = mysql_num_rows($result); //获取记录数并赋值给$row_count
       if (!$row_count==0)                   //如果记录数不为空
       {
          echo "<u>查询结果</u><br>";
          echo "<table border=0 cellspacing=1 cellpadding=2 bgcolor='black'>";
          echo "<tr bgcolor='#7399BF' align='center'><td width='86'>操作</td><td width='26'>编号</td><td>书名</td><td>作者</td><td>类别</td><td>出版社</td><td>出版日期</td><td width='26'>详细</td></tr>";
          while ($line = mysql_fetch_array($result,MYSQL_NUM))
          { 
              echo "<tr bgcolor='white'>";
              echo "<td><a href='edit.php?id=$line[0]'>修改</a>|<a href='del.php?id=$line[0]'>删除</a>|<a href='print.php?id=$line[0]'>打印</a></td><td>";
              echo($line[0]);
              echo "</td><td>";
              echo($line[1]);
              echo "</td><td>";
              echo($line[2]);
              echo "</td><td>";
              echo($line[3]);
              echo "</td><td>";
              echo($line[4]);
              echo "</td><td>";
              echo($line[5]);
              echo "</td><td align='center'>";
              echo "<a href='detail.php?id=$line[0]'>>></a>";
              echo "</td></tr>";
          }
          echo "</table>";      //分页导航
          include('./fy_dh.php');   if ($row_count > 1)//如果记录数大于1,则显示"打印当前页面",否则就不显示了
      { 
          echo "<br><br><a href='print.php?t1=".$txt1."&t2=".$txt2."&t3=".$txt3."&t4=".$txt4."&s1=".$sech1."&s2=".$sech2."&p1=".$p1."&p2=".$p2."'>§打印当前页面§</a>"; //把查询语句所有的值传给print页面,以帮助print页面确定查询语句   
      }  
       }
       else
       {
          echo "<table border='1' bgcolor='#6699FF' cellspacing='1' cellpadding='1' ><td><font color='#FFFFCC'>对不起,数据库中没有该记录!</font></td></table>"; 
       }
    }
    else
    {
       echo "<table border='1' bgcolor='#6699FF' cellspacing='1' cellpadding='1' ><td><font color='#FFFFCC'>请输入查询内容!</font></td></table>";
    }mysql_free_result($result); //释放结果内存资源 
    mysql_close($conn);           // 断开连接 
    ?>=============================================================================
    search1.php [将查询条件以session的方式保存并返还search页面,使分页不再缺条件]
    -----------------------------------------------------------------------------
    <?php
    session_start();  //注意:session_start()必须放在页面的最开头,前面不能有任何字符存在!!//接收search页面传来的查询条件,并以session的方式保存下来
    $_SESSION['txt1'] = trim($_POST["txt1"]);
    $_SESSION['txt2'] = trim($_POST["txt2"]);
    $_SESSION['txt3'] = trim($_POST["txt3"]);
    $_SESSION['txt4'] = trim($_POST["txt4"]);
    $_SESSION['txt5'] = trim($_POST["txt5"]);
    $_SESSION['sech1'] = trim($_POST["search1"]);
    $_SESSION['sech2'] = trim($_POST["search2"]);//直接跳转回search页面
    header("Location: search.php");
    ?>
      

  11.   

    用hidden表单提交,或者href传,总之把下一页的值带上提交处理就行了。用不着session
      

  12.   

    这个问题我以前问过,不过现在已经解决了,是另外一个朋友告诉我的!
    我现在给你个实例你自己看看吧,用get传变量.
    <?php
    if (! mysql_connect('localhost', 'root', '')) {
            die('Can NOT connect to MySQL Server');
    } elseif (! mysql_select_db('test')) {
            die('Can NOT select Database "test" ');
    }// ==========================================
    // 函数声明
    // ==========================================
    function paginate($query, $keyword, $pageno) {
            if (! $result = mysql_query($query)) {
                    die('SQL ERROR!');
            }
            $rows_found = mysql_num_rows($result); // 一共有多少条符合条件的记录
            $rows = 5; // 每页显示 5 条
            $pages = ceil($rows_found / $rows); // 总页数(总记录数 / 每页记录数,向后取整数)
            if (! isset($pageno)) {
                    $pageno = 1;
            }
            $offset = $pageno * $rows - $rows; // 当前页的首记录偏移量        // 需要由函数返回的变量
            $paginate['query'] = $query.' limit '.$offset.','.$rows; // 对当前页应显示记录的查询
            $paginate['rows_found'] = $rows_found;
            $paginate['pageno'] = $pageno;
            $paginate['pages'] = $pages;
            $paginate['pagenoList'] = '';
            for ($i=1; $i<=$pages; $i++) {
                    if ($pageno == $i) {
                            $paginate['pagenoList'] .= ' '.$i.' ';
                    } else {
                            $paginate['pagenoList'] .= ' <a href="index.php?keyword='.$keyword.'&pageno='.$i.'">'.$i.'</a> ';
                    }
            }        // 返回变量
            return $paginate;
    }// ==========================================
    // 处理查询表单的提交行为
    // ==========================================
    if ($keyword) {
            $query = 'select * from test where XM like "%'.$keyword.'%"'; // 检索符合条件的记录
            $paginate = paginate($query, $keyword, $pageno);
    }// ==========================================
    // HTML
    // ==========================================
    ?>
    <form method="get" action="index.php">
    <input type="text" name="keyword" value="<?php echo $keyword; ?>">
    <input type="submit" name="submit" value="search">
    </form><p>
    <?php
    if ($paginate['rows_found'] && $paginate['pageno']) {
            echo '找到'.$paginate['rows_found'].'条,当前页为第'.$paginate['pageno'].'页';
    }
    ?>
    </p><ul id="queryResultList">
    <?php
    if ($result = mysql_query($paginate['query'])) {
            while ($row = mysql_fetch_array($result)) {
                    echo '<li>'.$row['XM'].'</li>';
            }
    }
    ?>
    </ul><div id="pagenoList"><?php echo $paginate['pagenoList']?></div>
      

  13.   

    用GET方法或者隐藏表单都可以吧,用session总觉得麻烦。