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

发布于 2024-09-30 12:14:59 字数 999 浏览 6 评论 0原文

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++;
   }
}

呃!!!我正在努力学习这个,但是我就是做不到!

我正在尝试动态生成“x”个 html 表,每个表最多填充 100 行数据。

我可以获得所需的表计数,我可以循环,我可以添加,但是,有一件事是肯定的:我无法编写代码。

这是想要的结果:

1- 我有一个数组中的 1027 行数据。

2-我希望我的脚本制作 11 个 html 表,每个表最多 100 行。 ((实际上是图层)默认情况下通过 css 是不可见的。这样我可以在表格上进行一些显示隐藏,例如“下一个上一个”导航。我不需要跨浏览器 css 的帮助。)

3- IF除了使用visible=方法之外,还有更好的方法,无论如何我都能理解的方法,请详细说明!

我放弃了尝试让 Perl 制作 100 页的页面,其中包含指向数据的“下一个上一个”链接,因此我求助于使用 css javascript onclick=yadayada 来“显示数据”。

我认为在循环中移出数组的 100 行并将这些行放入它们自己的 html 表中会更容易。不是。

我惨遭失败,需要帮助。

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!!! I am trying to learn this but, I just cannot get it right!!!

I am trying to dynamically generate "x" number of html tables filled with up to 100 lines of data each.

I can get the table count needed, I can loop, I can add but, one thing is for sure: I CANNOT WRITE CODE.

Here is the result wanted:

1- I have 1027 lines of data from an array.

2- I want my script to make 11 html tables with up to 100 lines each. ((Layers actually) which by default will be not visible via css. That way I can do some show hide on the tables like a "next prev" navigation. I don't need help with the cross browser css.)

3- IF there is a better way, a method that I can comprehend anyhow, other than using visible= method, please elaborate!

I gave up trying to have Perl make pages of 100 with "next prev" links to the data so I resorted to using css javascript onclick=yadayada to "display the data".

I thought it would be easier to shift off 100 lines of the array in a loop and put the lines in their own html tables. Not.

I have failed miserably and need assistance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黑凤梨 2024-10-07 12:14:59

我认为在编写任何脚本之前,您需要花更多时间学习 Perl 和 CGI​​ 的基础知识。

在 CGI 脚本中将逻辑与表示分离很有用。为此,我发现 HTML::Template 非常有用。

以下脚本将生成一个 HTML 文档,其中包含 100 个表格,每行 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
    ;
}

I think you need to spend more time learning the basics of Perl and CGI before writing any scripts.

It is useful to separate logic from presentation in CGI scripts. To that end, I find HTML::Template very useful.

The following script will generate an HTML document containing 100 tables with 100 rows of 10 cells each. It will take its sweet time doing that.

#!/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
    ;
}
嘴硬脾气大 2024-10-07 12:14:59
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。

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;
}

You may want to use HTML::Table for generating HTML.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文