核心逻辑
*
* 分页显示
* 参数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;