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 similar_text 字符串的相似性比较函数
May 26 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
浅析PHP开发规范
Feb 05 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP与Web页面的交互示例详解二
Aug 04 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
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP微信API接口类
2016/08/22 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
如何用Django处理gzip数据流
2021/01/29 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
微电影大赛策划方案
2014/06/05 职场文书
创优争先心得体会
2014/09/11 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
房屋转让协议书
2014/10/18 职场文书
民主生活会发言材料
2014/10/20 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技