ホームページ >php教程 >php手册 >ゼロから作るPHP単行 (14) データのページング表示の原理と実装

ゼロから作るPHP単行 (14) データのページング表示の原理と実装

WBOY
WBOYオリジナル
2016-06-21 08:48:171363ブラウズ

ページング表示は、WEB プログラミングで最も頻繁に処理されるリンクの 1 つです。いわゆるページング表示とは、プログラムを通じて結果セットを少しずつ表示することです。ページング表示を実現するには、各ページに表示されるレコードの数と現在のページが何ページであるかという 2 つの初期パラメータが必要です。完全な結果セットと組み合わせることで、データのページ分割表示を実現できます。前のページ、次のページなどの他の機能については、すべて上記の情報に基づいて処理できます。

テーブル内の最初の 10 レコードを取得するには、次の SQL ステートメントを使用できます:

SELECT * FROM a_table LIMIT 0,10

11 番目から 20 番目のレコードを検索するために使用される SQL ステートメントは次のとおりです:

SELECT * FROM a_table LIMIT 10,10

21 番目から 30 番目のレコードを検索するために使用される SQL ステートメントは次のとおりです:

SELECT * FROM a_table LIMIT 20,10

上記のSQL文から、毎回10件のレコードを取得するということは、各ページに10件のデータを表示することと等価であり、毎回取得するレコードの開始位置と、現在の期間のページ数: 開始位置 = (現在のページ番号 - 1) * 各ページに表示されるレコードの数。変数 $page_size が各ページに表示されるレコードの数を表し、変数 $cur_page が現在のページ番号を表す場合、上記の内容は、以下に示す SQL ステートメント テンプレートを使用して要約できます。

select * from table limit ($cur_page-1)*$page_size,$page_size;

このようにして、ページング下のデータを取得するためのSQL文が得られます。このうち、$page_size は実際の開発に応じて固定値として設定でき、実際の開発では現在のページ $cur_page をパラメータで渡すことができます。また、データが表示される総ページ数は、総レコード数と各ページに表示されるレコード数から計算できます。たとえば、レコードの総数を各ページに表示されるレコードの数で割っても余りがない場合、ページの総数は 2 つの商になります。

<?php
$host='localhost';
$user_name='root';
$password='helloworld';
$conn=mysql_connect($host,$user_name,$password);
if(!$conn)
{
	die('FAIL!'.mysql_error());
}
mysql_select_db('test');
if(isset($_GET['page']))
{
	$page=$_GET['page'];
}
else
{
	$page=1;
}
$page_size=2;
$sql='select * from users';
$result=mysql_query($sql);
$total=mysql_num_rows($result);
if($total)
{
	if($total<$page_size)
	$page_count=1;
	if($total%$page_size)
	{
		$page_count=(int)($total/$page_size)+1;
	}
	else
	{
		$page_count=$total/$page_size;
	}
}
else
{
	$page_count=0;
}
$turn_page='';
if($page==1)
{
	$turn_page.='Index  Before ';
}
else
{
	$turn_page.='Index  Before ';
}
if($page==$page_count  $page_count==0)
{
	$turn_page.='Next  Last';
}
else
{
	$turn_page.=' Next    Last ';
}
$sql='select id,name,sex,age from users limit '.($page-1)*$page_size.','.$page_size;
$result=mysql_query($sql) OR die ("<br/>ERROR:<b>".mysql_error()."</b><br/>SQL:".$sql);
?>
<html>
<head>
<title>13-8.php</title>
</head>
<body>
<table width="75%" border="0" cellpadding="0" cellspacing="1" bgcolor="#7b7b84">
<tr bgcolor="#8bbcc7">
<td height="33"><p align="center"><strong>ID</strong></p></td>
<td><p align="center"><strong>Name</strong></p></td>
<td><p align="center"><strong>Sex</strong></p></td>
<td><p align="center"><strong>Age</strong></p></td>
</tr>
<?php
if($num=mysql_num_rows($result))
{
	while($row=mysql_fetch_array($result,MYSQL_ASSOC))
	{
		?>
		<tr bgcolor="#FFFFFF">
		<td height="22" align="right"><?php echo $row['id']; ?> </td>
		<td height="22"> <?php echo $row['name']; ?> </td>
		<td height="22"> <?php echo $row['sex']; ?> </td>
		<td height="22"> <?php echo $row['age']; ?> </td>
	</tr>

	<?php

	}
}
echo $turn_page;
mysql_close($conn);
?>
</body>
</html>

************************

POST GET は、フォームを送信する 2 つの方法です。GET で値を渡すには、$_GET を使用して値を取得します。POST でフォームを送信するには、$_POST
を使用します。 post と get の違いは、一方はアドレスバーにパラメータを表示し、もう一方はパラメータを表示しないことです

例えば、ログイン時に get メソッドを使用すると、アドレスバーに値が表示されるため、セキュリティはまったくありません
また、検索したりページ番号を取得したりする場合は、post を使用してアドレス バーのパラメーターを非表示にしますが、これでは意味がありません

$_GET を使用してブラウザのアドレス バーのパラメータの値 (疑問符の後の文字列) (www.baidu.com/s?wd=123 など) を取得すると、$_GET を使用してパラメータ (イベント、アクション、またはパラメータとして理解できます。この値は、フォームを渡すときの入力の名前と一致します) は、wd 123 の値です。たとえば、複数のパラメータはアンパサンドで接続されます。 an=0&si=5 は an パラメータの値が 0、si パラメータの値が 5 であると理解されます。

**********************

たとえば、www.iron-feet.cn/?page=2 というアドレスを入力します
$_GET["page"] は、アドレス上のページの値を取得することです。つまり、2
を取得します。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。