• 卡农-四声部人声自拍 订阅本博客

    如何订阅博客?
  • Blog首页关于和平海底Blog存档联系自由勇网站地图友情链接

  • 我的分页方法分享

    王志勇 发表于 2009年02月25日 19:52

    分页是程序永恒的主题,2002年的时候我曾经见过一个留言板的分页程序,但是很难读懂。于是我大约在2005年的时候做了一个很大的改进,推算了另一种简单易读的方法,目前我所有的分页程序都是用此方法,这个算法从来没有出过错,无论是ASP、ASP.net、PHP、JSP,还是CGI,都是可以通用的。例如博客或者论坛程序中,以PHP为例,用此程序可以计算出总页数$p、当前页的起始位置$w1的值和结束位置$w2的值,程序如下:

    <?$pa=$_GET["page"]; //或者省略查询ID名$pa=$_SERVER['QUERY_STRING'];
    if ($pa) $pa=1;
    $w3=10;
    $w4=$auf/$w3;
    $w5=floor($w4);
    $p=$w5+1;
    if ($w5==$w4) $p=$w5;
    if (!$p) $p=1;
    $w1=($pa-1)*$w3+1;
    $w2=$w3+$w1-1;
    if ($w2>$auf) $w2=$auf;?>

    说明:

    1. 变量$pa代表当前位于第几页,如果网址中省略页数,则$pa=1;
    2. 变量$w3表示每页显示多少篇博客;
    3. 变量$auf表示博客的文章总数;
    4. 变量$p表示总页数;
    5. 变量$w1表示当前页的博客文章编号从$w1的值开始,$w2表示结束的文章编号;

    分页时,读取多篇博客文章的方法:

    for ($i=w1; $i<=w2; $i++){}

    这是比较简单易读的算法。在搜索程序中,或者打开多段数据库的时候,分页程序就会复杂很多,我曾经连续做了好几天的演算。

    8条评论:
    1   双喜哥 2009-02-25 22:52
    ,分页确实是程序永恒的主题,学习了。
    2   Goberl 2009-02-28 09:36
    这个思路很清晰的!这样子只适合ID为连续的啊?
    我一直是用SQL语句实现的分页,觉得效率好点。分页有点恼火哦,总是为了显示几个页码链接写很长的代码才能实现。
    select top 页大小 *
    from table1
    where id>
    (select max (id) from
    (select top ((页码-1)*页大小) id from table1 order by id) as T
    )
    order by id
    不过这个语句要是里面涉及到的表连接比较多就有点难写了,有时候调试这个SQL语句都得分析好半天。
    http://www.cnblogs.com/yzwdli/archive/2007/12/06/984743.html
    3   自由勇 2009-02-28 09:53
    Thanks,正文的方法对不连续的ID同样适用,比如另外列一个ID列表。
    4   Goberl 2009-02-28 14:25
    "另外列一个ID列表" 什么意思啊?是在数据库表中重新建立一列吗?
    5   自由勇 2009-02-28 16:35
    我编的程序里,有时候需要,有时候不需要。
    6   有德 2009-03-01 23:41
    太好了我又学了。不过对于编程来说我看,我还太早了
    7   自由勇 2009-05-02 10:16
    Trackback来自 《记笔记是编程的好习惯》

    在打开多段数据的时候,对于分页的处理会复杂很多。通常情况下,只打开一段数据库,分页程序比较容易实现,如这里。

    8   自由勇 2010-04-05 18:20
    Trackback来自 《日记:2010-04-05》

    这个分页程序可以简化为:
    <?//$pa为页数
    $w3=10;
    $p=ceil($auf/$w3);
    if (!$p) $p=1;
    $w1=($pa-1)*$w3+1;
    $w2=$pa*$w3;
    if ($w2>$auf) $w2=$auf;?>

    发表评论:
    名字: (*必填)
    博客: (可省,仅限于Blog地址)
    验证码: s48p58a68c78e88c98r108a118f128t138 (*必填)

    正文:

      记住信息? 是 否

    直接发送Trackback到此文章

    说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

     (点击申请)

    文章分类 Category:
    Blog的发展 Development
    为什么写博客 W-do we Blog
    互联网 Internet
    社会 Society
    教育 Education
    BBS社区研究 Community
    编程 Program
    友人 Younet
    QQ研究 QQ Research
    公告 Announcement

    最新的评论 Comments:
    » 毁谤别人的匿名者
    » 一家门户网站的博客管理
    » Entropay(欧贝
    » 又一位不可思议的扮音天
    » Google搜索结果在
    » 声卡无声硬件排除一例
    » 如何关闭ixwebho
    » 今天值得纪念的数字

    近期的主题:
    2012-01-26:多了解一些信息没有坏处
    日益低效的快递
    关于香港地铁吃东西事件的翻译
    2012-01-15:怜悯和爱
    惨不忍睹的网站空间(人为造成)
    QQ空间不能发表日志/说说/微博解决一例
    新年的钟声敲响了
    惠州之印象
    2011-10-20:最近4个不好的用户体验
    女童遭辗压无人帮助视频之感想
    网络才是真实的,现实一切都是幻象
    本博客的程序有发布的计划
    真正的神曲和一些圣乐分享和回顾
    Go Daddy的97.74 IP段又被大规模killed
    时间过得很快
    国外的域名查询也不安全
    祝我31周岁生日快乐
    有关国内近两年史无前例的清晰的UFO
    Android(安卓)平板电脑的使用体验
    2011-08-24:经验 & 近期动态
    2011-08-03 养花
    2011-06-18
    2011-06-02:同龄人年轻程度却相差10岁
    2011-05-28:随谈(浅谈)中英文输入速度
    Go Daddy空间切换系统更换IP时现在需要慎选4GH主机
    2011-05-18:随谈现实与理想(8)
    随谈:2011-05-18 贴吧与新闻评论的管理
    随谈:2011-05-13 心情很沉重很沉重
    随谈:2011-05-08 有良知的人会提升
    博客不应大量转载
    随谈:2011-04-28 通过网络调查真相当中的一个途径之一
    有关UFO与2012的谦卑交流与解答(1)
    cPanel的主机网页长时间500错误解决一例

    王志勇(自由勇):程序设计。
    公历1980-09-26 天秤座 32岁
    联系我:信息反馈、留言板。

    版权声明:本博客所有文章,均符合原创和创作共用的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

    与此相关的链接
    和平海底2 | Auciou | 自由勇专栏
    公益:UFO与真相研究交流区
    Gratitude | Time

    Blog存档 Archives

    2012年01月(N)
    2011年10月(8)
    2011年09月(4)
    2011年08月(2)
    2011年06月(2)
    2011年05月(6)
    2011年04月(10)
    2011年03月(16)
    2011年02月(16)
    2011年01月(15)
    2010年12月(12)
    2010年11月(9)
    2010年10月(3)
    2010年05月(4)
    2010年01月(7)
    2009年12月(10)
    2009年11月(4)
    2009年10月(8)
    2009年09月(24)
    2009年08月(20)
    2009年07月(6)
    2009年06月(11)
    2009年05月(16)
    2009年04月(20)
    2009年03月(29)
    2009年02月(18)
    2009年01月(15)
    2008年12月(17)
    2008年11月(10)
    2008年10月(13)
    2008年09月(8)
    2008年08月(4)
    2008年07月(5)
    2008年06月(9)
    2008年05月(12)
    2008年04月(15)
    2008年03月(26)
    2008年02月(22)
    2008年01月(29)
    2007年12月(30)
    2007年11月(28)
    2007年10月(30)
    2007年09月(8)
    2007年08月(8)
    2007年07月(21)
    2007年06月(23)
    2007年05月(31)
    2007年04月(34)
    2007年03月(29)
    2007年02月(18)
    2007年01月(41)
    2006年12月(23)
    2006年11月(10)
    2006年10月(10)
    2006年09月(29)
    2006年08月(33)
    2006年07月(17)
    2006年06月(30)
    2006年05月(4)
    2006年01月(3)
    2005年09月(4)


  • Copyright © 2006-2012 auiou.com All rights reserved.
    此Blog程序由王志勇编写