in reply to TMPL_LOOP within a TMPL_LOOP

Piece of cake! You simply pass another array reference of hash references, just like $returnArray. But it looks like you have a problem with the parameter 'DisplayContent' - it is inside the TMPL_LOOP, so you have to include it inside $returnArray. Here is a semi-rewrite with some hard coded data (for ease of demonstration). You will need to rewrite this to retrieve the select data from your database.
use strict; use HTML::Template; my $data = do {local $/; <DATA>}; my $template = HTML::Template->new( scalarref => \$data, ); my $returnArray = [ { node_date => 'some date', node_author => 'some author', DisplayContent => 'DisplayContent', node_title => 'some title', node_content => 'some content', action_name => 'some_action', select_name => 'Type', options => [ {opt => 'Audit'}, {opt => 'New'}, {opt => 'Update'}, ], }, { node_date => 'some other date', node_author => 'some other author', DisplayContent => 'DisplayContent', node_title => 'some other title', node_content => 'some other content', action_name => 'some_other_action', select_name => 'Type', options => [ {opt => 'Audit'}, {opt => 'New'}, {opt => 'Update'}, ], }, ]; $template->param( NEWBODY => $returnArray ); print $template->output; __DATA__ <TMPL_LOOP NAME=NEWBODY> <P CLASS="std-title"><STRONG>Date</STRONG>: <TMPL_VAR NAME=node_date>< +BR> STRONG>By</STRONG>: <TMPL_VAR NAME=node_author> <P> <TMPL_VAR NAME=DisplayContent> <FORM ACTION="modify.pl" METHOD="POST"> <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1> <TR><TD>Title</TD> <TD><INPUT TYPE="TEXT" SIZE=100 NAME=node_title value="<TMPL_VAR NAME= +node_title>"></TD> </TR> <TR> <TD COLSPAN=2> <TEXTAREA COLS=100 ROWS=20 NAME=node_content><TMPL_VAR NAME=node_conte +nt></TEXTAREA> </TD> </TR> <TR><TD><INPUT TYPE="SUBMIT" NAME=action_name VALUE="<TMPL_VAR NAME=ac +tion_name>"></TD></TR> <TD><INPUT TYPE="RESET" VALUE="Reset"></TD> </TR> </TABLE> <SELECT NAME="<TMPL_VAR NAME=select_name>"> <TMPL_LOOP NAME="options"> <OPTION><TMPL_VAR NAME="opt"></OPTION> </TMPL_LOOP> </SELECT> </FORM> </TMPL_LOOP>
UPDATE:
Also, you should go ahead and get in the habit of using lower case for HTML tags. This is the new standard, and it also helps to differentiate between the HTML::Template tags, should you choose to keep the upper caps. These days i find myself just using lower case for them all and dropping the NAME parameter like so:
<html> <body> <tmpl_var foo> <tmpl_loop bar> <tmpl_var baz> <tmpl_var qux> </tmpl_loop> </body> </html>

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
(shockme) Re: (jeffa) Re: TMPL_LOOP within a TMPL_LOOP
by shockme (Chaplain) on Apr 30, 2002 at 05:02 UTC
    This is good stuff. Using the code I have and following your HTML for the template
    $$returnArray[$index]{options} = $typesArray;
    populated the template perfectly.

    Thanks, jeffa!

    If things get any worse, I'll have to ask you to stop helping me.