+ -
当前位置:首页 → 问答吧 → 自己写的一个分页类

自己写的一个分页类

时间:2010-09-26

来源:互联网

<?php
/*
作者:遥远的期待
QQ:15624575
主页:www.phptogether.com
使用方法:参数1:当前页数,参数2:每页显示数据条数,参数三:分页sql;参数四:查询当前条件下记录总数sql,参数5:表单提交的参数,字符串形式,默认为空
*/
class page{
//动态设置分页数目
public function index($page,$page_size,$sql,$sql_total,$param_str=""){
$off=($page-1)*$page_size;
$off_size=$page*$page_size;      
$total_all=mysql_num_rows(mysql_query($sql_total));
$page_count=ceil($total_all/$page_size);    
$param_str=trim($param_str);//去掉参数两端空格    
if($page<=$page_count&&$page+5<=$page_count&&$page-4>0){
    $total = $page+5;
    $n = $page-4;
}elseif($page<=$page_count&&$page+5>$page_count&&$page-4>0){//往后自动翻页超出界限
    $total = $page_count;
    if($total-9>0){
    $n = $total-9;
    }else{
    $n = 1;
    }
}elseif($page<=$page_count&&$page+5>$page_count&&$page-4<=0){//往后自动翻页超出界限
    $total = $page_count;
    $n = 1;
}elseif($page<=$page_count&&$page+5<=$page_count&&$page-10<=0&&$page_count>=10){//往前自动翻页超出界限
    $total = 10;
    $n = 1;
}elseif($page<=$page_count&&$page+5<=$page_count&&$page-10<=0&&$page_count<=10){//往前自动翻页超出界限
    $total = $page_count;
    $n = 1;
}elseif($page_count=="1"){
    $total = 1;
    $n = 1;
}elseif($page==1&&$page<$page_count){
    $total = 10;
    $n = 1;
}
//动态设置分页数目完毕
foreach ($_GET as $key=>$value){
    if("$key"!="page"){
        $param[$key] = $value;
    }
   }
  
if(count($param)){
foreach ($param as $key=>$value){
    $str.=$key."=".$value."&";
}
$str=substr($str,0,-1);
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."?".$str;    
}elseif($param_str){
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."?".$param_str;        
}else{
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];    
}

//分页开始


if($str){//如果url带参数
$page_arr[]="<a href='".$_SERVER['SCRIPT_NAME']."?$str'>首页</a>";    
if($page>1)$page_arr[] ="<a href='$url&page=".($page-1)."'>上一页</a>";        
    if($page_count>1){
    for($n;$n<=$total;$n++){
    if($page==$n){
    $page_arr[] = "<a href='$url&page=$n'><span id='link_background'>$n </span></a>";
    }else{
    $page_arr[] = "<a href='$url&page=$n'>[$n] </a>";    
    }
}
}
if($page<$page_count&&$page_count>1)$page_arr[] ="<a href='$url'>下一页</a>";        
}elseif($param_str){//如果有提交的参数
$page_arr[]="<a href='".$_SERVER['SCRIPT_NAME']."'>首页</a>";    
if($page>1)$page_arr[] ="<a href='$url&page=".($page-1)."'>上一页</a>";            
if($page_count>1){
for($n;$n<=$total;$n++){
    if($page==$n){
    $page_arr[] = "<a href='$url&page=$n'><span id='link_background'>$n </span></a>";
    }else{
    $page_arr[] = "<a href='$url&page=$n'>[$n] </a>";    
    }
}
}
if($page<$page_count&&$page_count>1)$page_arr[] ="<a href='$url&page=".($page+1)."'>下一页</a>";    
}else{//如果url不带参数
$page_arr[]="<a href='".$_SERVER['SCRIPT_NAME']."'>首页</a>";    
if($page>1)$page_arr[] ="<a href='$url?page=".($page-1)."'>上一页</a>";            
if($page_count>1){
for($n;$n<=$total;$n++){
    if($page==$n){
    $page_arr[] = "<a href='$url?page=$n'><span id='link_background'>$n </span></a>";
    }else{
    $page_arr[] = "<a href='$url?page=$n'>[$n] </a>";    
    }
}
}
if($page<$page_count&&$page_count>1)$page_arr[] ="<a href='$url?page=".($page+1)."'>下一页</a>";
}

return $page_arr;
//分页结束
}

}
//调用举例

$page_nvi=new page();
$page=empty($_REQUEST['page'])?1:$_REQUEST['page'];
$sql_page="SELECT * FROM `product` LIMIT $off , $page_size ";    
$sql_total="SELECT * FROM `product` ";
$key=$_REQUEST['key'];
$page_arr=$page_nvi->index($page,'3',$sql_page,$sql_total,'key='.$key);
foreach ($page_arr as $value){
    echo $value;
}
?>
<form method="POST" action="page.php">
<input name="key" value="2">
<input type="submit" value="搜索">
</form>

作者: 遥远的期待   发布时间: 2010-09-26

正则表达式基础

作者: shf1527   发布时间: 2010-09-26

相关阅读 更多