Simple PHP paging class

Summary

Handling large database records efficiently in web applications often requires pagination. A simple PHP Paging class is presented to address this, featuring static methods for managing record display. The prepare method modifies an SQL query to limit results and calculate total rows using SQL_CALC_FOUND_ROWS, returning the current page's dataset. Subsequently, the bar method generates navigation links, which can be customized via a template. Developers can integrate this by including the class and calling Paging::prepare() followed by Paging::bar().

Frequently in our web applications, we may have many records in the database to display. In order to imrpove loading speed and efficiency, we may need to display some records at a time, so we need to paginate the records. For example, if we have 1 million book records and when users want to view the book list, it's inefficient to display all the records on the same page, we may need to have some pagination to allow displaying a portion of the records such as 20 records per page. This is a simple PHP pagination class, here is the code.

paing.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['page']) ? $_GET['page'] : 1;
    $pageon = ($page - 1) * $pagesize;
    $sql = preg_replace('/select\s/i', '$0SQL_CALC_FOUND_ROWS ', $sql) . " limit $pageon, $pagesize";
    $rs = mysql_query($sql);
    $p = mysql_query('SELECT FOUND_ROWS()');
    list(self::$count) = mysql_fetch_row($p);
    self::$size = $pagesize;
    self::$page = $page;
    return $rs;
  }
  static function bar($tpl='') {
    if(!$tpl) $tpl = '<a href=?reset>First</a> <a href=?prve>Previous</a> <a href=?next>Next</a> <a href=?end>Last</a>';
    $count = ceil(self::$count / self::$size);
    $page = self::$page;
    unset($_GET['page']);
    $d = array(
      'reset' => 1,
      'prve' => $page > 1 ? $page - 1 : 1,
      'next' => $page < $count ? $page + 1 : $count,
      'end' => $count,
    );
    foreach($d as $k=>$v) {
      $_GET['page'] = $v;
      $tpl = str_replace($k, http_build_query($_GET), $tpl);
    }
    echo $tpl;
  }
}

Usually we may use following codes to retrieve the records

$sql =".....";
$rs = mysql_query($sql);

or

$rs = mysql_query("select ....");

With this class, you only need to

include 'paging.php';

$rs = paging::prepare($sql, $pagesize); //$pagesize --records to show per page

paging::bar();

 

Source : http://topic.csdn.net/u/20120828/18/176EF3DB-55EA-40CA-AAF4-6321F3B44E12.html

PHP CLASS PAGING

  RELATED

  COMMENTS

0

No comment for this article.