+ -
当前位置:首页 → 问答吧 → 从人员分组讲分页(适合初学者)

从人员分组讲分页(适合初学者)

时间:2008-09-27

来源:互联网

从人员分组讲分页
                                                 怀化php     汪建军

现在开始把教室的人分组,每一组三个,大家想一下应该怎么分?
是不是首先算一下总共有多少人?然后用总人数除以每组的人数存入变量$nums,,然后用ceil取不小于 $nums 的下一个整数(比如ceil(21.5)=22), 此整数就是我们要求的组数.(暂且用$rows_num表示).
好现在你们站成一列,我现在开始发口令了:请:第二组的人站出来,请第十组的人站出来.,请第十三组的人站出来请第一组人站出来,请最后一组的人站出来.哈哈大家觉得有点头晕了吧?
这里请个人给我讲一下,你是怎么把第十三组人和第十组人找出来的?
是不是只要找到第十三组排头的那个人,然后再往后数三个对不对?找第十组的人以此类推.
我们给这一列人从0开始依次编一个号码,
要找哪一组的人是不是很容易?
只要找到这一组开头的那个人的号码然后再往后数三个不就行了吗?
关键是怎样找到开头的那个人?
你不是告诉我的组号了吗?恩这是一个突破点
大家就从这里入手看看有办法求出这一组的开始位置不?
答案:       开始位置 =前一组的最后一个位置 + 1;
            这里又变成了求前一组的最后一个位置.怎么求?
           前一组的最后一个位置=前一组的组号*每一组要分的人数-1(为什么要减1?是因为我们的第一个的号码是从0开始的, 跟数据库表中的第一条记录的索引是0一样的道理).
          综合以上可得出:
          当前组的开始位置=前一组的组号*每一组要分的人数;
下载 (14.71 KB)
2008-9-27 23:16

大家看到的上面这张图片就是一个简单分页导航条,
当我点击第几页时,相当于上面的人员分组一样发了一道命令(如http://127.0.0.1/forum/index.php?page=1中的page=2就是我所说的命令,这样的命令通常附加在url中的'?'号后面):给我把属于第几页(组)的记录(人)显示出来,这时我们用php的$_GET['page']来接收此命令的值,如果?后的page=2则$_GET['page']的值为2,此命令的含义就是要我们把属于第一页的记录显示出来.
记录存在数据库中,所以得到数据库里去找,所以我们用$_GET['page']接到命令后就和数据库建立连接,然后发送一条sql命令到数据库中找属于第一页的所有记录.
数据库这时候会说,要我帮你找可以,你得告诉我从哪里开始找,要找多少条?
大家想想这不是跟我们前面所说的人员分组一样吗?
当前组的开始位置=前一组的组号*每一组要分的人数;
那我们把这里的组换成页不就得到档求当前页的开始位置的算法了吗?
当前页的开始位置=前一页的页号*每一组要显示的记录数;
即$start=($_GET['page']-1)*$size
下面开始构造sql语句:
  Select  *  from  表名  limit  $start, $size;
看到这里有的同学可能被limit这个sql关键字给搞蒙了.
Limit用于指定要返回多少条记录.其用法如下:
  Select  * from  表名  limit  10   (此语句只会返回查询中的前10条记录)
  Select  *  from   表名  limit  10,20(此语句将会从第11条记录起一共返回20条记录,与php数组一样,数据库中的索引从0开始,因此10是指第11条记录)
然后执行sql语句,

这到这里可能有些同学会问:老师那我们的第一页怎么求?第一页没有上一页啊?
那么大一个0不就是第一页的开始位置吗?
好我们开始写我们的开始位置程序了:

If(组号==1)
{
   开始位置=0;
}
Else
{
   开始位置=前一组的组号*第一组的个数-1
}

关键的算法部分我讲完了,(其它部分大同小异)一个简单的分页你应该能完成了.




作者: 高原   发布时间: 2008-09-27

作者: ws00377531   发布时间: 2008-09-28

学习学习

作者: 阿米   发布时间: 2008-09-28