分析:1.首先需要一个参数pageno用于纪录当前叶面的序号,然后下一页就序号加一传递给自己,上一页序号减1传递给自己.首页自然序号是1,末页就是计算出来的(纪录数/每页的显示纪录数+1).
2.这个页面的显示是这样显示的:如果数据库本身支持纪录序号(mysql的limit,oracle的rownum),则过滤出纪录序号为(每页的显示纪录数*(pageno-1)到每页的显示纪录数*pageno),如果数据库不支持纪录序号,则纪录循环while里面计数判断是否是当前页的显示内容.是就显示,不是就不显示.

解决方案 »

  1.   

    一般来说有三种方法:
    1、滚动结果集,这个方法需要把结果集放在session里面,俺自认为没有效率,从来也没有试过
    2、查询语句分页,先找到有多少条符合条件的记录,然后根据分页条数使用limit(mysql)或者top(mssql)做第二次查询来分页,第二查询得到的所有记录都是当前页的记录。
    3,一次查询,做循环输出,比如每页显示10条记录,那么第二页,就是从递11条开始显示前面的跳过不显示。
      

  2.   

    那么如果选第二页的时候,怎么控制在查询结果里LIMIT而不是在整个记录里LIMIT呢?
      

  3.   

    select * from testtbl where $CONDITIONSTR LIMIT 1*$pagecount,$pagecount