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 常用类汇总 推荐收藏
May 13 PHP
php中session_unset与session_destroy的区别分析
Jun 16 PHP
php 获取本地IP代码
Jun 23 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
用PHP代码给图片加水印
Jul 01 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
一个实用的php验证码类
Jul 06 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
laravel异步监控定时调度器实例详解
Jun 21 PHP
PHP大文件切割上传功能实例分析
Jul 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
用ODBC的分页显示
2006/10/09 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
google地图的路线实现代码
2009/08/20 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python argv用法详解
2016/01/08 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
留学自荐信的技巧
2013/10/17 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
学校捐书活动总结
2015/05/08 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS
Python中的 No Module named ***问题及解决
2022/07/23 Python