2010-08-13 92 views
0

下面是我的分页代码。我遇到的问题是页数显示正确,但当我点击第2页时,我只是得到一个空白页。PHP分页问题,​​给出空白页面

 <?php 
if (isset($_POST['edit'])) { 
      if (empty($_GET['page'])) { 
       $page=0; 
      } 
      else {$page = (int)$_GET['page'];} 


     if ($page == 0){ $page = 1;} 

      if (ob_get_level() == 0) ob_start(); 


     $per_page = 10; 
     $p = ($page - 1) * $per_page; 


     $sql="select * from tba where word='$word' order by id DESC limit ".$p.",".$per_page; 
     $result=mysql_query($sql) or die(mysql_error()); 



     while ($row=mysql_fetch_array($result)) { 
      $id=$row['id']; 
      $word=$row['word']; 
      $pr=$row['pr']; 


      if ($pr==0) { 


      } 
    else { 
     ?> 
     <td><span class="style5"><?php echo $id; ?> </span></td> 
     <td><span class="style5"><?php echo $word?></span></td> 
    <?php 

      } 
        $pages = floor($total/$per_page) + ($total%$per_page>0?1:0); 
    ?> 
    <center> 
    <?php 
     } 
    for ($i=1;$i<=$pages;$i++) { 
     print "<a href='?page=".$i."'>".$i."</a> "; 

    } 

    echo "<br>You are in page ".$_GET['page']; 
} 

有人能告诉我是什么问题吗?

+0

时间来学习调试。 – 2010-08-13 05:54:19

回答

0

看起来$ page = floor ...行在while循环中,这是第一个问题。此外,$总是永远不会被设置。

1

该学习调试了。

事实上,我们只能猜想出了什么问题。
虽然只有程序员自己可以肯定地告诉它。这是他们的工作和责任。
查找错误的技巧称为调试。

要做到这一点,你必须检查每个操作结果。
例如,您的查询是否返回任何结果?
如果不是 - 为什么? $ word变量来自哪里?但在第二页上?

您必须将所有必需的数据传递给其他页面以及$ page变量。

+0

她*或*他的职责...如果我们要考虑每个可能的细节;) – 2010-08-13 06:05:44

+0

我做了调试,问题是因为代码使用了提交按钮。 :D现在修复它。 – LiveEn 2010-08-13 06:05:53

+0

政治纠正。 – 2010-08-13 06:10:52

0

变量$total从未设置使得总页面数不正确

你需要与类似查询首先获取行的总数:

$sql="SELECT COUNT(id) AS rows FROM tba where word='$word'"; 

而不是做“floor”操作并加“1”时有“其他页面”时可以使用“ceil”

而不是:

$pages = floor($total/$per_page) + ($total%$per_page>0?1:0); 

您可以使用:

$pages = ceil($total/$per_page); 
0

好了,整个输出处于if声明,你没有张贴的POST参数($_POST['edit']