class pager
Posted: Sat Feb 24, 2007 8:59 pm
This class pager is for large number of records from the database and you want to divide it for example 5 records per page. it is easy to navigate your page.
it is also easy to use.
Sample Usage:
it is also easy to use.
Code: Select all
class Pager
{
var $current_page;
var $record_per_page;
var $result;
var $total_record;
// counter
var $row = 0;
function pager($sql, $record_per_page, $current_page)
{
if ($current_page == 0 || $current_page == '')
{
$this->current_page = 1;
}
else
{
$this->current_page = $current_page;
}
$this->record_per_page = $record_per_page;
$this->result = mysql_query($sql);
$this->total_record = $this->_getTotalRecord();
$row_number = $this->_getRowNumber();
$this->_seekRow($row_number);
}
function _seekRow($row_number)
{
if ($row_number > $this->_getTotalPage() && $row_number <= 0)
{
return false;
}
//echo $row_number;
mysql_data_seek($this->result, $row_number - 1);
}
function _getTotalPage()
{
return ceil($this->total_record / (float) $this->record_per_page);
}
function _getTotalRecord()
{
$total_record = mysql_num_rows($this->result);
return $total_record;
}
function _getRowNumber()
{
//echo "(". $this->current_page . " * " . $this->record_per_page . ") - " . $this->record_per_page . " + 1<BR>";
return ($this->current_page * $this->record_per_page) - $this->record_per_page + 1;
}
function fetchObject()
{
$return = false;
if ($this->row < $this->record_per_page)
{
$this->row++;
$return = mysql_fetch_object($this->result);
}
return $return;
}
function getPageNav()
{
$total_page = $this->_getTotalPage();
$i = 1;
while($i <= $total_page)
{
$str .= " <a href='?page=$i'>$i</a> ";
$i++;
}
return $str;
}
}Code: Select all
$sql = "SELECT * FROM tbl_data";
// 2nd parameter is the number of record per page
$pager = new Pager($sql, 4, $_GET['page']);
while($row = $pager->fetchObject())
{
echo $row->firstname;
echo "<BR>";
}
echo $pager->getPageNav();