- 浏览: 7065309 次
- 性别:
- 来自: 上海
最新评论
-
autosuggestion:
实现一个智能提示功能需要JavaScript、ajax、数据库 ...
自动提示结果 -
岁月之眸:
...
Java读TXT文件 -
yujian58:
写的好。
在线客服技术方案 -
QQ1067184821:
你好,能不能发个完整的给我呢?1067184821@qq.co ...
Extjs3.2+Json lib动态树与GridPanel简单展现 -
chenhua0725:
能不能发一个完成的包给我呢,谢谢了,83667664@qq.c ...
Extjs3.2+Json lib动态树与GridPanel简单展现
前后各显示一定页数
于是写了一个,可以自动适应范围的页码分页程序
也就是说,页码格式如下
<< < 1 2 3 4 5 6 7 > >>
<< < 6 7 8 9 10 11 12 > >>
下划线为当前页,这样就可以固定显示一个相近的页码
<?php
function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){
$pagecode = '';//定义变量,存放分页生成的HTML
$page = intval($page);//避免非数字页码
$total = intval($total);//保证总记录数值类型正确
if(!$total) return array();//总记录数为零返回空数组
$pages = ceil($total/$pagesize);//计算总分页
//处理页码合法性
if($page<1) $page = 1;
if($page>$pages) $page = $pages;
//计算查询偏移量
$offset = $pagesize*($page-1);
//页码范围计算
$init = 1;//起始页码数
$max = $pages;//结束页码数
$pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
$pageoffset = ($pagelen-1)/2;//页码个数左右偏移量
//生成html
$pagecode='<div class="page">';
$pagecode.="<span>$page/$pages</span>";//第几页,共几页
//如果是第一页,则不显示第一页和上一页的连接
if($page!=1){
$pagecode.="<a href=\"{$phpfile}?page=1\"><<</a>";//第一页
$pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";//上一页
}
//分页数大于页码个数时可以偏移
if($pages>$pagelen){
//如果当前页小于等于左偏移
if($page<=$pageoffset){
$init=1;
$max = $pagelen;
}else{//如果当前页大于左偏移
//如果当前页码右偏移超出最大分页数
if($page+$pageoffset>=$pages+1){
$init = $pages-$pagelen+1;
}else{
//左右偏移都存在时的计算
$init = $page-$pageoffset;
$max = $page+$pageoffset;
}
}
}
//生成html
for($i=$init;$i<=$max;$i++){
if($i==$page){
$pagecode.='<span>'.$i.'</span>';
} else {
$pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>";
}
}
if($page!=$pages){
$pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">></a>";//下一页
$pagecode.="<a href=\"{$phpfile}?page={$pages}\">>></a>";//最后一页
}
$pagecode.='</div>';
return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
}
?>
函数参数:
$page 当前$_GET获得的页码
$total 总记录数
$phpfile 页码连接文件名
$pagesize 不用解释了吧 呵呵
$pagelen 最多显示几个页码 注意(奇数),对称嘛!
函数返回一个数组:
pagecode 索引对应的内容是 生成的HTML 代码
sqllimit 索引对应的是sql limit 后缀
使用方法:
<?php
$phpfile = 'index.php';
$page= isset($_GET['page'])?$_GET['page']:1;
$db = new Mysql();
$counts = $db->counts('select `id` from `test`');
$sql='select `id`,`title` from `test`';
$getpageinfo = page($page,$counts,$phpfile);
$sql.=$getpageinfo['sqllimit'];
$data = $db->getRows($sql);
?>
<?php
echo $getpageinfo['pagecode'];//显示分页的html代码
?>
css
<style type="text/css">
body{font-family:Tahoma;}
.page{padding:2px;font-weight:bolder;font-size:12px;}
.page a{border:1px solid #ccc;padding:0 5px 0 5px;margin:2px;text-decoration:none;color:#333;}
.page span{padding:0 5px 0 5px;margin:2px;background:#09f;color:#fff;border:1px solid #09c;}
</style>
完善:加了页码跳转文本框
<?php
function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){
$pagecode = '';//定义变量,存放分页生成的HTML
$page = intval($page);//避免非数字页码
$total = intval($total);//保证总记录数值类型正确
if(!$total) return array();//总记录数为零返回空数组
$pages = ceil($total/$pagesize);//计算总分页
//处理页码合法性
if($page<1) $page = 1;
if($page>$pages) $page = $pages;
//计算查询偏移量
$offset = $pagesize*($page-1);
//页码范围计算
$init = 1;//起始页码数
$max = $pages;//结束页码数
$pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
$pageoffset = ($pagelen-1)/2;//页码个数左右偏移量
//生成html
$pagecode='<div class="page">';
$pagecode.="<span>$page/$pages</span>";//第几页,共几页
//如果是第一页,则不显示第一页和上一页的连接
if($page!=1){
$pagecode.="<a href=\"{$phpfile}?page=1\"><<</a>";//第一页
$pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";//上一页
}
//分页数大于页码个数时可以偏移
if($pages>$pagelen){
//如果当前页小于等于左偏移
if($page<=$pageoffset){
$init=1;
$max = $pagelen;
}else{//如果当前页大于左偏移
//如果当前页码右偏移超出最大分页数
if($page+$pageoffset>=$pages+1){
$init = $pages-$pagelen+1;
}else{
//左右偏移都存在时的计算
$init = $page-$pageoffset;
$max = $page+$pageoffset;
}
}
}
//生成html
for($i=$init;$i<=$max;$i++){
if($i==$page){
$pagecode.='<span>'.$i.'</span>';
} else {
$pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>";
}
}
if($page!=$pages){
$pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">></a>";//下一页
$pagecode.="<a href=\"{$phpfile}?page={$pages}\">>></a>";//最后一页
}
$pagecode.="<input type=\"text\" size=\"3\" onkeydown=\"if(event.keyCode==13) {window.location.href='{$phpfile}?page='+this.value; return false;}\" /></div>";
return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
}
?>
以下是新手使用说明
<?php
$phpfile = 'index.php';//页面文件名
$page= isset($_GET['page'])?$_GET['page']:1;//默认页码
$db = mysql_connect('localhost','test','test');//链接数据库
mysql_select_db('test',$db);//选择数据库
$counts = mysql_num_rows(mysql_query('select `id` from `test`',$db));//获取需要的数据总条数
$sql='select `id`,`title` from `test`';//定义查询语句SQL
$getpageinfo = page($page,$counts,$phpfile);//调用函数,生成分页HTML 和 SQL LIMIT 子句
$sql.=$getpageinfo['sqllimit'];//组合完整的SQL语句
$data = $row = array();//初始化数组
$result = mysql_query($sql,$db);//获取结果集
//将数据装入$data数组
while($row = mysql_fetch_array($result)){
$data[]=$row;
}
?>
<?php
echo $getpageinfo['pagecode'];//显示分页的html代码
?>
发表评论
-
jQuery+Ajax+PHP+Mysql实现分页显示数据
2013-09-09 15:54 2868jQuery+Ajax+PHP+Mysql实现分页显示数 ... -
今,昨,周,月 页面访问统计
2008-12-07 02:18 867//自己做一个网站是用到的,在每个php文件中调用page_c ... -
php2html php生成静态页函数
2008-12-07 02:19 886<?php /** ------------------ ... -
获取服务器IP和获取访问者IP
2008-12-07 02:20 1733$_SERVER['SERVER_ADDR'] 获取服务器IP ... -
PHP保存远程图片到本地的类
2008-12-07 02:22 1868<iframe name="google_ ... -
使用php实现伪静态化页面
2008-12-07 19:57 1024方法一: 在你的程序初 ... -
平时积累的PHP技巧
2008-12-07 19:58 817平时积累的PHP技巧,与 ... -
Ajax+PHP分页演示,带源码下载
2008-12-07 20:00 858http://www.corange.cn/archives/ ... -
PHP控制网页过期时间的程序
2008-12-08 11:50 802有时我们需要控制主页之类的网页过期时间。但我们比如使用的是Ch ... -
php的curl实现get和post
2008-12-08 11:51 2171类似于dreamhost这类主机服务商,是显示fopen的使用 ... -
PHP正则表达式从url中取得域名
2008-12-08 15:06 1376以下代码可以从URL中获得域名 例如:http://yyoo. ... -
PHP汉字转拼音的函数
2008-12-08 20:48 2196汉字转换成拼音函数,写到URL可以做搜索引擎优化 <?p ... -
关于PHP编码转化的问题
2008-12-12 09:34 982PHP转化GB2312到UTF-8这个问题已经困扰我好几天了, ... -
PHP的加密和解密程序方法
2008-12-16 21:33 947{ srand((double)microtime()*10 ... -
对IP及IP段进行访问限制
2008-12-17 10:36 1015本来是写了几个函数,IP黑名单是记到库里的,为了方便理解,改成 ... -
mssql自动备份及自动清除日志文件教程
2008-12-17 10:53 11621、每日自动备份 强烈 ... -
关于mysql中文排序的方法
2008-12-23 09:44 914方法1 ---- "mysql在查询字符串时是大小写 ... -
MySQL怎样优化WHERE子句
2008-12-23 09:46 732where优化主要是在SELECT中,因为他们最主要是在那里使 ... -
MySQL随机选取数据
2008-12-23 09:47 1626本文实现了MySQL的随机数、MySQ随机选取数据、MySQ随 ... -
用javascript+PHP随机显示图片
2008-12-30 23:12 855想必你会用javascript随机显示图片。但如果图片的资料( ...
相关推荐
### PHP自动适应范围的页码分页程序 在开发基于Web的应用时,为了提升用户体验以及减少服务器负担,分页功能是必不可少的一项技术。本文将详细解析一个PHP自适应范围页码分页程序的设计思路与实现细节,帮助读者...
本文将深入探讨PHP分页的实现原理和具体步骤,并通过一个名为“小贤PHP通用分页程序”的实例进行详解。 1. **分页原理** 分页的基本思想是将大量数据分成多个小块(页),每次只加载一部分数据到前端展示,用户...
下面将详细探讨PHP分页类的核心原理、设计模式以及如何在实际项目中应用。 一、分页类的设计原理 1. 计算总页数:分页类首先需要获取数据库中的总记录数,然后根据每页显示的数据量(通常称为每页条数)来计算总...
本篇文章将详细讲解一个实用的PHP分页类库的使用方法,以及它如何帮助开发者轻松实现高效、简洁的分页功能。 首先,这个分页类库的设计理念是简化代码,提高开发效率。通过实例化类并传入关键参数,开发者就能快速...
《PHP自动适应范围的分页代码详解》 在网页开发中,分页是常见的功能,尤其是在数据量较大的情况下,为了提高用户体验,我们需要实现一个能够自动适应页面范围的分页功能。这里,我们将深入探讨如何使用PHP编写这样...
4. **当前页判断**:通过URL参数或POST数据获取当前请求的页码,并确保其在合法范围内(1至总页数之间)。 5. **分页链接生成**:这是分页类的核心部分,它需要生成上一页、下一页、第一页、最后一页以及中间页的...
分页算法主要是计算每页展示的数据数量(每页条目数)和当前页的数据范围。例如,如果总数据数为N,每页显示M条,那么总页数为`Math.ceil(N / M)`,其中`Math.ceil()`是向上取整函数。对于第n页,起始位置为`(n-1) ...
上述代码提供了一个简单的PHP分页类(Pager.class.php),适用于集成到Google或百度等搜索引擎的查询结果页面中,或者任何需要分页功能的PHP项目。 该类主要包含以下核心知识点: 1. **类定义**:`Pager`类用于处理...
4) 传统的分页, 分段式分页(每页内分为多段)归根结底是对数据集做一次切割, 映射到mysql的sql语法上, 就是根据输入求得limit子句, 适用场景为数据集变化频率低 5) since_id类分页, 其本质是假定已有数据无变化, 将...
5. 生成数字形式的分页链接,根据当前页码`$pg`和总页数`$page`动态调整显示的页码范围,以保持分页链接的简洁性。 6. 创建上一页`$backstr`和下一页`$nextstr`的链接。 辅助函数如`Pager::makepg()`用于创建数字...
`getLinks()`方法会根据当前页码和总页数自动生成相应的HTML代码,你还可以自定义链接样式和结构,以适应不同的设计需求。 除了基本的分页功能,`extPager.php`还可能包含其他实用方法,如限制查询结果范围,这在...
从给定的PHP分页代码片段中,我们可以深入解析并理解其核心功能和实现机制,以下是对该分页代码的详细分析与知识点提取。 ### 分页功能概述 分页是Web开发中的常见需求,用于处理大量数据时的展示问题,避免一次性...
当用户请求特定页码时,通过内容截取展示对应范围内的内容。这种方法简单,但存在一个问题,即文章内容通常包含HTML标签,如果在截取时处理不当,可能导致HTML标签不完整,影响页面显示效果。 2. **通过分页符进行...
同时,它也考虑到了边缘情况,如当用户请求的页码超出实际页数时,会自动调整到正确的范围。 在实际应用中,你可以将此函数整合到自己的PHP项目中,只需提供对应的数据总数、每页显示数量、当前页码以及分页链接的...
`Helper_Page` 类就是一个简单的PHP分页类示例,它的设计目的是提供方便的方法来计算总页数、获取当前页信息以及进行页面跳转。 1. **类属性**: - `$infoCount`: 存储总信息或记录数。 - `$pageCount`: 存储总...
5. 分页处理:根据总记录数计算出总页数,并根据用户的请求参数(如`$offset`)确定当前页码及显示的记录范围。例如,每页显示20条记录,那么`$pages = ceil($rcon / 20)`。 6. 输出分页链接:使用PHP代码生成上一...
在实际应用中,你可以通过实例化此类或调用`pageft()`函数,结合你的数据库查询结果和页面布局,即可实现动态的分页效果。需要注意的是,为了提高用户体验,你还可以进一步优化此类,例如添加CSS样式支持,使其更...
4. **自动分页**:当内容超出页面范围时,FPdf会自动进行分页,确保内容完整呈现。 5. **文本处理**:支持自动换行、对齐方式(左对齐、居中、右对齐),以及多种字体和样式,使得文本排版更加美观。 6. **图像支持*...
在PHP中,floor和ceil函数常用于分页场景下的页码计算,round函数用于需要按照特定精度进行四舍五入的场景,而intval函数用于将不同类型的变量转换为整数。这些函数各有适用场景,选择合适的函数可以提高代码的效率...