你们把PHP分页的课删了?只剩下ajax的?

你们把PHP分页的课删了?只剩下ajax的?

//获取 分页URL
/**
 * @return string
 */
function getUrl()
{
    //判断是http还是https
    $url = '';
    //8080是http 443是HTTPS的
    $url .= $_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://';
    //得到域名
    $url .= $_SERVER['HTTP_HOST'];
    //得到?之后的
    $url .= $_SERVER['REQUEST_URI'];
    return $url;
}

/**
 * 根据page生成URL
 * @param $page
 * @param string $url
 * @return bool|string
 */
function pageUrl($page, $url = '')
{
    $url = empty($url) ? getUrl() : $url;
    //查询URL是否存在"? "
    //参数2在字符串中是否出现,返回第一次的位置,未出现则返回FALSE
    $pos = strpos($url, '?');
    //如果URL没有?存在
    if ($pos === false) {
        $url .= '?page=' . $page;
    } else {
        //substr 从$pos 的位置开始截取字符串$url 到字符串结束
        $queryString = substr($url, $pos + 1);
        //解析$queryString成为数组
        parse_str($queryString, $queryArr);
        //判断该数组是否有page元素
        if (isset($queryArr['page'])) {
            //有则删除
            unset($queryArr['page']);
        }
        //为$queryArr重新赋值
        $queryArr['page'] = $page;
        //将$queryArr重新封装成字符串
        $queryStr = http_build_query($queryArr);
        //连接成新的url
        //先得到?之前的路径,注意这里不会截取到$pos本身
        $url = substr($url, 0, $pos);
        $url .= '?' . $queryStr;
    }
    return $url;
}

//分页函数
/**
 * 分页显示
 * @param int $total 数据总数
 * @param int $currentPage 当前页
 * @param int $pageSize 每页显示条数
 * @param int $show 显示的按钮数量
 * @return  string
 */
function pages($total, $currentPage, $pageSize, $show = 6)
{
    $pageStr = '';
    //当数据库总共多少条信息$total = 每页显示几条数$pageSize;那么就不必做分页处理
    if ($total > $pageSize) {
        //得出总页数
        $totalPage = ceil($total / $pageSize);//向上取整获取总页数
        //对待当前页进行容错处理
        $currentPage = $currentPage > $totalPage ? $totalPage : $currentPage;
        //分页起始页
        //但是如果起始页出现负值则需要容错处理
        $from = max(1, $currentPage - intval($show / 2));
        //分页结束页(减一是因为起始页$from 已经显示了不应该计算在内)
        $to = $from + $show - 1;
        //当结束页大于总页则需要换一种思路:之前是从左算到右,这种情况应该从右->左
        if ($to > $totalPage) {
            $to = $totalPage;
            //加一是因为,如一共10页 要显示6页$from=10-6=4,但算上第四页到第10页
            //之间差了7页而非6页,所以应该加上1;
            $from = max(1, $to - $show + 1);
        }

        $pageStr .= '<div class = "page-nav">';
        $pageStr .= '<ul>';
        //如果$currentPage > 1 显示 首页与上一页
        if ($currentPage > 1) {
            $pageStr .= "<li><a href='" . pageUrl(1) . "'>首页</a></li>";
            $pageStr .= "<li><a href='" . pageUrl($currentPage - 1) . "'>上一页</a></li>";
        }
        //当起始页大于1则显示,...
        if ($from > 1) {
            $pageStr .= '<li>...</li>';
        }
        //循环中间显示的页码
        for ($i = $from; $i <= $to; $i++) {
            //还需要考虑样式
            if ($i != $currentPage) {
                $pageStr .= "<li><a href='" . pageUrl($i) . "'>{$i}</a></li>";
            } else {
                $pageStr .= "<li><span class='curr-page' >{$i}</span></li>";
            }
        }
        //当末页小于总页数则显示,...
        if ($to < $totalPage) {
            $pageStr .= '<li>...</li>';
        }
        //如果$currentPage < 1 显示 尾页与下一页
        if ($currentPage < $totalPage) {
            $pageStr .= "<li><a href='" . pageUrl($currentPage + 1) . "'>下一页</a></li>";
            $pageStr .= "<li><a href='" . pageUrl($totalPage) . "'>尾页</a></li>";
        }
        $pageStr .= '</ul>';
        $pageStr .= '</div>';
    }
    return $pageStr;
}

