1. 分页查询

  1. select * from tableName limit [start,] count;
  • start: 表示起始时的记录位置 ,默认从0开始计算,(可以省略,起始位置 为0)
  • count: 表示获取数据的条数

2. 起始位置计算

start = (page - 1) * count

3. 总页数计算

allPage = ceil(allRow / pageSize);

所有记录条数 / 页面显示条数 后通过 ceil进行向上取整

4. 数学计算函数

  • ceil 向上进一取整

    ceil(float $value): float
    
  • floor 舍去取整

    floor(float $value): float
    
  • round 四舍五入取整

    round(float $val, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): float
    
    <?php
    var_dump(round(3.4));
    var_dump(round(3.5));
    var_dump(round(3.6));
    var_dump(round(3.6, 0));
    var_dump(round(5.045, 2));
    var_dump(round(5.055, 2));
    var_dump(round(345, -2));
    var_dump(round(345, -3));
    var_dump(round(678, -2));
    var_dump(round(678, -3));
    ?>
    

2. 案例讲解(班级数据分页显示)

<?php
    // 连接数据库
    $url = "mysql:host=mysql;dbname=database_lesson_30511_14_11204";
    $user = "lesson_30511_14_11204";
    $passwd = "c6e5d1f2cd01ae3ac950a5745ea6fbdf";
    $pdo = new PDO($url,$user,$passwd);

    // 相关变量
    $page = 1; // 当前页码
    $pageSize = 7;  // 当前每页显示记录数
    $start = 0; // 获取分页数据时的起始位置 
    $allNum = 0; // 表中所有的记录数
    $allPage = 0; // 表中所有的页数

    // 获取所有的记录数
    $sql = "select count(*) from class;";
    $st = $pdo->query($sql);
    // 保存所有的记录数
    $allNum = $st->fetch()[0];
    // 根据所有记录数和每页显示记录数,计算出所有页数
    $allPage = ceil($allNum/$pageSize);


    // 通过查询参数,获取当前页码
    if(isset($_GET['p'])){
        $page = $_GET['p'];
    }

    // 通过页码云计算起始查询位置,进进行获取数据
    $start = ($page-1)*$pageSize;
    $sql = "select * from class limit {$start}, {$pageSize}";
    $st = $pdo->query($sql);
    $res = $st->fetchAll(PDO::FETCH_ASSOC);


?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #content{
            width:1200px;
            text-align: center;
            margin:0 auto;
            background: cyan;
        }

        #btn{
            width:1200px;
            list-style: none;
            display: flex;
            justify-content: center;
        }
        #btn>li{
            border: 1px solid blue;
            border-radius:10px;
            width:100px;
            margin:0 50px;
        }
        a{
            text-decoration: none;
        }

    </style>
</head>
<body>
    <div id="content">
        <div id='title'>
            <h1>班级信息显示</h1>
        </div>
        <div id='table'>
            <table border="1" align='center' width="1000" >
                <tr background="#ccc">
                    <th>班级名称</th>
                    <th>班主任</th>
                    <th>班级人数</th>
                    <th>班主任电话</th>
                </tr>
                <!--对查询数据进行显示-->
                <?php foreach($res as $val){ ?>
                    <tr>
                        <td> <?php echo $val["name"]; ?></td>
                        <td> <?php echo $val["teacher_name"]; ?></td>
                        <td> <?php echo $val["number"]; ?></td>
                        <td> <?php echo $val["phone"]; ?></td>
                    </tr>
                    <?php } ?>
            </table>
        </div>
        <!--控制按钮-->
        <div id='ctl'>
            <ul id='btn'>
                <li>
                    <!--如果是到首页,固定页码为1-->
                    <a href="<?php echo "index.php?p=1"; ?>"> 
                    首页
                    </a>
                </li>
                <li>
                    <!--如果当前页面不是第一页,则可以进行页面减一,跳到上一次,否则一直为第一页-->
                    <a href="<?php 
                    if($page != 1){
                        echo "index.php?p=" . ($page - 1);
                    }else{
                        echo "index.php?p=1";
                    }
                    ?>"> 
                    上一页
                    </a>
                </li>
                <li>
                    <!--如果当前页面不是第一页,则可以进行页面加一,跳到下一次,否则一直为末页-->
                   <a href="<?php 
                    if($page != $allPage){
                        echo "index.php?p=" . ($page + 1);
                    }else{
                        echo "index.php?p=" . $allPage;
                    }
                    ?>"> 
                    下一页
                    </a>
                </li>
                <li>
                    <!-- 固定页码为最后一页-->
                    <a href="<?php echo "index.php?p=" . $allPage;?>"> 
                    末页
                    </a>
                </li>

            </ul>
        </div>
    </div>

</body>
</html>