Here’s a PHP function “getPaginationHtml()” that builds an item-pagination type HTML DIV based on parameters only, i.e. no database recordset needed. Note the user of a second function that is used by the pagination function to build the URL parameters needed for the pagination links.
Visual example:
How to call the getPaginationHtml() function:
//show the pagination html in an ordered list based on the listed arguments
echo getPaginationHtml(array('numRecords' => 12, 'numRecordsToShow' => 3, 'currPage' => 1, 'showPages'=>true));
HTML Output:
Functions:
1) getPaginationHtml()
/*
* Get the pagination link HTML
* @return String
*/
function getPaginationHtml ($args = array()) {
$defaultArgs = array('numRecords'=> 1,
'numRecordsToShow'=>10,
'currPage'=>1,
'linkSeparator'=>'|',
'showPages'=>false,
'pageParamName'=>'page',
'firstClass'=>'pagination-first',
'prevClass'=>'pagination-first',
'nextClass'=>'pagination-next',
'lastClass'=>'pagination-last',
'pageClass'=>'pagination-page-link',
'separatorClass'=>'pagination-separator');
$userArgs = array_merge ($defaultArgs, $args);
foreach ($userArgs as $key=>$val) {
${$key} = $val;
}
//vars
$links = array();
$paramUrl = getParamUrl(array('exclude'=>'page')); //exclude the 'page' url param
$totalPages = ceil($numRecords/$numRecordsToShow);
//build 'num records' text
$from = (($currPage-1)*$numRecordsToShow) + 1;
$to = min(($from+$numRecordsToShow-1), $numRecords);
$links[] = "
$from–$to of $numRecords records
";
//show page numbers
if ($showPages) {
for ($i=1; $i< = $totalPages; $i++ ) {
($i == $currPage) ? $selected = "$pageClass-selected" : $selected = '';
$links[] = "
$i";
}
}
//build 'first' link
$links[] = "
First
";
//build 'prev' link
$prev = max($currPage-1, 1);
$links[] = "
< Prev
";
//build 'next' link
$next = min($currPage+1,$totalPages);
$links[] = "
Next >
";
//build 'last' link
$links[] = "
Last
";
return implode("
$linkSeparator
", $links);
}
2) getParamUrl()
/*
* Build the URL based on the current GET/POST parameters
* excluding any unwanted parameters (comma separated if more than one).
* i.e.: array('exclude'=>'page,sortname,sortorder');
* @return String
*/
function getParamUrl ($args = array()) {
$defaultArgs = array('exclude'=> false);
$userArgs = array_merge ($defaultArgs, $args);
foreach ($userArgs as $key=>$val) {
${$key} = $val;
}
//check if GET or POST
(isset($_GET)) ? $_params = $_GET : $_params = $_POST;
//build the url string
$paramUrl = array();
foreach ($_params as $key=>$value) {
$toExclude = explode(',', $exclude);
if ($toExclude && !in_array($key, $toExclude)) {
array_push($paramUrl, "$key=$value");
}
}
return '?'.implode('&',$paramUrl);
}
VN:F [1.9.3_1094]
Rating: 0.0/5 (0 votes cast)