出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ラジオボタンとsubmitボタンの組み合わせで指定されたページにFormの内容を飛ばす方法   まどかさん [2001/11/27 12:53:24] [1093]
  【解答例】ラジオボタンとsubmitボタン   北岳さん [2001/11/27 13:31:33] [1095]
    Re:【解答例】ラジオボタンとsubmitボタン   まどかさん [2001/11/27 13:52:11] [1097]
      Re:【解答例】ラジオボタンとsubmitボタン(改良2案)   北岳さん [2001/11/27 14:49:04] [1098]
        Re:【解答例】ラジオボタンとsubmitボタン(改良2案)   まどかさん [2001/11/27 16:43:29] [1099]
          【解答例その3】再帰呼出法   北岳さん [2001/11/27 18:17:04] [1100]
            Re:【解答例その3】再帰呼出法   まどかさん [2001/11/27 19:52:25] [1101]
              発言者により削除されました!! 北岳さん [2001/11/27 20:16:44] [1102]
              【解答例その4】インクルード・ファイル   北岳さん [2001/11/27 20:18:59] [1103]
                ありがとうございました   まどかさん [2001/11/27 23:48:48] [1106]
                  【補講】HTML→asp および asp→asp 間の変数の受け渡し   北岳さん [2001/11/28 13:51:58] [1115]
                    ありがとうございます2 TO 北岳さん   まどかさん [2001/11/28 16:18:23] [1121]
                    Re:ちなみにソレは   通りすがりのASPerさん [2001/11/28 18:23:16] [1122]

[1093] ラジオボタンとsubmitボタンの組み合わせで指定されたページにFormの内容を飛ばす方法
投稿者:まどかさん 2001/11/27 12:53:24
 はじめまして、まどかと申します。
ASPを勉強しだしたばかりで、わからないことが多いので
よろしくお願いします。
 今、私は以下のような一つのテキストボックスと、3つの
ラジオボタン、3つのsubmitボタンがある画面から、
ラジオボタンとsubmitボタンの組み合わせで9つのうちの
一つにFormの内容とともに次のページに飛ばすことを
考えています。
 そこで、ラジオボタンとsubmitボタンの値を取得して、
それ次第で、action=の部分を変えればいいのかな?と
考えたのですが、うまくいきません。
 それとも、全然検討違いのことをしているのでしょうか?
それならば、どうしたらいいのか教えていただけませんでしょうか?
 よろしくお願いいたします。

<HTML>
<HEAD>
<TITLE>らじお</TITLE>
</HEAD>
<BODY>
<form method="POST" action=???>
<tr>
<td><b>お名前</b></td>
<td><input type="text" size="42" name=aaa></td>
</tr>
<INPUT TYPE="radio" NAME="url" VALUE="A">
<INPUT TYPE="radio" NAME="url" VALUE="B">
<INPUT TYPE="radio" NAME="url" VALUE="C">
<INPUT TYPE="submit" VALUE="登録">
<INPUT TYPE="submit" VALUE="検索">
<INPUT TYPE="submit" VALUE="削除">
</FORM>
</BODY>
</HTML>

[1095] 【解答例】ラジオボタンとsubmitボタン
投稿者:北岳さん 2001/11/27 13:31:33
先日、ほとんど同じことをやったばかりで、まだやり方を覚えていました。
(1月経つと忘れちゃう・・・)
 
****** test.htm *******
<HTML>
<HEAD>
<TITLE>らじお</TITLE>
</HEAD>
<BODY bgcolor="beige">
<form method="POST" action="/(aspフォルダ)/test.asp">
<table>
<tr><td><b>お名前</b></td><td colspan=3><input type="text" size="42" name="name"></td>
</tr><tr>
<td>性別</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="male">男</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="female">女</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="human" checked>無指定</td>
</tr><tr><td>選択</td>
<td colspan="3" align="center"><INPUT TYPE="submit" name="sub1" VALUE="登録">  
<INPUT TYPE="submit" name="sub2" VALUE="検索">  
<INPUT TYPE="submit" name="sub3" VALUE="削除"></td></tr>
</table>
</FORM>
</BODY>
</HTML>
 
