php 自定义 分页函数
<?php
/**
* 分页函数
* @param type $num 数据总数
* @param type $perpage 每页总数
* @param type $curpage 当前分页
* @param type $mpurl 路径
* @param type $maxpages 最大分页
* @param type $page
* @param type $autogoto
* @param type $simple
* @return type
*/
function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE) {
$ajaxtarget = '';
$shownum = $showkbd = FALSE;
$prev_page = '上一页';
$next_page = '下一页'; //URL分析:
$mpurl = empty($mpurl) ? $_SERVER['REQUEST_URI'] : $mpurl;
$parse_url = parse_url($mpurl); //单独取出URL的查询字串
if ($parse_url["path"] && $parse_url["query"]) {
$url = $url_query = $parse_url["query"];
} else {
$url = $url_query = $parse_url["path"];
} if ($url_query) {
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
$url_query = preg_replace("/((^|&)page=$curpage|page\/$curpage)/i", '', $url_query); //兼容path_info 模式
//将处理后的URL的查询字串替换原来的URL的查询字串:
$mpurl = str_replace($url, $url_query, $mpurl);
} $a_name = '';
if (strpos($mpurl, '#') !== FALSE) {
$a_strs = explode('#', $mpurl);
$mpurl = $a_strs[0];
$a_name = '#' . $a_strs[1];
} $mpurl .= strpos($mpurl, '?') !== FALSE ? '&' : '?'; $realpages = 1;
$page -= strlen($curpage) - 1;
if ($page <= 0) {
$page = 1;
}
if ($num > $perpage) { $offset = floor($page * 0.5); $realpages = @ceil($num / $perpage);
$pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; if ($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
if ($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if ($to - $from < $page) {
$to = $page;
}
} elseif ($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
} $multipage = '';
$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="' . $mpurl . 'page=1' . $a_name . '" class="first"' . $ajaxtarget . '>首页</a>' : '') .
($curpage > 1 && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage - 1) . $a_name . '" class="pages-pre"' . $ajaxtarget . '>' . $prev_page . '</a>' : '');
for ($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? '<strong>' . $i . '</strong>' :
'<a href="' . $mpurl . 'page=' . $i . ($ajaxtarget && $i == $pages && $autogoto ? '#' : $a_name) . '"' . $ajaxtarget . '>' . $i . '</a>';
}
$multipage .= ($curpage < $pages && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage + 1) . $a_name . '" class="pages-next"' . $ajaxtarget . '>' . $next_page . '</a>' : '') .
($to < $pages ? '<a href="' . $mpurl . 'page=' . $pages . $a_name . '" class="last"' . $ajaxtarget . '>末页</a>' : '') .
($showkbd && !$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\'' . $mpurl . 'page=\'+this.value; doane(event);}" /></kbd>' : ''); $multipage = $multipage ? '<div class="pages fr">' . ($shownum && !$simple ? '<em> ' . $num . ' </em>' : '') . $multipage . '</div>' : '';
}
$maxpage = $realpages;
return $multipage;
}
?>
php 自定义 分页函数的更多相关文章
- PHPCMS快速建站系列之自定义分页函数
内容分页的实现方法:{pc:content action="lists" catid="$catid" order="id DESC" nu ...
- V9自定义分页函数
大家做网站的时候,可能很多时候分页样式都得根据模板的要求来控制的,这时很多人都会去修改全局文件phpcms\libs\functions \global.func.php里的pages()函数,这样问 ...
- phpcms V9自定义分页函数
大家做网站的时候,可能很多时候分页样式都得根据模板的要求来控制的,这时很多人都会去修改全局文件phpcms\libs\functions\global.func.php里的pages()函数,这样问题 ...
- Django学习手册 - 自定义分页函数
前端代码: <div class="xianshi"> {% for i in info %} <ul> <li>{{ i }}</li& ...
- wp 自定义分页函数
function kerui_pagination($query_string){ global $posts_per_page, $paged; $my_query = new WP_Query($ ...
- phpcms v9 自定义伪静态的分页函数
因为.这个页面还没做好..等做好了..再给大家演示...... 调用方法:$page_attr=pages_open($num[0]['cun'],$get_page,$max_page,'http: ...
- [Python自学] day-21 (1) (请求信息、html模板继承与导入、自定义模板函数、自定义分页)
一.路由映射的参数 1.映射的一般使用 在app/urls.py中,我们定义URL与视图函数之间的映射: from django.contrib import admin from django.ur ...
- Python之路【第十九篇】自定义分页实现(模块化)
自定义分页 1.目的&环境准备 目的把分页写成一个模块的方式然后在需要分页的地方直接调用模块就行了. 环境准备Django中生成一个APP并且注册,配置URL&Views 配置URL ...
- thinkphp自定义分页效果
TP自带了一个分页函数,挺方便使用的. 下面是我的使用方法: /*****************分页显示start*************************/ $arr_page=$this ...
随机推荐
- 根据城市表生成json数据
T_CityManager am = new T_CityManager(); string tou = "var LAreaData=["; string value = &qu ...
- Redis的内存回收机制
Redis的内存回收机制 2018年01月16日 17:11:48 chs007chs 阅读数:1172 Redis的内存回收机制主要体现在一下两个方面: 删除过期时间的键对象 删除过期键对象 : ...
- thymeleaf 解析html时,出现 SAXParseException: The content of elements must consist of well-formed characte
thymeleaf 解析html时,出现 SAXParseException: The content of elements must consist of well-formed characte ...
- 配置文件报错:不允许有匹配 [xX][mM][lL] 的处理指令目标。
http://www.68idc.cn/help/buildlang/ask/20150108163110.html ————————————————————————————————————————— ...
- minerd
云服务器 ECS Linux 异常进程 minerd 导致系统 CPU 跑满 问题现象 云服务器 ECS Linux 服务器 CPU 跑满,或者使用服务器越来越慢. 问题原因 使用 top 命令看到有 ...
- poj 1723 中位数
最近在看一些中位数的东西,然后顺便也看了些题目.poj 1723不仅要求到水平位置的最短距离和,还要求水平都相邻的排成一排的最短距离和,即士兵都站成一列. 到y轴的距离好办,按y轴坐标排序,求中位数, ...
- 关于Python的装饰器 decorator
装饰器的原理:其实就是高阶函数,接收原函数以在之前之后进行操作. 语法格式是固定的:先定义一个函数,再使用@语法调用该函数. 例子一: import functools # 定义装饰器,固定格式 de ...
- MySQL迁移数据库(mysqldump)
一.导出导入所有数据库的数据 1.导出 mysqldump -u root -p123456 --all-databases > all.sql 2.导入 mysql -u root -p123 ...
- 【FastJSON】使用JSON.toJSONString()-解决FastJson中“$ref 循环引用”的问题
fastjson 是一个 不错的json格式化工具, 但是在使用时,如果 碰到统一地址对象引用,就会用$ref替代 . 怎么去掉ref呢, 解决方法如下: String mapStr = JSONOb ...
- gtest运行小析
Gtest是google推出的C++测试框架,本篇文档,从整体上对Gtest的运行过程中的关键路径进行分析和梳理. 分析入口 新建一个最简单的测试工程,取名为source_analyse_proj,建 ...