開発環境
- 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(演習問題)4を解いてみる。
4.
コード(TextWrangler)
<?php $states = array('Alabama','Alaska','Arizona','Arkansas','California', 'Colorado','Connecticut','Delaware','Florida','Georgia', 'Hawaii','Idaho','Illinois','Indiana','Iowa', 'Kansas','Kentucky','Louisiana','Maine','Maryland', 'Massachusetts','Michigan','Minnesota','Mississippi','Missouri', 'Montana','Nebraska','Nevada','New Hampshire','New Jersey', 'New Mexico','New York','North Carolina','North Dakota','Ohio', 'Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina', 'South Dakota','Tennessee','Texas','Utah','Vermont', 'Virginia','Washington','West Virginia','Wisconsin','Wyoming'); if(array_key_exists('_submit_check',$_POST)){ 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]"> <label>配送元(州): <input type="text" name="from" /></label><label>郵便番号(5桁): <input type="text" name="from_add"/></label><br /> <label>宛先(州): <input type="text" name="to"/></label><label>郵便番号(5桁): <input type="text" name="to_add"/></label><br /> <label>大きさ(36インチ以上): <input type="text" name="inch" /></label><br /> <label>重さ(150ポンド以下): <input type="text" name="pond" /></label><br /> <input type="submit" value="送信" /> <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['from'])){ $errors[] = "送信元を入力してください"; } elseif(!in_array($_POST['from'], $GLOBALS['states'])){ $errors[] = "送信元の州名を確認してください。"; } if(!strlen($_POST['from_add'])){ $errors[] = "送信元の郵便番号を入力してください"; } elseif(!preg_match('/^\d{5}$/',$_POST['from_add'])){ $errors[] = "正しい形式で送信元の郵便番号を入力してください。"; } if(!strlen($_POST['to'])){ $errors[] = "送信先を入力してください"; } elseif(!in_array($_POST['to'], $GLOBALS['states'])){ $errors[] = "送信先の州名を確認してください。"; } if(!strlen($_POST['to_add'])){ $errors[] = "送信先の郵便番号を入力してください"; } elseif(!preg_match('/^\d{5}$/',$_POST['to_add'])){ $errors[] = "正しい形式で送信先の郵便番号を入力してください。"; } if(!strlen($_POST['inch'])){ $errors[] = "大きさを入力してください。"; } elseif(!$_POST['inch'] == strval(floatval($_POST['inch']))){ $errors[] = '大きさには数値を入力してください。'; } elseif ($_POST['inch'] < 36){ $errors[] = '大きさは36インチ以上からです。'; } if(!strlen($_POST['pond'])){ $errors[] = "重さを入力してください"; } elseif (!$_POST['pond'] == strval(floatval($_POST['pond']))){ $errors[] = "重さには数値を入力してください。"; } elseif ($_POST['pond'] > 150){ $errors[] = "重さは150ポンドまでです。"; } return $errors; } function process_form(){ $from = $_POST['from']; $from_add = $_POST['from_add']; $to = $_POST['to']; $to_add = $_POST['to_add']; $inch = $_POST['inch']; $pond = $_POST['pond']; print "<table border=1>"; print "<tr><th>送信元</th><th>郵便番号</th><th>送信先</th><th>郵便番号</th><th>大きさ</th><th>重さ</th></tr>"; print "<tr><td>$from</td><td>$from_add</td><td>$to</td><td>$to_add</td><td>$inch</td><td>$pond</td></tr>"; } ?>
HTMLソース
<form method="POST" action="/kamimura_blog/learning_php/sample23.php"> <label>配送元(州): <input type="text" name="from" /></label><label>郵便番号(5桁): <input type="text" name="from_add"/></label><br /> <label>宛先(州): <input type="text" name="to"/></label><label>郵便番号(5桁): <input type="text" name="to_add"/></label><br /> <label>大きさ(36インチ以上): <input type="text" name="inch" /></label><br /> <label>重さ(150ポンド以下): <input type="text" name="pond" /></label><br /> <input type="submit" value="送信" /> <input type="hidden" name="_submit_check" value="1"> </form>
(送信前)
0 コメント:
コメントを投稿