開発環境
- 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 コメント:
コメントを投稿