> Matthew, I don't understand what's wrong with Jason's example. If DBI yields
> a result in the format HTML::Template understands, what's wrong with taking
> advantage of that? How would you change his example to make it more indirect
> and abstract?

I would do something like:

{
  my $sql_result = $db->fetch...
  my @output;
  foreach (@{$sql_result}) {
     my $tmp;
     $tmp->{name} = $_->[0];
     if ($_->[0] == 'fred') { $tmp->{selected} = 1; }
     push @output, $tmp;
  }
  template->param( 'some_loop' => [EMAIL PROTECTED]);
}

this makes the 'some_loop' TMPL_LOOP become reasonably abstract, as used below...

> I love HTML::Template. Especially in combination with CGI::Application. But,
> sometimes a database structure naturally lends itself to a form structure.
> Doesn't it? Why is it wrong to pump the SQL output directly to
> HTML::Template?

nothing is wrong with it per se... its all a matter of opinion...

I personally like the fact that I can do something like list with the TMPL_LOOP:

<TMPL_LOOP some_loop>
   <TMPL_IF EXPR="(__counter__ % 3) == 1">
       <tr valign=top>
   </TMPL_IF>
          <td width=33% align=center valign=top class=text>
             ... some info...
             <TMPL_IF selected>
                 .... entry selected
             </TMPL_IF>
          </td>
    <TMPL_IF EXPR="(__counter__ % 3) == 0">
        </tr>
         <tr>
              <td colspan=3>
                   <spacer>
              </td>
         </tr>
   </TMPL_IF>
</TMPL_LOOP>

Basically this stuff takes the loop, then formats the output into three columns and 
multiple rows.
You can see here that the loop is no longer a combobox, but anthing that can be drawn 
using a table.

Thus, not tie'ing the output of the SQL to a specific format, allows me to use the 
same loop definition within:
1) as above
2) combobox
3) list of checkboxes / radiobuttons
4) arbitrary <UL> styled list where I color the selected item

Note, I also use a variation of the above code to display a picture gallery -> the 
Perl code doesn't need to care how I format the output (which would normally be done 
with nested TMPL_LOOP's).

This explain?
Mathew

> 
> Mark
> 
> ----- Original Message ----- 
> From: "Mathew Robertson" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, May 03, 2004 8:26 PM
> Subject: Re: [htmltmpl] Select/option How to set "selected"?
> 
> 
> > What's really neat if you do it like that is you can use DBI's
> > fetchall_arrayref method and be really snazzy:
> >
> > my $template = HTML::Template->new( 'filename' => 'file.TMPL' );
> > my $sth = $dbh->prepare( <<_SQL_ );
> > SELECT val,
> >         text,
> >         (if then else to return 'selected' or '') AS selected
> > FROM table
> > WHERE whatever...
> > _SQL_
> > $sth->execute();
> > $template->param( 'OCCUPATION_LOOP' => $sth->fetchall_arrayref( {} ) );
> > ## Note that the fetchall_arrayref doesn't save you computing time --
> > ## it's only a shortcut and does the same thing as your loop to go
> > ## through the results
> > ---
> >
> > What's neat about this, too is that it simplifies the template code, as
> > Puneet laid out.
> 
> Except that you have now tied your SQL statement directly to HTML syntax; in
> which case... what is the point of using H::T -> you could generate HTML
> output faster if you created an SQL statement which generated HTML directly.
> 
> The purpose of H::T is to decopule the data from the presentation.
> Mathew
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by: Oracle 10g
> Get certified on the hottest thing ever to hit the market... Oracle 10g.
> Take an Oracle 10g class now, and we'll give you the exam FREE.
> http://ads.osdn.com/?ad_id149&alloc_id66&op=ick
> _______________________________________________
> Html-template-users mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/html-template-users
> 
>


-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
Html-template-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to