スレッド表示 | フラット表示〕 全トピック 920 件中 20 番目 次≫ ≪前

子画面から親画面への値の受け渡し

created: 2009-09-26 14:45 | modified: 2009-09-30 20:50 | reply: 2

[4335] 子画面から親画面への値の受け渡し

user: たま | created: 2009-09-26 14:45
こんにちわ。
お世話になります。

値の受け渡しについてご教示下さい。

①親画面の契約番号を子画面に渡す
②子画面で渡された値をDBへ問い合わせて一覧を表示
③一覧表示より「選択ボタン」で選択されたレコードの値を親画面へ渡す

①と②は出来たのですが③が出来ません。
例えば3件のレコードが子画面で表示され2レコード目の「選択ボタン」を押下しても必ず一番最初のレコードの値しか親画面へ渡せません。

色々、調べたりしましたがどうしても分からず悩んでいます。

抜粋のソース掲載いたしますのでご教示下さい。

よろしくお願い致します!

----------------------------- 子画面 --------------------------
<script type="text/JavaScript">
send_add(){
var x = document.getElementById("add").value;
var y = document.getElementById("post").value;
window.opener.document.myFORM.送付先住所.value = x;
window.opener.document.myFORM.送付先郵便番号.value = y;
}
</script>

<FORM name="myFORM">
<TABLE>
<CAPTION>検索結果一覧</CAPTION>
<TR><TH style="width: 3em;"></TH><TH>郵便番号</TH><TH>住所</TH></TR>
<?
//値の受け取り
$keinum = $_GET['output'];
//SQL Serverに接続
if (! $con = odbc_connect("web", "web"", "web"")) {
exit("データベースに接続できませんでした!");
}
$sql = "SELECT * FROM kanri WHERE keiyaku = '$keinum' order by hiduke desc";
$r = odbc_exec($con, $sql);
while(odbc_fetch_row($r)){
$item0 = odbc_result($r, "address");
$item1 = odbc_result($r, "post");
?>
<TD align="center">
<input type="button" value="選択" onClick="send_add()">
<input type="hidden" name="add" value="<?= $item0 ?>">
<input type="hidden" name="post" value="<?= $item1 ?>">
<TD align="center"><?= $item0 ?></TD>
<TD align="center"><?= $item1 ?></TD>
</TR>
<?
}
?>
</TABLE>

----------------------------- 親画面 --------------------------
<html>
<head>
<title></title>
</head>
<body>
子画面から選択した値が入ります。→<input type="text" id="送付先住所">
子画面から選択した値が入ります。→<input type="text" id="送付先郵便番号">
</body>
</html>
reply: 4336 4337 返信 編集 削除

[4336] name属性が重複してるから?

user: ゆうじ | created: 2009-09-29 00:36
こんばんわ。

子画面の実行結果のソースを確かめてみてください。
name="add" と name="post" は複数個存在することになりますね。
なのではじめの name="add" と name="post" の
値しか得られないのでしょう。

ループの中で、連番を加えるなりして
name属性が重複しないよう工夫しましょう。


<script type="text/JavaScript">
send_add(line) {
var x = document.getElementById("add"+line).value;
var y = document.getElementById("post"+line).value;
window.opener.document.myFORM.送付先住所.value = x;
window.opener.document.myFORM.送付先郵便番号.value = y;
}
</script>

<?php
$line = 0;
while(odbc_fetch_row($r)) {
$item0 = odbc_result($r, "address");
$item1 = odbc_result($r, "post");
$line++;
?>
<TD align="center">
<input type="button" value="選択" onClick="send_add(<?=$line ?>)">
<input type="hidden" name="add<?=$line ?>" value="<?= $item0 ?>">
<input type="hidden" name="post<?=$line ?>" value="<?= $item1 ?>">
<TD align="center"><?= $item0 ?></TD>
<TD align="center"><?= $item1 ?></TD>
</TR>
<?php } ?>
<TABLE>
Parent: 4335  返信 編集 削除

[4337] Re:name属性が重複してるから?

user: たま | created: 2009-09-30 20:50
ゆうじさん

ありがとうございます。

おっしゃるとおり複数存在していました。

連番を振るといった案は浮かびませんでした。

おかげで解決できました。

勉強になりました!
ありがとうございました!
Parent: 4335  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 20 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