一个通用的php分页函数

一个通用的php分页函数

特点:

1.只完成分页链接生成功能,不与数据库查询耦合

2.支持自定义URL, 从而支持动态页,静态页、ajax分页链接方式

<?php
/**
     * 返回分页链接字符串
     * @param int $page 当前页码 0或1均视为第一页
     * @param int $total 记录总数
     * @param int $pagesize 每页显示的记录数
     * @param int $number   每页显示的分页链接数量
     * @param string $url   分页链接url样式,默认直接使用GET['page']传递
     *        但针对一些特殊情况,如ajax分页,静态页分页,可能不能使用GET传递页码,需要定义url样式
     *        其中必须包含{page}字符串,将被替换为对应的页码 如
     *        $url = 'list_{page}.html';
     *        $url = 'javascript:funct(a,b,{page})';
     * @return string 分页链接HTML代码
     */ 
public static function pagelink($page=0,$total=0,$pagesize=0,$number=10,$url='') {
        $page = max(intval($page),1);
        $total = intval($total);
        $pagesize = max(intval($pagesize),0);
        $pages = ceil($total/$pagesize);
                
        if($pages < 2) return ;        
        
        if(!$url) {
            $url = $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
            $url = preg_replace('/\&*page=\d*\b/','',$url);
            $url .= empty($_SERVER['QUERY_STRING']) ? "page={page}" : "&page={page}";
        }        
        
        $s = '';
        if($page > 1) {
            $s .= '<a title="第一页" class="first_page" href="'.str_replace('{page}',1,$url).'">&lt;&lt;</a>';
            $s .= '<a title="上一页" class="prev_page" href="'.str_replace('{page}',($page-1),$url).'"> &lt; </a>';
        }else {
            $s .= '<a title="第一页" class="first_page"> &lt;&lt; </a>';
            $s .= '<a title="上一页" class="prev_page"> &lt; </a>';
        }
        
        if($number%2) {
            $start = max($page -ceil($number/2)+1,1);
        }else {
            $start = max($page- intval($number/2),1);
        }
        
        
        $end = min($start+$number-1,$pages);
        
        if(($end - $start) < ($number-1)) {
            $start = max($end -$number+1, 1);
        }
        
        
        for($i = $start; $i <= $end; $i++) {
            $sel = $page == $i ? 'class="current_page"' : '';
            $link = str_replace('{page}',$i,$url);
            $href = $page == $i ? '' : "href=\"$link\"";            
            $s .= "<a $sel $href> $i </a>";
        }
        
        if($page < $pages) {
            $link = str_replace('{page}',$page+1,$url);
            $s .= "<a class=\"next_page\" href=\"$link\" title=\"下一页\"> &gt; </a>";
            $link = str_replace('{page}',$pages,$url);
            $s .= "<a class=\"last_page\" href=\"$link\" title=\"最后页\"> &gt;&gt; </a>";
        }else {
            $s .= "<a class=\"netxt_page\"> &gt; </a>";
            $s .= "<a class=\"last_page\"> &gt;&gt; </a>";
        }
        
        $s .= "<a class=\"total\">总数 $total </a>";        
        
        return $s ;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值