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 session 检测和注销
Mar 16 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
php数组一对一替换实现代码
Aug 31 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 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的大小写敏感问题整理
2011/12/29 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php实现微信发红包功能
2018/07/13 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python标准库shutil用法实例详解
2018/08/13 Python
python进行文件对比的方法
2018/12/24 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
情人节活动策划方案
2014/02/27 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
天鹅湖观后感
2015/06/09 职场文书
Python集合的基础操作
2021/11/01 Python
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
Python使用Web框架Flask开发项目
2022/06/01 Python