2010-08-13 89 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']