ホームページ  >  記事  >  データベース  >  データのページング表示を実現するPHP + MySQLの導入

データのページング表示を実現するPHP + MySQLの導入

coldplay.xixi
coldplay.xixi転載
2021-04-26 09:17:252804ブラウズ
データのページング表示を実現するPHP + MySQLの導入
#1. データベースに接続します
$connect = mysqli_connect('localhost', '用户名', '密码', '数据库名') or die('数据库连接失败');mysqli_set_charset($connect, 'utf8');

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

2. SQL ステートメントの構築
ページングは​​、

MySQLlimit キーワードを使用して実際に実装されます。たとえば、次の最初の行をクエリします。テーブル。2 つのデータ:

select * from student limit 0, 2

limit には 2 つのパラメータが必要です。最初のパラメータはフェッチを開始する項目の数を表し、2 番目のパラメータは一度にフェッチする項目の数を表します。 すると、上記の
SQL ステートメントで表現される意味は、0 番目の項目から開始して 2 項目を取るということになります (実際には 0 が 1 番目の項目で、0 からカウントされます)。

取得した最初の 2 つのデータを最初のページとします。

続いて 2 番目のページのフェッチを続けます。まだ 2 つのデータがあり、

SQL ステートメントは次のようになります:

select * from student limit 2, 2
3 番目のページ:

select * from student limit 4, 2
など、ページごとに常に 2 つの項目があることがわかりました。そのため、

limit の 2 番目のパラメーター (つまり 2) が決定されました。では、最初のパラメーターを決定するにはどうすればよいでしょうか?実際、ルールは次のとおりです。

ページ 1: 0, 2 (ページ 1 は 0 の位置から取り出され、2 が取り出されます、つまり 0 1)

ページ 2: 2 , 2 (ページ 2 ページは 2 の位置から取得され、2 つのエントリが取得されます。つまり、2 3)
ページ 3: 4, 2 (ページ 3 は 4 の位置から取得され、2 つのエントリが取得されます)取得、つまり 4 5)
ページ 4: 6, 2 (ページ 4 は 6 の位置から取得され、2 つの項目が取得、つまり 6 7)
...

各ページの開始位置 = (現在のページ - 1) * 各ページの表示エントリ数

ページ 1: (1 - 1) * 2 = 0

ページ 2: (2 - 1) * 2 = 2
ページ 3: (3 - 1) * 2 = 4
……

3. 各ページに表示される項目の数を定義します
$pageSize = 2;
4. 現在のページを定義します
$page = 1;
5. 式に従って計算します
limit最初のパラメータが必要です
$start = ($page - 1) * $pageSize;
したがって、SQL ステートメントは次のようになります:

select * from student limit $start, $pageSize;
このとき、

$page の値を変更すると、対応するページのデータをクエリできるようになります。

6. アドレス バーを介してパラメーターを渡し、現在のページを定義する
$page パラメーターを取得します。
より柔軟にするために、アドレス バーを介してパラメーターを渡します。 bar を使用して表示するページ数を取得するため、ステップ 4 のコードは次のように変更されます:

if ($_GET['page']) {
	$page = $_GET['page'];} else {
	$page = 1; // 接收不到按照 1 处理,即默认第 1 页}
7. ボタンを使用して上下のページ切り替えを制御します

SQL ステートメント:

$sql = "select * from student limit $start, $pageSize";$query = mysqli_query($connect, $sql);$result = mysqli_fetch_all($query, MYSQLI_ASSOC);
結果は

HTML テーブルに出力されます:

<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>
上下のページ ボタンを追加します:

<button>上一页</button><button>下一页</button>

前ページをクリックする場合は、現在のページを指定する必要があります $page - 1;
次ページをクリックする場合は、現在のページを指定する必要があります現在のページ $page 1;

現在のページに基づく 前のページを決定します:

$up = $page - 1;
現在のページが 2 ページであると仮定し、その後

$up は 2 - 1 = 1、つまり前のページが 1 ページ目です。

現在のページに基づいて次のページを決定します。

$next = $page + 1;
現在のページが 2 ページであると仮定すると、

$next は 2 1 = 3、つまり、次の 1 ページは 3 ページです。

そこで、ボタンにハイパーリンクを追加し、現在のページにリンクし、

page パラメーターを渡します。値は対応するページ番号です。

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

$up$next は無限に加算または減算するわけではありません。すでに最初のページである場合、$up は続行できませんを減らすため、前のページを決定するときに判断を追加する必要があります。

if ($page == 1) {
	$up = 1;} else {
	$up = $page - 1;}
同様に、次のページを決める際にも判断が必要ですが、次のページに進めないのはどんなときでしょうか?現在のページがすでに最後のページである場合、次のページに進むことはできません。最後のページを決定する方法は、現在のテーブルのエントリの総数によって異なります。現在のテーブルに 10 個のデータがあり、各ページに 2 個のデータが表示される場合データが 11 個ある場合、10 / 2 = 5 ページに分割する必要があり、この 5 が最後のページになります。データが 11 個ある場合は、11 / 2 = 5.5 ページに分割する必要があります。 5ページに分割して1枚余ったので、そのまま6ページに分割、つまり切り上げて、この6ページが最後のページとなります。

アイテムの合計数を確認します:

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

アイテムの合計数および各ページに表示されるアイテムの数によると、何ページに分割する必要があるか:

$totalPage = ceil($num / $pageSize);
したがって、次のページを判断するときは、次のように変更します:

if ($page == $totalPage) {
	$next = $totalPage;} else {
	$next = $page + 1;	}
8. 完全なコード
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>

関連する無料学習の推奨事項: mysql データベース(ビデオ)

以上がデータのページング表示を実現するPHP + MySQLの導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。