Chas Owens wrote:
> On 2/25/06, henry chen <[EMAIL PROTECTED]> wrote:
>>I can't seem to figure out how to alternate the bgcolor for each row that
>>i'm printing from arrayref. Is there a 'foreveryother' function that would
>>allow me to put two lines in the loop? Or is there someway I can put two
>>rows of information and loop that? Here's what I have so far.....
>>
>>my $rows = $dbhandle->selectall_arrayref($sql) || die $dbhandle->errstr;
>>
>> if (@$rows) {
>> print "<center><table border=1 cellspacing=0 cellpadding=3
>>width='70%'><tr>" .
>>"<th>Title</th><th>Description</th><th>Price</th><th>Email</th></tr>";
>> foreach my $row (@$rows) {
>> print "<tr><td>" . join ("</td><td>", @$row) . "</td></tr>\n";
>> }
>> print "</table>\n</center>\n";
>> }
>> else {
>> print "<p><i>No matches found</i></p>\n";
>> }
>
> Use the module operator (%) with an if statement to do different
> things in a loop:
>
> my $rows = $dbhandle->selectall_arrayref($sql) || die $dbhandle->errstr;
> if (@$rows) {
> print "<center><table border=1 cellspacing=0 cellpadding=3
> width='70%'><tr>" .
> "<th>Title</th><th>Description</th><th>Price</th><th>Email</th></tr>";
> my $i = 1;
> foreach my $row (@$rows) {
> my $color;
> if ($i % 2) { #odd rows
> $color = "#303030";
> } else { #even rows
> $color = "#000000";
> }
> print qq(<tr bgcolor="$color"><td>) . join ("</td><td>",
> @$row) . "</td></tr>\n";
> }
> print "</table>\n</center>\n";
> } else {
> print "<p><i>No matches found</i></p>\n";
> }
Or use an array:
my @colours = qw[ #303030 #000000 ];
# ...
for my $row ( @$rows ) {
my $bgcolour = shift @colours;
print qq(<tr bgcolor="$bgcolour">),
map( "<td>$_</td>", @$row ),
"</tr>\n";
push @colours, $bgcolour;
}
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>