コンピュータリテラシー演習のページへ
Rubyによるはじめてのプログラミング

フォームの作成

前に挙げた簡単なCGIの例では、とりあえず入力は考えずに、表示だけ行うものでした。 しかし、CGIならではの使い方は、やはり、ユーザが入力したデータを受け取って、 何らかの処理をすることです。例えば、Web掲示板はユーザの書き込んだメッセージを CGIが受け取って、掲示板のデータに加えることで実現できます。

ユーザにデータを入力されるには、入力をさせる入力欄が必要です。 HTMLでは、フォームという仕組みで、そのような入力欄を作ります。

フォームの例

フォームはformタグを使って作成します。以下に例を示します。

どのスポーツが一番好きですか?
野球 サッカー バスケットボール テニス ゴルフ

好きなスポーツは?(複数回答可)
野球 サッカー バスケットボール テニス ゴルフ

あなたの学科を選んでください

学籍番号を入力してください

コメントがあれば記入してください

このHTMLソースは以下のようになります。このようなソースをHTMLファイル内に書けばよいのです

<form method=post action=submit.cgi>
<p>どのスポーツが一番好きですか?<br>
<input type=radio name="sports" value="1">野球
<input type=radio name="sports" value="2">サッカー
<input type=radio name="sports" value="3">バスケットボール
<input type=radio name="sports" value="4">テニス
<input type=radio name="sports" value="5">ゴルフ
</p>
<p>
好きなスポーツは?(複数回答可)<br>
<input type=checkbox name="baseball" value="1">野球
<input type=checkbox name="soccer" value="1">サッカー
<input type=checkbox name="basket" value="1">バスケットボール
<input type=checkbox name="tennis" value="1">テニス
<input type=checkbox name="golf" value="1">ゴルフ
</p>
<p>
あなたの学科を選んでください 
<select name="dept">
  <option selected value="0">指定なし</option>
  <option value="1">経営情報</option>
  <option value="2">環境情報</option>
  <option value="3">情報システム</option>
  <option value="4">情報文化</option>
</select>
</p>
<p>
学籍番号を入力してください
<input type=text size=7 maxlength=6 name="student_id">
</p>
<p>
コメントがあれば記入してください<br>
<textarea name=comment rows=4 cols=40>
ここに書いてください
</textarea>
</p>

<p>
<input type=submit value="送信">
<input type=reset value="クリア">
</p>
</form>

フォームの詳細

formタグは以下の形式で記述します。

<form method=メソッド名 action=CGIファイル名>
コントロール
</form>

メソッド名にはgetとpostがあります。 getの場合は、ユーザが入力した内容がURLの末尾に付けられて送られます。postの場合にはURLとは別に送られます。URLの長さには制限がありますので、getは多量のデータを送信する場合には適していません。そこでgetメソッドは表示など簡単な用途に、postメソッドはデータ送信の目的に適しています。

以下に<form ..>と</form>の間に記述するコントロールを示します。

コントロールの詳細

以下のコントロールには、コントロール名コントロール値というものがあります。 コントロール名はそれぞれのコントロールで指定するデータを区別するための名前です。 例えば、以下のラジオボタンの例では "sports" です。 コントロール値は、あるコントロール名が取る値です。例えば、以下のラジオボタンでは、 野球の時は"1"を、サッカーの場合は、"2"を、バスケの場合は"3"という値を取ります。

通常、フォームにデータを入力して送信すると、そのデータはWebサーバを介して、「コントロール名=コントロール値」という形でCGIに送られます。


東京情報大学情報システム学科
大見 嘉弘(Yoshihiro OHMI)