/**
*
* class.Paging.php -a class to page database results
*
* -- Sample: initializing query string
* $querystring="";
*
* if(@$_REQUEST["id_status"]!=""){
* $sqlWhere=" WHERE d.id_status=".@$_REQUEST["id_status"];
* $querystring="&id_status=".@$_REQUEST["id_status"];
* }
*
* @param: arrData is an MySQL results array that contains the data set
* @param: querystring is a string contains the query conditions
* @param: limit is the number of records to show in a page
*
* -- Create instance sample $p=new Paging($arrData,$querystring,25);
* @returns:
* -- The recordset $dataSet=$p->getDataSet(); is an array to be walked as usually
* -- The navigation links $p->printNav();
*
* @author freedelta http://freedelta.free.fr
* @version 1.0
*/
class Paging
{
var $data; var $dataSet; var $offset; var $limit; var $nRecords; var $nPages; var $queryStr; // Constructor: initializes all values function Paging($data,$queryStr,$limit)
{
$this->dataSet=array(); $this->data=$data: $this->nRecords=count($data); $this->limit=$limit; $this->nPages=ceil($this->nRecords/$this->limit); $this->queryStr=$queryStr; }
// Returns actual page number function getOffset()
{ if(@$_REQUEST["offset"]!=""){ $this->offset=@$_REQUEST["offset"]; }else{ $this->offset=0; }
return $this->offset; }
// Returns the actual page data only between start-end range function getDataSet()
{ $offset=$this->getOffset(); $start=($offset*$this->limit); $end=($start+$this->limit);
if($end > $this->nRecords) { $end = $this->nRecords; }
for($i=$start;$i < $end ;$i++){ foreach($this->data as $key => $arrValues){ if($i==$key){ $this->dataSet[]=$arrValues; } } } return $this->dataSet; }
// Are we on the first page?
function isFirstPage()
{ $offset=$this->getOffset();
if($offset==0){ return true; }else{ return false; } }
// Are we on the last page? function isLastPage()
{ $offset=$this->getOffset();
if($offset==($this->nPages-1)) {
return true; }else{
return false; } }
// Print navigation links function printNav()
{ $offset=$this->getOffset(); $strNav="";
// Writing "Previous" Page if(!$this->isFirstPage()) { $strNav.= "<a href="%3C/span%3E%3Cspan%20class=">.</a><a href="%3C/span%3E%3Cspan%20class=">$_SERVER</a><a href="%3C/span%3E%3Cspan%20class=">[</a><a href="%3C/span%3E%3Cspan%20class=">'PHP_SELF'</a><a href="%3C/span%3E%3Cspan%20class=">].</a><a href="%3C/span%3E%3Cspan%20class=">"?offset="</a><a href="%3C/span%3E%3Cspan%20class=">.(</a><a href="%3C/span%3E%3Cspan%20class=">$offset</a><a href="%3C/span%3E%3Cspan%20class=">-1</a><a href="%3C/span%3E%3Cspan%20class=">).</a><a href="%3C/span%3E%3Cspan%20class=">$this</a><a href="%3C/span%3E%3Cspan%20class=">-></a><a href="%3C/span%3E%3Cspan%20class=">queryStr.<a href="%3C/span%3E%3Cspan%20class=">"><< Précédent "; }
// Only if nPages > 1
if($this->nPages > 1) { for($i=0; $i< $this->nPages; $i++){ $style="";
if($i==$offset){ $style=" style='color:#CC0000;font-weight:bold;text-decoration:none' "; } $strNav.= ".$_SERVER['PHP_SELF']."?offset=".$i.$this->queryStr." ".$style.">".($i+1)." "; } }
// Writing "Next" Page if(!$this->isLastPage()){
$strNav.= ".$_SERVER['PHP_SELF']."?offset=".($offset+1).$this->queryStr.">Suivant >> ";
}
return $strNav; } }
?>
- Free Delta
- PHP code samples
- A Paging Class
A Paging Class
Have you ever had need of a simple paging class? A class to page database records.
Simple but efficient!
Date: April 23, 2010