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

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 303 ::
收藏到网摘: 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));
}
}
?>