Maison >base de données >tutoriel mysql >Présentation de PHP + MySQL pour réaliser l'affichage par pagination des données

Présentation de PHP + MySQL pour réaliser l'affichage par pagination des données

coldplay.xixi
coldplay.xixiavant
2021-04-26 09:17:252961parcourir
Présentation de PHP + MySQL pour réaliser l'affichage par pagination des données
1. Connexion à la base de données
$connect = mysqli_connect('localhost', '用户名', '密码', '数据库名') or die('数据库连接失败');mysqli_set_charset($connect, 'utf8');

Recommandations d'apprentissage gratuites associées : tutoriel vidéo mysql

2. Construire une instruction SQL

La pagination est en fait implémentée à l'aide du mot-clé MySQL dans limit. Par exemple, nous interrogeons les deux premiers éléments de données d'une table :

select * from student limit 0, 2
Deux paramètres sont requis après

Le premier paramètre représente le nombre d'éléments à récupérer à la fois ; limit Ensuite, le sens exprimé par l'énoncé
ci-dessus est de partir du 0ème élément et de prendre 2 éléments (en fait, 0 est le 1er élément et le comptage commence à partir de 0). SQL

Nous prenons les deux premières données obtenues comme première page.

Continuez ensuite à récupérer la deuxième page, il y a encore 2 données, alors l'instruction

est : SQL

select * from student limit 2, 2
La troisième page :

select * from student limit 4, 2
Par analogie , on constate que chaque Il y a toujours deux pages, donc le deuxième paramètre de

(soit 2) a été déterminé, alors comment déterminer le premier paramètre ? En fait, les règles sont les suivantes : limit

Page 1 : 0, 2 (La page 1 est prise à partir de la position 0, et 2 sont prises, soit 0 1)

Page 2 : 2 , 2 (La page 2 La page 3 est prise à partir de la position 2, et 2 entrées sont prises, soit 2 3)
Page 3 : 4, 2 (La page 3 est prise à partir de la position 4, et 2 entrées sont pris, soit 4 5)
Page 4 : 6, 2 (La page 4 est prise à partir de la position de 6, et 2 éléments sont pris, soit 6 7)
...

Donc la position de départ de chaque page = (page actuelle - 1) * Affichage de chaque page Nombre d'articles

Page 1 : (1 - 1) * 2 = 0

Page 2 : ( 2 - 1) * 2 = 2
Page 3 : (3 - 1) * 2 = 4

3 Définir le nombre d'éléments affichés sur chaque page
$pageSize = 2;
4. Définir la page actuelle
$page = 1;
5. Calculer selon la formule
Le premier paramètre requis est
$start = ($page - 1) * $pageSize;
limit donc l'instruction SQL est :
select * from student limit $start, $pageSize;

At cette fois, changer la valeur de

permet d'interroger les données de la page correspondante.

$page 6. Passer des paramètres dans la barre d'adresse pour obtenir les