function pagesUsers($total, $currentPage, $pageSize, $show = 6)
{
    $pageStr = '';
    //当数据库总共多少条信息$total = 每页显示几条数$pageSize;那么就不必做分页处理
    if ($total > $pageSize) {
        //得出总页数
        $totalPage = ceil($total / $pageSize);//向上取整获取总页数
        //对待当前页进行容错处理
        $currentPage = $currentPage > $totalPage ? $totalPage : $currentPage;
        //分页起始页
        //但是如果起始页出现负值则需要容错处理
        $from = max(1, $currentPage - intval($show / 2));
        //分页结束页(减一是因为起始页$from 已经显示了不应该计算在内)
        $to = $from + $show - 1;
        //当结束页大于总页则需要换一种思路:之前是从左算到右,这种情况应该从右->左
        if ($to > $totalPage) {
            $to = $totalPage;
            //加一是因为,如一共10页 要显示6页$from=10-6=4,但算上第四页到第10页
            //之间差了7页而非6页,所以应该加上1;
            $from = max(1, $to - $show + 1);
        }

        $pageStr .= '<div class = "am-fr">';
        $pageStr .= '<ul class="am-pagination tpl-pagination">';
        //如果$currentPage > 1 显示 首页与上一页
        if ($currentPage > 1) {
            $pageStr .= "<li class='curr-page'><a href='" . pageUrl(1) . "'>首页</a></li>";
            $pageStr .= "<li class='curr-page'><a href='" . pageUrl($currentPage - 1) . "'>上一页</a></li>";
        }
        //当起始页大于1则显示,...
        if ($from > 1) {
            $pageStr .= "<li class='curr-page'>...</li>";
        }
        //循环中间显示的页码
        for ($i = $from; $i <= $to; $i++) {
            //还需要考虑样式
            if ($i != $currentPage) {
                $pageStr .= "<li class='curr-page'><a href='" . pageUrl($i) . "'>{$i}</a></li>";
            } else {
                $pageStr .= "<li class='curr-page'><span class='curr-page' >{$i}</span></li>";
            }
        }
        //当末页小于总页数则显示,...
        if ($to < $totalPage) {
            $pageStr .= "<li class='curr-page'>...</li>";
        }
        //如果$currentPage < 1 显示 尾页与下一页
        if ($currentPage < $totalPage) {
            $pageStr .= "<li class='curr-page'><a href='" . pageUrl($currentPage + 1) . "'>下一页</a></li>";
            $pageStr .= "<li class='curr-page'><a href='" . pageUrl($totalPage) . "'>尾页</a></li>";
        }
        $pageStr .= '</ul>';
        $pageStr .= '</div>';
    }

    return $pageStr;
}

对应这个代码的PHP分页课没了??不好的还剩下,好的没了?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕查理 2019-02-22 15:18:32

您好,代码含义:当前展示页减去-(显示的按钮数量/2) 的结果为负数时,起始页为1,否则使用相减的结果为起始页。

$from变量表示的是下图位置处红框位置的内容,按钮数量一共为6个,那么取得起始页则是:当前展示页5减去-(显示的按钮数量6/2),结果为2。

进行容错处理是因为如果起始页得出的结果为负数,那么应该是不存在的页数,所以使用max函数,取得两个数值中较大的数值。

http://img1.sycdn.imooc.com//climg/5c6fa1330001949c04480037.jpg

另根据同学回复中的话语,是在阶段一中找到了同学贴出的代码,并非是在同学说的分页中。

祝学习愉快!

  • 提问者 轩辕小齐V #1
    谢谢,能不能把这课整回来啊,其实挺好的啊,哎,这个地方设计的听精妙的。 如果不能再上架,能不能麻烦您讲下,老师是怎么相处这个算法的,这确实有点过分,但是这里确实太精妙了,跪求解释!万分感谢!
    2019-02-22 17:13:35
  • 好帮手慕查理 回复 提问者 轩辕小齐V #2
    您好,老师是根据自己开发经验设计的。祝学习愉快!
    2019-02-22 18:18:48
好帮手慕查理 2019-02-21 13:51:40

您好,分页的课下架了。在Ajax课程中进行了分页讲解。祝学习愉快!

  • 提问者 轩辕小齐V #1
    姐姐,这样不好吧?代码中的这行什么意思?解释下好吗?我忘了! //但是如果起始页出现负值则需要容错处理 $from = max(1, $currentPage - intval($show / 2)); 其实,我们都不会能讲得清楚,我们就觉得好,可惜你们偏把讲得清楚的删了,话都说不清的留下了,怎么说删就删啊!
    2019-02-21 14:23:44
  • 提问者 轩辕小齐V #2
    $from = max(1, $currentPage - intval($show / 2)); 这是什么意思,当时就没理解忘了问了
    2019-02-21 14:25:24
  • 好帮手慕查理 回复 提问者 轩辕小齐V #3
    您好,这句代码的计算的是分页起始页,作用是“如果起始页出现负值则需要容错处理”。当 当前展示页减去-(显示的按钮数量/2) 的结果为负数时,起始页为1,否则使用相减的结果为起始页。祝学习愉快!
    2019-02-21 15:18:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师