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极大的增强功能和性能
Oct 09 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
php判断变量类型常用方法
Apr 24 PHP
php中inlcude()性能对比详解
Sep 16 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php jsonp单引号转义
Nov 23 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 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 str_replace的替换漏洞
2008/03/15 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
php Session存储到Redis的方法
2013/11/04 PHP
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Python用GET方法上传文件
2015/03/10 Python
python实现数独算法实例
2015/06/09 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
办公室主任岗位职责
2013/11/08 职场文书
2014年创卫实施方案
2014/02/18 职场文书
服务承诺书格式
2014/05/21 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
Python echarts实现数据可视化实例详解
2022/03/03 Python