网页数据分页

本文介绍了网页数据分页的基本原理,通过PHP演示如何利用MySQL的LIMIT关键字进行数据分页,展示了如何根据当前页数获取指定范围的记录,以及获取上一页和下一页的PHP代码片段。
摘要由CSDN通过智能技术生成

数据分页概述

对大量数据进行分页显示是 Web 开发中最常见的情况,但大多刚开始接触 Web 开发的开发人员,对分页技术往往比较迷惘,下面用注册用户信息的数据为例来演示一下 PHP 中基本的数据分页显示原理。

数据准备
|id | user | pwd
|1 | 小张 | 123
|2| 小李 | 345
|3 | 小王| 123
|4 | 小孙 | 345
|5 | 张三 | 123
|6 | 李四 | 345

数据库准备

CREATE TABLE `student` (
  id int(100)  NOT NULL primary key auto_increment,
  user varchar(50) NOT NULL  '',
  pwd varchar(100) NOT NULL ''
  ) 

分页原理
目的很简单,就是将较多数据记录,分页显示出来,每一页显示设定的数据条数。

PHP 分页技术核心在于确定当前的页数,然后利用 MySQL 的 LIMIT 关键字来指定输出对应的记录数。
如当前是第 1 页时,那么就是 LIMIT 0,4(假设一页输出 4 条记录),第 2 页时,就是 LIMIT 4,4,第 3 页时,就是 LIMIT 8,4 … 依此类推,第 n 页时,就是 LIMIT (n-1)*4,4 。
而当前页数 $p 这个参数,通过 URL 来获取。

数据库链接

$mysqli = @new mysqli("localhost",'root','','myschool');
if($mysqli ->connect_error){
	// show_error('连接数据库失败','register.html');
	die('连接数据库失败'.$mysqli->connect_error);
}

获取上一页,下一页的php代码

 <?php if($page-1>0){ ?>

    <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page-1 ?>">上一页</a></li>
     <?php } ?>
      <?php if($page+1<=$page_count) { ?>

    <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page+1 ?>">下一页</a></li>

<?php } ?>

完整代码

<?php

//设置北京时间
 date_default_timezone_get('PRC');
//预定义变量$_GE,该数组存储的是以get方式请求的数据
 // print_r($_GET);
  const PAGE_SIZE =2;//每页多少条记录
 $page = 1;//默认为第1页
 if(isset($_GET['page'])){

 $page = $_GET['page'];
}
 // echo $page;
 // exit;


$conn = @new mysqli('localhost','root','','myschol');
if($conn ->connect_error){
	
	die('连接数据库失败');
}
//设置编码格式
$conn->set_charset('utf8');

//计算记录总数
$sql = "select count(*) from user";
$result = $conn->query($sql);
$date =$result->fetch_row();
$count = $date[0];//总记录 10

//总页数 取整数(ceil,floor,)
$page_count =ceil($count/PAGE_SIZE);
echo $page_count;


//page=1,$index=0;page=2,$index=2;page=3,$index=4;
$index=($page-1)*PAGE_SIZE;
$sql="select id,user,pwd,create_time from user limit $index,".PAGE_SIZE;
echo $sql;
$result = $conn ->query($sql);

$arr =[];
 while($row = $result -> fetch_assoc()){

    $arr[]=$row;

}

 $result ->free();
 $conn->close();

?>
<!DOCTYPE html>
 <html lang="en">
 <head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="./bootstrap-3.3.7-dist/css/bootstrap.min.css">
	
	<script type="text/javascript" src="./bootstrap-3.3.7-dist/js/jquery-3.3.1.min.js"></script>
	<script type="text/javascript" src="./bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
	</head>
	<body>
	<div class="container">

	<div class="panel panel-primary">
     <div class="panel-heading">用户列表</div>
	<table class="table table-bordered table-striped table-hover">

		<tr>
		<th>jjj</th>
		<th width="250">创建日期</th>
		</tr>
               <?php foreach($arr as $row){?>
	        <tr>
            	<td><?php echo $row['user'] ?></td>

	            <td><?php echo date('Y-m-d H:i:s',$row['create_time']) ?></td>
		</tr>
			<?php } ?>
		<tr>
		<td>ddd</td>
		<td>2016-06-28</td>
		</tr>

		
	</table>
	<nav aria-label="...">
  <ul class="pager">
  <?php if($page-1>0){ ?>

    <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page-1 ?>">上一页</a></li>
     <?php } ?>
      <?php if($page+1<=$page_count) { ?>

    <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page+1 ?>">下一页</a></li>

<?php } ?>
  </ul>
</nav>
	</div>
		</div>
	</body>
	</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值