php実装ページング表示
2860 ワード
ページング表示とは、データベース内の結果セットを人為的にセグメント化して表示することです.ここでは、2つの初期パラメータが必要です.
1ページに何件の記録($PageSize)がありますか?
現在何ページ目($CurrentPageID)?
今、結果セットをもう一つくれれば、特定の結果を表示することができます.他のパラメータについては、前のページ($PReviousPageID)、次のページ($NextPageID)、合計ページ数($numPages)など、これまでの知識に基づいて入手できます.
MySQLデータベースの例では、テーブルからコンテンツを切り取る場合、sql文はselect*from table limit offset、rowsを使用できます.次のsql文のセットを見て、ゲージを見つけてみましょう.
上位10レコード:select*from table limit 0,10
第11~20条記録:select*from table limit 10,10
第21~30条記録:select*from table limit 20,10
……
このsql文のセットは、$PageSize=10のときにテーブル内の各ページのデータを取得するsql文です.このようなテンプレートをまとめることができます.
このテンプレートを使用して対応する値を代入し、上のsql文のセットと照合して、そうではないか見てみましょう.最も重要なデータの取得方法の問題が解決した後、残りはパラメータを渡すだけで、適切なsql文を構築しphpを使用してデータベース内からデータを取得して表示します.以下、具体的なコードで説明します.簡単なコード実装は以下のコードを詳しく読んで、自分でデバッグして実行して、一度修正して、自分の機能を加えて、例えば検索などしたほうがいいです.
以上がphpのページング表示を実現する方法であり、皆さんの学習に役立つことを願っています.
1ページに何件の記録($PageSize)がありますか?
現在何ページ目($CurrentPageID)?
今、結果セットをもう一つくれれば、特定の結果を表示することができます.他のパラメータについては、前のページ($PReviousPageID)、次のページ($NextPageID)、合計ページ数($numPages)など、これまでの知識に基づいて入手できます.
MySQLデータベースの例では、テーブルからコンテンツを切り取る場合、sql文はselect*from table limit offset、rowsを使用できます.次のsql文のセットを見て、ゲージを見つけてみましょう.
上位10レコード:select*from table limit 0,10
第11~20条記録:select*from table limit 10,10
第21~30条記録:select*from table limit 20,10
……
このsql文のセットは、$PageSize=10のときにテーブル内の各ページのデータを取得するsql文です.このようなテンプレートをまとめることができます.
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
このテンプレートを使用して対応する値を代入し、上のsql文のセットと照合して、そうではないか見てみましょう.最も重要なデータの取得方法の問題が解決した後、残りはパラメータを渡すだけで、適切なsql文を構築しphpを使用してデータベース内からデータを取得して表示します.以下、具体的なコードで説明します.簡単なコード実装は以下のコードを詳しく読んで、自分でデバッグして実行して、一度修正して、自分の機能を加えて、例えば検索などしたほうがいいです.
//
$link = mysql_connect("localhost", "mysql_user", "mysql_passWord")
or die("Could not connect: " . mysql_error());
//
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
else{
$page = 1;
}
//
$PageSize = 10;
//
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
//
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; } // $PageSize,
if( $amount % $page_size ){ //
$page_count = (int)($amount / $page_size) + 1; // ,
}else{
$page_count = $amount / $page_size; // ,
}
}
else{
$page_count = 0;
}
//
$page_string = '';
if( $page == 1 ){
$page_string .= ' | |';
}
else{
$page_string .= ' |.($page-1).'> |';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= ' | ';
}
else{
$page_string .= '.($page+1).'> |.$page_count.'> ';
}
// ,
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// , , foreach
?>
以上がphpのページング表示を実現する方法であり、皆さんの学習に役立つことを願っています.