2011-03-04 64 views
-1

我有一个SQL查询,输出一堆符合特定条件的行。我正在尝试为此过程添加分页,以便使用更简单。添加PHP分页

我的过程是这样的:

  • 图此页面的下限,弄清楚该网页的上限
  • 拉(例如1 - - 20 21 40等。)从MySQL表
  • 列表中的那些行
  • 如果有超过20个,这些行添加
  • floor($totalRows/20)页???
  • 分页

我分页似乎是工作半正常,但最后一页(不管它可能是)列出了比它应该行的数量少一个。这里是我的代码:

$page = $_GET["p"]; 
    $bL = (($page - 1) * 20) + 1; 
    $tL = $page * 20; 

    $total = mysql_num_rows(mysql_query("SELECT id FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE()")); 

    if($tL > $total) 
    { 
     $tL = (($page - 1) * 20) + ($total % 20); 
    } 

    $gotRows = "SELECT * FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() ORDER BY retailerName LIMIT " . $bL . ", " . $tL; 

    //list all those rows 

    $numPages = floor($total/20) + 1; 
    echo "<p id='results'>" . $total . " result" . $plural . " &#183; Displaying " . $bL . " to " . $tL . " </p>"; 
    echo "</table>"; 
    $pG = 1; 
    while($pG <= $numPages) 
    { 
     if($pG == $page) 
     { 
      echo $pG; 
     } 
     else 
     { 
      echo "<a href='zone?z=" . $zone . "&p=" . $pG . "'>" . $pG . "</a>"; 
     } 
     if($pG != $numPages) 
     { 
      echo "&#183"; 
     } 
     $pG = $pG + 1; 
    } 

任何帮助吗?

编辑:没关系,我解决了行问题。但是我的底部错误页面链接问题仍然存在。在第1页上,它工作正常 - “1”不是链接,“2”是。但是,在第2页上,链接仅显示“1”。 “2”不显示。

+0

关于如何处理PHP/MySQL分页有很多问题..你有没有看过这些? – drudge 2011-03-04 19:22:25

+0

现在分页工作正常 - 我只是想修复我的页面链接错误。 – AKor 2011-03-04 19:29:41

回答

1

这个逻辑混淆了我。如果$tl大于总数,它不会简单地等于总数吗?

if($tL > $total) 
{ 
    $tL = (($page - 1) * 20) + ($total % 20); 
} 

相反,为什么不:

$tL = ($tL > $total) ? $total : $tl; 

而且,我会用SQL来找到你,而不是总的mysql_num_rows。它应该证明更可靠一点(特别是当你停止使用真正的旧的mysql扩展时)。也许它也会返回正确的总数。

SELECT COUNT(id) FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() 

除此之外,我没有看到任何明显的解释不正确的行数。

+0

我改变了这些。我提交这个问题后,我的行很好地运行。现在我唯一的问题是生成页面链接的循环工作不正常。 – AKor 2011-03-04 19:30:25