php自动适应范围的分页代码


Posted in PHP onAugust 05, 2008
<?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代码 
?>

======================
补贴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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
php 表单验证实现代码
Mar 10 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
PHP实现微信申请退款功能
Oct 01 PHP
用PHP读取RSS feed的代码
Aug 01 #PHP
IStream与TStream之间的相互转换
Aug 01 #PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 #PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 #PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 #PHP
说明的比较细的php 正则学习实例
Jul 30 #PHP
MySql中正则表达式的使用方法描述
Jul 30 #PHP
You might like
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
php新建文件自动编号的思路与实现
2011/06/27 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
python保存字符串到文件的方法
2015/07/01 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
法律专业学生的自我评价
2014/02/07 职场文书
如何写新闻稿
2015/07/18 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis