我有一个问题!我已经构建了一个cgi文件,它正在执行以下操作:
一切正常。但现在我的问题是:如果我找到太多条目,我不想显示它们。例如:如果我的searchresult找到超过50行,则不显示它们!
伪代码如下所示:
*while row is found*
{
*increase counter of found rows*
*build and print image*
}
如果我发现超过30个条目,网站将加载非常长(显示所有图像),你必须滚动太多。有时我发现超过600个条目,我根本不想显示它们!所以我必须先计算它们然后做出决定,如果我想看到它们。
但是我怎么能在计算它们之后显示行?因为我只能在while循环中打印行。
答案 0 :(得分:1)
答案 1 :(得分:1)
执行此操作的最有效方法是在SQL查询中添加LIMIT
子句。如果你说,例如,
SELECT foo, bar, baz FROM my_table WHERE foo = 1 LIMIT 25;
然后查询将永远不会返回超过25行。虽然你也可以把一个计数器放到你的Perl循环中,它在第25行之后中止循环,这会使数据库做额外的工作,返回最后被抛弃的行;使用LIMIT可以避免浪费。
答案 2 :(得分:1)
不是在while循环中打印,而是将html存储到缓冲区变量中,然后在循环后打印它。
如果你有这样的事情:
while .... {
print $html
}
将其更改为:
$LIMIT = 50;
while ... {
$buf .= $html;
$count ++;
last if ($count > $LIMIT;
}
print $buf if ($count <= $LIMIT);
答案 3 :(得分:0)
如果您只想计算行并在完成50后退出循环,则可以使用以下内容:
my $count = 0;
while(*row is found* && $count++ < 50)
{
*stuff*
}
但是如果它适用于你的情况,那么使用SQL LIMIT
之类的东西会更好。