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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
php 全局变量范围分析
Aug 07 PHP
php中apc缓存使用示例
Dec 25 PHP
Yii调试SQL的常用方法
Jul 09 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
php获取excel文件数据
Apr 21 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php中数组最简单的使用方法
Dec 27 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
yii框架搜索分页modle写法
2016/12/19 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
python读取LMDB中图像的方法
2018/07/02 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
Python面向对象之Web静态服务器
2019/09/03 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
基于Python正确读取资源文件
2020/09/14 Python
PHP中如何创建和修改数组
2012/05/02 面试题
得到Class的三个过程是什么
2012/08/10 面试题
linux面试题参考答案(5)
2016/11/05 面试题
护理专科毕业推荐信
2013/11/10 职场文书
积极分子思想汇报
2014/01/04 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
党员违纪检讨书
2014/02/18 职场文书
小学端午节活动方案
2014/03/13 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
运动会宣传稿50字
2015/07/23 职场文书
入党申请书怎么写?
2019/06/21 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
MySQL创建管理HASH分区
2022/04/13 MySQL
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL