WEB相談室

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

タイトル:複数のページに同時に値を渡したい

0:[投稿] 野田 [2003/12/21 11:17 ][環境:IE6,Windows2000 Windows2000, Apache]

ご協力をお願いいたします。
下記のような構成のページを作ろうと思っております。

フレームで3分割し、これをF1,F2,F3とする。
それぞれのページの役割は、以下のようにする。
  ○F1 => 値の入力
  ○F2 => F1の値を使って、MySQLで検索&表示
  ○F3 => F1の値を使って、MySQLで検索&表示(F2とは異なる検索です)

ところが、F1の値をF2,F3の両ページに渡したいのですが、その方法が分かりません。複数のページに同時に値を渡す方法はあるのでしょうか?

使用可能なスクリプトは、Perl、PHP、JavaScriptのいずれかです。
良い方法をご存知の方、ご回答お願いいたします。


1:[回答] はま [MAIL] [2003/12/21 13:42 ]

frameset で、F1,F2,F3と以下のように分けているのであれば、

topページ
┣F1
┣F2
┗F3

F1のvalueという変数の値をF1から渡す場合は
parent.F2.value = value;
parent.F3.value = value;

で出来ます。

F1,F2、F3同時にsubmitを押す場合(<form name=F>)は、
document.F.submit();
parent.F2.document.F.submit();
parent.F3.document.F.submit();


2:[回答] 野田 [2003/12/22 08:28 ]

ご回答、ありがとうございます。

フレームの区切り方が不正確でした。申し訳ありません。正確には、下記の通りです。
 top┬ F1
    ├ F2-1
    └┬ F3-1
      └ F3-2

で、助言を受けてスクリプトを書いたのですが、上手くいきませんでした。(下記)
ひょっとして、私は何か根本的に間違っていますか?
============================
#!/perl/bin/perl
use DBI;

$dns = 'DBI:mysql:edo2:localhost';
$user = 'tetsu';
$passwd = '';

# データベースへのアクセス
$dbh = DBI -> connect($dns, $user, $passwd) or &Error("アクセス・エラー");

# データベースへのコマンドの送信
$sth = $dbh -> prepare("select std_id, std_name from meibo");
$sth -> execute() or &Error("MySQLのコマンド実行エラー");
$i=0;
while (@ary = $sth -> fetchrow_array() ) {
    $std_id[$i] = $ary[0];
    $std_name[$i] = $ary[1];
    $i++;
}
$sth -> finish() or &Error("コマンドの終了が出来ません");
$dbh -> disconnect() or &Error("接続の切断が出来ません");

print "Content-type: text/html\n\n";
print << "_html_";
<html>
<head>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function pageChange(){
    document.std_data.submit();
    top.input.document.index.submit();
    top.table.document.index.submit();
}
-->
</SCRIPT>
</head>
<BODY BGCOLOR="#666699"white text=white LNAG=ja>
<FORM name="std_data" method="get" action="#" onsubmit="pageChange()">
<TABLE border=1 bordercolordark="#000080" bordercolorlight="#222222">
    <TR bgcolor=navy><TD colspan=2>select</TD><TD>名前</TD></TR>
_html_

for ($j=0; $j<$i ; $j++){
    print "<TR bgcolor=navy bordercolordark=\"#000080\" bordercolorlight=\"#222222\">";
    print "<TD><input type=radio name=std_id value=$std_id[$j]></TD>";
    print "<TD><input type=submit value=></TD>";
    print "<TD><font size=-1>$std_name[$j]</font></TD>";
    print "</TR>";
}

print << "__html__";
</TABLE>
</FORM>
</BODY>
</HTML>
__html__

exit;
=============================


3:[回答] ・・・ [2003/12/22 09:43 ]

targetとaction 変えて、F1から2回submit したらだめ?

document.std_data.target = top.F2;
document.std_data.action = "(F2用CGI)";  
document.std_data.submit();
document.std_data.target = top.F3;
document.std_data.action = "(F3用CGI)";  document.std_data.submit();


4:[回答] ・・・ [2003/12/22 09:47 ]

document.std_data.target = top.F2;
 ↓
document.std_data.target = "F2";

document.std_data.target = top.F3;
 ↓
document.std_data.target = "F3.F3-1";

F1からならtop.はいらないか。
あと、"" 付け忘れ 。


5:[完了] 野田 [2003/12/23 01:05 ]

ご助言、有難うございました。
・・・さんの仰る通り、2回 submit()で目的が達成できました。
onSubmitで、下記の関数:pageChange()を呼び出すことで、F2とF3に値を渡すことが出来ました。

function pageChange(){
    document.std_data.target = "F2";
    document.std_data.action = "URL";  
    document.std_data.submit();
    document.std_data.target = "F3";
    document.std_data.action = "URL";
    document.std_data.submit();
}

皆様、ご協力有難うございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World