当前位置:Gxlcms > PHP教程 > 简易PHP+MySQL分页类

简易PHP+MySQL分页类

时间:2021-07-01 10:21:17 帮助过:2人阅读

初学者一般都不太理解分页的原理,因此常常为分页发愁

  1. paging.php
  2. <?php
  3. class Paging {
  4. public static $count = 0;
  5. public static $size = 0;
  6. public static $page = 0;
  7. static function prepare($sql, $pagesize=10) {
  8. $page = isset($_GET['page']) ? $_GET['page'] : 1;
  9. $pageon = ($page - 1) * $pagesize;
  10. $sql = preg_replace('/select\s/i', '$0SQL_CALC_FOUND_ROWS ', $sql) . " limit $pageon, $pagesize";
  11. $rs = mysql_query($sql);
  12. $p = mysql_query('SELECT FOUND_ROWS()');
  13. list(self::$count) = mysql_fetch_row($p);
  14. self::$size = $pagesize;
  15. self::$page = $page;
  16. return $rs;
  17. }
  18. static function bar($tpl='') {
  19. if(!$tpl) $tpl = '<a href=?reset>首页</a> <a href=?prve>上一页</a> <a href=?next>下一页</a> <a href=?end>尾页</a>';
  20. $count = ceil(self::$count / self::$size);
  21. $page = self::$page;
  22. unset($_GET['page']);
  23. $d = array(
  24. 'reset' => 1,
  25. 'prve' => $page > 1 ? $page - 1 : 1,
  26. 'next' => $page < $count ? $page + 1 : $count,
  27. 'end' => $count,
  28. );
  29. foreach($d as $k=>$v) {
  30. $_GET['page'] = $v;
  31. $tpl = str_replace($k, http_build_query($_GET), $tpl);
  32. }
  33. echo $tpl;
  34. }
  35. }


通常你都有类似这样的语句
$sql =".....";
$rs = mysql_query($sql);

$rs = mysql_query("select ....");
你只需改作
include 'paging.php';
$rs = paging::prepare($sql, 每页行数);
在需要出现分页条的地方写入
paging::bar();
就可以了,非常简单!

换一种调用写法,可能感觉要好些

  1. paging.php
  2. class Paging {
  3. private static $_Instance;
  4. private function __clone(){}
  5. public static function getInstance() {
  6. if(empty(self::$_Instance)) self::$_Instance = new self();
  7. return self::$_Instance;
  8. }
  9. protected $count = 0;
  10. protected $size = 0;
  11. protected $page = 0;
  12. function prepare($sql, $pagesize=10) {
  13. $page = isset($_GET['page']) ? $_GET['page'] : 1;
  14. $pageon = ($page - 1) * $pagesize;
  15. $sql = preg_replace('/select\s/i', '$0SQL_CALC_FOUND_ROWS ', $sql) . " limit $pageon, $pagesize";
  16. $rs = mysql_query($sql);
  17. $p = mysql_query('SELECT FOUND_ROWS()');
  18. list($this->count) = mysql_fetch_row($p);
  19. $this->size = $pagesize;
  20. $this->page = $page;
  21. return $rs;
  22. }
  23. function bar($tpl='') {
  24. if(!$tpl) $tpl = '共{count}页 第{page}页 <a href=?{reset}>首页</a> <a href=?{prve}>上一页</a> <a href=?{next}>下一页</a> <a href=?{end}>尾页</a>';
  25. $count = ceil($this->count / $this->size);
  26. $page = $this->page;
  27. $d = array(
  28. '{reset}' => 1,
  29. '{prve}' => $page > 1 ? $page - 1 : 1,
  30. '{next}' => $page < $count ? $page + 1 : $count,
  31. '{end}' => $count,
  32. '{count}' => $count,
  33. '{page}' => $page,
  34. );
  35. foreach($d as $k=>&$v) {
  36. if(in_array($k, array('{reset}', '{prve}', '{next}', '{end}'))) {
  37. $_GET['page'] = $v;
  38. $v = http_build_query($_GET);
  39. }
  40. }
  41. echo strtr($tpl, $d);
  42. }
  43. }
  44. function mysql_paging_query($sql, $num=10) {
  45. return Paging::getInstance()->prepare($sql, $num);
  46. }
  47. function mysql_paging_bar($tpl='') {
  48. return Paging::getInstance()->bar($tpl);
  49. }
  1. include 'paging.php';
  2. $rs = mysql_paging_query($sql, 20);//替代 mysql_query
  3. mysql_paging_bar();//显示分页条

本文讲解了简易 PHP+MySQL 分页类 相关知识请关注Gxl网。

相关推荐:

php生成二维码的三种方法

PHP命令行

php基本语法

以上就是简易 PHP+MySQL 分页类的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行