2010-05-11 68 views
0

昨天我問了一個類似的問題,但在等待之後,我發現問題的一部分,但現在我又陷入了困境,我試圖在搜索結果很長時顯示...因爲我的分頁鏈接將繼續顯示,並且不會停止,直到頁面上顯示每個鏈接。PHP和MySQL的分頁顯示問題

例如,我試圖在下面的示例中實現以下內容。有人能幫我修復我的代碼,以便我可以更新我的網站。謝謝

這是我想要能夠做到的。

First Previous 1 2 ... 5 6 7 8 9 10 11 12 13 ... 199 200 Next Last 

這是我的分頁代碼,顯示鏈接。

$display = 20; 

if (isset($_GET['p']) && is_numeric($_GET['p'])) { 

    $pages = $_GET['p']; 

} else { 

    $q = "SELECT COUNT(id) FROM comments WHERE user_id=3"; 
    $r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli)); 
    $row = mysqli_fetch_array ($r, MYSQLI_NUM); 
    $records = $row[0]; 

    if ($records > $display) { 
     $pages = ceil ($records/$display); 
    } else { 
     $pages = 1; 
    } 

} 

if (isset($_GET['s']) && is_numeric($_GET['s'])) { 
    $start = $_GET['s']; 
} else { 
    $start = 0; 
} 
    //content goes here 

if ($pages > 1) { 

    echo '<br /><p>'; 

    $current_page = ($start/$display) + 1; 

    if ($current_page != 1) { 
     echo '<a href="index.php">First</a>'; 
    } 

    if ($current_page != 1) { 
     echo '<a href="index.php?s=' . ($start - $display) . '&p=' . $pages . '">Previous</a> '; 
    } 

    for ($i = 1; $i <= $pages; $i++) { 
     if ($i != $current_page) { 
      echo '<a href="index.php?s=' . (($display * ($i - 1))) . '&p=' . $pages . '">' . $i . '</a> '; 
     } else { 
      echo '<span>' . $i . '</span> '; 
     } 
    } 

    if ($current_page != $pages) { 
     echo '<a href="index.php?s=' . ($start + $display) . '&p=' . $pages . '">Next</a>'; 
    } 

    if ($current_page != $pages) { 
     echo '<a href="index.php?s=' . ($pages - 1) . '&p=' . $pages . '">Last</a>'; 
    } 

    echo '</p>'; 

} 
+3

哇,你有耐心:「我問過類似的問題,這樣的昨天,而永遠的等待後,我想通了這個問題的一部分......「我想所有這些你付錢幫助的人都需要脫下他們的屁股並作出迴應。鼓勵免費援助的方式。 – MJB 2010-05-11 16:23:08

+0

你的其他問題發生了什麼?我沒有看到你的問題歷史...... – 2010-05-11 16:24:51

+0

@MJB我只是在尋求幫助和陳述事實,所有的幫助總是感激,但任何人的聰明屁股評論是不是:) – TaG 2010-05-11 16:26:25

回答

0

取而代之的是循環的只是用這樣的:

if($current_page > 8 && $pages > 11) { 
    echo '<a href="index.php?s=0&p=' . $pages . '">1</a> '; 
    echo '<a href="index.php?s='.$display.'&p=' . $pages . '">2</a> '; 
    echo '...'; 
    } 
    for ($i = max(1, $current_page - 4); $i < min($current_page + 4, $pages); $i ++) { 
    echo '<a href="index.php?s=' . (($display * ($i - 1))) . '&p=' . $pages . '">' . $i . '</a> '; 
    } 
    if ($current_page < $pages - 8 && $pages > 11) { 
    echo '...'; 
    echo '<a href="index.php?s=' . ($display * ($pages - 1)) . '&p=' . $pages . '">' . ($pages - 1) . '</a> '; 
    echo '<a href="index.php?s=' . ($display * $pages) . '&p=' . $pages . '">' . $pages . '</a> '; 

    } 
+0

不工作,謝謝你的幫助。 – TaG 2010-05-11 16:52:07

+0

錯誤訊息? – 2010-05-11 16:54:39

+0

啊,對不起,在所有的條件和循環中,'$ s'應該被'$ current_page'替代。我會編輯它。 – 2010-05-11 16:58:00