1

さて、ivはこのコードを取得しました。これは、データベースからすべての結果を取得し、ページごとに5つの結果を表示することを想定しています。現在、データベースに12件の結果があり、10件しか表示されていませんが、表示する結果が5件ないため、3ページ目は表示されません。これが私のコードです

//$_GET['page'] is to get the current page opened
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
$results_per_page = "5"; //number of results I want displayed per page
$start_from = ($page-1) * $results_per_page; 
$query = "SELECT * FROM items WHERE subcat = '$conditions' LIMIT $start_from, $results_per_page";
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());
while ($row_condition=mysql_fetch_array($result)) {
   //Display the results here
}

//Count number of results from database and work out how
//many pages I need to display all the results.    
$result1 = mysql_query("SELECT * FROM items WHERE subcat = '$conditions'");
$num_rows = mysql_num_rows($result1);
$num_pages = $num_rows / $results_per_page;

if ($num_rows > $results_per_page){
?>
<div id="pagenum">
<?php
//This creates and displays the page numbers for the user to select
foreach( range( 1, $num_pages) as $i) {
     if ($thepage == $i){
           echo '<b><a href="browse.php?condition=' . $condition . '&page=' . $i . '">' . $i . '</a></b>';
     }else{
           echo '<a href="browse.php?condition=' . $condition . '&page=' . $i . '">' . $i . '</a>';
     }

     //This places a line between each number of pages
     if ($i == $num_pages){
     }else{
         echo " | ";
     }
     }
?>
</div>
<?php
     }else{ echo "Test";}
?>

それで、誰かがこれに関する問題を見ることができますか?それで、私は私のデータベースに12のエントリを持っています。ただし、2ページしか取得できません。各ページに5つあり、残りの結果は2つしかないため、3ページ目は取得できません。5で終了する必要があるようです。ありがとう

4

2 に答える 2

3

ceil関数を使用する必要があります。

$num_pages = ceil($num_rows / $results_per_page);
于 2012-09-01T14:53:08.217 に答える
1

あなたの最大の問題は、PHPが2つの数値を除算したときに浮動小数点数を生成し、それが1つにならないことだと思います。

$one = 12;
$two = 5;
$result = $one / $two; // That will result in 2.4

問題は、技術的には3ページあることですが、PHPは.4ページをページとして扱わないため、ループすると技術的には2回しか処理されません。使用範囲が2.4であるため、PHPは切り捨てられているようです。私はこのようなものを提案します:

$result1 = mysql_query("SELECT * FROM items WHERE subcat = '$conditions'");
$num_rows = mysql_num_rows($result1);
$num_pages = ceil($num_rows / $results_per_page);

if ($num_rows > $results_per_page){
    for($i = 0; $i < $num_pages; $i++) {

ceil()は、その除算を毎回強制的に切り上げます。これにより、常にその余分なページが表示されます。

試してみます!問題が解決するかどうか教えてください!

于 2012-09-01T15:09:50.930 に答える