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文です.このようなテンプレートをまとめることができます.

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のページング表示を実現する方法であり、皆さんの学習に役立つことを願っています.