php分页

来源:互联网 发布:ppp项目数据库 编辑:程序博客网 时间:2024/05/16 08:58

1、创建pagination.php文件,编写分页方法,下面只需在需要分页的页面调用这个方法即可

<?php

   /** 分页函數
    *     $page         : 当前页
    *     $page_size    : 每页显示条数
    *     $record_count : 总记录数
    *     $page_num     : 显示页面连接数量
    *     $url          : 链接url
    */

    function pagination( $page, $page_size, $record_count, $page_num, $url, $lang = 'en' ){

        $lang_w = array(
                'default' => array(
                    'prev' => '',
                    'next' => ''
                ),
                'en' => array(
                    'prev' => 'Prev',
                    'next' => 'Next'
                ),
                'cn' => array(
                    'prev' => '上一页',
                    'next' => '下一页'
                ),
                'tc' => array(
                    'prev' => '上一頁',
                    'next' => '下一頁'
                )
            );
        
        if (!in_array($lang, array('en', 'cn', 'tc'))) $lang = 'default';    
        
        $pagination = "";
        if( intval( ($record_count-1)/$page_size )>0 ){
        
            $page_count = intval($record_count/$page_size)+( ($record_count%$page_size)==0?0:($record_count%$page_size)/($record_count%$page_size) );
            $page = intval($page);
            $page>0?$page:1;
            $page>$page_count?$page_count:$page;
            
            if ($page_count>1)
                $pagination .= '<div class="pagination">';
            
            if($page==1){
                $pagination .= '<span class="disabled">&lt; '.$lang_w[$lang]['prev'].'</span>';
                $pagination .= '<span class="current">'.$page.'</span>';
            }
            else{
                $pagination .= '<a href="'.$url.'&page='.($page-1).'">&lt; '.$lang_w[$lang]['prev'].'</a>';
                $pagination .= '<a href="'.$url.'&page=1">1</a>';
            }
            
            if( $page_count-2>$page_num ){
                $page_start = $page-intval($page_num/2);
                $page_end   = $page+intval($page_num/2);
                
                if($page_start<=1){
                    $page_end = $page_end + 2 - $page_start;
                    $page_start = 2;
                }
                if($page_end>=$page_count){
                    $page_start = $page_start - ($page_end - $page_count + 1 );
                    $page_end = $page_count-1;
                }
                
                if($page_start>2){
                    $pagination .= '<span>...</span>';
                }
                
                for($i=$page_start; $i<=$page_end; $i++ ){
                    if($i==$page){
                        $pagination .= '<span class="current">'.$page.'</span>';
                    }
                    else{
                        $pagination .= '<a href="'.$url.'&page='.$i.'">'.$i.'</a>';
                    }
                }
                
                if($page_end<$page_count-1){
                    $pagination .= '<span>...</span>';
                }
            }
            else{
                for($i=2; $i<$page_count; $i++ ){
                    if($i==$page){
                        $pagination .= '<span class="current">'.$page.'</span>';
                    }
                    else{
                        $pagination .= '<a href="'.$url.'&page='.$i.'">'.$i.'</a>';
                    }
                }
            }
            
            if($page_count>1){
                if($page==$page_count){
                    $pagination .= '<span class="current">'.$page.'</span>';
                    $pagination .= '<span class="disabled">'.$lang_w[$lang]['next'].'&nbsp;&gt;</span>';
                }
                else{
                    $pagination .= '<a href="'.$url.'&page='.$page_count.'">'.$page_count.'</a>';
                    $pagination .= '<a href="'.$url.'&page='.($page+1).'">'.$lang_w[$lang]['next'].'&nbsp;&gt;</a>';
                }
            }
            
            if ($page_count>1)
                $pagination .= '</div>';
        }
        
        return $pagination;
    }

?>


2、这儿是你要分页的php页面

     1)首先在页面上定义几个对象

     $page = intval($_GET['page']) >1 ? intval($_GET['page']) : 1;
     $page_size = 5;  //每页显示的条数
     $url = "?";

     2)查询需要显示的信息  $query = “ SELECT * FROM 表 ”;

     3计算数据总数  $record_count = mysql_num_rows(mysql_query($query))

     4)每页显示的数据条数 $query.= "LIMIT ".($page-1)*$page_size.",".$page_size.";";

     5)执行查询语句  $result = mysql_query($query);
            while ($row = mysql_fetch_array($result)) {

                   这儿是该页面要显示的数据信息

           }

     6)调用上面写好的分页函数 pagination($page, $page_size, $record_count, 3, $url);

PS:当然这是最简单的分页方法,比如每页的数据都是一列下来的,你要在一个页面里把这个页面上的数据再分成几行几列自己布局就行了,就是对table的tr、td进行循环的问题了,下面的图片是进行css美化了的,仅供参考


下图是与上面分页信息对应的源码