プロが教える店舗&オフィスのセキュリティ対策術

こんばんわ。いつもお世話になっております。
htmlページでプルダウン形式で血液型を選択して、
cgiに送り、その結果、貴方は(血液型)です。と表示させたいのですが、
htmlページで、
<form action="xxx.cgi">
<div><select name="blood">
<option value="a">A型
<option value="b">B型
<option value="ab">AB型
<option value="o">O型
</select></div>
<input type=submit value="見る"></form>
として、
cgiの方では、
$blood="$in{'blood'}";
if ($blood==a) {
print "私はA型です。";
}
if ($blood==b) {
print "私はB型です。";
}
if ($blood==ab) {
print "私はAB型です。";
}
if ($blood==o) {
print "私はO型です。";
}
としたのですが、
表示結果が
私はA型です。私はB型です。私はAB型です。私はO型です。
と全部でてきてしまいます。
何か構文的におかしいのでしょうか?
よろしくお願いします。

A 回答 (1件)

CGIのカテゴリで言語が書いてないので言語はPerlと仮定します。


まず、Perlで文字列比較演算子は == ではなく eq です。
あと、血液型は調べていない人など不明な人やA/B/AB/O型以外の
血液型の人もいるのでそういった人のことも考慮しましょう。

<form action="xxx.cgi">
<div><select name="blood">
<option value="a">A型</option>
<option value="b">B型</option>
<option value="ab">AB型</option>
<option value="o">O型</option>
<option value="unknown">不明</option>
<option value="etc">その他</option>
</select></div>
<input type="submit" value="見る"></form>

my $blood = "$in{'blood'}";

if($blood eq 'a') {
print "私はA型です。";
} elsif($blood eq 'b') {
print "私はB型です。";
} elsif($blood eq 'ab') {
print "私はAB型です。";
} elsif($blood eq 'o') {
print "私はO型です。";
} elsif($blood eq 'unknown') {
print "私の血液型は不明です。";
} else {
print "私はその他の血液型です。";
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!