龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

又是分页类?

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
span style=color:#003399;/**/span br / span style=color:#003399;* /span br / span style=color:#003399;* 分页类/span br / span style=color:#003399;* @author Administrator/span br / span style=color:#003399;* @internal 实际上分页有两种
/**
 *
 * 分页类
 * @author Administrator
 * @internal 实际上分页有两种方式:
 */
class Page_html
{
    private static $_offset = 0;
    private static $_total_page = 0;
    /**
     *
     * 分页
     * @param 总记录 $total
     * @param 每页大小 $page_size
     * @param 当前页 $cur_page
     * @param
     * @param 数字列表 $num_display
     * 表示 当前页左右两边有多少位数字
     * @param url $url
     * url 是你自己决定的,page()方法只负责把页码符加到url上。
     */
    static function page($total, $page_size, $cur_page, $url, $num_display = NULL)
    {
        $page = '';
       
        #页数处理
        $total = intval ( $total );
        $page_size = max ( 1, intval ( $page_size ) );
        self::$_total_page = ceil ( $total / $page_size );
        $cur_page = max ( 1, intval ( $cur_page ) );
       
        if ($cur_page > self::$_total_page)
        {
            $cur_page = self::$_total_page;
        }
       
        #计算offset
        self::$_offset = ($cur_page - 1) * $page_size;
       
        #上一页
        if ($cur_page <= 1)
        {
            $page .= '<span>首页</span>&nbsp;<span>上一页</span>';
        } else
        {
            $next_page = $cur_page - 1;
            $page .= '<a href="' . $url . '1">首页</a>&nbsp;<a href="' . $url . $next_page . '">上一页</a>';
        }
       
        #数字列表
        $num_display = max ( 1, $num_display );
        #左边数字
        $start = $cur_page - $num_display;
        $start = $start <= 0 ? 1 : $start;
        #右边数字
        $end = $cur_page + $num_display;
        $end = $end > self::$_total_page ? self::$_total_page : $end;
        for($i = $start; $i <= $end; $i ++)
        {
            if ($cur_page == $i)
            {
                $page .= "&nbsp;<span>$i</span>&nbsp;";
            } else
            {
                $page .= '&nbsp;<a href="' . $url . $i . '">' . $i . '</a>&nbsp;';
            }
       
        }
       
        #下一页
        if ($cur_page >= self::$_total_page)
        {
            $page .= '<span>末页</span>&nbsp;<span>下一页</span>';
        } else
        {
            $next_page = $cur_page + 1;
            $page .= '<a href="' . $url . $next_page . '">下一页</a>&nbsp;<a href="' . $url . self::$_total_page . '">末页</a>';
        }
       
        #跳转页
        $event = "window.location.href='$url'+this.value";
        $page .= '&nbsp;<select name="scope" onchange="' . $event . '">';
        for($i = 1; $i <= self::$_total_page; $i ++)
        {
            if ($cur_page == $i)
            {
                $page .= "<option value='$i' selected >$i</option>";
            } else
            {
                $page .= "<option value='$i'>$i</option>";
            }
        }
        $page .= '</select>';
        return $page;
    }
   
    /*
     * 获取Offset值
     */
    static function get_offset()
    {
        return self::$_offset;
    }
    /*
     * 总页数
     */
    static function get_total_page()
    {
        return self::$_total_page;
    }
}

/**
 * 使用实例 获取数据
 */
#每页数据量
$pagesize = 5;

#URL(注意参数这里使用的是page,当然你可随意修改)
$url = 'http://localhost:8080/test/test.php?s=sd&page=';

#当前页两边显示数字个数
$num_display = 2;
#获取当前页
$_GET ['page'] = isset ( $_GET ['page'] ) ? $_GET ['page'] : 1;

$page = Page_html::page ( 100, 10, $_GET ['page'], $url, $num_display );
#这里将offset的计算放入到page类里
$offset = Page_html::get_offset ();


/**
 * 输出结果HTML
 */
header ( 'Content-type:text/html;charset=utf-8' );
print ($page) ;

当然,根据功能需求,可以增删一些代码,比如跳转页功能不要,可将其删除即可。

详情: http://fc-lamp.blog.163.com/blog/static/17456668720111113280400/



标签: <无>

代码片段(1) [全屏查看所有代码]

1. [图片] r.jpg    

精彩图集

赞助商链接