[Omaha.pm] Millionth SQL -> HTML table script

Jay Hannah jay at jays.net
Wed Aug 17 20:43:36 PDT 2005


On Aug 17, 2005, at 9:52 AM, Kenneth Thompson wrote:
> An addition nicety might be to add the column names as headers-
> especially if you don't know what the column names are when you start
> (like select * from blah):

Ya. Good patch. -grin-

> The reason for <td><b> instead of actual <th> is so that you could
> potentially work in a 'print the columns names every x number of rows'
> if you were going to dump a ton of rows.

Why couldn't you do that w/ <th>'s ?

I often code that something like

    print_header_row() unless ($rowcount % 30);

> sub print_SQL_and_results {
>    my ($strsql) = @_;
>
>    print "<pre>$strsql</pre>\n";
>    print "<table>\n";
>    my $sth = $dbh->prepare($strsql);
>    $sth->execute;
>    my @row;

You don't use @row anywhere...?

>    my $bHeadersPrinted;
>    while (my $haref = $sth->fetchrow_hashref()) {
>      my %hash = \$haref;

- Did you mean this?
   %hash = %$haref;

- You don't use %hash anywhere, so I'm not sure why you pulled it.

>      if (!$bHeadersPrinted) {
>        print "  <tr>";
>        foreach my $attr (keys %$haref) {

I'd call that $key or $column.

>          print "    <td><B>".$attr."</B></td>";
>        }
>        print "  </tr>";
>        $bHeadersPrinted = "Yuppers";
>      }
>      print "  <tr>";
>      foreach my $attr (sort keys %$haref) {
>        print "    <td>".$haref->{$attr}."</td>";
>      }

You're getting it! Woo-hoo! Congrats!

Before:
        print "    <td>".$haref->{$attr}."</td>";
After:
        print "    <td>$$haref{$attr}</td>";

(That's one nice thing about avoiding -> hash access syntax: you can do 
$$hash{$key} straight in your double quotes.)

>      print "  </tr>";

You might want to throw a \n in there too in case you want to view HTML 
source some day.

>    }
>    $sth->finish;
>    print "</table>";
> }

Good work!

$0.02,

j



More information about the Omaha-pm mailing list