CGI プログラム9

戻る

#!C:/perl/bin/perl ###################################### # test_idname.pl ###################################### use strict; use DBI; use CGI qw/:standard/; use HTML::Template; my ( $dsn, $dbh, $sth, $no ); my ( %t, @fld, $sql, @rec, @rows, @rowsa, @rowsb ); my $template = HTML::Template->new(filename => 'test_idname.htm'); # send the obligatory Content-Type and print the template output print $template->output; <html> <head><title>test_idname</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <body bgcolor="#fcf5ca"> <h2>test_idname</h2> <a href="http://localhost/index.html">http://localhost/index.html</a><br> <hr> main_type1==><TMPL_VAR NAME="type1"> <form method="POST" action="test_idname2.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_idname2.pl<br> </form> <hr> </body> </html> ------------------------------------------------------------------------------ #!C:/perl/bin/perl ###################################### # test_idname2.pl ###################################### use strict; use CGI qw/:standard/; use HTML::Template; my ( %t, @loop, $n, @rec ); $t{q} = new CGI; $t{NO} = $t{q}->param("NO"); $t{template} = HTML::Template->new(filename => 'test_idname2.htm'); 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; <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head><title>test_idname2</title> <head> <body bgcolor="#fcf5ca"> <h2>test_idname2</h2> <a href="http://localhost/index.html">http://localhost/index.html</a><br> <form method="POST" action="test_idname.pl"> <input type="submit" value="戻る"> </form> <hr> 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> ---------------><br> <TMPL_IF NAME="OK1"> 主機タイプは1個である。<br> <form method="POST" action="test_idname3.pl"> キーワード:<input type="text" name="Keyword"> <input type="submit" value="検索"> <input type="reset" value="取消"> </form> </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> <hr> </body> </html> ------------------------------------------------------------------------------ #!C:/perl/bin/perl ###################################### # test_idname3.pl ###################################### use strict; use DBI; use CGI qw/:standard/; use HTML::Template; my ( %t, @loop, $n, @rec ); $t{q} = new CGI; $t{Keyword} = $t{q}->param("Keyword"); # データベース $t{dsn} = "DBI:mysql:host=localhost;database=cookbook"; $t{dbh} = DBI->connect($t{dsn}, "cbuser", "cbpass") or die "Cannot connect to server\n"; $t{dbh}->do("SET NAMES utf8"); if(!$t{dbh}){ print "SQL read ERROR!\n"; exit; } $t{sth} = $t{dbh}->prepare("select id,name from main_type1"); $t{sth}->execute; @{ $t{list} } = (); $t{NO}=0; while (@rec = $t{sth}->fetchrow_array) { $t{name1} = lc($rec[1]); $t{Keyword1} = lc($t{Keyword}); if ( $t{name1} =~ /$t{Keyword1}/ ) { push(@{ $t{ids} },$rec[0]); push(@{ $t{list} },$rec[1]); $t{NO}++; } } $t{sth}->finish; $t{dbh}->disconnect; $t{template} = HTML::Template->new(filename => 'test_idname3.htm'); @loop = (); # initialize an array to hold your loop if ( $t{NO} >= 1 ) { for $n ( 0 .. $#{ $t{list} } ) { $t{list1} = $t{list}[$n]; $t{id1} = $t{ids}[$n]; my %row = ( id => $t{id1}, list => $t{list1} ); # put this row into the loop by reference push(@loop, \%row); } $t{explain} = 'Please select one'; } else { $t{explain} = 'NO RESULTS. Return'; } $t{template}->param(Keyword => $t{Keyword}); $t{template}->param(explain => $t{explain}); $t{template}->param(THIS_LOOP => \@loop); # send the obligatory Content-Type and print the template output print $t{template}->output; <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head><title>test_idname3</title> <head> <body bgcolor="#fcf5ca"> <h2>test_idname3</h2> <a href="http://localhost/index.html">http://localhost/index.html</a><br> <hr> Keyword==><TMPL_VAR NAME="Keyword"><br> Result==><TMPL_VAR NAME="explain"><br> <form method="POST" action="test_idname4.pl"> <select name="SEL1"> <TMPL_LOOP NAME="THIS_LOOP"> <option value="<TMPL_VAR NAME="list">"><TMPL_VAR NAME="id">==><TMPL_VAR NAME="list"></option> </TMPL_LOOP> </select> <input type="submit" value="選択"> </form> <hr> </body> </html> ------------------------------------------------------------------------------ #!C:/perl/bin/perl ###################################### # test_idname4.pl ###################################### use strict; use CGI qw/:standard/; use HTML::Template; my ( %t ); $t{q} = new CGI; $t{type1} = $t{q}->param("SEL1"); $t{template} = HTML::Template->new(filename => 'test_idname.htm'); $t{template}->param(type1 => $t{type1}); # send the obligatory Content-Type and print the template output print $t{template}->output; ------------------------------------------------------------------------------
戻る