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 定界符 使用技巧
Jun 14 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
js 动态文字滚动的例子
2011/01/17 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Django框架模板介绍
2019/01/15 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
HSRP的含义以及如何工作
2014/09/10 面试题
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
高一新生军训感言
2014/03/02 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
中小企业员工手册范本
2015/05/14 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
养成教育工作总结
2015/08/13 职场文书
2016寒假假期总结
2015/10/10 职场文书
关于 Python json中load和loads区别
2021/11/07 Python