0

私はphpページネーションについて検索し、コードを非常によく説明しているサイトを見つけました。私の質問はコードについてです。「次へ」リンクをクリックするたびに、2ページ目に結果が表示されます。2ページ目に結果がない理由がわかりません。コードは次のとおりです。

 <?php 
 mysql_connect("localhost", "root", "") or die(mysql_error()); 

 mysql_select_db("kp_and_harang") or die(mysql_error()); 

 if (!(isset($pagenum))) 

 { 

 $pagenum = 1; 

 } 
 $data = mysql_query("SELECT * FROM students") or die(mysql_error()); 

 $rows = mysql_num_rows($data); 





 $page_rows = 4; 





 $last = ceil($rows/$page_rows); 




 if ($pagenum < 1) 

 { 

 $pagenum = 1; 

 } 

 elseif ($pagenum > $last) 

 { 

 $pagenum = $last; 

 } 





 $max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; 

 $data_p = mysql_query("SELECT * FROM students $max") or die(mysql_error()); 



 while($info = mysql_fetch_array( $data_p )) 

 { 

 Print $info['surname']; 

 echo "<br>";

 } 

 echo "<p>";


 echo " --Page $pagenum of $last-- <p>";
 if ($pagenum == 1) 

 {

 } 

 else 

 {

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";

 echo " ";

 $previous = $pagenum-1;

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";

 } 


 echo " ---- ";



 if ($pagenum == $last) 

 {

 } 

 else {

 $next = $pagenum+1;

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";

 echo " ";

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";

 } 

 ?> 
4

2 に答える 2

0

まず第一に、絶対に必要でない限り、SELECT *特定のフィールドを使用することはお勧めできません。現在、同じテーブルで 2 回完全検索を行っています。行のみをカウントする場合は、1 つのフィールドのみを選択します。

また、非推奨PDOの関数の代わりに関数を使用する必要があります。mysql_*

2 番目のページがあってもよろしいですか?テーブルにはいくつのレコードがありstudentsますか?

コード ダンプ クエリの結果をデバッグし、"SELECT * FROM students $max"クエリを確認します。

于 2013-02-12T13:53:43.720 に答える
0

ページ番号を URL に入れましたが、URL から取得することはありませんか?

この部分を変更しました:

if (!(isset($pagenum))) 
{ 
   $pagenum = 1; 
} 

これに:

 if (!(isset($_GET['pagenum']))) 
 { 
    $pagenum = 1; 
 } else {
    $pagenum = $_GET['pagenum'];
 }

そして、それは完璧に機能しているようです。

編集

行の総数を取得するだけで、すべてをフェッチする必要はありません。次の操作を実行できます。

$result = mysql_query("SELECT count(*) FROM students") or die(mysql_error());
$rows = mysql_fetch_row($result);
于 2013-02-12T14:24:19.230 に答える