ホームページ > バックエンド開発 > PHPチュートリアル > PHPの原理と0から1行(14)データのページング表示の実装

PHPの原理と0から1行(14)データのページング表示の実装

WBOY
リリース: 2016-06-13 11:56:08
オリジナル
862 人が閲覧しました

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

ページング表示はWEBプログラミングにおいて最も頻繁に処理されるリンクの一つです。いわゆるページング表示とは、プログラムを通じて結果セットを少しずつ表示することです。ページング表示を実現するには、各ページに表示されるレコードの数と現在のページが何ページであるかという 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.='<a href=13-8.php?page=1>Index</a> | <a href=13-8.php?page='.($page-1).'>Before</a> |';}if($page==$page_count || $page_count==0){	$turn_page.='Next | Last';}else{	$turn_page.='<a href=13-8.php?page='.($page+1).'> Next </a> | <a href=13-8.php?page='.$page_count.'> Last </a>';}$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"><div align="center"><strong>ID</strong></div></td><td><div align="center"><strong>Name</strong></div></td><td><div align="center"><strong>Sex</strong></div></td><td><div align="center"><strong>Age</strong></div></td></tr><?phpif($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 つの方法がありますform 、$_GET を使用して GET 値を取得し、$_POST を使用して POST 経由でフォームを送信します
post と get の違いは、一方はアドレス バーにパラメータを表示し、もう一方はパラメータを表示しないことです

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

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

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

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

を取得することです。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート