求助。。。 php分页太多 怎么控制每次显示9个页码

求助。。。php分页太多怎么控制每次显示9个页码... 求助。。。 php分页太多 怎么控制每次显示9个页码 展开
 我来答
晕大海
推荐于2018-05-14 · 互联网研发团队从业者
晕大海
采纳数:75 获赞数:106

向TA提问 私信TA
展开全部
/**
 * 分页函数
 *
 * @param $num 信息总数
 * @param $curr_page 当前分页
 * @param $perpage 每页显示数
 * @param $urlrule URL规则
 * @param $array 需要传递的数组,用于增加额外的方法
 * @return 分页
 */
function pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) {
    if(defined('URLRULE') && $urlrule == '') {
        $urlrule = URLRULE;
        $array = $GLOBALS['URL_ARRAY'];
    } elseif($urlrule == '') {
        $urlrule = url_par('page={$page}');
    }
    $multipage = '';
    if($num > $perpage) {
        $page = $setpages+1;
        $offset = ceil($setpages/2-1);
        $pages = ceil($num / $perpage);
        if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages);
        $from = $curr_page - $offset;
        $to = $curr_page + $offset;
        $more = 0;
        if($page >= $pages) {
            $from = 2;
            $to = $pages-1;
        } else {
            if($from <= 1) {
                $to = $page-1;
                $from = 2;
            }  elseif($to >= $pages) {
                $from = $pages-($page-2);
                $to = $pages-1;
            }
            $more = 1;
        }
        $multipage .= '<a class="a1">'.$num.L('page_item').'</a>';
        if($curr_page>0) {
            $multipage .= ' <a href="'.pageurl($urlrule, $curr_page-1, $array).'" class="a1">'.L('previous').'</a>';
            if($curr_page==1) {
                $multipage .= ' <span>1</span>';
            } elseif($curr_page>6 && $more) {
                $multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>..';
            } else {
                $multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>';
            }
        }
        for($i = $from; $i <= $to; $i++) {
            if($i != $curr_page) {
                $multipage .= ' <a href="'.pageurl($urlrule, $i, $array).'">'.$i.'</a>';
            } else {
                $multipage .= ' <span>'.$i.'</span>';
            }
        }
        if($curr_page<$pages) {
            if($curr_page<$pages-5 && $more) {
                $multipage .= ' ..<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';
            } else {
                $multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';
            }
        } elseif($curr_page==$pages) {
            $multipage .= ' <span>'.$pages.'</span> <a href="'.pageurl($urlrule, $curr_page, $array).'" class="a1">'.L('next').'</a>';
        } else {
            $multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';
        }
    }
    return $multipage;
}

思路就是当分页大于9的时候,就把中间部分的分页显示成。。。就行了。

通过if判断当大于9,就执行

if($curr_page<$pages-5 && $more) {

具体的你看一下代码就明白了。

zhuimengren361
2015-08-17 · 知道合伙人软件行家
zhuimengren361
知道合伙人软件行家
采纳数:96 获赞数:188
毕业于湖南大学计算机专业,从事6年的开发和技术管理经验,现任上海开亨信息科技公司技术总监

向TA提问 私信TA
展开全部
这个需要看你的分页的类了,我有一个分页的类,每页的条数和页码的控制都做过处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hw2839469
2014-08-11 · 超过22用户采纳过TA的回答
知道答主
回答量:58
采纳率:100%
帮助的人:40.7万
展开全部
$pageAll = 100;
$pageNow = isset($_GET['id'])?$_GET['id']:1;
if ($pageNow < 1) {
$pageNow = 1;
}
if ($pageNow > $pageAll) {
$pageNow = $pageAll;
}
if ($pageNow <10) {
$start = 1;
$end = 9;
}
elseif ($pageNow >= 10 && $pageNow < 92) {
$start = $pageNow - 4;
$end = $pageNow+4;
}
elseif ($pageNow >= 92) {
$start = 92;
$end = 100;
}{

}
$pre = $pageNow - 1;
$next = $pageNow + 1;
echo "<a href = 'test.php?id=$pre'>pre</a>".' ';
for ($i=$start; $i <= $end ; $i++) {
echo "<a href = 'test.php?id=$i'>$i".''."</a>".' ';
}
echo ' '."<a href = 'test.php?id=$next'>next</a>".' ';
更多追问追答
追问
这个100是总页数么? 我的有1600+就是得写1600+了对吧
追答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在深情悲欢两头
2015-08-09 · TA获得超过1656个赞
知道小有建树答主
回答量:3122
采纳率:0%
帮助的人:684万
展开全部
做个分页处理类完美搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式