您好,欢迎来到微智科技网。
搜索
您的当前位置:首页全栈开发培训之分页原理+分页代码+分页类制作

全栈开发培训之分页原理+分页代码+分页类制作

来源:微智科技网
分页显示一种非常常见的浏览和显示量数据的方法,属于web编程中最常处理的之一。对于web编程的老手来说,编写这种代码实在和呼吸一样自然,但对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解。

一、分页原理:

所谓分页显示,也就将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)? 当前第几页($CurrentPageID)?

现在只要再给一个结果集,就可以显示某段特定的结果出来。

至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。

以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:

select*fromtablelimitoffset,rows。看看一组sql语句,尝试一下发现其中的规率。 前10条记录:select*fromtablelimit0,10

第11至20条记录:select*fromtablelimit10,10 第21至30条记录:select*fromtablelimit20,10 ……

这一组sql语句其实就当$PageSize=10的时候取表内每一页数据的sql语句,们可以总结出这样一个模板:

select*fromtablelimit($CurrentPageID-1)*$PageSize,$PageSize

拿这个模板代入对应的值和上边那一组sql语句对照一下看看不那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。 二、分页代码说明:五个步骤

代码中有充分解释,可复制到自己记事本中直接使用 1. 2.

3. 4. 雇员信息列表 5. 6. 7. //显示所有emp表的信息 8. //1.连接数据库

9. $conn=mysql_connect('localhost','root','1234abcd')ordie('连接数据库

'.mysql_error()); 10. //2.选择数据库

11. mysql_select_db('empManage'); 12. //3.选择字符集

1

13. mysql_query('setnamesutf8'); 14. //4.sql语句并得到结果进行处理

15. //4.1分页[分页要发出两个sql语句,一个获得$rowCount,一个通过sql的

limit获得分页结果。所以们会获得两个结果集,在命名的时候要记得区分。 16. 分页(四个值两个sql语句)。] 17. $pageSize=3;//每页显示多少条记录 18. $rowCount=0;//共有多少条记录 19. $pageNow=1;//希望显示第几页

20. $pageCount=0;//一共有多少页[分页共有这个四个指标,缺一不可。由于

$rowCount可以从器获得的,所以可以给予初始值为0;

21. $pageNow希望显示第几页,这里设置为0;$pageSize每页显示多少条记录,

这里根据需求提前制定。

22. $pageCount=ceil($rowCount/$pageSize),既然$rowCount可以初始值为0,

那么$pageCount当然也就可以设置为0.四个指标,两个0,一个1,另一个为需求。]

23. //4.15根据分页来$pageNow的值 24. if(!empty($_GET['pageNow'])){ 25. $pageNow=$_GET['pageNow']; 26. }[根据分页来$pageNow的值。] 27. $sql='selectcount(id)fromemp'; 28. $res1=mysql_query($sql); 29. //4.11取出行数

30. if($row=mysql_fetch_row($res1)){ 31. $rowCount=$row[0];

32. }//[取得$rowCount,,进了们就知道了$pageCount这两个指标了。] 33. //4.12计算共有多少页

34. $pageCount=ceil($rowCount/$pageSize); 35. $pageStart=($pageNow-1)*$pageSize; 36. //4.13带有分页的sql结果

37. $sql=\"select*fromemplimit$pageStart,$pageSize\";//[根据$sql语句的limit后

面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。] 38. $res2=mysql_query($sql,$conn)ordie('无法获取结果集'.mysql_error());

39. echo'';[echo\"='red'width='600px'>\";]

40. \"idnamegradeemailsalaryth>删除用户用户\";while($row=mysql_fetch_assoc($res2)){

2

41. echo\"{$row['id']}{$row['name']}{$row['grade']}<

/td>{$row['email']}{$row['salary']}删除用户用户\";} 42. echo'';

43. //4.14打印出页码的超

44. for($i=1;$i<=$pageCount;$i++){

45. echo\"$i\";//[打印出页码的超] 46. }

47. //5.释放资源,关闭连接 48. mysql_free_result($res2); 49. mysql_close($conn); 50. ?>

51. 三、简单分页类

现在公布一个简单分类。只要理解了这个类的原理和步骤,其他复杂类也就能够触类旁通了。不废话,直接上源码,可以直接用在你的中。 数据库操作类代码:mysqli.func.php 1. 2. //数据库连接常量

3. define('DB_HOST','localhost'); 4. define('DB_USER','root'); 5. define('DB_PWD','');

6. define('DB_NAME','guest'); 7. //连接数据库 8. functionconn() 9. {

10. $conn=mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME); 11. mysqli_query($conn,\"setnamesutf8\"); 12. return$conn; 13. }

14. //获得结果集

15. functiondoresult($sql){

16. $result=mysqli_query(conn(),$sql); 17. return$result; 18. }

19. //结果集转为对象集合 20. functiondolists($result){

21. returnmysqli_fetch_array($result,MYSQL_ASSOC); 22. }

23. functiontotalnums($sql){

3

24. $result=mysqli_query(conn(),$sql); 25. return$result->num_rows; 26. }

27. //关闭数据库 28. functionclosedb() 29. {

30. if(!mysqli_close()){ 31. exit('关闭异常'); 32. } 33. } 34. ?>

分页实现代码: 1. 2. include'mysqli.func.php'; 3. //总记录数

4. $sql=\"SELECTdg_idFROMtb_user\"; 5. $totalnums=totalnums($sql); 6. //每页显示条数 7. $fnum=8; 8. //翻页数

9. $pagenum=ceil($totalnums/$fnum); 10. //页数常量

11. @$tmp=$_GET['page']; 12. //防止恶意翻页 13. if($tmp>$pagenum)

14. echo\"\"; 15. //计算分页起始值 16. if($tmp==\"\"){ 17. $num=0; 18. }else{

19. $num=($tmp-1)*$fnum; 20. }

21. //查询语句

22. $sql=\"SELECTdg_id,dg_usernameFROMtb_userORDERBYdg_idDESCLIMIT\".$nu

m.\

23. $result=doresult($sql); 24. //遍历输出

25. while(!!$rows=dolists($result)){

26. echo$rows['dg_id'].\"\".$rows['dg_username'].\"
\"; 27. }

4

28. 29. 30. 31. 32. //翻页

for($i=0;$i<$pagenum;$i++){

echo\"\".($i+1).\"\"; } ?>

5

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务