Einfache PHP+MySQL-Paging-Klasse

jacklove
Freigeben: 2023-03-31 17:18:02
Original
2118 Leute haben es durchsucht

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

paging.php
<?php
class Paging {
  public static $count = 0;
  public static $size = 0;
  public static $page = 0;
  static function prepare($sql, $pagesize=10) {
    $page = isset($_GET[&#39;page&#39;]) ? $_GET[&#39;page&#39;] : 1;
    $pageon = ($page - 1) * $pagesize;
    $sql = preg_replace(&#39;/select\s/i&#39;, &#39;$0SQL_CALC_FOUND_ROWS &#39;, $sql) . " limit $pageon, $pagesize";
    $rs = mysql_query($sql);
    $p = mysql_query(&#39;SELECT FOUND_ROWS()&#39;);
    list(self::$count) = mysql_fetch_row($p);
    self::$size = $pagesize;
    self::$page = $page;
    return $rs;
  }
  static function bar($tpl=&#39;&#39;) {
    if(!$tpl) $tpl = &#39;<a href=?reset>首页</a> <a href=?prve>上一页</a> <a href=?next>下一页</a> <a href=?end>尾页</a>&#39;;
    $count = ceil(self::$count / self::$size);
    $page = self::$page;
    unset($_GET[&#39;page&#39;]);
    $d = array(
      &#39;reset&#39; => 1,
      &#39;prve&#39; => $page > 1 ? $page - 1 : 1,
      &#39;next&#39; => $page < $count ? $page + 1 : $count,
      &#39;end&#39; => $count,
    );
    foreach($d as $k=>$v) {
      $_GET[&#39;page&#39;] = $v;
      $tpl = str_replace($k, http_build_query($_GET), $tpl);
    }
    echo $tpl;
  }
}
Nach dem Login kopieren


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

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

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

paging.php
class Paging {
  private static $_Instance;
  private function __clone(){}
  public static function getInstance() {
    if(empty(self::$_Instance)) self::$_Instance = new self();
    return self::$_Instance;
  }
  protected $count = 0;
  protected $size = 0;
  protected $page = 0;
  function prepare($sql, $pagesize=10) {
    $page = isset($_GET[&#39;page&#39;]) ? $_GET[&#39;page&#39;] : 1;
    $pageon = ($page - 1) * $pagesize;
    $sql = preg_replace(&#39;/select\s/i&#39;, &#39;$0SQL_CALC_FOUND_ROWS &#39;, $sql) . " limit $pageon, $pagesize";
    $rs = mysql_query($sql);
    $p = mysql_query(&#39;SELECT FOUND_ROWS()&#39;);
    list($this->count) = mysql_fetch_row($p);
    $this->size = $pagesize;
    $this->page = $page;
    return $rs;
  }
  function bar($tpl=&#39;&#39;) {
    if(!$tpl) $tpl = &#39;共{count}页 第{page}页 <a href=?{reset}>首页</a> <a href=?{prve}>上一页</a> <a href=?{next}>下一页</a> <a href=?{end}>尾页</a>&#39;;
    $count = ceil($this->count / $this->size);
    $page = $this->page;
    $d = array(
      &#39;{reset}&#39; => 1,
      &#39;{prve}&#39; => $page > 1 ? $page - 1 : 1,
      &#39;{next}&#39; => $page < $count ? $page + 1 : $count,
      &#39;{end}&#39; => $count,
      &#39;{count}&#39; => $count,
      &#39;{page}&#39; => $page,
    );
    foreach($d as $k=>&$v) {
      if(in_array($k, array(&#39;{reset}&#39;, &#39;{prve}&#39;, &#39;{next}&#39;, &#39;{end}&#39;))) {
        $_GET[&#39;page&#39;] = $v;
        $v = http_build_query($_GET);
      }
    }
    echo strtr($tpl, $d);
  }
}
function mysql_paging_query($sql, $num=10) {
  return Paging::getInstance()->prepare($sql, $num);
}
function mysql_paging_bar($tpl=&#39;&#39;) {
  return Paging::getInstance()->bar($tpl);
}
Nach dem Login kopieren
include &#39;paging.php&#39;;
$rs = mysql_paging_query($sql, 20);//替代 mysql_query
mysql_paging_bar();//显示分页条
Nach dem Login kopieren

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

相关推荐:

php生成二维码的三种方法

PHP命令行

php基本语法

Das obige ist der detaillierte Inhalt vonEinfache PHP+MySQL-Paging-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage