如何限制while循环中的项目

时间:2010-10-23 21:07:27

标签: php 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个项目限制此循环以及如何在每次刷新时旋转这些项目? / p>

3 个答案:

答案 0 :(得分:11)

在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的回答。

答案 1 :(得分:4)

随机旋转,或作为接下来的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语法)

答案 2 :(得分:0)

您必须更改查询$ 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值