2012-08-28 45 views
-1

基本上我想要的是顯示一個計數,直到達到某個數字,所以如果我在屏幕上顯示數字「5」,它會顯示「1 2 3 4 5」。或者如果我有數字「3」,它會顯示「1 2 3」。如何顯示變量的每個數字?

原因是因爲我爲我的MySQL結果創建了一個分頁系統。我到目前爲止的代碼是

$result1 = mysql_query("SELECT * FROM questions WHERE subcat = '$conditions'"); 
$num_rows = mysql_num_rows($result1); 
$results_per_page = "3"; 
$num_pages = $num_rows/$results_per_page; 

所以它計數多少結果也有,比如我們會說12名的成績。然後它通過我希望每頁顯示多少結果來劃分這個數字。在這個例子中它的「3」。所以答案是「4」。 所以我現在想要在屏幕上顯示「1 2 3 4」,但是我希望每個數字都是一個鏈接。

我該怎麼做?

感謝 本

+3

它可能無助於回答你的問題,但你應該停止使用'mysql_ *'功能。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果您不確定要使用哪一個,請閱讀本文(http://www.deprecatedphp.com/mysql_/)。 – Matt

+2

[你有什麼嘗試](http://www.whathaveyoutried.com)? – Matt

+0

所以...你想建立一個分頁? – Soundz

回答

5
foreach(range(1, $num_pages) as $i) { 
    echo '<a href="index.php?page=' . $i . '">' . $i . '</a>'; 
} 

或者,通過knittl建議的方法:

echo implode(' | ', array_map(function($i) { 
    return sprintf('<a href="index.php?page=%d">%d</a>', $i, $i); 
}, range(1, $num_pages))); 

打印something like this

1 | 2 | 3 | 4 | 5 
+0

這比'for'循環更有效嗎?我從未想過以這種方式使用'range()';這就是爲什麼我問。 – Matt

+0

@Matt:我不這麼認爲......它會創建一個數組(可能在內部使用循環),然後遍歷這個數組。這段代碼看起來更像Python而不是PHP。在功能性方法中使用'range'可能會更好,但(range和array_walk/map的某種組合,...) – knittl

+0

更高效?兩者之間的差異可能可以忽略不計,因爲沒有應用程序會在這裏出現瓶頸,但正如knittl指出的那樣,這將創建一個臨時數組來迭代。但是,您避免了索引變量的常見錯誤,即關閉一個錯誤。 – nickb

3

使用for循環。

for($i = 1; $i <= $num_pages; $i++){ 
    echo '<a href="page.php?page='.$i.'">'.$i.'</a> '; 
} 
2

使用一個循環:

for($i = 0; $i < $num_pages; ++$i) { 
    printf('<a href="?page=%d">page %d</a>', $i, $i); 
} 
相關問題