Как я могу динамически генерировать HTML-таблицы, содержащие по 100 строк в Perl? - PullRequest
1 голос
/ 03 ноября 2010
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 !!! Я пытаюсь научиться этому, но я просто не могу понять это правильно!

Я пытаюсь динамически сгенерировать число «х» HTML-таблиц, заполненных до 100 строк данных в каждой.

Я могу получить необходимое количество таблиц, могу зациклить, могу добавить, но одно можно сказать наверняка: Я НЕ МОГУ ЗАПИСАТЬ КОД.

Вот требуемый результат:

1 - у меня есть 1027 строк данных из массива.

2 - Я хочу, чтобы мой скрипт создавал 11 html-таблиц по 100 строк в каждой. ((На самом деле слои), которые по умолчанию не будут видны через css. Таким образом, я могу сделать некоторые скрытые отображения в таблицах, как навигация "next prev". Мне не нужна помощь с кросс-браузерным css.)

3 - Если есть лучший способ, метод, который я могу понять в любом случае, кроме использования метода visible =, пожалуйста, уточните!

Я прекратил попытки заставить Perl создавать страницы по 100 со ссылками «next prev» на данные, поэтому я прибегнул к использованию css javascript onclick = yadayada для «отображения данных».

Я подумал, что было бы проще сместить 100 строк массива в цикле и поместить строки в свои собственные HTML-таблицы. Не.

Я с треском провалился и мне нужна помощь.

Ответы [ 2 ]

5 голосов
/ 03 ноября 2010

Я думаю, вам нужно потратить больше времени на изучение основ 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
    ;
}
3 голосов
/ 03 ноября 2010
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.

...