[英]How to display long while/for loop in pagination?
我有一個while / for循環,有成千上萬的結果。 由於它包含幾個字段,因此我使用表來顯示它。 但是,由於同時顯示數千個結果,因此肯定會降低性能。 如何在分頁中顯示它?
<table>
<?php $count = 1000;
for($a=1;$a<=$count;$a++) { ?>
<tr>
<td><?php echo $a; ?></td>
<td>This is number <?php echo $a; ?></td>
</tr>
<?php $i++;
} ?>
</table>
如果數據來自數據庫,則可以限制結果集。 如果使用MySQL,則使用LIMIT
子句。 這將只允許您獲取指定的行數。
SELECT title, description FROM posts LIMIT 25
這只會獲取25行。 然后,如果要在第25行之后獲取結果,則可以提供一個偏移量。 由於偏移量在LIMIT子句中排在第一位,因此這樣做有所不同。 僅提供了一個參數,而MySQL假定其為極限。 要選擇接下來的50行,請使用。
SELECT title, description FROM posts LIMIT 25, 50
由於減少了需要處理的數據量,因此這對於減少獲取的結果集並幫助增加性能/加載時間很有用。
希望對您有所幫助,編碼愉快!
更新資料
我唯一沒有數據的數據庫的解決方案是將您要使用的數組鍵傳遞到下一頁。 例如:
$start = 1;
$end = 1000;
if(isset($_GET['record_number'])){
$start = $_GET['record_number'];
$end = $_GET['record_number'] + 1000;
}
for($a=$start; $a<=$end; $a++){
//code here
}
除此之外,您可能會考慮在數據庫引擎中創建文件列表,以便可以使用LIMIT參數。
這是我的示例,類似於@AnotherGuy的回答
<form method="GET">
<input type="text" name="rowsPerPage">
<?php
for($i = 1; $i+1 < $count/$rowsPerPage; $i++){
echo '<input type="submit" name="page" value="'.$i.'">';
}
?>
</form>
<?php
$begin = (int)$_GET['rowsPerPage']*$_GET['page'];
$take = (int)$_GET['rowsPerPage'];
$sql = "SELECT ... LIMIT {$begin}, {$take}";
?>
該代碼中可能包含“ typos”,但我希望它能為您帶來新的想法。
我建議您使用GET而不是POST。 GET將保存在URL中,這樣,在不丟失頁面設置的情況下,可以更輕松地重新加載頁面。
www.example.com?rowsPerPage=150&page=2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.