****** test.asp *******
<html><body bgcolor="#eeffff">
<%
name=Request.Form("name")
if Request.Form("sex")="male" then s="男"
if Request.Form("sex")="female" then s="女"
if Request.Form("sex")="human" then s="無指定"
if Request.Form("sub1")="登録" then x="登録"
if Request.Form("sub2")="検索" then x="検索"
if Request.Form("sub3")="削除" then x="削除"
%>
<p><%= name %> さん(<%= s %>)を <%= x %> します。
</body></html>


[1097] Re:【解答例】ラジオボタンとsubmitボタン
投稿者:まどかさん 2001/11/27 13:52:11
北岳さん、お返事ありがとうございます。誰も返事をしてくれなかったらどうしようと思っていたので、うれしかったです。
 問題の解答に関してなんですが、どうも私の書き方が悪かった
みたいです。文章力がなくてごめんなさい。
 北岳さんがサンプルとして見せてくれたのは、ラジオボタン、
submitボタン、テキストボックスの内容(男とか女とか)を
次のページに渡しているんですよね。
 私がしたかったのは、たとえば、”男”を選んで、”登録”ボタン
を押すと、テキストボックスの内容が、aaa.aspにとんで内容が
表記される。”女”を選んで、”登録”ボタンを押すと、bbb.aspに
飛んで、内容が表記されるということをしたかったのです。
ラジオボタンとsubmitボタンの組み合わせで、次に飛ぶページは
変わるけど、テキストボックスの内容はどのページにも飛ばすことが
できるようにしたかったのです。
 わかりずらかったですよね。申し訳ありません。
この書き方でご理解いただけますでしょうか?
よろしければ、またお返事ください。お願いします。

[1098] Re:【解答例】ラジオボタンとsubmitボタン(改良2案)
投稿者:北岳さん 2001/11/27 14:49:04
> よろしければ、またお返事ください。お願いします。

「はい。」
いや、そんな短い返事でなくて、もっと長い返事をします。
実は、さっきの解答例を読み返して、これではまずいと思い、書き直していました。

 ----------------------------------------------------
一旦test.aspで全部受け取ってから、条件を判断して行き先を分け、
 登録:torok.asp
 検索:kensak.asp
 削除:sakujo.asp
に直接飛ばすには、response.redirectを使いますが、その場合、test.asp に<html>など書くと、
「既にヘッダが書き込まれている」とかいうエラーになります。
 
また、Request.Formの値は、
・Session変数に置き換えるか、
・QueryStringに置き換えないと、
次のtorok.aspなどには引き継げません。
 
 ----------------------------------------------------------
【改良案1.Session変数使用】
****** test.asp *******
<%
Session.TimeOut=20 '分
Session.Contents("name")=Request.Form("name")
if Request.Form("sex")="male" then Session.Contents("sei")="男"
if Request.Form("sex")="female" then Session.Contents("sei")="女"
if Request.Form("sex")="human" then Session.Contents("sei")="無指定"
if Request.Form("sub1")="登録" then response.redirect "/(aspフォルダ)/torok.asp"
if Request.Form("sub2")="検索" then response.redirect "/(aspフォルダ)/kensak.asp"
if Request.Form("sub3")="削除" then response.redirect "/(aspフォルダ)/sakujo.asp"
%>

****** torok.asp *******
<html><body bgcolor="#ffeeff">
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を登録します。
</body></html>
 
 ----------------------------------------------------------
【改良案2.Querystring使用】
****** test.asp *******
<%
nam=Request.Form("name")
if Request.Form("sex")="male" then sei="男"
if Request.Form("sex")="female" then sei="女"
if Request.Form("sex")="human" then sei="無指定"
if Request.Form("sub1")="登録" then response.redirect "/(aspフォルダ)/torok.asp?n=" & nam & "&s=" & sei
if Request.Form("sub2")="検索" then response.redirect "/(aspフォルダ)/kensak.asp?n=" & nam & "&s=" & sei
if Request.Form("sub3")="削除" then response.redirect "/(aspフォルダ)/sakujo.asp?n=" & nam & "&s=" & sei
%>

