环境:win10 64 ,mysql,php
目的:通过查询数据库test2里面的表user_list,制作一个类似百度分页的显示表。
原来数据库test2里面的表user_list里面的数据如下:
最终的效果图如下:
思路:先把前端页面做出来,后填充数据。
流程:
- 刚开始加载文件时,表格默认显示第一页数据,每页显示2条。
- 以后每次点击页码、上一页或下一页,则当前页码从点击的链接处获取,后显示相应的数据。
分页核心:利用mysql里面sql语句:select * from user_list limit 起始行,页码。
注意:
- php代码要使用 <?php ?>和前端代码要区分开。
- 分页的页码不能出现负整数或没数据显示
代码如下:
<?php
// 连接mysql
@$link = mysqli_connect('localhost','root','123456');
if(!$link)
{
echo 'mysql连接失败<br>';
echo ''.mysqli_connect_error();
die();
}
// 当前数据库为test2
$db = 'test2';
// 进入当前数据库test2
mysqli_select_db($link,$db);
// 设置字符编码为utf8
mysqli_set_charset($link,'utf8');
// 该页码可以取正整数,不小于数据库该表user_list的总条数29
$pagesize = 2;
// 判断当前页,刚加载的时候,默认页码为1,以后的页码则从点击获取。
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$start_row = ($page - 1)*$pagesize;
$sql1 = "SELECT * FROM user_list";
$result = mysqli_query($link,$sql1);
// 获取总记录数,即数据总条数
$records = mysqli_num_rows($result);
// 获取总页数。ceil函数向上取最小整数。
$pages = ceil($records/$pagesize);
// 获取当前页的分页数据
$sql2 = "SELECT * FROM user_list limit $start_row,$pagesize";
$result2 = mysqli_query($link,$sql2);
$arrs = mysqli_fetch_all($result2,MYSQLI_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<title>学生表信息</title>
<style type="text/css">
.a1
{
display:inline-block;
text-decoration:none;
border:1px solid gray;
padding:0px 5px;
margin:0px 2px;
text-align:center;
}
.a1:link{
color:blue;
}
.a1:visited{
color:blue;
}
.a1:hover{
border:1px solid blue;
background-color:gray;
}
th,td
{
height:40px;
text-align:center;
}
</style>
</head>
<body>
<h3>学生表信息</h3>
<table border='1' width='600'>
<tr>
<th>id</tdh>
<th>name</th>
<th>age</th>
<th>sex</th>
</tr>
<?php foreach($arrs as $values) {?>
<tr>
<td><?php echo $values['id'] ?></td>
<td><?php echo $values['name'] ?></td>
<td><?php echo $values['age'] ?></td>
<td><?php echo $values['sex'] ?></td>
</tr>
<?php } ?>
<tr>
<td colspan='4' align='center'>
<?php
// 当总页数大于10时,当前页的显示方法和百度分页一样。当前页和前面有5页,后面有4页,通过加条件,防止出现负数或数据不存在。
$start_page = $page - 5;
$end_page = $page + 4;
if($page<=6)
{
$start_page=1;
$end_page=10;
}
if($page>=$pages-4)
{
$start_page=$pages-9;
$end_page=$pages;
}
// 总页数小于10时,按下面处理
if($pages<10)
{
$start_page=1;
$end_page=$pages;
}
// 上一页的处理
$pre_page = $page-1;
if($pre_page<=1)
{
$pre_page=1;
}
// 下一页的处理
$next_page = $page+1;
if($next_page>=$pages)
{
$next_page=$pages;
}
?>
<a href="?page= <?php echo $pre_page; ?>" class='a1'>上一页</a>
<?php
// 输出页码
for($count = $start_page;$count<=$end_page;$count++)
{
if($page==$count)
{
?>
<!-- 设置当前页的页码时,没有样式 -->
<span><?php echo $count; ?></span>
<?php
continue;
}
?>
<!-- 设置不是当前页的页码 -->
<a href="?page= <?php echo $count; ?>" class='a1'> <?php echo $count; ?> </a>
<?php
}
?>
<a href="?page= <?php echo $next_page; ?>" class='a1'>下一页</a>
</td>
</tr>
</table>
</body>
</html>