博客列表 >第30天之PHP制作数据表分页

第30天之PHP制作数据表分页

Ryan的博客
Ryan的博客原创
2018年01月06日 01:06:56678浏览

本次作业练习,通过使用Mysql的PDO预处理技术来实现数据列表的分页功能。

页面前端效果采用Bootstrap布局和分页,并且实现分页越界禁用效果。


页面效果截图:

QQ截图20180106010823.png


数据库表:

QQ截图20180106012053.png


<?php
/*
 *
 */
header('Content-Type:text/html; charset=UTF-8');

$page = isset($_GET['p'])? $_GET['p']:1;
$page = ($page <= 0 ) ? 1 : $page;

$num = 5;  // 每页显示的条数

// 创建PDO数据库连接对象
$pdo = new PDO('mysql:dbname=demo','root', 'root');

//计算共计多少页
$pdoStmt2 = $pdo->prepare("SELECT * FROM user1");
$pdoStmt2->execute();
$totalPage = ceil($pdoStmt2->rowCount() / $num);  //ceil() 函数向上舍入为最接近的整数。算出总共的页数
$page = ($page >= $totalPage) ? $totalPage : $page;

$offset = ($page-1)*$num;  // 偏移量,从这个数量的条数开始显示,即显示的起始位置


//获取到所有数据,用表格显示出来
$sql = "SELECT `id`,`name`,`email` FROM `user1` LIMIT :offset, :num";
$pdoStmt = $pdo->prepare($sql);
$pdoStmt->bindParam(':offset', $offset, PDO::PARAM_INT);  // PDO::PARAM_INT是调用了PDO的一个常量PARAM_INT,这个参数要求绑定的数据必须是数字类型
$pdoStmt->bindParam(':num', $num, PDO::PARAM_INT);
$res = $pdoStmt->execute();

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
 <!-- 导入bootstrap样式表-->
 <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css">
 <!-- 导入jquery库脚本,要在bootstrap脚本之前导入-->
 <script src="jquery-3.2.1.js"></script>
 <!-- 导入bootstrap js脚本-->
 <script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>
 .tbclass {
            text-align: center;
        }
        .tbclass th {
            text-align: center;
            background-color: #ff8500;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4 text-center"><h3>用户信息列表</h3></div>
        <div class="col-md-4"></div>
    </div>
    <div class="row">
        <div class="col-md-2"></div>
        <div class="col-md-8">
            <table class="table table-bordered table-hover tbclass">
                <tr>
                    <th>ID</th>
                    <th>用户名</th>
                    <th>邮箱</th>
                </tr>
 <?php
 foreach ($pdoStmt as $row) {
                    echo '<tr>';
 echo '<td>'.$row['id'].'</td><td>'.$row['name'].'</td><td>'.$row['email'].'</td>';
 echo '</tr>';
 }
                ?>
 </table>
        </div>
        <div class="col-md-2"></div>
    </div>
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4 text-center">
<!--         分页标签开始-->
 <nav aria-label="Page navigation">
                <ul class="pagination">
 <?php

 echo '<li><a href="?p=1">首页</a></li>';
 echo '<li><a href="?p=';
 echo (($page-1)==0)?1:($page-1);
 echo '" aria-label="Previous"><span aria-hidden="true">«</span></a></li>';
 for ($i=1; $i<=$totalPage; $i++) {
                        echo '<li';
 if ($page == $i){
                            echo ' ';
 }
                        echo '><a href="?p='.$i.'">'.$i.'</a></li>';
 }
                    echo '<li';
 echo ($page==$totalPage)?' ':'';
 echo '><a href="?p=';
 echo ($page >= $totalPage) ? $totalPage : ($page+1);
 echo '" aria-label="Next"><span aria-hidden="true">»</span></a></li>';
 echo '<li><a href="?p='.$totalPage.'">尾页</a></li>';
 ?>
<!---->
<!--                    <li><a href="#" aria-label="Previous"><span aria-hidden="true">«</span></a></li>-->
<!--                    <li><a href="#">1</a></li>-->
<!--                    <li><a href="#">2</a></li>-->
<!--                    <li><a href="#">3</a></li>-->
<!--                    <li><a href="#">4</a></li>-->
<!--                    <li><a href="#">5</a></li>-->
<!--                    <li><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li>-->
 </ul>
            </nav>
<!--           分页标签结束 -->
 </div>
        <div class="col-md-4"></div>
    </div>
    <div class="row">

    </div>
</div>

</body>
</html>


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议