[Melbourne-pm] Looping with HTML::Template
Andrew Dent
sgc294 at internode.on.net
Mon Oct 27 03:41:37 PDT 2008
G'day
Further to the thread about the sub called 'Strange things about '0'.
I have the section of Perl below to build up an array of hashes that
will get used by HTML::Template after sql_engine finishes.
At the moment it is hardcoded to only produce 6 fields in the row.
How do I make the .html file flexible so that in the Perl code I can
replace the 6 with a variable like $Num_of_fields allowing me to choose
at run time how wide the HTML table is?
Or is there a different module/technique I should use to get this type
of functionality?
BTW: That 'FooCode' field below is where one of values of foocode from
the other thread will appear and may get filtered on.
sub sql_engine {
.
.
.
elsif ($ret_type eq 'array_hash') {
my $cnt = 0;
my @loop_data;
while (my @data = $report->fetchrow_array) {
my $cell = 0; # This number is used as a temp variable name
in the .html file
my %row_data; # use a hash to hold the data for each row
that HTML::Template will display.
# populate the hash.
while ($cell < 6) {
$row_data{$cell} = shift @data;
$cell++;
}
push (@loop_data, \%row_data);
$cnt++;
}
$report->finish();
$dbh->disconnect;
return \@loop_data;
}
Contents of the .html file
<table border =1 cellpadding = 4 cellspacing =0>
<tr>
<th bgcolor =#fffbc6>Model</th>
<th bgcolor =#fffbc6>Serial Number</th>
<th bgcolor =#fffbc6>Customer Number</th>
<th bgcolor =#fffbc6>Asset ID</th>
<th bgcolor =#fffbc6>FooCode</th>
<th bgcolor =#fffbc6>Standard Code</th>
</tr>
<TMPL_LOOP NAME='blankassets'>
<tr>
<td><TMPL_VAR name="0"></td>
<td><TMPL_VAR name="1"></td>
<td><TMPL_VAR name="2"></td>
<td><TMPL_VAR name="3"></td>
<td><TMPL_VAR name="4"></td>
<td><TMPL_VAR name="5"></td>
</tr>
</TMPL_LOOP>
</table>
Cheers
Andrew Dent
More information about the Melbourne-pm
mailing list