CGI プログラム8

戻る

------------------------------------------------------------------------ my $template = HTML::Template->new(filename => 'test_parts.htm'); ------------------------------------------------------------------------ test_parts.htm <form method="POST" action="test_parts2.pl"> 主機タイプ数を選択してください。 <select name="NO"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> <input type="submit" value="選択">==>http://localhost/scripts/test_parts2.pl<br> </form> ------------------------------------------------------------------------ $t{q} = new CGI; $t{NO} = $t{q}->param("NO"); $t{template} = HTML::Template->new(filename => 'test_parts2.htm'); @loop = (); # initialize an array to hold your loop for $n ( 1 .. 10 ) { $t{Name} = 'OK' . $n; if ( $t{NO} == $n ) { $t{$t{Name}} = 1; } else { $t{$t{Name}} = 0; } $t{template}->param($t{Name} => $t{$t{Name}}); } $t{template}->param(NO => $t{NO}); # send the obligatory Content-Type and print the template output print $t{template}->output; ------------------------------------------------------------------------ NO==><TMPL_VAR NAME="NO"><br> OK1=><TMPL_VAR NAME="OK1"><br> OK2=><TMPL_VAR NAME="OK2"><br> OK3=><TMPL_VAR NAME="OK3"><br> OK4=><TMPL_VAR NAME="OK4"><br> OK5=><TMPL_VAR NAME="OK5"><br> OK6=><TMPL_VAR NAME="OK6"><br> OK7=><TMPL_VAR NAME="OK7"><br> OK8=><TMPL_VAR NAME="OK8"><br> OK9=><TMPL_VAR NAME="OK9"><br> OK10=><TMPL_VAR NAME="OK10"><br> ---------------> <TMPL_IF NAME="OK1"> 主機タイプは1個である。 </TMPL_IF> <TMPL_IF NAME="OK2"> 主機タイプは2個である。 </TMPL_IF> <TMPL_IF NAME="OK3"> 主機タイプは3個である。 </TMPL_IF> <TMPL_IF NAME="OK4"> 主機タイプは4個である。 </TMPL_IF> <TMPL_IF NAME="OK5"> 主機タイプは5個である。 </TMPL_IF> <TMPL_IF NAME="OK6"> 主機タイプは6個である。 </TMPL_IF> <TMPL_IF NAME="OK7"> 主機タイプは7個である。 </TMPL_IF> <TMPL_IF NAME="OK8"> 主機タイプは8個である。 </TMPL_IF> <TMPL_IF NAME="OK9"> 主機タイプは9個である。 </TMPL_IF> <TMPL_IF NAME="OK10"> 主機タイプは10個である。 </TMPL_IF> ------------------------------------------------------------------------ If you called "param()" with a value like sam"my you'll get in trouble with HTML's idea of a double-quote. On the other hand, if you use ESCAPE=HTML, like this: <input name=param type=text value="<TMPL_VAR ESCAPE=HTML NAME="PARAM">"> You'll get what you wanted no matter what value happens to be passed in for param. You can also write ESCAPE="HTML", ESCAPE='HTML' and ESCAPE='1'. If the name of a TMPL_LOOP is used in a TMPL_IF, the IF block will output if the loop has at least one row. Example: <TMPL_IF LOOP_ONE> This will output if the loop is not empty. </TMPL_IF> <TMPL_LOOP LOOP_ONE> .... </TMPL_LOOP> ------------------------------------------------------------------------ use strict; use CGI qw/:standard/; use HTML::Template; my ( %t, @fld, $sql, @rec, @rows, @rowsa, @rowsb ); my $template = HTML::Template->new(filename => 'tmp_if.htm'); $t{OK} = 0; if ( $t{OK} ) { $t{OK1} = 1; $t{OK2} = 0; } else { $t{OK1} = 0; $t{OK2} = 1; } $template->param(OK1 => $t{OK1}); $template->param(OK2 => $t{OK2}); # send the obligatory Content-Type and print the template output print $template->output; ---------------------------------------------------------------- OK1=<TMPL_VAR NAME="OK1"><br> OK2=<TMPL_VAR NAME="OK2"><br> ---------------> <TMPL_IF NAME="OK1"> データベースの項目追加が成功しました。 </TMPL_IF> <TMPL_IF NAME="OK2"> データベースの項目追加が失敗しました。 </TMPL_IF>
戻る