繁体   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