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 相关文章推荐
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php获取访问者IP地址汇总
Apr 24 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php object转数组示例
2014/01/15 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
单位实习证明怎么写
2014/01/17 职场文书
企业总经理岗位职责
2014/02/13 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
2014年会策划方案
2014/05/11 职场文书
分公司负责人任命书
2014/06/04 职场文书
公司踏青活动方案
2014/08/16 职场文书
干部个人对照检查材料
2014/08/25 职场文书
统计员岗位职责范本
2015/04/14 职场文书
保留意见审计报告
2015/06/05 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书