1. 程式人生 > >PHP、MYSQLI實現分頁(初學者)

PHP、MYSQLI實現分頁(初學者)

php mysqli

//求出總條數 假如13條

/*需求:每頁只顯示5條 即分三頁
* ceil(總條數/每頁顯示數) ceil是向上取整,就算剩一條也要單獨占一頁
*/


select * from bbs_user limit 0 , 5 這是第一頁 1

select * from bbs_user limit 5 , 5 這是第二頁 2

select * from bbs_user limit 10 , 5 這是第三頁 3

select * from bbs_user limit 15 , 5 這是第四頁 4

推出來的公式
($page - 1) * $sum (5) //$page是當前頁數




先寫好了查詢頁面,如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系統主頁面</title>
</head>

<body>
<?php 
    $conn = mysqli_connect("localhost","root","");
    if(!$conn){
        echo "失敗";
    }
    
    mysqli_select_db($conn,"bbs");
    $sql = "select * from bbs_user";
    $obj = mysqli_query($conn,$sql);
    echo "<center>";

    echo "<table border = 1 cellspacing = '0' cellpadding = '10'>";
    echo "<th>編號</th><th>姓名</th><th>密碼</th><th>地址</th><th>性別</th><th>年齡</th><th>操作</th>";
    while($row = mysqli_fetch_assoc($obj)){
        echo "<tr>";
            echo '<td>'.$row['id'].'</td>';
            echo '<td>'.$row['username'].'</td>';
            echo '<td>'.$row['password'].'</td>';
            echo '<td>'.$row['address'].'</td>';
            echo '<td>'.$row['sex'].'</td>';
            echo '<td>'.$row['age'].'</td>';
            echo '<td><a href = "del.php?id='.$row['id'].'">刪除</a>/<a href = "update.php?id='.$row['id'].'">修改</a></td>';
        echo "</tr>";
    }
    
    echo "</table>";
    echo "<a href = 'add.php'>添加</a>";
    echo "<center>";
    mysqli_close($conn);
?>
</body>
</html>


在查詢界面上做了如下改變:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系統主頁面</title>
</head>

<body>
<?php 
    
    //5.設置$page的默認值
    #$page = 1;
    
    //8.修改$page的值
    $page = empty($_GET['page'])?1 : $_GET['page'];
    $conn = mysqli_connect("localhost","root","");
    if(!$conn){
        echo "失敗";
    }
    mysqli_select_db($conn,"bbs");
    
    
    //------------分頁開始-------------------
    //1.求出總條數
    $sql = "select count(*) as count from bbs_user";
    $result = mysqli_query($conn,$sql);
    $pageRes = mysqli_fetch_assoc($result);
    #var_dump($pageRes);   //13
    $count = $pageRes['count'];
    
    //2.每頁顯示數(5)
    $num = 5;
    
    //3.根據每頁顯示數求出總頁數
    $pageCount = ceil($count / $num);  //向上取整
    #var_dump($pageCount);  //3
    
    //4.根據總頁數求出偏移量
    $offset = ($page - 1) * $num;  //$page默認為 1, 下一步設置

    //------------分頁結束-------------------
    

    //6.修改sql語句
    $sql = "select * from bbs_user limit " . $offset . ',' . $num;
    
    #$sql = "select * from bbs_user";
    $obj = mysqli_query($conn,$sql);
    echo "<center>";

    echo "<table border = 1 cellspacing = '0' cellpadding = '10'>";
    echo "<th>編號</th><th>姓名</th><th>密碼</th><th>地址</th><th>性別</th><th>年齡</th><th>操作</th>";
    while($row = mysqli_fetch_assoc($obj)){
        echo "<tr>";
            echo '<td>'.$row['id'].'</td>';
            echo '<td>'.$row['username'].'</td>';
            echo '<td>'.$row['password'].'</td>';
            echo '<td>'.$row['address'].'</td>';
            echo '<td>'.$row['sex'].'</td>';
            echo '<td>'.$row['age'].'</td>';
            echo '<td><a href = "del.php?id='.$row['id'].'">刪除</a>/<a href = "update.php?id='.$row['id'].'">修改</a></td>';
        echo "</tr>";
    }
    
    echo "</table>";
    #echo "<a href = 'add.php'>添加</a>";
    echo "<center>";
    
    //10.設置上一頁下一頁的$prev和$next
    $prev = $page - 1;
    $next = $page + 1;
    
    //11.設置頁數限制
    if($prev<1){
        $prev = 1;
    }
    if($next>$pageCount){
        $next = $pageCount;
    }
    
    //關閉連接
    mysqli_close($conn);
?>

    <!--7.添加首頁、上一頁、下一頁、尾頁(href沒有鏈接)-->
    <!--9.給定鏈接,首頁和尾頁寫死,首頁就是page=1,尾頁是總頁數,上一頁先用$prev表示,下一步設置,下一頁同上一頁-->
    <a href="testFenye.php?page=1">首頁</a>&nbsp;&nbsp;&nbsp;  
    <a href="testFenye.php?page=<?php echo $prev;?>">上一頁</a>&nbsp;&nbsp;&nbsp;
    <!--混編簡寫-->
    <a href="testFenye.php?page=<?=$next;?>">下一頁</a>&nbsp;&nbsp;&nbsp;
    <a href="testFenye.php?page=<?=$pageCount;?>">尾頁</a>
    
</body>
</html>

PHP、MYSQLI實現分頁(初學者)