簡體   English   中英

如何限制while循環中的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM