[英]How to limit items from while loop
這是我的項目中的while循環:
<?php
$select = "SELECT * FROM nk_showcase";
$query = $db->rq($select);
while ($user = $db->fetch($query)) {
?>
<div class="index">
<a href="details.php?id=<?php echo $user['id']; ?>"><img width="200" height="171" alt="<?php echo $user['title']; ?>" src="<?php echo $url; ?>/images/niagakit/<?php echo $user['thumb']; ?>"/></a>
<h3><a href="<?php echo $url; ?>/"><?php echo $user['title']; ?></a></h3>
<p><a href="<?php echo $url; ?>/"><?php echo $user['url']; ?></a></p>
</div>
<?php } ?>
正如您已經知道的那樣,這個while循環將循環訪問他們在我的數據庫中找到的所有項目,所以我的問題是,如何僅針對我的數據庫中的10個項目限制此循環以及如何在每次刷新時旋轉這些項目?
在SQL中:
$select = "SELECT * FROM nk_showcase LIMIT 0,10";
或者在PHP中:
$counter = 0;
$max = 10;
while (($user = $db->fetch($query)) and ($counter < $max))
{
... // HTML code here....
$counter++;
}
關於旋轉,請參閱@Fayden的回答。
隨機旋轉,還是作為接下來的10個元素?
大多數RDBMS允許您隨機排序行:
-- MySQL
SELECT * FROM nk_showcase ORDER BY RAND() LIMIT 10
-- PostgreSQL
SELECT * FROM nk_showcase ORDER BY RANDOM() LIMIT 10
每次刷新頁面時都會選擇10個隨機行
如果要顯示接下來的10個元素,則必須對頁面進行分頁(並使用LIMIT X OFFSET Y語法)
您必須更改查詢$ select,如果您只需要10個第一項,請嘗試使用LIMIT為10,如果需要對結果進行分頁,請嘗試使用OFFSET 。
$select.=" OFFSET $start LIMIT $range;";
然后你需要控制$ start和$ range變量,如:
$size_page=10;
if (!$page) {
$start = 0;
$page=1;
}
else {
$start = ($page - 1) * $size_page;
}
您可以注意到$ range應該與$ size_page的值相同,只需要考慮#pages計算每次迭代的$ start值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.