paramètres pour définir la page courante
$page Afin d'être plus flexible, on passe des paramètres dans la barre d'adresse pour obtenir le numéro des pages que vous souhaitez afficher, donc la quatrième étape Le code est modifié en :
if ($_GET['page']) {
	$page = $_GET['page'];} else {
	$page = 1; // 接收不到按照 1 处理,即默认第 1 页}

7. Utilisez les boutons pour contrôler le changement de page

Exécutez l'instruction
:

$sql = "select * from student limit $start, $pageSize";$query = mysqli_query($connect, $sql);$result = mysqli_fetch_all($query, MYSQLI_ASSOC);
SQLAfficher les résultats dans le tableau  :

<table border="1" cellspacing="0" cellpadding="0" style="width: 50%;text-align: center;">
	<caption>学生列表</caption>
	<tr>
		<td>ID</td>
		<td>姓名</td>
		<td>年龄</td>
		<td>性别</td>
		<td>手机号</td>
	</tr>
	<?php foreach ($result as $v) { ?>
	<tr>
		<td><?php echo $v[&#39;id&#39;]; ?></td>
		<td><?php echo $v[&#39;name&#39;]; ?></td>
		<td><?php echo $v[&#39;age&#39;]; ?></td>
		<td><?php echo $v[&#39;sex&#39;]; ?></td>
		<td><?php echo $v[&#39;mobile&#39;]; ?></td>
	</tr>
	<?php } ?></table>
HTML Ajouter des boutons de page haut et bas :
<button>上一页</button><button>下一页</button>

En cliquant sur

, nous devons donner la page actuelle

; 上一页 En cliquant sur $page - 1, nous devons donner la page actuelle
;下一页$page + 1 détermine la page précédente en fonction de la page actuelle :

$up = $page - 1;

Supposons que la page actuelle soit page 2, alors

est 2 - 1 = 1, c'est-à-dire que la page précédente est la page 1.

$upDéterminez la page suivante en fonction de la page actuelle :

$next = $page + 1;

Supposons que la page actuelle soit la page 2, alors

vaut 2 + 1 = 3, c'est-à-dire que la page suivante est la page 2 3 pages.

$nextNous ajoutons donc un lien hypertexte vers le bouton, un lien vers la page actuelle, et portons un paramètre

, la valeur est le numéro de page correspondant.

<a href="form-7.php?page=<?php echo $up; ?>"><button>上一页</button></a><a href="form-7.php?page=<?php echo $next; ?>"><button>下一页</button></a>
pageMais et

ne s'ajoutent ou ne soustraient pas à l'infini Lorsqu'il s'agit déjà de la première page, $up ne peut pas continuer à être soustrait, vous devez donc en ajouter un lors de la détermination de la page précédente. . juge. $next

if ($page == 1) {
	$up = 1;} else {
	$up = $page - 1;}
$upDe même, lors de la détermination de la page suivante, vous devez également porter un jugement. Quand ne pouvez-vous pas passer à la page suivante ? Lorsque la page actuelle est la dernière page, vous ne pouvez pas passer à la page suivante. La façon de déterminer la dernière page dépend du nombre total d'éléments dans le tableau actuel si le tableau actuel contient 10 éléments de données et que chaque page en affiche 2. , alors il doit être divisé en 10/2 = 5 pages, ce 5 est la dernière page. S'il y a 11 données, alors il doit être divisé en 11/2 = 5,5 pages, ce qui signifie qu'il y a 1. morceau restant après avoir été divisé en 5 pages, il est donc divisé en 6 pages directement, c'est-à-dire arrondi, puis Ce 6 est la dernière page.

Trouvez le nombre total d'éléments :

$sql = "select * from student";$query = mysqli_query($connect, $sql);$num = mysqli_num_rows($query);

Selon

et

, trouvez combien de pages sont nécessaires : 总条数

$totalPage = ceil($num / $pageSize);
每页显示的条数 Changez-le donc lorsque vous jugez le page suivante Pour :
if ($page == $totalPage) {
	$next = $totalPage;} else {
	$next = $page + 1;	}

8. Code complet

form-7.php
<?php// 连接数据库$connect = mysqli_connect(&#39;localhost&#39;, &#39;用户名&#39;, &#39;密码&#39;, &#39;数据库名&#39;) or die(&#39;数据库连接失败&#39;);mysqli_set_charset($connect, &#39;utf8&#39;);// 查询总条数$sql = "select * from student";$query = mysqli_query($connect, $sql);// 返回结果集中行的数量$num = mysqli_num_rows($query);// 定义每页显示几条$pageSize = 2;// 一共分几页$totalPage = ceil($num / $pageSize);// 获取当前页if ($_GET[&#39;page&#39;]) {
	$page = $_GET[&#39;page&#39;];} else {
	$page = 1;}// 在当前页的基础上确定上一页if ($page == 1) {
	$up = 1;} else {
	$up = $page - 1;}// 在当前页的基础上确定下一页if ($page == $totalPage) {
	$next = $totalPage;} else {
	$next = $page + 1;	}// 求出 limit 的第一个参数$start = ($page - 1) * $pageSize;$sql = "select * from student limit $start, $pageSize";$res = mysqli_query($connect, $sql);$result = mysqli_fetch_all($res, MYSQLI_ASSOC);?><!doctype html><html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
	<table border="1" cellspacing="0" cellpadding="0" style="width: 50%;text-align: center;">
		<caption>学生列表</caption>
		<tr>
			<td>ID</td>
			<td>姓名</td>
			<td>年龄</td>
			<td>性别</td>
			<td>手机号</td>
		</tr>
		<?php foreach ($result as $v) { ?>
		<tr>
			<td><?php echo $v[&#39;id&#39;]; ?></td>
			<td><?php echo $v[&#39;name&#39;]; ?></td>
			<td><?php echo $v[&#39;age&#39;]; ?></td>
			<td><?php echo $v[&#39;sex&#39;]; ?></td>
			<td><?php echo $v[&#39;mobile&#39;]; ?></td>
		</tr>
		<?php } ?>
	</table>
	<a href="form-7.php?page=<?php echo $up; ?>"><button>上一页</button></a>
	<a href="form-7.php?page=<?php echo $next; ?>"><button>下一页</button></a>
 </body></html>
Recommandations d'apprentissage gratuites associées :

base de données mysql (Vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer