第6回 入力チェックとエラー表示(1) - PHP基礎講座

PHP講座 HTML×CSS 初級編

Saity先生のPHP基礎講座

Lecutures on PHP

第6回 入力チェックとエラー表示(1) (その1)

 このエントリーをはてなブックマークに追加
  • Saity講座、今回から皆さんのご要望にお答えして、更新頻度を2週間前後から1週間前後に変更することが決まりました☆
  • おおおー♪やりましたね、Saity先生!これからはもっとみんなに会えますね!
  • それもこれも、読者の皆様のおかげです!さて、では第6回目を始めるとしますかー!
  • わーい。先生、今回は何をするんですか?

エラー表示の改良

  • 今回は、入力値チェックの話をしよう。ユーザーが何らかのデータを入力したら、その入力値をチェックして、おかしな内容だった場合にはエラーメッセージを出すのが普通だ。僕たちが作った占いプログラムもそうだけど、エラーの場合にはブラウザの戻るボタンで入力画面にもどるプログラムが多かった。
  • 多かった・・・って、過去形なのはなんで?今は何か違うんですか?
  • いい質問だね☆いちいち戻るボタンを使わなきゃいけないのでは、利用者にとって使い勝手が悪いよね。間違いに気づいても、修正するためには一から入力し直さないといけない。
  • ふむふむ。しかもページをまたぐから、どこが間違っていたかを覚えとかなきゃいけないですね。。。
  • そのため今では、入力にエラーがあったら自動的に入力画面に戻って、その上部にメッセージを出すようなフォームが一般的なのさ。
  • なるほど~。私たちの占いソフトも、そうしましょうよ!
  • もちろんそのための前振りさ☆ユキちゃん、早速コードを書けるかな??
  • うんと。。。actionで飛び先が変わるから、今回は自分自身にすればいいはず!ってところまではわかる。。。
  • その通り。そして、以下のコードのように1つのページ内で処理をするようにしてしまうんだ。下のソース自体は、以前に作った2つのコードをuranai_result.phpにまとめてくっつけただけだよ。
<?php 

if (isset($_POST["uranai"])) {
    
// ageが数字ではなかった場合、メッセージを表示してプログラムを終了。 
    
if (is_numeric($_POST["age"]) == false) {  
      print(
"年齢は数字で教えてください!"); 
      exit(); 
    } 

    
$sorry_message =  
            
"ちょっとあなたの年齢は対象年齢に含まれていません・・・"
    
$uranai_message[1] =  
            
"10代のあなたには、PHPをお守り代わりに勉強するのが良いみたい。"
    
$uranai_message[2] =  
            
"20代のあなたには、趣味でPHPを使うと良いみたい。"
    
$uranai_message[3] =  
            
"30代のあなたには、ビジネススキルとしてPHPを勉強すると良いみたい。"
    
$uranai_message[4] =  
            
"40代のあなたには、PHPは新たなフロンティアとなるでしょう。"

    
$sedai floor($_POST["age"] / 10); 
    
    if (isset(
$uranai_message[$sedai])) { 
      print(
$uranai_message[$sedai]); 
    } else { 
      print(
$sorry_message); 
    }

?>
<html>
<body>
<form action="uranai_result.php" method="post">
年齢を教えてください:
<input type="text" name="age" value="">
<input type="submit" name="uranai" value="占う!">
</form>
</body>
</html>
  • 要するに、送信されたら、もう一度入力画面に戻ってくるわけさ。ただし、年齢が入力されていた時には、占い結果を出さないといけない。そのために、submitのボタンのnameにuranaiという名前をつけて、$_POST変数を使ってフォームの送信時だけ占い処理を行うようにしてるんだ。
  • なるほどですね~。
  • 1
  • 2

  



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)