WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:多数のリンクにVALUEの値を送る方法

0:[投稿] しも [2003/12/17 19:21 ][環境:IE6、WIN2000 UNIX,Apache,CGI,perl ]

下記のHTMLファイルに対する質問です

<html>

<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-jp" />
</head>
<BODY>
<TABLE border="1" cellspacing="0" cellpadding="2">
    <TR>
        <TD>
            <INPUT TYPE="text" NAME="ROOT_SYSTEM" SIZE="20" MAXLENGTH="50">
        </TD>
    </TR>
</TABLE>
<center>
<!-- リンクボタンの設置 -->
<center>
<form action="./inpexlog.cgi" method="post">
<input type="image" name="action" src="../../1stindx1.gif" border="1"><br><br>
</form>
<form action="./inprllog.cgi" method="post">
<input type="image" name="action" src="../../image/jobview/1stindx2.gif" border="0"><br><br>
</form>
<form action="./inpjsche.cgi" method="post">
<input type="image" name="action" src="1stindx3.gif" border="0"><br><br>
</form>
<form action="./inpdsche.cgi" method="post">
<input type="image" name="action" src="1stindx4.gif" border="0"><br><br>
</form>
<form action="./inpsetvi.cgi" method="post">
<input type="image" name="action" src="1stindx5.gif" border="0"><br><br>
</form>
</center>
</body>
</html>


画面の中で一つだけテキストボックスに値を入力し、その値を次画面(CGIファイル)にとばすという処理を行いたいのですが、遷移先ボタンは5種類あります。
上記のように書くとテキストボックスに入力した値が次画面へ遷移しません。
どのように書けば5つの画面に値をおくれるのでしょうか。


1:[回答] [2003/12/17 20:22 ]

各フォームに <input type="hidden" name="ROOT_SYSTEM"> を入れておいて、
<INPUT TYPE="text" NAME="ROOT_SYSTEM" SIZE="20" MAXLENGTH="50"
onchange="for(var f=document.forms,i=f.length;i--;)f[i].ROOT_SYSTEM.value=value;">

ということですか?


2:[保留] しも [2003/12/17 22:24 ]

ご回答ありがとうございます。
受取側の設定(PERL)がまだうまく出来てないのですが、
HTMLはうまくいきそうな気がしますので、動いたら報告します。
ありがとうございましたm(_ _)m


3:[質問] しも [2003/12/18 14:00 ]

すみません。あともう少しな気がするのですが、受け側で値が取れていません。受け側では↓を書いているのですが、$AAAに値が入っていませんでした。これ↓は間違っているのでしょうか?


if ($ENV{'REQUEST_METHOD'} eq "POST") {
    
    # POSTであれば標準入力から読込みます
    read(STDIN, $strQuery, $ENV{'CONTENT_LENGTH'});
    
} else {
    
    # GETであれば環境変数から読込みます
    $strQuery = $ENV{'QUERY_STRING'};
}

# 「変数名1=値1&変数名2=値2」の形式をアンパサンド( & )で分解します
@arVariables = split(/&/, $strQuery);

# それぞれの「変数名=値」について
foreach $vars (@arVariables) {
    
    # イコール( = )で分解します
    ($name, $value) = split(/=/, $vars);
    
    # + や %8A などをデコードします
    $value =~ tr/+/ /;
    $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
    
    # 後で使用するために、$FORM{'変数名'} に代入しておきます
    $FORM{$name} = $value;
}

# 前画面から受け取ったデータの格納
$AAA = $FORM{'ROOT_SYSTEM'};


4:[回答] やちまた [2003/12/18 14:09 ]

送信が上手くっているか、の確認は取れているのでしょうか?


5:[質問] しも [2003/12/18 14:20 ]

送信の確認は受け側で取る以外に方法があるのですか?
送信側の確認方法をご存知でしたら教えてください。


6:[回答] やちまた [2003/12/18 15:20 ]

onsubmit で alert させてみれば分かると思いますけど・・・


7:[質問] しも [2003/12/18 20:02 ]

送信確認をしてみました。
結果、送信がうまくいっていませんでした。
(「'ROOT_SYSTEM'」の値がうまく送れないようなのです)
上記の方法をもう一度確かめて動くようにはしたいと思っています。
ですが、もし良い方法があれば教えてください。
よろしくお願いします。


8:[回答] やちまた [2003/12/19 09:08 ]

逆の発想。

全体を一つの <form> にして、画像それぞれの onclick で <form> の action を切り替える。
というのは如何でしょうか。


9:[質問] しも [2003/12/19 10:37 ]

