占いページを作ってみる(5) ボタンが押された後の動作
今回は、「占う」ボタンが押された時の処理と、CGIでのHTML部分の出力を作ります
そして実際にCGIファイルをサーバにアップロードして動かしてみます
#!/usr/local/bin/perl use strict; use CGI; my $q = CGI->new(); my $uranai = $q->param('uranai'); #「占う」ボタンが押されたら my $uranai_html; if($uranai){ #占いの結果を作成する my $uranai_kekka = 'とてもいい運勢です'; $uranai_html = <<"URANAI_END"; <div id="kekka"> <h2>占い結果</h2> $uranai_kekka </div> URANAI_END } #ここから、HTMLページ print $q->header(-charset=>'UTF-8'); print <<"HTML_END"; <html> <head> <title>占いページ</title> </head> <body> <h1>占いページ</h1> <form method="POST"> あなたの星座は? <select name="seiza"> <option value="0">おひつじ座</option> <option value="1">おうし座</option> <option value="2">ふたご座</option> <option value="3">かに座</option> <option value="4">しし座</option> <option value="5">おとめ座</option> <option value="6">てんびん座</option> <option value="7">さそり座</option> <option value="8">いて座</option> <option value="9">やぎ座</option> <option value="10">みずがめ座</option> <option value="11">うお座</option> </select> <input type="submit" name="uranai" value="占う"> </form> $uranai_html </body> </html> HTML_END
こんな感じです
if($uranai){ #占いの結果を作成する }
$uranaiは「占う」ボタンが押された時にだけ値が入力されるので、この部分の条件分岐処理の動作により、占い結果が$uranai_htmlへ入力されるのは「占う」ボタンが押された時だけになります
#ここから、HTMLページ print $q->header(-charset=>'UTF-8');
CGI.pmモジュールのheaderメソッドによって、CGIの出力をブラウザで表示するのに必要なHTTPヘッダを簡単にprintできます。-charset=>'UTF-8'は、このページはUTF-8の文字コードで書かれていますよ、という情報をヘッダに含めるということですね
print <<"HTML_END"; HTML_END
今回はヒアドキュメントでHTML部分をプログラムの中に書いてしまいますが、本当はテンプレートエンジンで、HTML部分は別ファイルにしていた方がスッキリしますね
ヒアドキュメントはいろいろ便利で、意外と知られていないのだけど
$dbh->prepare(<<'SQL'); SELECT * FROM table SQL
みたいに、メソッドの引数にそのまま使えたりもします(・ω・)
これでとりあえず、占いページを表示して、ボタンが押されたら占い結果を表示するCGIプログラムができました
サーバにアップロードして、今の段階で、思ったとおりの動作をするかどうかテストしてみましょう
次回は、一番重要な「占いの結果を作成する」部分を作成します
まだ終わりじゃないですよ