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 相关文章推荐
优化PHP代码的53条建议
Mar 27 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
PHP header()函数常用方法总结
Apr 11 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
php获取301跳转URL简单实例
2013/12/16 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP的引用详解
2015/02/22 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python 文件管理实例详解
2015/11/10 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
tensorflow 模型权重导出实例
2020/01/24 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Python 图片处理库exifread详解
2021/02/25 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
大学生全国两会报告感想
2014/03/17 职场文书
国旗下的演讲稿
2014/05/08 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript