占いページを作ってみる(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プログラムができました
サーバにアップロードして、今の段階で、思ったとおりの動作をするかどうかテストしてみましょう


次回は、一番重要な「占いの結果を作成する」部分を作成します
まだ終わりじゃないですよ