in reply to Beginner question about displaying database contents using HTML Template

To continue jZed's example, you could assign the $aoh to a template loop (see the docs for HTML::Template):

$template->param(MY_LOOP => $aoh);
and then create a template that looks something like this:
<TMPL_LOOP NAME="MY_LOOP"> <td><TMPL_VAR NAME=FNAME></td> <td><TMPL_VAR NAME=LNAME></td> <td><TMPL_VAR NAME=PHONENUM></td> </TMPL_LOOP>
Each record in the $aoh will be output using the template structure in the loop (assuming the keys in the hash for each record include "FNAME", "LNAME", AND "PHONENUM").

HTML::Template is pretty slick, but you might need to experiment a bit to get the hang of it. Give it a shot and if you get stuck feel free to come back and ask more specific questions.

Replies are listed 'Best First'.
Re^2: Beginner question about displaying database contents using HTML Template
by derekash913 (Initiate) on Jul 20, 2006 at 18:12 UTC
    Here's where I am at now: I think I am still unsure about how to preserve the ORDER BY once I display the results of the template. Any advice????????
    sub displayphone { #Retrieve current state of the object my $self = shift; #Shortcut to return a reference to an array of hash elements my %attr = ( dbi_fetchall_arrayref_attr => {}); #Preparing the template and substitute the values my $template = HTML::Template->new(filename => 'displayphone.tmpl' +); $template->param(ROWS => $dbh->selectall_arrayref("SELECT * FROM d +irectory ORDER BY lastname", \%attr, $value),); #Display results return $template->output; }
      If you retrieve your results into an arrayref (e.g. with selectall_arrayref), the rows in the array will be in the order returned by the SQL query, in this case ordered by lastname. If you use TMPL_LOOP to display the arrayref, it will display the results in the order they occur in the arrayref. What's the problem?