PHP+mysql數據庫簡單分頁實例-sql分頁

前幾天冷月寫了一篇博文《php基礎編程-php鏈接mysql數據庫-mysqli的簡單使用》,不少小夥伴在學習後都知道了php與mysql數據庫的鏈接,今天冷月分享一個簡單的分頁實例php

首先,咱們來看一下效果:
html

這個案例其實很簡單,那麼,咱們如何肯定當前頁所須要的數據是哪些呢?主要用到的核心sql語句就是:mysql

SELECT * FROM 表名 LIMIT 起始位置,顯示條數

咱們應該在url後面採用GET的方式傳遞一個page的參數,好比:
http:// page.php?p=1sql

而後用$_GET['p']來接收到,這樣咱們就拿到了當前的頁面。而後咱們要定義一個常量來保存一頁顯示的條數。這樣,咱們就可以憑藉起始位置,顯示條數來獲取數據了。數據庫

示例代碼以下:編程

/**
 * Created by 冷月小白.
 * 微信公衆號: 學長冷月

 */
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<style>
    div.page{
        text-align: center;
    }
    div.content {
        height: 300px;
    }
    div.page a{
        border: 1px solid #aaaadd;
        text-decoration: none;
        padding: 2px 5px 2px 5px;
        margin: 2px;
    }
    div.page span.current{
        border: 1px solid #000099;
        background-color: #000099;
        padding: 4px 6px 4px 6px;
        margin: 2px;
        color: #ffffff;
        font-weight: bold;
    }
    div.page span.disable{
        border: 1px solid #eeeeee;
        padding: 2px 5px 2px 5px;
        margin: 2px;
        color: #dddddd;
    }
    div.page form{
        display: inline;
    }
</style>
<body>

<?php


/*1.傳入頁碼*/
$page = $_GET['p'];

/*2.根據頁碼取出數據, php -> mysql*/
$host = "localhost";
$username = "root";
$password = "123456";
$db = "page";
$pageSize = 3;

$showPage = 5;

//鏈接數據庫
$conn = mysqli_connect($host, $username, $password, $db);
if (!$conn) {
    var_dump("鏈接失敗");
}

//設置數據庫的編碼格式,防止亂碼
mysqli_query($conn, "SET NAMES UTF8");

//編寫sql獲取分頁數據 SELECT * FROM 表名 LIMIT 起始位置,顯示條數
$sql = "SELECT * FROM test LIMIT " . ($page - 1) * $pageSize . ",{$pageSize}";

//把sql語句傳送數據中
$result = mysqli_query($conn, $sql);

//處理數據
echo "<div class='content'>";
echo "<table border='1' cellspacing='0' width='40%' align='center'>";
echo "<tr><td>ID</td><td>name</td></tr>";
while ($row = mysqli_fetch_assoc($result)) {
    echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td></tr>";
}
echo "</table></div>";

//釋放結果,關閉鏈接
mysqli_free_result($result);

//獲取數據總數
$total_sql = "SELECT COUNT(*) FROM test";
$total_result = mysqli_fetch_assoc(mysqli_query($conn, $total_sql));
$total = $total_result['COUNT(*)'];
$total_page = ceil($total / $pageSize);

mysqli_close($conn);

//3.顯示數據 + 分頁條
$page_banner = '<div class="page">';
if ($page > 1) {
    $page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=1" . "'>首頁</a>";
    $page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=" . ($page - 1) . "'>上一頁</a>";
}else{
    $page_banner .= "<span class='disable'>首頁</span>";
    $page_banner .= "<span class='disable'>上一頁</span>";
}

//初始化數據
$start = 1; //開始頁面
$end = $total_page; //結束頁面
$pageOffset = ($showPage - 1) / 2;
if ($total_page > $showPage) {  //若是總頁面大於顯示的頁面
    if ($page > $pageOffset + 1) { //若是當前頁面大於偏移量
        $page_banner .= "...";
    }
    if ($page > $pageOffset) { //當前頁大於偏移量
        $start = $page - $pageOffset;
        $end = $total_page > $page + $pageOffset ? $page + $pageOffset : $total_page;
    } else {
        $start = 1;
        $end = $total_page > $showPage ? $showPage : $total_page;
    }
    if ($page + $pageOffset > $total_page) {
        $start = $start - ($page + $pageOffset - $end);
    }
}

for ($i = $start; $i <= $end; $i++) {
    if ($page == $i){
        $page_banner .="<span class='current'>{$i}</span>";
    }else{
        $page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p={$i}" . "'>{$i}</a>";

    }
}

//尾部省略
if ($total_page > $showPage && $total_page > $page + $pageOffset){
    $page_banner .= "...";
}

if ($page < $total_page) {
    $page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=" . ($page + 1) . "'>下一頁</a>";
    $page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p={$total_page}" . "'>尾頁</a>";
}else{
    $page_banner .= "<span class='disable'>下一頁</span>";
    $page_banner .= "<span class='disable'>尾頁</span>";
}
$page_banner .= "總頁數{$total_page},";
$page_banner .= "<form action='demo1.php' method='get'>";
$page_banner .= "到第<input type='text' size='2' name='p'>頁";
$page_banner .= "<input type='submit' value='肯定'>";
$page_banner .= "</form></div>";



echo $page_banner;
?>
</body>

</html>

想要獲取源文件的小夥伴能夠關注冷月的微信公衆號:學長冷月。回覆:分頁。冷月將會把整理好的文件發給您!微信

歡迎關注個人公衆號:學長冷月,得到獨家整理的學習資源和平常乾貨推送。
若是您對個人專題內容感興趣,也能夠關注個人博客:guoyu7.com學習

相關文章
相關標籤/搜索