>What I'm currently using is this method
>
> <input name="my_input_box"<TMPL_IF NAME="my_input_box_value">
> value="<TMPL_VAR NAME="my_input_box_value">"</TMPL_IF>>

I don't believe you need the conditional. You can let "my_input_box_value" 
evaluate always. If it contains nothing, it will evaluate to nothing. Your 
template won't be as cluttered. 

>However, how can this be done for select boxes (drop-down lists)?

This was the thing that was the most difficult for me. I thought H::T should 
have a mechanism to handle this more directly. What I do is loop selecting my 
values from a database into a hash (using DBI "fetch"). 

=======================================
while ($sth_select_some_list->fetch) {

    # %db_vals is automatically populated because the prepared statement
    # has "bind_col" each column to a $db_vals{key}.

      if ($db_vals{code} eq $selected_value) {
        $sel = ' selected="selected"';
      }
      else {
        $sel = '';
      }

    push @loop_data, {
         VAL      => $db_vals{code},
         TEXT     => $db_vals{display},
         SELECTED => $sel,
         LANG     => ' lang="en"'
    }

} # end loop

$template->param(MY_LOOP => [EMAIL PROTECTED]);
==================================

And then the template looks like this:

==================================
<select id="my_list" name="my_list">
<TMPL_LOOP NAME=MY_LOOP><option value="<TMPL_VAR NAME=VAL>"<TMPL_VAR 
NAME=SELECTED>><TMPL_VAR NAME=TEXT></option></TMPL_LOOP>
</select>
==================================

A few months ago someone posted a nifty SQL select that created the array to be 
passed to the template (all in one SQL). 

I actually do a one-time select into a hash, and regenerate the select list 
with each display. I do this because I translate the values selected from a 
table into whatever language the visitor chose. I don't want to do that with 
each display. So, I select and translate when I detect the first time the page 
will be displayed in that language. I generate the select list from a those 
values which I keep in memory as long as my script is in memory.

This gets back to how I wish there was a way to perform evaluation upon the 
cached H::T template. I could evaluate the select list values with the 
language. And then only evaluate the "selected" attribute for each display.

Mark



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to