php分页加载

 核心逻辑

*
 * 分页显示
 * 参数1 数据总数
 * 参数2 当前页面
 * 参数3 每页显示条数
 * 参数4 显示按钮数
 */
function pages($total, $currentPage, $pageSize, $show = 6)
{
    $pageStr = '';
    //仅当总数大于每页显示条数 才进行分页查询
    if ($total > $pageSize) {
        //向上取整 获取总页数
        $totlaPage = ceil($total / $pageSize);
        //对当前页面进行处理
        $currentPage = $currentPage > $totlaPage ? $totlaPage : $currentPage;

        //分页起始页面 显示页面
        $from = max($currentPage - intval($show / 2), 1);
        $to = $from + $show - 1;
        //当结束页面大于总页
        if ($to > $totlaPage) {
            $to = $totlaPage;
            $from = max($to - $show + 1, 1);
        }
        $pageStr = '';

//             1 2 3 4 5 6 7 8 9
        //当当前页面大于1 的时候 存在首页和上一页
        $pageStr .= '<div class="page-nav">';
        $pageStr .= '<ul>';
        if ($currentPage > 1) {
            $pageStr .= "<li><a href='" . pageUrl(1) . "'>首页</a></li>";
            $pageStr .= "<li><a href='" . pageUrl($currentPage - 1) . "'>上一页</a></li>";
        }

        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='first-page'><a href='" . pageUrl($i) . "'>{$i}</a></span></li>";
            }
        }
        if ($to < $totlaPage) {
            $pageStr .= " <li>...</li>";
        }

        if ($currentPage < $totlaPage) {
            $pageStr .= "<li><a href='" . pageUrl($currentPage + 1) . "''>下一页</a></li>";
            $pageStr .= "<li><a href='" . pageUrl($totlaPage) . "'>尾页</a></li>";

        }
        $pageStr .= '</ul>';
        $pageStr .= '</div>';
    }
    return $pageStr;

}
function pageUrl($page, $url = '')
{
    $url = empty($url) ? getUrl() : $url;
    //返回字符串对应的位置
    $pos = strpos($url, "?");
    if ($pos === false) {
        $url .= '?page=' . $page;
    } else {
        $queryString = substr($url, $pos + 1);
        //解析$queryString 为数组
        parse_str($queryString, $queryArray);
//        array(3) { ["page"]=> string(1) "2" ["a"]=> string(1) "1" ["b"]=> string(1) "2" }
        //将queryArr 重新拼接成queryString
        $queryArray['page'] = $page;
        $str = http_build_query($queryArray);
        $url = substr($url, 0, $pos) . '?' . $str;
    }
    return $url;
}

/**
 * 获取当前url
 * @return string
 */
function getUrl()
{
    $url = '';
    $url .= $_SERVER['SERVER_PORT'] == 443 ? 'https:/' : 'http://';
    $url .= $_SERVER['HTTP_HOST'];
    $url .= $_SERVER['REQUEST_URI'];
    return $url;
}

参数的由来

//检查page参数
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
//把page与1对比 取中间最大值
$page = max($page, 1);
//每页显示条数
$pageSize = 12;
//page=1 limit 0 2
//page=2 limit 2 2
//page=3 limit 4 2
$offSit = ($page - 1) * $pageSize;
if (empty($search)) {
    $sql = "SELECT COUNT(`id`) as  total from `la_goods` where ( `status`='1' {$vipStr})  ";
} else {
    if ($search_type == 1) {
        $sql = "SELECT COUNT(`id`) as  total from `la_goods` where ( `status`='1' {$vipStr})and (`name` like '%{$search}%' or `cid` like '%{$search}%' or `content` like '%{$search}%')";
    } else if ($search_type == 2) {
        $sql = "SELECT COUNT(`id`) as  total from `la_goods` where ( `status`='1' {$vipStr}) and `cid`='{$search}'";
    }
}
$total = 0;
if (!$obj = mysqli_query($con, $sql)) {
    die(mysqli_error($con));
}
$result = mysqli_fetch_assoc($obj);
$total = isset($result['total']) ? intval($result['total']) : 0;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值