PHP实现仿Google分页效果的分页函数
本文实例讲述了PHP实现仿Google分页效果的分页函数。分享给大家供大家参考。具体如下:
/**
* 分页函数
* @param int $total 总页数
* @param int $pagesize 每页几条
* @param string $pkey url中页面变量名称
* @param string $url 基础url,其中的{page}会被替换为页码
* 依赖函数 request_uri httpInt
*/
function page($total,$pagesize=10,$pkey='p',$url=null){
$a_num=10;
$first=' 首页 ';
$last=' 尾页 ';
$pre=' 上页 ';
$next=' 下页 ';
$a_num=$a_num%2==0?$a_num+1:$a_num;
if(!$url){
$url=preg_replace("/&?{$pkey}=[^&]{0,}/", '',request_uri());
$url=strpos($url, '?')===FALSE?$url.'?'.$pkey.'={page}':$url.'&'.$pkey.'={page}';
}
$pages=ceil($total/$pagesize);
$curpage=httpInt($pkey,false,1);
$curpage=$curpage>$pages||$curpage<=0?1:$curpage;//当前页超范围置为1
$body='';$prefix='';$subfix='';
$start=$curpage-($a_num-1)/2;//开始页
$end=$curpage+($a_num-1)/2; //结束页
$start=$start<=0?1:$start; //开始页超范围修正
$end=$end>$pages?$pages:$end;//结束页超范围修正
if($pages>=$a_num){//总页数大于显示页数
if($curpage<=($a_num-1)/2){$end=$a_num;}//当前页在左半边补右边
if($end-$curpage<=($a_num-1)/2){$start-=5-($end-$curpage);}//当前页在右半边补左边
}
for($i=$start;$i<=$end;$i++){
if($i==$curpage){
$body.='<b>'.$i.'</b>';
}else{
$body.='<a href="'.str_replace('{page}',$i,$url).'"> '.$i.' </a>';
}
}
$prefix=($curpage==1?'':'<a href="'.str_replace('{page}',1,$url).'">'.$first.'</a><a href="'.str_replace('{page}',$curpage-1,$url).'">'.$pre.'</a>');
$subfix=($curpage==$pages?'':'<a href="'.str_replace('{page}',$curpage+1,$url).'">'.$next.'</a><a href="'.str_replace('{page}',$pages,$url).'">'.$last.'</a>');
$info=" 第{$curpage}/{$pages}页 ";
$go='<script>function ekup(){if(event.keyCode==13){clkyup();}}function clkyup(){if(!/\d+/.test(document.getElementById(\'gsd09fhas9d\').value)){alert(\'请输入页码!\');return;};location=\''.$url.'\'.replace(/\\{page\\}/,document.getElementById(\'gsd09fhas9d\').value);}</script><input onkeyup="ekup()" type="text" id="gsd09fhas9d" style="width:40px;vertical-align:text-baseline;padding:0 2px;font-size:10px;border:1px solid gray;"/> <span id="gsd09fhas9daa" onclick="clkyup();" style="cursor:pointer;text-decoration:underline;">转到</span>';
return $prefix.$body.$subfix.$info.$go;
}
/**
* 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
*/
function request_uri()
{
if (isset($_SERVER['REQUEST_URI']))
{
$uri = $_SERVER['REQUEST_URI'];
}
else
{
if (isset($_SERVER['argv']))
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
}
else
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
}
}
return $uri;
}
/**
* 获取HTTP传递的整数
* @param string $key 参数名称
* @param bool $ispost 采取POST传递方式,默认为真http://blog.ddian.cn
* @return 整数,非法时默认为 $default
*/
function httpInt($key, $ispost=true,$default=0) {
if ($ispost) {
if (isset($_POST[$key])) {
if (empty($_POST[$key])) {
return $default;
} else {
$val = trim($_POST[$key]);
if (preg_match("/^\-?\d+$/", $val)) return intval($val);
else return $default;
}
} else {
return $default;
}
} else {
if (isset($_GET[$key])) {
if (empty($_GET[$key])) {
return $default;
} else {
$val = trim($_GET[$key]);
if (preg_match("/^\-?\d+$/", $val)) {
return intval($val);
} else {
return $default;
}
}
} else {
return $default;
}
}
}
希望本文所述对大家的php程序设计有所帮助。
PHP实现仿Google分页效果的分页函数的更多相关文章
- AJAX实现仿Google Suggest效果
修复了一些细节代码(支持持续按键事件) *项目名称:AJAX实现类Google Suggest效果*作者:草履虫(也就是蓝色的ecma)*联系:caolvchong@gmail.com*时间:2007 ...
- PHP通用分页类page.php[仿google分页]
<?php /** ** 通用php分页类.(仿Google样式) ** 只需提供记录总数与每页显示数两个参数.(已附详细使用说明..) ** 无需指定URL,链接由程序生成.方便用于检索结果分 ...
- 基于vue2.0实现仿百度前端分页效果(二)
前言 上篇文章中,已经使用vue实现前端分页效果,这篇文章我们单独将分页抽离出来实现一个分页组件 先看实现效果图 代码实现 按照惯例,我们在冻手实现的时候还是先想一想vue实现组件的思路 1.需要提前 ...
- 基于vue2.0实现仿百度前端分页效果(一)
前言 最近在接手一个后台管理项目的时候,由于之前是使用jquery+bootstrap做的,后端使用php yii框架,前后端耦合在一起,所以接手过来之后通过vue进行改造,但依然继续使用的boots ...
- ViewPager+GridView实现首页导航栏布局分页效果
如图是效果图用ViewPager+GridView实现首页导航栏布局分页效果来实现的效果 Demo下载地址:http://download.csdn.net/detail/qq_29774291/96 ...
- salesforce 零基础学习(四十九)自定义列表分页之使用Pagination实现分页效果 ※※※
上篇内容为Pagination基类的封装,此篇接上篇内容描述如何调用Pagination基类. 首先先创建一个sObject,起名Company info,此object字段信息如下: 为了国际化考虑 ...
- 原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)
虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang=&qu ...
- 原生JS实现分页效果1.0
不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...
- 分享5种风格的 jQuery 分页效果【附代码】
jPaginate 是一款非常精致的分页插件,提供了五种不同风格的分页效果,支持鼠标悬停翻页,快速分页功能.这款插件还提供了丰富的配置选项,你可以根据需要进行设置. 效果演示 源码下载 各个 ...
随机推荐
- java dom4j解析xml实例(2)
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
- Android开源项目收集
软件名:gaeproxy软件作用:Android手机配置GoAgentFQ.项目地址:https://github.com/madeye/gaeproxy.git 软件名:ProxyDroid软件作用 ...
- eclipse中创建NDK和JNI开发环境最简单配置方法
一.使用环境 1.windows64位操作系统 2.ADT为adt-bundle-windows-x86_64-20130917 3.NDK为android-ndk-r9b 二.配置生成头文件.h ⒈ ...
- (转)MATLAB入门教程
MATLAB入门教程 1.MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...
- (poj 3660) Cow Contest (floyd算法+传递闭包)
题目链接:http://poj.org/problem?id=3660 Description N ( ≤ N ≤ ) cows, conveniently numbered ..N, are par ...
- IDEA github的应用
1.下载并安装一个git 一直点下一步就可以 2.去github官网注册一个账号 https://github.com/ 2.1点击Sign up 进入注册页面 2.2填写注册信息,点击Create ...
- ural2014 Zhenya moves from parents
Zhenya moves from parents Time limit: 1.0 secondMemory limit: 64 MB Zhenya moved from his parents’ h ...
- python第三方扩展库及不同类型的测试需安装相对应的第三方库总结
如何安装第三方库 1.通过python的第三方仓库pypi中查找想要的第三方库 pypi地址:https://pypi.python.org/pypi pip是一个安装和管理Python包的工具,通过 ...
- for和getElementByTagName配合
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hbuilder 手机app开发系列(一)
最佳答案好水啊,实在看不过眼,首先apicloud是一个框架,hbuidler是ide工具,两者没什么可比性.我来推荐一个国外免费开源的项目吧,Ionic framework,我之所以推荐它是因为它支 ...