如何在Perl中动态生成每个包含100行的HTML表?

时间:2010-11-02 21:23:30

标签: perl dynamic-data

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表中会更容易。不

我失败了,需要帮助。

2 个答案:

答案 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。