書き込み確認ページの作成
今度は、書き込み確認を行うページを作成します。この確認ページでは、トップページの入力フォームから送信された内容を表示し、確認した後で、実際にテーブルに書き込みます。1. 「データベースを利用する為の空白のWebページを作成する」の要領でページを作成し、「write.asp」という名前で保存します。
2. 「guest.asp」で入力したデータを表示するためのテーブルを以下のように作成します。
以下の内容で保存します。よろしいですか?
名前 パスワード Mail Address TEL 住所 「guest.asp」から送信された値はリクエスト変数に格納されます。送信された内容をページに表示するには、まずそのリクエスト変数を「バインディング」パネル内で登録しなければなりません。その後で、リクエスト変数をページ内に挿入します。
1. 「バインディング」パネルを開き、「+」ボタンをクリックして、メニューから「リクエスト変数」を選択します。
2. 設定ダイアログが表示されたら、「タイプ」リストで「Request」を選択し、「名前フィールドに」「name」と入れて「OK」をクリックします。これによって、name という名前のリクエスト変数が登録されます。
3. 同様にして「guest.asp」の入力フォームから送信されてくる残りのリクエスト変数すべてを登録します。つまり、「password」「mail」「tel」「password」の4つのリクエスト変数を追加登録します。登録を終えると「バインディング」パネルに合計5つのリクエスト変数が表示されます。
4 . ドキュメントウィンドウ内の表の1行目の右セルをクリックして、「バインディング」パネル内の「name」をクリックし、「バインディング」パネル下にある「挿入」ボタンをクリックします。これおで、nameリクエスト変数がテーブルに挿入されました。
5. 同様にして、残りのリクエスト変数をテーブル内の適切なセルに挿入します。 リクエスト変数を挿入すると、{タイプ.変数名}という形式のテキストが表示されます。
名前 {Request.name} パスワード {Request.password} Mail Address {Request.mail} TEL {Request.tel} 住所 {Request.address} 6. リクエスト変数内のデータをそのままページ上に表示すると、データに<>等のHTMLタグが含まれている場合に、テーブルのレイアウトが崩れるおそれがあります。「そこで、リクエスト変数のデータ内ではタグを無効にしなければなりません。リクエスト変数の設定を変更するには、「サーバービヘイビア」パネルを使用します。
7. 「サーバービヘイビア」パネル内で「動的テキスト(Request.name)」をダブルクリックし、「動的テキスト」ダイアログを表示します。
8. 「フィールド」リストで、この動的テキストに関連付けるリクエスト変数(name)を選択します。その後で「フォーマット」リストから[エンコード-Server.HTMLエンコード]を選択します。「フォーマット」リストでは、リクエスト変数で表示する内容にどのような書式で適用するかを選択できます。[エンコード-Server.HTMLエンコード]を選択すると、HTMLタグが無効になります。
※ JSPとColdFusionでは、このフォーマットの設定はできません。これらのタグの無効化は、後述します。9. 同様にして、他のリクエスト変数についてもフォーマットを設定します。
次に、この確認ページに表示されたデータをデータベース内のテーブルにレコードとして登録する為のフォームを作成します。
1. 確認ページ内の一番下にフォームを挿入します。送信ボタンを挿入し、ラベルを「書き込む」に変更します。
2. フォーム内に5つの非表示フィールドを挿入し、左から順に「name」「password」「mail」「tel」「password」というオブジェクト名を付けます。最初の5つは、guest.aspから送信された情報をそのままデータベースの送信するために使われます。
3. 1つめの非表示フィールド「name」を選択し、プロパティウィンドウの値の右側の「バインディング」アイコンをクリックして、「フィールド」リストからnameリクエスト変数を選択すると「コード」が「<%= Request("name") %>」と表示されます。「OK」ボタンをクリックして「バインディング」ダイアログを閉じると、「値」フィールドに「<%= Request("name") %>」が表示されていることを確認してください。
※ 「バインディング」パネルに登録されているデータオブジェクトは、ページ内にテキストとして挿入するだけでなく、タグの属性値に割り当てることもできます。4. 非表示フィールド「name」を選択したまま「バインディング」パネルの「name」をクリックすると「バインディング」に「imput.value」と表示されることを確認してください。
5. 同様にして、「password」「mail」「tel」「password」の非表示フィールドの値(value)に同盟のリクエスト変数を割り当てます。
次に、[書き込む]ボタンをクリックしたときに、このページの内容がデータベース内のテーブルにレコードとして挿入されるようにします。そのためには、このフォームにサーバービヘイビアを設定しなければなりません。
1. 「サーバービヘイビア」パネルの「+」ボタンをクリックし、メニューから「レコードの挿入」を選択します。
2. 「レコードの挿入」ダイアログの「接続」リストでは、この挿入操作に使う接続設定「connWebAccount」を選択し、「更新対象テーブル」は「TAccount」を選択します。
3. 「値取得元」リストではレコードとして挿入したいデータオブジェクトを含んでいるフォームを選択します(ここでは「form1」。「フォームエレメント」リストには、選択したフォーム内にあるデータオブジェクトの一覧が表示されます。ここでデータオブジェクトを選択すると、それをデータベース内のテーブルの列に割り当てるかを「列」リストで設定できます。また、そのデータをどのような形式で送信するかを「送信形式」リストで設定することもできます。
4. 「フォームエレメント」リストで「password<無視>」となっている行を選択し、列をリストから「Pass」に変更します。また、「address<無視>」の列はリストから「Addr」に変更します。
5. 「挿入後の移動先」フィールドでは、データベース内のテーブルにレコードを挿入した後でどのページに移動するかを指定します。ここでは「kanryou.htm」に移動することにし、ファイル名を入力します。
6. 「OK」ボタンをクリックして「レコードの挿入」ダイアログを閉じます。
7. 「サーバービヘイビア」パネルで「レコードの挿入(form "form1")」ビヘイビアが追加されていることを確認してください。
「フォームの二重送信を防ぐ」を参照して、Javascriptソースコードを記述します。