登录  /  注册
博主信息
博文 48
粉丝 0
评论 0
访问量 39020
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
0910-分页查询
3期-Shawn的博客
原创
604人浏览过

1问答:分页查询的原理与偏移量的计算方法

分析分页的原理:

首先获取数据的总记录数,通过总记录和每页显示的数量得出总页数。

 * 1. LIMIT 参数的作用: 偏移量与显示数量

 * 2. 如果控制每页显示的数量

 * 3. 接收GET参数,用p表示当前页数,每页显示3条

 * 4. 需要的参数:

 * (1).totalPage 总页数

 * (2).totalNumber 一共有多少条数据

 * (3).pageSize 每页显示多少条数据

 * (4)currentPage 当前第几页

 * (5)*.rangeStart 起始页

偏移量的计算公式: (页数-1)*每页显示的数量

 *    offset = (page-1)*num


2编程: 实现分页查询,要求有上一页,下一页,直接跳到首页和尾页,中间页的生成,以及快速页码跳转功能

0910zuoye1.png0910zuoye2.png0910zuoye3.png0910zuoye4.png

实例

<!DOCTYPE html>
<html>
<head>
	<title>用户信息表</title>
	<meta charset="utf-8">
	<style>
		table,th,td{border: 1px solid black;}
		table {
             border-collapse: collapse;
             width: 60%;
             margin: 30px auto;
             text-align: center;
              }
        table caption {font-size: 1.5rem;margin-bottom: 15px;}
        table th {background-color: lightskyblue;}
        h3 {text-align: center;}
        h3 a {
        	text-decoration: none;
            margin-left: 10px;
            border: 1px solid black;

            display: inline-block;
            height: 30px;
            min-width: 30px;
            padding: 0 10px;
            background-color: lightgreen;
        }
        h3 a:hover{background-color: red;color: white;}
        form {display: inline;}
	</style>
</head>
<body>

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=edu','root','root');

//手工修改url中的get参数可以实现翻页查询
$page = isset($_GET['p']) ? $_GET['p'] : 1;
$offset = ($page-1)*5;
$sql = "SELECT * FROM `user` LIMIT {$offset}, 5;";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

$stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");
$stmt->execute();
$total = $stmt->fetchColumn(0);
$pages = ceil($total / 5);  //获取到总页数 $pages
?>
<table>
	<caption>员工信息表</caption>
	<tr>
		<th>ID</th>
		<th>姓名</th>
		<th>邮箱</th>
	</tr>
	<?php  foreach ($rows as $row): ?>
	<tr>
		<td><?php  echo $row['id']; ?></td>
		<td><?php  echo $row['name']; ?></td>
		<td><?php  echo $row['email']; ?></td>
	</tr>
<?php  endforeach; ?>
</table>
<h3>
	<a href="http://www.ceshi.com/ceshi1.php?p=1">首页</a>
	<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo (($page-1)==0)? 1 : ($page-1); ?>">上一页</a>
	<!-- <a href="http://www.ceshi.com/ceshi1.php?p=1">1</a>
	<a href="http://www.ceshi.com/ceshi1.php?p=2">2</a>
	<a href="http://www.ceshi.com/ceshi1.php?p=3">3</a> -->
 
<!--生成中间页码-->
    <!--将当前页码的背景色锁定:当前页码等于GET中的参数p-->
    <?php for($i=1; $i<=$pages; $i++): ?>
        <a

          href="http://ceshi.com/ceshi1.php?p=<?php echo $i ?>"

          <?php
            echo ($i == $page) ? 'style="background-color: red;"' : '';//设置被选中的当前页突出显示
          ?>

        >

        <?php echo $i ?>

        </a>
    <?php endfor; ?>
	<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo (($page+1)>$pages)?$pages:($page+1); ?>">下一页</a>
	<a href="http://www.ceshi.com/ceshi1.php?p=<?php echo $pages; ?>">尾页</a>

	<!--实现页面的快速跳转-->
    <form action="" method="get">
        第 <select name="p" id="">

            <?php for($i=1; $i<=$pages; $i++): ?>
                <!-- 循环输出全部页码,并锁定当前页-->
                <option value="<?php echo $i; ?>"
                <?php
                if($page==$i){echo 'selected';}
                //实现跳转后当前页面和选中页码一样。不要这段代码依然可以正常工作,不过跳转后会显示默认选项
                ?>
                >


                 <?php echo $i; ?>

                </option>



            <?php endfor; ?>


        </select>页

        <button>跳转</button>
    </form>


</h3>


</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例



批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学