****** kensak.asp *******
<html><body bgcolor="#ffffee">
<p><%= Request.QueryString("n") %> さん(<%= Request.QueryString("s") %>)を検索します。
</body></html>
 
ちなみにtextの中身でも何でも、Session変数になら1GBくらいは楽に収まりました。(上限はマシン容量で決まるはずで、事実上、ありません。)
QueryStringには上限があったと思いますが、相当入ります。(前回調査から1月以上経過しましたので、忘却。)

[1099] Re:【解答例】ラジオボタンとsubmitボタン(改良2案)
投稿者:まどかさん 2001/11/27 16:43:29
 またまたお返事ありがとうございました。どうやら、うまくいきそうです。それでなんですが、もう一つ聞いてもいいでしょうか?
 やりたいことは同じなんですが、違うやり方ができるのか?って
ことをお聞きしたいのです。
 最初の画面で、form情報を入力するわけですが、今回はいったん
他のところに飛ばしてから、飛ばしたい画面にいきましたよね。
それを最初の画面だけで判定して次の画面に飛ばすことはできるのでしょうか?
 お忙しいところ申し訳ありませんが、よろしくお願いします。

[1100] 【解答例その3】再帰呼出法
投稿者:北岳さん 2001/11/27 18:17:04
>最初の画面で、form情報を入力するわけですが、今回はいったん
>他のところに飛ばしてから、飛ばしたい画面にいきましたよね。
>それを最初の画面だけで判定して次の画面に飛ばすことはできるのでしょうか?
 
再帰呼出法を使えば可能です。
普通のHTMLではできませんので、最初から拡張子をaspにします。
具体的には、前の解答例のtest.htmとtest.aspをくっつけて一つのaspファイルにして、スクリプト(または実行)権のあるフォルダに置きます。
 
*********** /(aspフォルダ)/test.asp(★) ***********
<%
Session.TimeOut=20 '分
Session.Contents("name")=Request.Form("name")
if Request.Form("sex")="male" then Session.Contents("sei")="男"
if Request.Form("sex")="female" then Session.Contents("sei")="女"
if Request.Form("sex")="human" then Session.Contents("sei")="無指定"
if Request.Form("sub1")="登録" then response.redirect "/(aspフォルダ)/torok.asp"
if Request.Form("sub2")="検索" then response.redirect "/(aspフォルダ)/kensak.asp"
if Request.Form("sub3")="削除" then response.redirect "/(aspフォルダ)/sakujo.asp"
%>
<HTML>
<HEAD>
<TITLE>らじお</TITLE>
</HEAD>
<BODY bgcolor="beige">
<! ★次行で「自分自身を」呼び出します。>
<form method="POST" action="/(aspフォルダ)/test.asp">
<table>
<tr><td><b>お名前</b></td><td colspan=3><input type="text" size="42" name="name"></td>
</tr><tr>
<td>性別</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="male">男</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="female">女</td>
<td><INPUT TYPE="radio" NAME="sex" VALUE="human" checked>無指定</td>
</tr><tr><td>選択</td>
<td colspan="3" align="center"><INPUT TYPE="submit" name="sub1" VALUE="登録">  
<INPUT TYPE="submit" name="sub2" VALUE="検索">  
<INPUT TYPE="submit" name="sub3" VALUE="削除"></td></tr>
</table>
</FORM>
</BODY>
</HTML>
*************************************************
 
1回目アクセス時はRequest.Formの中は空っぽなので、if文を素通りして<HTML>以降が表示されます。
2回目アクセス時はFormの中が指定されているので、それらをSession変数に格納後 torok.asp等へ抜け出します。
結局、<HTML>以降へは行きません。
 
response.redirect より前に<html>を書いてはいけません。
Session変数の中身は異なるフォルダ間は渡せません、指定時間経過後はサーバのメモリから消えます。
 
(蛇足の1)
上では3つのaspに飛びますが、理屈上は飛び先は9つでも100個でも可能です。
しかし、ラジオ釦と合わせて9条件で9つのaspに飛ばすのは、何か構想に無駄がある感じで、見直されることをお勧めします。
実際に9つのaspを使うなら、少なくとも3つづつは殆ど同じスクリプトで、ちょっとづつ違うだけでしょうから、includeファイルを使うのが便利でしょう。
 
(蛇足の2)
>>ちなみにtextの中身でも何でも、Session変数になら1GBくらいは楽に収まりました。(上限はマシン容量で決まるはずで、事実上、ありません。)
 
う、また3桁間違えた、私がやったのは数MBまでです。
1GBでも入る筈ですが、そんな重量級をSessionで引っ張り回すことは、まずなさそう。
なお、上限は「サーバの」マシン容量で決まるはず・・・です。

[1101] Re:【解答例その3】再帰呼出法
投稿者:まどかさん 2001/11/27 19:52:25
 今回も大変わかりやすい解答をありがとうございます。それにアドバイスまでいただきましで、本当に感謝しております。
ただ、今の私はアドバイスを聞いて、「あ〜なるほど!」といえる知識ではありません。本当に申し訳ない限りです。
 北岳さんがおっしゃる通り、3つずつのASPファイルはちょっと
違うだけで、ほとんど同じ形をしています。でも、私の
頭ではinclude???って感じなんです。
 今回ばかりは申し訳ないので、時間があったらでいいので
(自分でもこれから調べます)、includeファイルの利用法についてもご教授ねがえませんでしょうか?
 ここで、あきられていまうと、今後聞けなくなってしまうので、
本当に時間があったらでいいので、お願いします。

[1102] Re:【解答例その43】再帰呼出法
投稿者:北岳さん 2001/11/27 20:16:44
発言者により削除されました!!

[1103] 【解答例その4】インクルード・ファイル
投稿者:北岳さん 2001/11/27 20:18:59
蛇足その3でincludeファイルの説明も書きました。
・・・あら、先に質問されちゃった。ま、ちょうどいいですね。
 
 
【問】includeファイルって何ですか?
【答】はい。共通部分を持つ次の3つのファイル
 
----- (1) torok.asp ------------
<html><body bgcolor="#ffeeff">
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を登録します。
</body></html>
 
----- (2) kensak.asp ------------
<html><body bgcolor="#ffeeff">
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を検索します。
</body></html>
 
----- (3) sakjo.asp ------------
<html><body bgcolor="#ffeeff">
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を削除します。
</body></html>
 
を個別に書く代わりに、これらasp と同じフォルダに、共通部分だけ抜き出した
 
----- a.inc ------------
<html><body bgcolor="#ffeeff">
 
----- b.inc ------------
</body></html>
 
を置きます。次に最初の3つのaspを
 
----- (1) torok.asp ------------
<!-- #include file="a.inc" -->
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を登録します。
<!-- #include file="b.inc" -->
 
(以下同様)
 
などと書き換えます。3つの asp は各々、最初と全く同じものになります。
共通部分を頻繁に手直しする場合は、この技を使わないと、ワケが判らなくなります。
 
なお、include ファイルを aspとは別のフォルダに置く場合は、includeファイルを置いたエイリアスを指定して、
<!-- #include virtual="/otherfolder/a.inc" -->
とします。

[1106] ありがとうございました
投稿者:まどかさん 2001/11/27 23:48:48
 北岳さん本当にありがとうございました。includeファイルの利用方法も理解できました。
 これからまた、お世話になると思います。そのときもよろしくお願いいたします。

[1115] 【補講】HTML→asp および asp→asp 間の変数の受け渡し
投稿者:北岳さん 2001/11/28 13:51:58
>ASPを勉強しだしたばかりで、わからないことが多いので
>よろしくお願いします。
 
結果的にこのスレッド、結構高度な内容になりました。
で,最後に基本に返って表題の件、まとめておきます。
まどかさんはこの辺はあっと言う間に卒業される(既にされた?)でしょうが、
1つのスレッドの方が、検索時に便利。
 
