设为首页 收藏本站
查看: 473|回复: 0

[经验分享] php分页类代码

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-26 11:53:19 | 显示全部楼层 |阅读模式
<?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 .= "&amp;". $key ."=". $val;
}
//计算总页数
$pagesNum = ceil($allItemTotal/$pageSize);
//第一页显示
$firstPage = ($currPageNum <= 1) ? $currPageNum ."</b>&lt;&lt;" : "<a href=". $url ."1". $urlParamStr ." title='第1页'>1&lt;&lt;</a>";
//最后一页显示
$lastPage = ($currPageNum >= $pagesNum)? "&gt;&gt;". $currPageNum : "<a href=". $url . $pagesNum . $urlParamStr." title='第". $pagesNum ."页'>&gt;&gt;". $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."]&nbsp;";
else $listNums.= "&nbsp;<a href=". $url . $i . $urlParamStr ." title='第". $i ."页'>[". $i ."]</a>&nbsp;";
}
$returnUrl = $prePage ."&nbsp;&nbsp;". $firstPage ." ". $listNums ."&nbsp;". $lastPage ."&nbsp;". $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 .= "&amp;". $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.= "&nbsp;".$i."&nbsp;";
else $listNums.= "&nbsp;<a href=". $url . $i . $urlParamStr ." title='第". $i ."页'>". $i ."</a>&nbsp;";
}
$returnUrl = $prePage ."&nbsp;&nbsp;". $listNums ."&nbsp;&nbsp;". $nextPage;
$gotoForm = '&nbsp&nbsp; <input type="text" size="2" id="page_input" value="'. $currPageNum .'" /><input type="button" value="Go"  />';
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 .= "&amp;". $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 ."&nbsp;&nbsp;". $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 .= "&amp;". $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 ."&nbsp;页 ";
$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.'\');" >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 .= "&amp;". $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.= "&nbsp;<span class='page_cur'>".$i."</span>";
else $listNums.= "&nbsp;<a href='". $url . $i . $urlParamStr ."' title='第". $i ."页' class='page_other'>". $i ."</a>";
}
$returnUrl = '<span class="page_text">第'.$currPageNum.'/'.$pagesNum.'页</span> '. $prePage ." ". $listNums ."&nbsp;". $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"  />';
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 />";
*/
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355594-1-1.html 上篇帖子: Windows系统怎样配置PHP环境 下篇帖子: 结合使用PHP和RSS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表