Discuz教程网

一个比较简单的PHP 分页分组类

[复制链接]
authicon dly 发表于 2011-9-1 14:23:12 | 显示全部楼层 |阅读模式
代码如下:

  1. <?php
  2. class mysqlPager{
  3. var $pagePerNum=5;//每页显示数据项数
  4. var $pagePerGroup=5;//每分页组中页数
  5. var $curPage=0;//当前页,Defualt 第一页
  6. var $totalPage=0;//总页数
  7. var $totalNum=0;//数据项总数
  8. var $curPageGroup=0;//当前分页组
  9. var $curPageUrl="";//当前用到分页的 URL
  10. var $customStyle="";//自定义风格
  11. var $pageQuerySql="";
  12. function mysqlPager(){//构造函数 PHP4
  13. }
  14. /**
  15. * 初始化所有变量
  16. */
  17. function InitAllVar($totalNum,$pagePerGroup,$curPageUrl,$curPage=1,$curPageGroup=1)
  18. {
  19. $this->totalNum=$totalNum;
  20. $this->pagePerGroup=$pagePerGroup;
  21. $this->curPageUrl=$curPageUrl;
  22. $this->curPage=$curPage;
  23. $this->curPageGroup=$curPageGroup;
  24. }
  25. /**
  26. * 设置当前页变量
  27. *
  28. * @param 数字 $curPage
  29. */
  30. function setCurPage($curPage)
  31. {
  32. $this->curPage=$curPage;
  33. }
  34. /**
  35. * 设置当前分页组变量
  36. *
  37. * @param mixed $curPageGroup
  38. */
  39. function setCurPageGroup($curPageGroup)
  40. {
  41. $this->curPageGroup=$curPageGroup;
  42. }
  43. /**
  44. * 设置当前用到分布类的URL
  45. * $curPageUrl string
  46. */
  47. function setCurPageUrl($curPageUrl)
  48. {
  49. $this->curPageUrl=$curPageUrl;
  50. }
  51. /**
  52. * 获取所有
  53. *
  54. * @param 数字 $totalNum
  55. * @param 数字 $curPage
  56. * @return float
  57. */
  58. function getTotalPage($totalNum,$curPage=0)
  59. {
  60. return $this->totalPage=ceil($totalNum/$this->pagePerNum);
  61. }
  62. /**
  63. * 设置用户自定义风格
  64. *
  65. * @param mixed $customStyle
  66. */
  67. function setCustomStyle($customStyle)
  68. {
  69. $this->customStyle=$customStyle;
  70. }
  71. /**
  72. * 设置用户自定义风格返回字符串
  73. *
  74. *
  75. * @param mixed $pagerString
  76. */
  77. function setCustomStyleString($pagerString)
  78. {
  79. return $styleString="<span class=".$customStyle.">".$pagerString."</span>";
  80. }
  81. /**
  82. * 输出导航页信息 可以不用参数,但是在使用前一定要设置相应的变量
  83. *
  84. * @param mixed $curPageGroup
  85. * @param mixed $curPage
  86. * @param mixed $curPageUrl
  87. */
  88. function showNavPager($curPageGroup=0,$curPage=0,$curPageUrl=0)
  89. {
  90. if($curPageGroup)
  91. {
  92. $this->curPageGroup=$curPageGroup;
  93. }
  94. if($curPage)
  95. {
  96. $this->curPage=$curPage;
  97. }
  98. if($curPageUrl)
  99. {
  100. $this->curPageUrl=$curPageUrl;
  101. }
  102. $rtnString="";
  103. //判断变量是否以经初始化
  104. if($this->curPageGroup && $this->curPageUrl && $this->totalNum && $this->curPage)
  105. {
  106. $this->totalPage=$this->getTotalPage($this->totalNum);
  107. if($this->curPage==1)
  108. $this->curPage=($this->curPageGroup-1)*$this->pagePerGroup+1;
  109. if($this->curPageGroup!=1)
  110. {
  111. $prePageGroup=$this->curPageGroup-1;
  112. $rtnString.="<a href=".$this->curPageUrl."?cpg=$prePageGroup >".$this->setCustomStyleString("<<")."</a> ";
  113. }
  114. for($i=1;$i<=$this->pagePerGroup;$i++)
  115. {
  116. $curPageNum=($this->curPageGroup-1)*$this->pagePerGroup+$i;
  117. if($curPageNum<=$this->totalPage){
  118. if($curPageNum==$this->curPage)
  119. {
  120. $rtnString.=" ".$this->setCustomStyleString($curPageNum);
  121. }else
  122. {
  123. $rtnString.=" <a href=$this->curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >";
  124. $rtnString.=$this->setCustomStyleString($curPageNum)."</a>";
  125. }
  126. }
  127. }
  128. if($this->curPageGroup<ceil($this->totalPage/$this->pagePerGroup)-1)
  129. {
  130. $nextPageGroup=$this->curPageGroup+1;
  131. $rtnString.=" <a href=$this->curPageUrl?cpg=$nextPageGroup >".$this->setCustomStyleString(">>")."</a>";
  132. }
  133. $this->pageQuerySql=" limit ".(($this->curPage-1)*$this->pagePerNum).",".$this->pagePerNum;

  134. }
  135. else
  136. {
  137. $rtnString="错误:变量未初始化!";
  138. }
  139. return $rtnString;
  140. }
  141. /**
  142. * 得到完整的查询MYSQL的Sql语句
  143. *
  144. * @param mixed $sql
  145. */
  146. function getQuerySqlStr($sql)
  147. {
  148. $allsql=$sql.$this->pageQuerySql;
  149. return $allsql;
  150. }
  151. /**
  152. * 设置每页有多少数据项
  153. *
  154. * @param INT $num
  155. */
  156. function setPagePerNum($num)
  157. {
  158. $this->pagePerNum=$num;
  159. }
  160. }
  161. ?>
复制代码


使用方法:
$curPage=$_GET['cp'];
$curPageGroup=$_GET['cpg']
if($curPage=="")
$curPage=1;
if($curPageGroup=="")
$curPageGroup=1;
//都是从1开始,之前要对传入的数据进行验证,防注入
//。。。
$pager=new MysqlPager();
$pager->initAllVar(...)
$pager->showNavPager();
//后面的SQL可以是任意的输出
$sql="select id form dbname ";
$querysql=$pager->getQuerySqlStr($sql)
//以后用$querysql 查询数据库就可以得到相应的结果集了






上一篇:PHP 抓取新浪读书频道的小说并生成txt电子书的代码
下一篇:PHP zip文件解压类代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 16:34

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表