<?php //分页原理 //首页来判断总页数 if(!isset($GX_pre)) $GX_pre=true; if(!isset($GX_next)) $GX_next=true; if(!isset($GX_end)) $GX_end=true; if(!isset($GX_index)) $GX_index=true; if(!isset($GX_word)) $GX_word=false; if(!isset($GX_n)) $GX_n=1; if(!isset($GX_pagelen)) $GX_pagelen=15; if(!isset($GX_page)) $GX_page=8; if($GX_n>3) $GX_n=3; if($GX_word){ echo '<li><span class="GX_word">总记录数:'.$GX_num.'总页数:'.$all_page.'当前页:'.$GX_pageno.'</span></li>'; } if($GX_num==$GX_pagelen){ $all_page = 1; }else{ if($GX_num%$GX_pagelen==0){ $all_page = floor($GX_num/$GX_pagelen); }else{ $all_page = floor($GX_num/$GX_pagelen)+1; } } $href = $_SERVER["QUERY_STRING"]; $href = preg_replace('/pageno=([\w+].*)/','',$href); $href = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$href.'pageno='; //先处理url和长度 $all_pagelen=$GX_page; // 定义变量页数的总显示个数 $pagen=$GX_n; $all_pagel = floor($all_pagelen/2); if($GX_index) echo '<li><a href="',$href,'1">',$GX_index_word,'</a></li>'; if($GX_pageno==1){ if($GX_pre) echo '<li><a href="javascript:void();">',$GX_pre_word,'</a></li>'; }else{ if($GX_pre) echo '<li><a href="',$href,($GX_pageno-1),'">',$GX_pre_word,'</a></li>'; } if($all_page<=$all_pagelen){ //此处判断总页数小于或者等于$all_pagelen的情况 for($i=1;$i<($all_page+1);$i++){ if($GX_pageno==$i){ echo '<li><span class="current">',$i,'</span></li>'; }else{ echo '<li><a href="',$href,$i,'">',$i,'</a></li>'; } } }else{//此处处理总页数大于$all_pagelen的页数分页部分 if($GX_pageno>$all_pagel){ if($GX_pageno+$all_pagel<=$all_page){ for($k=$all_pagel;$k>0;$k--){ echo '<li><a href="',$href,($GX_pageno-$k),'">',($GX_pageno-$k),'</a></li>'; } echo '<li><span class="current">',$GX_pageno,'</span></li>'; for($m=1;$m<($all_pagel+1);$m++){ echo '<li><a href="',$href,($GX_pageno+$m),'">',($GX_pageno+$m),'</a></li>'; } }else{ for($l=($all_pagelen-1);$l>=0;$l--){ if($l==($all_page-$GX_pageno)){ echo '<li><span class="current">',$GX_pageno,'</span></li>'; }else{ echo '<li><a href="',$href,($all_page-$l),'">',($all_page-$l),'</a></li>'; } } } }else{ for($j=1;$j<($all_pagelen+1);$j++){ if($GX_pageno==$j){ echo '<li><span class="current">',$j,'</span></li>'; }else{ echo '<li><a href="',$href,$j,'">',$j,'</a></li>'; } } } } if($GX_pageno+$all_pagel<=$all_page-$pagen){ echo "<li><span>...</span></li>"; for($n=$pagen;$n>0;$n--){ echo '<li><a href="',$href,$all_page-($n-1),'">',$all_page-($n-1),'</a></li>'; } } if($GX_pageno==$all_page){ if($GX_next) echo '<li><a href="javascript:void();">',$GX_next_word,'</a></li>'; }else{ if($GX_next) echo '<li><a href="',$href,($GX_pageno+1),'">',$GX_next_word,'</a></li>'; } if($GX_end) echo '<li><a href="',$href,$all_page,'">',$GX_end_word,'</a></li>'; ?>
以上代码是整个分页的核心部分,命名为pagelist.php;保存下来
下面的代码是需要调用分页的部分代码
<html> <link rel="stylesheet" type="text/css" href="style.css" media="all" /> <body> <!--这里更换样式--> <div class="Blue_page"> <?php $GX_pageno=$_GET['pageno']; $GX_num=10000;//一共有多少条数据 $GX_n=2;//设置尾部显示多少个页码,不要超过三个为了美观 //$GX_pagelen=100;//一页显示多少条数据 //$GX_page=20;//显示分页列表的长度 //$GX_pre=false;隐藏上一页按钮 //$GX_next=false;隐藏下一页按钮 //$GX_index=false;隐藏首页按钮 //$GX_end=false;隐藏末页按钮 $GX_pre_word=" 上一页 "; $GX_next_word=" 下一页 "; $GX_end_word=" 末页 "; $GX_index_word=" 首页 "; include "pagelist.php"; ?> </div> </body> </html>
样式如下,样式可以自己来写,这里只贴出演示的样式代码如下
<!--蓝色经典开始--> .Blue_page{width:100%;height:25px;} .Blue_page li{display:inline-block;margin-left:3px;} .Blue_page li a{margin: 0 1px;padding: 0 4px;border: 3px double #fff;background: #eee;color: #06f;text-decoration: none;font-family: Arial, Helvetica, sans-serif;font-size:12px;} .Blue_page li span.current{margin: 0 1px;padding: 0 4px;color: #fff;border: 3px double #fff;background: #f60;} .Blue_page li span{color:#06f;} <!--蓝色经典结束-->
好了可以看下我的分页代码效果 如下图