当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP代码实例:常用的PHP分页类

PHP
利用客户端缓存对网站进行优化的原理分析
php生成随机数或者字符串的代码
php include,include_once,require,require_once
php 特殊字符处理函数
php让图片可以下载的代码
网友原创的PHP模板类代码
wiki-shan写的php在线加密的解密程序
php chr() ord()中文截取乱码问题解决方法
php+AJAX传送中文会导致乱码的问题的解决方法
php面向对象的方法重载两种版本比较
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
php递归列出所有文件和目录的代码
php获取某个目录大小的代码
php目录管理函数小结
Zend Guard一些常见问题解答
fleaphp下不确定的多条件查询的巧妙解决方法
PHP下10件你也许并不了解的事情
PHP常用函数小技巧
php5 pdo新改动加载注意事项
php5新改动之短标记启用方法

PHP代码实例:常用的PHP分页类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 295 ::
收藏到网摘: n/a

工作经常会用到的一个分页类..记录一下.

/**
Example:
$page = (isset($this->params[named][page])) ? $this->params[named][page] : 1;
// 导入分页类
App::import(Vendor, page_class);
// 获取公告总数
$total = $this->Bulletin->getBulletinTotal();
$perpage = ITEMPREPAGE;
$offset = $perpage * ($page - 1);
$pagebar = new Pagebar($total, $page, $offset, $perpage);
$pagenav = $pagebar->construct_page_nav($total, $page, SYSTEMURL . /bulletins/index, null, null);
*/
perpage = $perpage;
$numpages = ceil($numresults / $this->perpage);
if ($numpages == 0)
{
$numpages = 1;
}
if ($page < 1)
{
$page = 1;
}
else if ($page > $numpages)
{
$page = $numpages;
}
$limitlower = ($page - 1) * $this->perpage;
$limitupper = ($page) * $this->perpage;
if ($limitupper > $numresults)
{
$limitupper = $numresults;
if ($limitlower > $numresults)
{
$limitlower = ($numresults - $this->perpage) - 1;
}
}
if ($limitlower < 0)
{
$limitlower = 0;
}
}
/**
* Returns the HTML for multi-page navigation
*
* @param	integer	Total number of items found
* @param	integer	Page number being displayed
* @param	string	Base address for links eg: q.php?t=99{&page=4}
* @param	string	Ending portion of address for links
*
* @return	string	Page navigation HTML
*/
function construct_page_nav($results, $pagenumber, $address, $address2 = , $option = array())
{
$perpage = $this->perpage;
$show = array();
$curpage = 0;
$pagenav = ;
$firstlink = ;
$prevlink = ;
$lastlink = ;
$nextlink = ;
if ($results <= $perpage)
{
$show[pagenav] = false;
return ;
}
$show[pagenav] = true;
$total = number_format($results);
$totalpages = ceil($results / $perpage);
$show[prev] = false;
$show[next] = false;
$show[first] = false;
$show[last] = false;
if ($pagenumber > 1)
{
$prevpage = $pagenumber - 1;
$prevnumbers = $this->fetch_start_end_total_array($prevpage, $perpage, $results);
$show[prev] = true;
}
if ($pagenumber < $totalpages)
{
$nextpage = $pagenumber + 1;
$nextnumbers = $this->fetch_start_end_total_array($nextpage, $perpage, $results);
$show[next] = true;
}
// create array of possible relative links that we might have (eg. +10, +20, +50, etc.)
$pagenavsarr = array(10, 50, 100, 500, 1000);
$pagenavpages = 5;
while ($curpage++ < $totalpages)
{
if (abs($curpage - $pagenumber) >= $pagenavpages AND $pagenavpages != 0)
{
if ($curpage == 1)
{
$firstnumbers = $this->fetch_start_end_total_array(1, $perpage, $results);
$show[first] = true;
}
if ($curpage == $totalpages)
{
$lastnumbers = $this->fetch_start_end_total_array($totalpages, $perpage, $results);
$show[last] = true;
}
// generate relative links (eg. +10,etc).
if (in_array(abs($curpage - $pagenumber), $pagenavsarr) AND $curpage != 1 AND $curpage != $totalpages)
{
$pagenumbers = $this->fetch_start_end_total_array($curpage, $perpage, $results);
$relpage = $curpage - $pagenumber;
if ($relpage > 0)
{
$relpage = + . $relpage;
}
$pagenav .= " $curpage ";
}
}
else
{
if ($curpage == $pagenumber)
{
$numbers = $this->fetch_start_end_total_array($curpage, $perpage, $results);
$pagenav .= "	 $curpage ";
}
else
{
$pagenumbers = $this->fetch_start_end_total_array($curpage, $perpage, $results);
$pagenav .= " $curpage ";
}
}
}
$pagenav = "

".(($show[prev]) ? ("上一页") : ("上一页"))."
$pagenav
".(($show[next]) ? ("下一页") : ("下一页"))."
第 $pagenumber / $totalpages 页,共 $total条记录";
return $pagenav;
}
/**
* Returns an array so you can print Showing results $arr[first] to $arr[last] of $totalresults
*
* @param	integer	Current page number
* @param	integer	Results to show per-page
* @param	integer	Total results found
*
* @return	array	In the format of - array(first => x, last => y)
*/
function fetch_start_end_total_array($pagenumber, $perpage, $total)
{
$first = $perpage * ($pagenumber - 1);
$last = $first + $perpage;
if ($last > $total)
{
$last = $total;
}
$first++;
return array(first => number_format($first), last => number_format($last));
}
}
?>