代码不起作用,将MySQL结果排序到页面中


Code not working, Sorting MySQL results into pages

好的,所以iv得到了这个代码,假设它从我的数据库中带回我的所有结果,并每页显示5个结果。目前,我的数据库中有12个结果,它只显示10个,它不会显示第三页,因为没有5个结果可以显示。这是我的代码

//$_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个结果,似乎想要5页来完成它。感谢

您需要使用ceil函数:

$num_pages = ceil($num_rows / $results_per_page);

我认为您最大的问题是,当您将两个不产生整数的数字进行除法时,PHP会给您一个浮点值。

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

现在,问题是,从技术上讲,你有三个页面,但PHP不会将.4页面视为一个页面,所以当你循环它时,从技术上来讲,它只会做两次。由于您的使用范围是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()每次都会强制该除法四舍五入,这将始终为您提供额外的页面。

试试看!如果它解决了你的问题,请告诉我!