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 4.2书写安全的脚本
Oct 09 PHP
php读取msn上的用户信息类
Dec 05 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
php插件Xajax使用方法详解
Aug 31 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP实现微信提现功能
Sep 30 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 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批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
在Python中进行自动化单元测试的教程
2015/04/15 Python
python daemon守护进程实现
2016/08/27 Python
Python金融数据可视化汇总
2017/11/17 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python将数组n等分的实例
2019/12/02 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
投资意向书范本
2014/04/01 职场文书
党员教师一句话承诺
2014/05/30 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
学校实习推荐信
2015/03/27 职场文书
雷锋之歌观后感
2015/06/10 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
战友聚会致辞
2015/07/28 职场文书
学风建设主题班会
2015/08/17 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS