<?php
/**
* 简单分页类
*
*/
class Pagination
{
/**
* 分页显示样式一
*
* @param int $allItemTotal 所有记录数量
* @param int $currPageNum 当前页数量
* @param int $pageSize 每页需要显示记录的数量
* @param string $pageName 当前页面的地址, 如果为空则由系统自动获取,缺省为空
* @param array $getParamList 页面中需要传递的URL参数数组, 数组中key代表变量民,value代表变量值
* @return string 返回最后解析出分页HTML代码, 可以直接使用
* @example
* echo cps_split_page(100, 2, 10, 'page.php', array('uid'=>1001, 'gid'=>2008));
*
* 输出: [上一页] 1<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] >>10 [下一页]
*/
public static function split1($allItemTotal, $currPageNum, $pageSize, $pageName='', $getParamList = array()){
if ($allItemTotal == 0) return "";
//页面名称
if ($pageName==''){
$url = $_SERVER['PHP_SELF']."?page=";
} else {
$url = $pageName."?page=";
}
//参数
$urlParamStr = "";
foreach ($getParamList as $key => $val) {
$urlParamStr .= "&". $key ."=". $val;
}
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//第一页显示
$firstPage = ($currPageNum <= 1) ? $currPageNum ."</b><<" : "<a href=". $url ."1". $urlParamStr ." title='第1页'>1<<</a>";
//最后一页显示
$lastPage = ($currPageNum >= $pagesNum)? ">>". $currPageNum : "<a href=". $url . $pagesNum . $urlParamStr." title='第". $pagesNum ."页'>>>". $pagesNum ."</a>";
//上一页显示
$prePage = ($currPageNum <= 1) ? "上页" : "<a href=". $url . ($currPageNum-1) . $urlParamStr ." accesskey='p' title='上一页'>[上一页]</a>";
//下一页显示
$nextPage = ($currPageNum >= $pagesNum) ? "下页" : "<a href=". $url . ($currPageNum+1) . $urlParamStr ." title='下一页'>[下一页]</a>";
//按页显示
$listNums = "";
for ($i=($currPageNum-4); $i<($currPageNum+9); $i++) {
if ($i < 1 || $i > $pagesNum) continue;
if ($i == $currPageNum) $listNums.= "[".$i."] ";
else $listNums.= " <a href=". $url . $i . $urlParamStr ." title='第". $i ."页'>[". $i ."]</a> ";
}
$returnUrl = $prePage ." ". $firstPage ." ". $listNums ." ". $lastPage ." ". $nextPage;
return $returnUrl;
}
/**
* 分页显示样式二
*
* @param int $allItemTotal 所有记录数量
* @param int $currPageNum 当前页数量
* @param int $pageSize 每页需要显示记录的数量
* @param string $pageName 当前页面的地址, 如果为空则由系统自动获取,缺省为空
* @param array $getParamList 页面中需要传递的URL参数数组, 数组中key代表变量民,value代表变量值
* @return string 返回最后解析出分页HTML代码, 可以直接使用
* @example
* echo pageStyle1(50, 2, 10, 's.php', array('id'=>1, 'name'=>'user'));
*
* 输出:上一页 1 2 3 4 5 下一页 [2] [GO]
*/
public static function split2($allItemTotal, $currPageNum, $pageSize, $pageName='', $getParamList = array()){
if ($allItemTotal == 0) return "";
//页面名称
if ($pageName==''){
$url = $_SERVER['PHP_SELF']."?page=";
} else {
$url = $pageName."?page=";
}
//参数
$urlParamStr = "";
foreach ($getParamList as $key => $val) {
$urlParamStr .= "&". $key ."=". $val;
}
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//上一页显示
$prePage = ($currPageNum <= 1) ? "上一页" : "<a href=". $url . ($currPageNum-1) . $urlParamStr ." accesskey='p' title='上一页'>上一页</a>";
//下一页显示
$nextPage = ($currPageNum >= $pagesNum) ? "下一页" : "<a href=". $url . ($currPageNum+1) . $urlParamStr ." title='下一页'>下一页</a>";
//按页显示
$listNums = "";
for ($i=($currPageNum-4); $i<($currPageNum+9); $i++) {
if ($i < 1 || $i > $pagesNum) continue;
if ($i == $currPageNum) $listNums.= " ".$i." ";
else $listNums.= " <a href=". $url . $i . $urlParamStr ." title='第". $i ."页'>". $i ."</a> ";
}
$returnUrl = $prePage ." ". $listNums ." ". $nextPage;
$gotoForm = '  <input type="text" size="2" id="page_input" value="'. $currPageNum .'" /><input type="button" value="Go" onclick="location.href=\''. $url .'\'+document.getElementById(\'page_input\').value+\''. $urlParamStr .'\'" />';
return $returnUrl . $gotoForm;
}
/**
* 分页显示样式三
*
* @param int $allItemTotal 所有记录数量
* @param int $currPageNum 当前页数量
* @param int $pageSize 每页需要显示记录的数量
* @param string $pageName 当前页面的地址, 如果为空则由系统自动获取,缺省为空
* @param array $getParamList 页面中需要传递的URL参数数组, 数组中key代表变量民,value代表变量值
* @return string 返回最后解析出分页HTML代码, 可以直接使用
* @example
* echo pageStyle1(50, 2, 10, 's.php', array('id'=>1, 'name'=>'user'));
*
* 输出:上一页 下一页
*/
public static function split3($allItemTotal, $currPageNum, $pageSize, $pageName='', $getParamList = array()){
if ($allItemTotal == 0) return "";
//页面名称
if ($pageName==''){
$url = $_SERVER['PHP_SELF']."?page=";
} else {
$url = $pageName."?page=";
}
//参数
$urlParamStr = "";
foreach ($getParamList as $key => $val) {
$urlParamStr .= "&". $key ."=". $val;
}
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//上一页显示
$prePage = ($currPageNum <= 1) ? "上一页" : "<a href=". $url . ($currPageNum-1) . $urlParamStr ." accesskey='p' title='上一页'>上一页</a>";
//下一页显示
$nextPage = ($currPageNum >= $pagesNum) ? "下一页" : "<a href=". $url . ($currPageNum+1) . $urlParamStr ." title='下一页'>下一页</a>";
$returnUrl = $prePage ." ". $nextPage;
return $returnUrl;
}
/**
* 分页显示4
*
* @param int $allItemTotal 所有记录数量
* @param int $currPageNum 当前页数量
* @param int $pageSize 每页需要显示记录的数量
* @param string $pageName 当前页面的地址, 如果为空则由系统自动获取,缺省为空
* @param array $getParamList 页面中需要传递的URL参数数组, 数组中key代表变量民,value代表变量值
* @return string 返回最后解析出分页HTML代码, 可以直接使用
* @example
* echo pageStyle1(50, 2, 10, 's.php', array('id'=>1, 'name'=>'user'));
*
* 输出:第2/50页 上一页 1 2 3 4 5 下一页 跳到 [ ] 页 [GO]
*/
public static function split4($allItemTotal, $currPageNum, $pageSize, $pageName='', $getParamList = array()){
if ($allItemTotal == 0) return "";
//页面名称
if ($pageName==''){
$url = $_SERVER['PHP_SELF']."?page=";
$formUrl = $_SERVER['PHP_SELF']."?";
} else {
$url = $pageName."?page=";
$formUrl = $pageName."?";
}
//参数
$urlParamStr = "";
foreach ($getParamList as $key => $val) {
$urlParamStr .= "&". $key ."=". $val;
}
$formUrl .= $urlParamStr ."&page=";
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//上一页显示
$prePage = ($currPageNum <= 1) ? "上一页" : "<a href='". $url . ($currPageNum-1) . $urlParamStr ."' title='上一页' class='page_pre'>上一页</a>";
//下一页显示
$nextPage = ($currPageNum >= $pagesNum) ? "下一页" : "<a href='". $url . ($currPageNum+1) . $urlParamStr ."' title='下一页' class='page_next'>下一页</a>";
//按页显示
$listNums = "<select name='page_select' id='page_select'>\n";
for ($i=1; $i<=$pagesNum; $i++) {
if ($i < 1 || $i > $pagesNum) continue;
if ($i == $currPageNum) $listNums .= "<option selected=true>{$i}</option>\n";
else $listNums .= "<option>{$i}</option>\n";
}
$listNums .= "</select>\n";
$returnUrl = $prePage .' '. $nextPage . ' 共有'.$pagesNum.'页 跳到 '.$listNums ." 页 ";
$script =<<<EOF
<script type="text/javascript">
function _pageSelect(url){
var o = document.getElementById("page_select");
var v = o.options[o.selectedIndex].text;
window.location.replace(url+v);
}
</script>
EOF;
$gotoForm = ' <a href="javascript:_pageSelect(\''.$formUrl.'\');" onclick="//_pageSelect(\''.$formUrl.'\')">GO</a>';
return $script . $returnUrl . $gotoForm;
}
/**
* 分页显示5
*
* @param int $allItemTotal 所有记录数量
* @param int $currPageNum 当前页数量
* @param int $pageSize 每页需要显示记录的数量
* @param string $pageName 当前页面的地址, 如果为空则由系统自动获取,缺省为空
* @param array $getParamList 页面中需要传递的URL参数数组, 数组中key代表变量民,value代表变量值
* @return string 返回最后解析出分页HTML代码, 可以直接使用
* @example
* echo pageStyle1(50, 2, 10, 's.php', array('id'=>1, 'name'=>'user'));
*
* 输出:第2/50页 上一页 1 2 3 4 5 下一页 跳到 [ ] 页 [GO]
*/
public static function split5($allItemTotal, $currPageNum, $pageSize, $pageName='', $getParamList = array()){
if ($allItemTotal == 0) return "";
//页面名称
if ($pageName==''){
$url = $_SERVER['PHP_SELF']."?page=";
$formUrl = $_SERVER['PHP_SELF']."?";
} else {
$url = $pageName."?page=";
$formUrl = $pageName."?";
}
//参数
$urlParamStr = "";
foreach ($getParamList as $key => $val) {
$urlParamStr .= "&". $key ."=". $val;
}
$formUrl .= $urlParamStr ."&page=";
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//上一页显示
$prePage = ($currPageNum <= 1) ? "上一页" : "<a href='". $url . ($currPageNum-1) . $urlParamStr ."' title='上一页' class='page_pre'>上一页</a>";
//下一页显示
$nextPage = ($currPageNum >= $pagesNum) ? "下一页" : "<a href='". $url . ($currPageNum+1) . $urlParamStr ."' title='下一页' class='page_next'>下一页</a>";
//按页显示
$listNums = "";
for ($i=($currPageNum-1); $i<($currPageNum+4); $i++) {
if ($i < 1 || $i > $pagesNum) continue;
if ($i == $currPageNum) $listNums.= " <span class='page_cur'>".$i."</span>";
else $listNums.= " <a href='". $url . $i . $urlParamStr ."' title='第". $i ."页' class='page_other'>". $i ."</a>";
}
$returnUrl = '<span class="page_text">第'.$currPageNum.'/'.$pagesNum.'页</span> '. $prePage ." ". $listNums ." ". $nextPage;
$gotoForm = ' <span class="page_jump">跳到 <input type="text" class="page_enter" style="width:20px;" id="page_input" value="'. $currPageNum .'" /> 页 <input type="button" value="Go" class="page_submit" onclick="location.href=\''. $url .'\'+document.getElementById(\'page_input\').value+\''. $urlParamStr .'\'" />';
return $returnUrl . $gotoForm;
}
}
/*
例子:
$allItemTotal = 1000;
$currPageNum = isset($_GET['page']) ? $_GET['page'] : 1;
$pageSize = 5;
$pageName='';
$getParamList = array('classid'=>44);
$pagination = new Pagination();
echo $pagination->split1($allItemTotal, $currPageNum, $pageSize, $pageName, $getParamList)."<br />";
echo $pagination->split2($allItemTotal, $currPageNum, $pageSize, $pageName, $getParamList)."<br />";
echo $pagination->split3($allItemTotal, $currPageNum, $pageSize, $pageName, $getParamList)."<br />";
echo $pagination->split4($allItemTotal, $currPageNum, $pageSize, $pageName, $getParamList)."<br />";
echo $pagination->split5($allItemTotal, $currPageNum, $pageSize, $pageName, $getParamList)."<br />";
*/
?>
分享到:
相关推荐
本资源提供了一个简单易用的PHP分页类代码,适用于那些希望快速实现分页功能的开发者。下面将详细介绍这个分页类的工作原理和使用方法。 1. 分页类的基本概念 分页类是一种封装了分页逻辑的对象,它通常包含计算...
【知识点详解】 本文主要介绍了一个基于PHP实现的仿...这个PHP分页类代码结构清晰,易于理解和扩展,适合PHP初学者用来学习和实践。通过理解并运用此类,开发者可以快速在自己的PHP项目中实现高效且可定制的分页功能。
本知识点将详细介绍如何使用PHP实现一个分页类,并结合给定的文件"page.php"和"dome.php"来阐述其工作原理。 首先,我们来看"page.php",这个文件通常会包含一个分页类的定义。分页类的设计通常包括以下几个关键...
本实例代码提供了一种“万能”的PHP分页类,它可以帮助开发者轻松实现各种场景下的分页需求。 首先,让我们了解分页的基本原理。分页通常通过计算总页数、当前页数、每页显示的记录数来实现。当用户点击页码或使用...
以下是实现PHP分页的基本步骤: 1. **计算总页数**:你需要知道数据库中的总记录数,然后根据每页显示的数据量来计算总页数。可以使用SQL的`COUNT()`函数来获取总记录数,例如: ```sql $sql = "SELECT COUNT(*) ...
接下来我们对给定的PHP分页代码进行详细分析: 1. **引入数据库连接文件**: ```php include("conn.php");//数据库连接 ``` 2. **定义每页显示的记录数**: ```php $page_size=10;//每页显示的记录数 ``` 3...
PHP内容分页,新闻内容分页代码,分页代码
"php封装的page分页类" 是一个专门用于处理这种需求的类库,它简化了PHP分页的实现过程,通过封装核心逻辑,使开发者能够快速、高效地实现分页功能。 首先,我们要理解分页的基本原理。在数据库查询中,如果一次性...
标题中的"一个很好的分页类php分页类"暗示我们这里有一个专门用于实现分页功能的PHP类。这个类可能包含了一系列方法,用于计算总页数、生成页码链接以及处理用户请求的特定页面。 `page.class.php`可能是这个分页类...
本资源提供了一个简单且美观的PHP分页类,包含了完整的代码实现,包括数据库连接、PHP逻辑、CSS样式以及HTML结构。下面将详细解析这个分页类的工作原理及其各个部分。 首先,我们需要了解分页的基本概念。分页通常...
总的来说,这个“仿Google分页完整代码”提供了一个基本的PHP分页实现,可以帮助开发者快速实现类似Google那样简洁高效的分页功能。在实际应用中,开发者可能需要根据项目需求进行适当的修改和优化,例如增加缓存...
【PHP仿ZOL分页类代码详解】 ...ZOL(中关村在线)是一个知名的科技资讯网站,其分页设计简洁实用。本篇文章将详细解析一个...总的来说,这是一个基础且实用的PHP分页实现,可以帮助开发者快速搭建具备分页功能的网页。
`index.php`可能是主页面,它可能包含了上述的PHP分页代码。`page.php`可能是一个用于处理分页请求的单独文件,接收`page`参数并返回相应的数据。`sql.sql`文件则可能包含了一些示例的SQL查询语句。 总结来说,PHP...
本篇文章将深入解析一个PHP分页类的代码,并讲解其核心概念和用法。 1. **类定义与属性** 分页类(`page`)定义了一些公共属性,如`page_name`(页面标识),`next_page`和`pre_page`(下一页和上一页的表示),...
本篇文章将详细讲解一个强大的PHP分页类,并介绍如何使用它来实现高效的分页功能。 标题提及的"php分页类"是一个专为PHP设计的工具,用于帮助开发者轻松实现数据的分页显示。这个类通常包含一系列的函数,能够计算...
本资源"PHP MYSQL分页代码"提供了一个实用的解决方案,结合了PHP和MySQL两种技术来实现高效的数据分页功能。 首先,让我们深入了解PHP和MySQL在分页中的角色。PHP是一种广泛使用的服务器端脚本语言,常用于动态网站...