下記を作成してみました。
しかしうまくいきませんでした。
私には難しくてなかなか先に進めません。
どなたかお力を貸してください。
よろしくお願いします。

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
function button_link(obj,action){
    var link="";
    var obj = obj.form;
    var value = "action2";
    if(value == "action1"){
        link = "<form action="+"fileA.cgi"+" method="+"post"+">";
        return(link);
    }else if(value == "action2"){
        link = "<form action="+"fileB.cgi"+" method="+"post"+">";
        return(link);
    }else if(value == "action3"){
        link = "<form action="+"fileC.cgi"+" method="+"post"+">";
        return(link);
    }else if(value == "action4"){
        link = "<form action="+"fileD.cgi"+" method="+"post"+">";
        return(link);
    }else if(value == "action5"){
        link = "<form action="+"fileE.cgi"+" method="+"post"+">";
        return(link);
    }            
}
</SCRIPT>

〜(省略)

<BODY>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!-- リンク先指定 -->
<!-- button_link(obj,action); -->
</SCRIPT>

〜(省略)

<input type="image" name="action1" src="image1.gif" border="0" onclick="button_link(this,action1);"><br><br>
<input type="image" name="action2" src="image2.gif" border="0" onclick="button_link(this,action2);"><br><br>
<input type="image" name="action3" src="image3.gif" border="0" onclick="button_link(this,action3);"><br><br>
<input type="image" name="action4" src="image4.gif" border="0" onclick="button_link(this,action4);"><br><br>
<input type="image" name="action5" src="image5.gif" border="0" onclick="button_link(this,action5);"><br><br>


10:[回答] やちまた [2003/12/19 11:55 ]

<form> はベタ書きしておいて良いですよ。
action のところは空欄で。

そして、関数で
document.forms[0].action = "@@@.cgi";
ち、してやれば良いと思います。


11:[完了] しも [2003/12/19 14:05 ]

やっと出来ました。
出来た形は以下になります。
何度もお答えいただいてありがとうございました。


<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function button_link1(arg){
    document.forms[arg].action = "A.cgi";
}                        
function button_link2(arg){
    document.forms[arg].action = "B.cgi";
}                        
function button_link3(arg){
    document.forms[arg].action = "C.cgi";
}                        
function button_link4(arg){
    document.forms[arg].action() = "D.cgi";
}                        
function button_link5(arg){
    document.forms[arg].action() = "E.cgi";
}
-->
</script>

<form action="" method="post">

<input type="image" name="action" src="../icons/1stindx1.gif" border="0" onclick="button_link1(0);"><br><br>
<input type="image" name="action" src="../icons/1stindx2.gif" border="0" onclick="button_link2(0);"><br><br>
<input type="image" name="action" src="../icons/1stindx3.gif" border="0" onclick="button_link3(0);"><br><br>
<input type="image" name="action" src="../icons/1stindx4.gif" border="0" onclick="button_link4(0);"><br><br>
<input type="image" name="action" src="../icons/1stindx5.gif" border="0" onclick="button_link5(0);"><br><br>


12:[完了] やちまた [2003/12/19 14:34 ]

<form> は一つしかないのだから、[arg] の所は無理に引数にしなくても。
むしろ、@@@.cgi を引数にして、関数を共通化した方がすっきり。
あと、.action() の () は不要ですね。


13:[質問] しも [2003/12/19 16:34 ]

お答えいただいたようにすっきりさせたいのですが、うまくいきませんでした。
@@@.cgi を引数にするというところがよくわからなかったのですが教えていただいてもよろしいですか?


14:[質問] しも [2003/12/19 16:35 ]

お答えいただいたようにすっきりさせたいのですが、うまくいきませんでした。
@@@.cgi を引数にするというところがよくわからなかったのですが教えていただいてもよろしいですか?


15:[回答] ・・・ [2003/12/19 17:31 ]

function button_link(arg){
   document.forms[0].action = arg;
}                ↑
                CGIの名前が格納された引数
---------------------------------------

<input type="image" name="action" src="../icons/1stindx1.gif" border="0" onclick="button_link(A.cgi);"><br><br>
<input type="image" name="action" src="../icons/1stindx2.gif" border="0" onclick="button_link(B.cgi);"><br><br>
(以下同様)

こういうこと


16:[回答] しも [2003/12/19 17:54 ]

上記もやってみたのですが、エラーが出て自分自身にしか遷移しませんでした。
どうやら、argの値がうまく渡ってないようです。


17:[回答] やちまた [2003/12/19 18:02 ]

onclick="button_link(A.cgi);"

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

onclick="button_link('A.cgi');"


こうかな?


18:[回答] ・・・ [2003/12/22 09:31 ]

onclick="button_link('A.cgi');"

文字列だから括らないと駄目でした。
失礼しました。


19:[完了] しも [2003/12/24 13:49 ]

返信が遅くなりましてもうしわけありませんでした。
上記の記述で無事成功しました。
ご丁寧なご回答ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World