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