-----------------------------------------------------------
◆変数の中身を a.htm から b.asp へは
 
(1)<form method="POST">を使って Request.Form("x") で、
または
 
(2)<form method="GET">を使って Request.QueryString("y") で、
渡せます。
 
どちらも、受け取ったaspからのみ参照でき、更にその次のaspへは引き渡せませんから、
asp間で渡すには(3)または(4)を使います。
 
◆変数の中身を asp間で渡す。
 
(3)Session変数を使います。
Session変数を使うための設定は何も要らず、任意のasp内でいきなり
  Session.Contents("name")="イチロー"
のように代入すればOKです。
HTML内では Session変数の設定はできません。
(なお、省略形 Session("name")="イチロー" でも通じます。)
 
 Session.Contents("name")="イチロー": Session.Contents("sei")="男"
などと代入すれば、『以後どのaspからでも』、
<p><%= Session.Contents("name") %> さん(<%= Session.Contents("sei") %>)を検索します。
のように、参照できます。
 
(4)response.redirect "/alias/torok.asp?n=野茂&s=ヤンキース"
で送れば、『直後の(呼ばれた、torok.)aspからのみ』
<p><%= Request.QueryString("n") %> さん(<%= Request.QueryString("s") %>)を登録します。
のように、参照できます。
 
------------------------------------------------------------
実例復習
(1)→[1095] 【解答例】ラジオボタンとsubmitボタン
(2)→[1042] 【解答例】Request.QueryString
(3)→[1098] Re:【解答例】ラジオボタンとsubmitボタン
         (改良2案)【改良案1.Session変数使用】
(4)→[1098] Re:【解答例】ラジオボタンとsubmitボタン
         (改良2案)【改良案2.Querystring使用】
-------------------------------------------------------------
実例 (1)(3)(4)は、1つの<form>〜</form> 間に3つのsubmit 釦を置いて、
押された釦によって行き先を変えるという、やや特殊なものでしたが、
基本は以上。
 
・・・と思ったら、通りすがりのASPerさんから凄い技が。
 
(5)本文なしのページを一時表示させ、onLoadイベント時に
  JavaScriptで隠しフォームの内容を別のASPにPOSTする。
ふ〜ん、こんな手もありましたか。
まあ、(3)〜(5)内ではSessionを使うのが、スクリプトは一番書き易いですね。
-------------------------------------------------------------
ところで野茂はヤンキースに行くの?
来年マリナーズはどうなる?捕手が打てないから、ピアザかIロドリゲスを獲れ!!
 
って、こんなところで叫んでも、シアトルまでは届きませんなぁ。

[1121] ありがとうございます2 TO 北岳さん
投稿者:まどかさん 2001/11/28 16:18:23
 かさねがさね、本当にありがとうございます。今回の分もしっかり印刷して、しっかりファイルしてあります。
 こんなにわかりやすく書いてある本ってないですかね?本屋で見る本はすごく難しく感じるのですが・・・(私だけでしょうね〜)
 またまた、分からないことができてしまったので、書き込みしようと
思います。北岳さん、今回もよろしくお願いいたします。
------------------------------------------------------------
 私もyahooのトピックで見ました。野茂さんはどうするんですかね 〜?今年はイチローばかりが報道されているので、野茂さんにも
がんばってもらいたいところですね。
 

[1122] Re:ちなみにソレは
投稿者:通りすがりのASPerさん 2001/11/28 18:23:16
> ・・・と思ったら、通りすがりのASPerさんから凄い技が。
>  
> (5)本文なしのページを一時表示させ、onLoadイベント時に
>   JavaScriptで隠しフォームの内容を別のASPにPOSTする。
> ふ〜ん、こんな手もありましたか。
> まあ、(3)〜(5)内ではSessionを使うのが、スクリプトは一番書き易
> いですね。

ソレはSession変数も使えない、DBも使えない時の苦肉の策でして・・・。
常識あるASPerな皆様は、こんな仕様にしないように(させない
ように!)頑張って下さい・・・。



TreeBBS For ASP V.0.1.3
Program By YasNet