我正在从SQLite数据库中读取一些基于表单的值
my $Fruits= $FORM{Fruits};
my $FruitsTable =0;
从数据库中获取值后,应将其存储在名为的变量中my $SelectedFruits
。
while ( my @column = $sth->fetchrow_array() ) {
$FruitsTable = 1;
# Within the table there is a row called Tropical which contains bananas, guaves and oranges. I want to select bananas and guaves
my $SelectedFruits = print "<tr>
<td>$Tropical[0]</td>
<td>$Tropical[1]</td>
</tr>";
}
如果找到它们,则应打印一个带有我选择的表格(我的问题是打印命令的时间):
if ( $FruitsTable == 1 ) {
print "<table>
<thead>
<tr>
<th>Bananas</th>
<th>Guave</th>
</tr>
</thead>
<tbody>";
$SelectedFruits;
print "</tbody></table>";
}
代码退出没有错误。
这里的问题是,$bananas
先打印,然后打印表的页眉和页脚,所以表看起来很疯狂。
如何先打印表格的页眉,然后再打印$bananas
表格的页脚?
你必须始终 use strict
和use warnings 'all'
在顶部每个Perl程序,你写。这个问题对您有很大帮助
问题是
my $bananas = print "<tr>
<td>$happyBananas[0]</td>
<td>$hippieBananas[1]</td>
</tr>";
将立即打印表格行,将词法变量设置$bananas
为1(的返回码print
),然后在循环结束时将其丢弃
您需要这样的东西,它将表的内容累积到非局部变量中$bananas_rows
而不是打印它,然后还可以用作标志来确定是否有要打印的表
请注意,我使用了“这里文档”,它会弄乱缩进,但比裸双引号更具可读性
my $bananas_rows; # Don't initialise variables without a reason
while ( my @column = $sth->fetchrow_array() ) {
$bananas_rows .= <<END_HTML;
<tr>
<td>$happyBananas[0]</td>
<td>$hippieBananas[1]</td>
</tr>
END_HTML
}
if ( $bananas_rows == 1 ) {
print <<END_HTML;
<table>
<thead>
<tr>
<th>Happy Bananas</th>
<th>Hippie Bananas</th>
</tr>
</thead>
<tbody>
END_HTML
print $bananas_rows;
print "</tbody></table>";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句