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 信息采集程序代码
Mar 17 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
Swoole扩展的6种模式深入详解
Mar 04 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中Closure类的使用方法及详解
2015/10/09 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
python操作日期和时间的方法
2014/03/11 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
python获取整个网页源码的方法
2020/08/03 Python
python如何设置静态变量
2020/09/07 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
安全标语口号
2014/06/09 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
小学端午节活动总结
2015/02/11 职场文书
学习保证书怎么写
2015/02/26 职场文书
开业庆典致辞
2015/08/01 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
2016年十一促销广告语
2016/01/28 职场文书
Python中for后接else的语法使用
2021/05/18 Python