開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の6章(Webフォームの作成)6.7(演習問題)3を解いてみる。
3.
コード(TextWrangler)
<?php $cals = array("add","sub","mul","div"); $result; if($_POST['_submit_check']){ if($form_errors = validate_form()){ show_form($form_errors); } else { process_form(); } } else { show_form(); } function show_form($errors = ""){ print <<<_HTML_ <form method="POST" action="$_SERVER[PHP_SELF]"> <input type="text" name="val1"/> <input type="text" name="val2"/> <select name="cal"> <option>add</option> <option>sub</option> <option>mul</option> <option>div</option> </select> <input type="submit" value="result" /> <input type="hidden" name="_submit_check" value="1"/> </form> _HTML_; if($errors){ print "<p>エラー一覧</p><ul><li>"; print implode("</li><li>",$errors); print "</li></ul>"; } } function validate_form(){ $errors = array(); if(!strlen($_POST['val1'])){ $errors[] = "値(左)を入力してください"; } elseif(!$_POST['val1'] == strval(floatval($_POST['val1']))){ $errors[] = "数値(左)を入力してください"; } if(!strlen($_POST['val2'])){ $errors[] = "値(右)を入力してください"; } elseif(!$_POST['val1'] == strval(floatval($_POST['val2']))){ $errors[] = "数値(右)を入力してください"; } if(! in_array($_POST['cal'], $GLOBALS['cals'])){ $errors[] = "演算子を選択してください"; } return $errors; } function process_form(){ $a = $_POST['val1']; $b = $_POST['val2']; $cal = $_POST['cal']; $result; switch($cal){ case "add": $result = $a + $b;$cal = "+";break; case "sub": $result = $a - $b;$cal = "-";break; case "mul": $result = $a * $b;$cal = "*";break; case "div": $result = $a / $b;$cal = "/";break; } print "$a $cal $b = $result\n"; } ?>
HTMLソース
<form method="POST" action="/kamimura_blog/learning_php/sample22.php"> <input type="text" name="val1"/> <input type="text" name="val2"/> <select name="cal"> <option>add</option> <option>sub</option> <option>mul</option> <option>div</option> </select> <input type="submit" value="result" /> <input type="hidden" name="_submit_check" value="1"/> </form>
(送信前)
0 コメント:
コメントを投稿