php+mysql 仿百度分頁

環境:win10 64 ,mysql,phpphp

目的:經過查詢數據庫test2裏面的表user_list,製做一個相似百度分頁的顯示錶。css

原來數據庫test2裏面的表user_list裏面的數據以下:
在這裏插入圖片描述
最終的效果圖以下:
在這裏插入圖片描述html

思路:先把前端頁面作出來,後填充數據。前端

流程:mysql

  1. 剛開始加載文件時,表格默認顯示第一頁數據,每頁顯示2條。
  2. 之後每次點擊頁碼、上一頁或下一頁,則當前頁碼從點擊的連接處獲取,後顯示相應的數據。

分頁核心:利用mysql裏面sql語句:select * from user_list limit 起始行,頁碼。web

注意:sql

  • 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>