プログラムを作ってみよう(2) |
|
前回は、フォームに入力された年齢に対応したメッセージを表示するプログラムを作成しました。 |
では、ここに「フォームに数字以外の数値を受け付けない処理」「10代〜50代以外の場合の処理」 |
をつけていきましょう。 |
|
・is_numeric関数 |
変数が数値が調べるにはis_numeric関数を使用します。
|
今回は、$_POSTに入っている値が数値データか調べます。ではコードを追加していきます。 |
|
uranai_result.php |
<?php
//$_POST["age"]が数値か調べる
if(is_numeric($_POST["age"])){
//$agenoにPOSTで送られた値を10で割って正数値にして代入
$ageno = floor($_POST["age"]/10);
}else{
print
"年齢は数字で入力してください。";
}
//以下省略… |
赤文字の所を追加しています。is_numeric関数で$_POST["age"]が数値か調べます。そしてif文で条件分岐
|
させています。この場合、数値だった場合$agenoに$_POSTの値を格納し、それ以外の時はエラーメッセージを |
表示させています。 |
試しに数字以外をフォーム入れてみてください。エラーメッセージが表示されましたね。 |
|
・isset関数 |
では続けて10代〜50代以外の場合の処理も入れていきましょう。 |
uranai_result.php |
//上部は省略しています…
$uranai[4] = "40代のあなたは黄色がラッキーカラーです。";
$uranai[5] = "50代のあなたは白がラッキーカラーです。";
//配列を表示させる
if(isset($uranai[$ageno]){
print $uranai[$ageno];
}else{
print
"残念ですが、あなたの年代は対応していません…。";
}
?> |
入力された年齢が10代〜50代以外の場合、配列$uranaiの変数$agenoには値がないので配列にメッセージ |
が入らないことになります。ですから、配$agenoに値が入っているかチェックする必要がありますね。 |
isset関数は変数に値がセットされているかを調べる関数です。 |
isset(変数) |
変数に値があるかないかはif文と組み合わせてプログラムを組む際に頻繁に使用されます。 |
覚えておきましょう。
|
今回は、配列$uranaiの$agenoに値がセットされていれば占いメッセージの表示をさせ、それ以外の場合は |
エラーメッセージを表示します。 |
できたら10代〜50代以外の数値を入れて確認してみてくださいね。 |
|
・最後にプログラムをまとめる
|
今の所、uranai.phpからuranai_result.phpに遷移させていますがuranai.phpにはHTMLしかないのでちょっと
|
無駄ですよね。それに、入力を失敗した時に自分でフォームに戻らなければなりません。
|
そこで、uranai.phpとuranai_result.phpをまとめてしまいましょう。
|
uranai.php.phpにuranai_result.phpのコードを貼り付け、必要なコードを追加します。
|
|
uranai.php
|
<?php
if(isset($_POST["ok"])){
if(is_numeric($_POST["age"])){
$ageno = floor($_POST["age"]/10);
}else{
print "年齢は数字で入力してください。";
}
$uranai[1] = "10代のあなたは青がラッキーカラーです。";
$uranai[2] = "20代のあなたは赤がラッキーカラーです。";
$uranai[3] = "30代のあなたは緑がラッキーカラーです。";
$uranai[4] = "40代のあなたは黄色がラッキーカラーです。";
$uranai[5] = "50代のあなたは白がラッキーカラーです。";
if(isset($uranai[$ageno])){
print $uranai[$ageno];
}else{
print "残念ですが、あなたの年代は対応していません…。";
}
}
?>
<html>
<title>占いフォーム</title>
<body>
<form action="uranai.php" method="post">
<input type="text" name="age">
<input type="submit" name="ok" value="占う">
</body>
</html>
|
赤文字の所を変更します。
|
結果を同じページに表示するので、HTMLのactionをuranai.phpにします。
|
「占う」ボタンが押されたら結果を表示させたいので、if文とisset関数で$_POST["ok"]に
|
値がセットされたら=ボタンが押されたら 以下の処理を行うようにしています。
|
|
|
条件文も組み込んで、少しだけ複雑になってきました。
|
コードを理解するコツは、どういう目的でどういう風に動作しているか流れを目でしっかり追うことです。
|
|
|
|