PHPによるWebフォーム処理
 Webアプリケーションの基本はなんといってもWebフォームを使ってユーザから情報を受け取り、 それに対する応答を返すという処理パターンです。 PHPでの実装方法はバリエーションが豊富ですが、 ここで最も簡単な例をご紹介しましょう。 次のHTML文書は一般的なセミナーの受講申し込みを模したWebフォームです。 この中にはPHPスクリプトは含まれていないので、 「form-separate-form.html」と名づけました。
<html>
<head>
<meta http-equiv="Context-Type" content="text/html;charset=EUC_JP">
<title>フォームのサンプル</title>
</head>
<body bgcolor="white">

<form action="form-separate-result.php" method="post">
受講生ID:
<input type="text" name="student_id"><br>

コース:<br>
<input type="radio" name="course" value="lv1" checked>入門コース<br>
<input type="radio" name="course" value="lv2">初級コース<br>
<input type="radio" name="course" value="lv3">応用コース<br>
<input type="radio" name="course" value="lv4">特訓コース<br>

会場:<br>
<select name="location" size=4>
<option value="sendai" selected>仙台
<option value="shinagawa">品川
<option value="makuhari">幕張
<option value="kyoto">京都
<option value="osaka">大阪
</select>
<br>
<input type="submit" value="申し込む">
<input type="reset" value="クリア">
</form>
</body></html>

 今度は、この入力に対する処理を行って応答するスクリプト (form-separate-result.php)です。 処理を行うといっても、入力内容をそのまま出力するだけのものなので、 全く登録処理は行っていません。その部分は? そそ、そこを書くのがビジネスに依存する部分なのですね。

<html><head>
<meta http-equiv="Context-Type" content="text/html;charset=EUC_JP">
<title>フォームのサンプル</title>
</head>
<body bgcolor="white">
<?
$student_id = trim($HTTP_POST_VARS["student_id"]);
$course     = trim($HTTP_POST_VARS["course"]);
$location   = trim($HTTP_POST_VARS["location"]);

if(empty($student_id)){
?>
    <h1>おおっと</h1>
    受講生IDを入力して下さい。
<?
}
else{
?>
    <h1>登録を完了しました。(たぶん)</h1>
    受講生ID= <?= $student_id ?><br>
    コース=<?= $course ?><br>
    会場=<?= $location ?><br>
<?
}
?>
<br>
<a href="form-separate-form.html">フォームに戻る</a><br>
</body></html>

 ポイントは、フォームで入力されたCGI変数の値は配列HTTP_GET_VARSまたはHTTP_POST_VARS に、変数名を添字とする配列として格納されるということだけで、 後はそれらを使って処理を書いてやればOKです。


フォームと応答をひとつの文書にまとめる
 これもよく使われる基本的なテクニックですが、 CGI変数の存在有無によって、同じHTML文書で、 Webフォームを表示したり、 それに対する応答を表示したりを切り替えることが可能です。 ひとつの処理に対するファイルが複数に分散してしまうCGIに比べて、 リソースの管理が楽になるはずです。

<html><head>
<meta http-equiv="Context-Type" content="text/html;charset=EUC_JP">
<title>フォームのサンプル</title></head>
<body bgcolor="white">
<?
if(isset($HTTP_POST_VARS["student_id"])){
    /* フォーム変数が存在すれば、フォームの入力を受けた応答を
     * 返します。*/
    $student_id = trim($HTTP_POST_VARS["student_id"]);
    $course     = trim($HTTP_POST_VARS["course"]);
    $location   = trim($HTTP_POST_VARS["location"]);

    if(empty($student_id)){
?>
        <h1>おおっと</h1>
        受講生IDを入力して下さい。
<?
    }
    else{
?>
        <h1>登録を完了しました。(たぶん)</h1>
        受講生ID= <?= $student_id ?><br>
        コース=<?= $course ?><br>
       会場=<?= $location ?><br>
<?
    }
}
else{
    /* フォーム変数が存在しない場合、これからフォームに入力するものとして、
     * フォームを表示します。 */
?>
<form action="form-united.php" method="post">
受講生ID:
<input type="text" name="student_id"><br>

コース:<br>
<input type="radio" name="course" value="lv1" checked>入門コース<br>
<input type="radio" name="course" value="lv2">初級コース<br>
<input type="radio" name="course" value="lv3">応用コース<br>
<input type="radio" name="course" value="lv4">特訓コース<br>

会場:<br>
<select name="location" size=4>
<option value="sendai" selected>仙台
<option value="shinagawa">品川
<option value="makuhari">幕張
<option value="kyoto">京都
<option value="osaka">大阪
</select>
<br>
<input type="submit" value="申し込む">
<input type="reset" value="クリア">
</form>
<?
}
?>
<br>
<a href="form-united.php">フォームに戻る</a><br>
</body></html>

というか、上2つのサンプルをifブロックとelseブロックをつけて連結しただけ。 これでテクニックと言われてもねえ、 というよーな矯激なツッコミは、全て無効とさせていただきます。(こらこらこら)

Java Top
(first uploaded 2001/12/24, KQ Taura)

e[NECir Yahoo yV LINEf[^[z500~`I
z[y[W NWbgJ[h COiq@COsI COze