php+mysql 仿百度分页

2 篇文章 0 订阅

环境:win10 64 ,mysql,php

目的:通过查询数据库test2里面的表user_list,制作一个类似百度分页的显示表。

原来数据库test2里面的表user_list里面的数据如下:
在这里插入图片描述
最终的效果图如下:
在这里插入图片描述

思路:先把前端页面做出来,后填充数据。

流程:

  1. 刚开始加载文件时,表格默认显示第一页数据,每页显示2条。
  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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值