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