自动生成页码:PHP自动适应页码分页程序来源: 发布时间:星期四, 2009年2月12日 浏览:535次 评论:0
记得以前看到过个页码方式分页效果页码数多了折行继续显示直到60多页呵呵!有点影响美观! 于是写了个可以自动适应范围页码分页 也就是说页码格式如下 << < 1 2 3 4 5 6 7 > >> << < 6 7 8 9 10 11 12 > >> 下划线为当前页这样就可以固定显示个相近页码避免太长影响美观 代码加了注释主要是新手看看呵呵 写这个没有考虑表现结构分离问题高手就不要追究了! <?PHP function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){ $pagecode = '';//定义变量存放分页生成HTML $page = val($page);//避免非数字页码 $total = val($total);//保证总记录数值类型正确 (!$total) .gif' />;//总记录数为零返回空 $pages = ceil($total/$pagesize);//计算总分页 //处理页码合法性 ($page<1) $page = 1; ($page>$pages) $page = $pages; //计算查询偏移量 $off = $pagesize*($page-1); //页码范围计算 $init = 1;//起始页码数 $max = $pages;//结束页码数 $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数 $pageoff = ($pagelen-1)/2;//页码个数左右偏移量 //生成html $pagecode='<div ="page">'; $pagecode.="<span>$page/$pages</span>";//第几页,共几页 //如果是第页则不显示第页和上页连接 ($page!=1){ $pagecode.="<a href=\"{$phpfile}?page=1\"><<</a>";//第页 $pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";//上页 } //分页数大于页码个数时可以偏移 ($pages>$pagelen){ //如果当前页小于等于左偏移 ($page<=$pageoff){ $init=1; $max = $pagelen; }{//如果当前页大于左偏移 //如果当前页码右偏移超出最大分页数 ($page+$pageoff>=$pages+1){ $init = $pages-$pagelen+1; }{ //左右偏移都存在时计算 $init = $page-$pageoff; $max = $page+$pageoff; } } } //生成html for($i=$init;$i<=$max;$i){ ($i$page){ $pagecode.='<span>'.$i.'</span>'; } { $pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>"; } } ($page!=$pages){ $pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">></a>";//下页 $pagecode.="<a href=\"{$phpfile}?page={$pages}\">>></a>";//最后页 } $pagecode.='</div>'; .gif' />('pagecode'=>$pagecode,'sqllimit'=>' limit '.$off.','.$pagesize); } ?> 参数: $page 当前$_GET获得页码 $total 总记录数 $phpfile 页码连接文件名 $pagesize 不用解释了吧 呵呵 $pagelen 最多显示几个页码 注意(奇数)对称嘛! 返回个: pagecode 索引对应内容是 生成HTML 代码 sqllimit 索引对应是sql limit 后缀 使用思路方法: <?php $phpfile = 'index.php'; $page= is($_GET['page'])?$_GET['page']:1; $db = MySQL; $counts = $db->counts('select `id` from `test`'); $sql='select `id`,`title` from `test`'; $getpageinfo = page($page,$counts,$phpfile); $sql.=$getpageinfo['sqllimit']; $data = $db->getRows($sql); ?> <?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 function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){ $pagecode = '';//定义变量存放分页生成HTML $page = val($page);//避免非数字页码 $total = val($total);//保证总记录数值类型正确 (!$total) .gif' />;//总记录数为零返回空 $pages = ceil($total/$pagesize);//计算总分页 //处理页码合法性 ($page<1) $page = 1; ($page>$pages) $page = $pages; //计算查询偏移量 $off = $pagesize*($page-1); //页码范围计算 $init = 1;//起始页码数 $max = $pages;//结束页码数 $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数 $pageoff = ($pagelen-1)/2;//页码个数左右偏移量 //生成html $pagecode='<div ="page">'; $pagecode.="<span>$page/$pages</span>";//第几页,共几页 //如果是第页则不显示第页和上页连接 ($page!=1){ $pagecode.="<a href=\"{$phpfile}?page=1\"><<</a>";//第页 $pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";//上页 } //分页数大于页码个数时可以偏移 ($pages>$pagelen){ //如果当前页小于等于左偏移 ($page<=$pageoff){ $init=1; $max = $pagelen; }{//如果当前页大于左偏移 //如果当前页码右偏移超出最大分页数 ($page+$pageoff>=$pages+1){ $init = $pages-$pagelen+1; }{ //左右偏移都存在时计算 $init = $page-$pageoff; $max = $page+$pageoff; } } } //生成html for($i=$init;$i<=$max;$i){ ($i$page){ $pagecode.='<span>'.$i.'</span>'; } { $pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>"; } } ($page!=$pages){ $pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">></a>";//下页 $pagecode.="<a href=\"{$phpfile}?page={$pages}\">>></a>";//最后页 } $pagecode.="<input type=\"text\" size=\"3\" _disibledevent=> .gif' />('pagecode'=>$pagecode,'sqllimit'=>' limit '.$off.','.$pagesize); } ?> 以下是新手使用介绍说明 <?php $phpfile = 'index.php';//页面文件名 $page= is($_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 = .gif' />;//化 $result = mysql_query($sql,$db);//获取结果集 //将数据装入$data while($row = mysql_fetch_.gif' />($result)){ $data=$row; } ?> <?php echo $getpageinfo['pagecode'];//显示分页html代码 ?> 0
相关文章读者评论发表评论 |
|