use POSIX;
my $test = "";
my $elements = scalar(@array);
my $tablecount = ($elements / 100);
my $tblnum = ceil($tablecount);
my @hundred;
foreach $test (@array) {
until ($tblcnt == $tblnum){
@hundred(@array, 0, 99);
print qq~<table id="$tblcnt"><tr><td>~;
foreach $test (@hundred){
print qq~<tr><td>$test</td></tr>~;
}
print qq~</table>~;
$tblcnt++;
}
}
UG !!!我正在努力学习这一点但是,我无法做到这一点!!!
我正在尝试动态生成“x”个html表,每个表最多填充100行数据。
我可以获得所需的表计数,我可以循环,我可以添加,但有一件事是肯定的:我不能写代码。
这是想要的结果:
1-我有一个数组的1027行数据。
2-我想让我的脚本制作11个html表,每个表最多100行。 (实际上是图层)默认情况下不会通过css看到。这样我可以在桌子上做一些隐藏,就像“下一个上一页”导航一样。我不需要跨浏览器css的帮助。)
3-如果有更好的方法,无论如何我都能理解的方法,除了使用visible =方法,请详细说明!
我放弃了尝试让Perl制作100页的“下一个上一页”链接到数据,所以我使用css javascript onclick = yadayada来“显示数据”。
我认为在循环中移出100行数组并将这些行放在他们自己的html表中会更容易。不
我失败了,需要帮助。
答案 0 :(得分:5)
我认为在编写任何脚本之前,你需要花更多的时间学习Perl和CGI的基础知识。
将逻辑与CGI脚本中的表示分开是很有用的。为此,我发现HTML::Template非常有用。
以下脚本将生成一个包含100个表的HTML文档,每个表包含100行,每行10个单元格。这将花费很多时间。
#!/usr/bin/perl
use strict; use warnings;
use CGI::Simple;
use HTML::Template;
my $tmpl = HTML::Template->new(scalarref => page_template() );
my @tables;
for my $t (1 .. 100) {
my @rows;
for my $r (1 .. 100) {
push @rows, { CELLS => [ map { CELL => $_ }, 1 .. 10 ] };
}
push @tables, { ID => "table_$t", ROWS => \@rows }
}
$tmpl->param(TABLES => \@tables);
my $cgi = CGI::Simple->new;
print $cgi->header('text/html');
$tmpl->output(print_to => \*STDOUT);
sub page_template {
return \ <<EO_TMPL
<!DOCTYPE HTML>
<html>
<head><title>Tables Example</title></head>
<body>
<TMPL_LOOP TABLES>
<table id="<TMPL_VAR ID>">
<TMPL_LOOP ROWS>
<tr>
<TMPL_LOOP CELLS>
<td><TMPL_VAR CELL></td>
</TMPL_LOOP>
</tr>
</TMPL_LOOP>
</table>
</TMPL_LOOP>
</body>
</html>
EO_TMPL
;
}
答案 1 :(得分:3)
my $cnt = 0;
while (@array) {
my @rows = splice @array, 0, 100;
print qq(<table id="t$cnt">\n);
for my $row (@rows) {
print "<tr><td>$row</td></tr>\n";
}
print "</table>\n";
++$cnt;
}
您可能希望使用HTML::Table来生成HTML。