Version: 1.0
Type: Class
Category: Databases
License: GNU General Public License
Description: A simple class to page a MySQL recordset.
<?
/*****************************************************************************************
Project: clsPaging();
Version: 1.0
Date: december 30th, 2003
Author: Tim Johannessen aka zubfatal
E-mail: admin@stillborn.dk
Description:
Simple class to page a MySQL recordset.
Usage:
$cnmysql = mysql_connect("mysql_server", "mysql_user", "mysql_pass");
mysql_select_db("mysql_database", $cnmysql);
$objPage = new clsPaging(); // initialize the class.
$objPage->objMySQL = $cnmysql; // set the mysql resource.
$objPage->pagingLimit = 25; // set the paging limit - default is 25.
$objPage->strNext = "Next [num]"; // [num] is replaced with the paginglimit.
$objPage->strPrev = "Prev [num]"; // [num] is replaced with the paginglimit.
$objPage->strLast = "Last [num]"; // [num] is replaced with the last number of records.
$objPage->query("select * from sometable"); // returns an array with the records
Return values:
function: query(string sqlquery) - returns an array with the records.
function: getmicrotime() - used to determine how long it takes to page the recordset.
int: offset - returns the current offset
int: numRows - returns the number of records, before paging is done.
float: parsetime - returns the time spend paging the recordset.
int: currentPage - returns the current page number.
int: numPages - returns the number of pages.
int: recordsLeft - returns the number of records left from the current offset.
*****************************************************************************************/
class clsPaging {
var $objMySQL = "";
var $pagingLimit = 25;
var $strNext = "Next [num] »";
var $strPrev = "« Prev [num]";
var $strLast = "Last [num] »";
function query($strSQL = "") {
if (!$this->objMySQL) { die("ERROR: not a valid MySQL resource?"); }
if (empty($strSQL)) { die("ERROR: no SQL query?"); }
$time_start = $this->getmicrotime();
$this->numResults = mysql_num_rows(mysql_query($strSQL)) or die("MySQL Error: ". mysql_errno() ."\n". mysql_error());
$this->numPages = ceil($this->numResults / $this->pagingLimit);
if ($numRows % $this->pagingLimit) { $this->numPages++; }
if (($this->currentPage > $this->numPages) || (!is_numeric($this->currentPage))) { $this->currentPage = 1; }
$this->recordsLeft = intval($this->numResults - ($this->currentPage * $this->pagingLimit));
$this->offset = intval($this->currentPage * $this->pagingLimit);
$this->offset = intval($this->offset - $this->pagingLimit);
$this->strPrev = str_replace("[num]", $this->pagingLimit, $this->strPrev);
$this->strNext = str_replace("[num]", $this->pagingLimit, $this->strNext);
$this->strLast = str_replace("[num]", $this->recordsLeft, $this->strLast);
$strSQL .= " limit ". $this->offset .", ". $this->pagingLimit;
$objResults = mysql_query($strSQL);
$arrResults = array();
while ($resultRow = mysql_fetch_array($objResults, MYSQL_ASSOC)) {
$arrResults[] = $resultRow;
}
$this->parsetime = $this->getmicrotime() - $time_start;
return $arrResults;
mysql_free_result($objResults);
}
function getmicrotime() {
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
}
?>