• ベストアンサー

サブウィンドウから値を持ちかえる

得意先の照会画面を作成しています。 照会画面に、得意先コードを検索する機能をつけたいと 考えました。 イメージとしては、 メインのウィンドウ(得意先の照会画面)で、 検索ボタンを押すと、別のウィンドウが起動。 別のウィンドウでは、SQLサーバーから、得た 得意先の一覧が表示される。 表示の中から、必要な得意先コードにチェックなどをつけて 戻る?みたいなボタンを押すと、 そのウィンドウが閉じられると、ウィンドウで選んだ コードを持ち帰り、メインの画面にセットしたいのです。 こんなことが、可能かどうかすら、わからない事態なので、まずは、可能かどうかと、可能ならどんな感じで できるのかを、お教えいただければと思います。

  • PHP
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

No.1(No.3)です。 できます。 というか、ちょっと厳しいことを言いますが、PHPやらJavaやらJavaScriptやらPerlやらをすべてマスターしろとは言いませんが、どういった仕組みで、どこで作動するものなのかよく理解してください。 そうすればPHPファイルやJavaサーブレットにJavaScriptを書いて問題ないのかおのずと答えは出てきますし、PHPはサーバ内で動作、JavaScriptはクライアント上で動作ということを踏まえ、コード設計も見えてくると思います。 PHPやらJavaScriptをうまく組み合わせ、いかにスマートにできるかはプログラマーの腕の見せ所です。

mimi0115
質問者

お礼

ありがとうございました。会社で、勉強を独学でやれといわれ、混乱していましたが、royaltomatoのアドバイスで、もっと、落ち着いて仕組みと、どこで動作するプログラムか、ということをわきまえて、組み立ててみようかと思います。サンプルのサイトも大変参考になりました。

その他の回答 (3)

回答No.3

ん?スクリプトでサブウィンドウの値を親に渡すとき、スクリプトでPHPなりJavaなりを呼び出す記述をしてあげればサーバ処理させることもできますよ。 質問者さんはチェックボックスなどを想定されているようなので特に問題はないと思いますが、サブウィンドウで入力された値の整合性チェックをDBで行わせる場合や、そもそもその値をDBに投入してしまう場合には必要な処理です。

mimi0115
質問者

お礼

ありがとうございます。皆さんからの回答を頼りに、じっくり考えて組み立てつつ、開発中ですが、なんとかできそうです!

回答No.2

サブウィンドウのフォームのtargetを、親ウィンドウにしてあげればいいんじゃないでしょうか? サブウィンドウの<head>タグの内側に<base target="_parent">とするか、<form target="_parent">とするかですね。 もしサブウィンドウで選んだ内容をメインのフォームのテキスト欄などに入力するというだけでしたら、JavaScript(クライアントサイドスクリプト)でできます。サブウィンドウで入力した内容をサーバーで処理する必要がない場合です。この場合はPHPとはまた別な話になります。

mimi0115
質問者

お礼

ありがとうございます。皆さんからの回答を頼りに、頑張ります。targetを使ったことがなかったのですが、やっと意味がわかりました。参考になりました。

回答No.1

JavaScriptを使えば簡単に実装できます。 サンプルサイトを紹介しておきます。 http://www.usagi-js.com/sample/jssample3.htm のサンプル14を参考にしてください。

mimi0115
質問者

補足

サンプル見てみました。まさにこんなことがしたいのですが。今、親ウィンドウも、子ウィンドウも、PHPで動かしています。 JavaScriptで別ウィンドウを呼び出した後、子ウィンドウに、MySQLからデータをもらい、得意先一覧を表示したいのですが、そのサーバーとの接続、データの受け取りをPHPで書いています。 JavaScriptとPHPは同じファイル内に記述して、活用することはできるのでしょうか?

関連するQ&A

  • 参照画面より値の受け渡し

    教えてください。 入力画面と参照画面を作成して参照画面より選択されたデータを入力画面のテキストにセットしたいのですが 入力画面には客先コード用のテキストと客先名用のテキストと参照ボタンがあります 参照ボタンを押すと参照画面を表示します(表示するまでは作成できました) 参照画面上には客先コードと客先名の一覧が表示され客先名の箇所が リンクみたいに設定してそこを選択すると参照画面が消えて選択した客先コードと客先名が入力画面上 のそれぞれのテキストにセットしたいのですがうまくセットできません。 どのようにセットすればいいのか教えてください。 ちなみにDBはMySQLを使っています 質問内容が解りづらくなりまして申し訳ございません。 宜しくお願いします

    • 締切済み
    • PHP
  • サブウィンドウへ渡すHidden項目の値

    いつもお世話になっております。 このたび、業務上でらちがあかず、ほとほと困り果てております。 どうか、助けてください>< 以下に詳細を明記しております。 <処理の流れ> StrutsとJSPで構成された親画面で検索を行い、 その検索結果の一覧の行ごとにサブウィンドウ用のボタンが表示されます。 ※一覧の明細フィールドはIteratorで複数行出力されます このボタンを押下することで、 StrutsとJSPで構成されたサブウィンドウにパラメータを渡して サブウィンドウに表示させるという処理になります。 <問題点> サブウィンドウにパラメータを渡す際に、 親画面から選択行のパラメータをJavaScriptで取得します。 この際、複数行から取得するので選択行をインデックスで取得します。 例えばこのようになります。 1.インデックス=idx 2.'sample'は検索処理で値が詰められたHidden項目です。 var sample = document.getElementsByName('sample'); document.getElementById('sample').value = sample[idx].value; としています。 3行のレコードが一覧に表示されているとします。 2行目と3行目はそれぞれ押下した場合、正常にサブウィンドウに表示されます。 しかし、1行目は、最初に押下した場合、正常に表示されますが、 2行目や3行目のあとに押下すると、内容がなぜか直前の押下した 内容にHiddenの内容が置き換えられています。 2行目と3行目はそのようなことがありません。 ※検索直後は1行目の値も正常に設定されていました ByIdのvalueは配列指定できないようなので、 0番目は0番目、1番目は1番目という指定での 解決はできず、困っています。 何が原因となっているのかいまいちわかりません。 納期まで時間がありません。 どなたかピンと来られる方がおられましたら、 ぜひとも教えてください。 何卒宜しくお願い致します。

  • 親ウィンドウに値が戻らない

    親ウィンドウから、子ウィンドウを開き、ラジオボタンで、選択された部分のコードを親ウィンドウにセットしたいのですが、決定ボタンを押しても、値が戻りません。JavaScript部分で、親ウィンドウの項目に値を代入 しているつもりなのですが・・・・。 <?php $tokum = ""; /* 得意先マスターの値をもらう配列 */ /* 初期画面の表示 */ $sql = "select * from tokump00 order by tatkcd asc limit 0,15"; $result = mysql_query($sql,$con); $num = mysql_num_rows($result); ?> <script type="text/javascript"> <!-- function ReturnCode() { for($i=0;$i<15;$i++) if(document.gamen.code.checked) window.opener.document.syoukai.tkcd.value=document.gamen.code.value; } --> </script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>得意先コード検索</title> </head> <body bgcolor="#FFEEFF"> <form name="gamen" action="codekensaku.php" method="post"> <input type="button" value="決定" onClick="ReturnCode()"><br><br> <table border="1"> <tr> <th>チェック</th> <th>コード</th> </tr> <?php for($i=1;$i<16;$i++) { $tokum = mysql_fetch_array($result); ?> <tr> <td><input type="radio" name="code" value="<?php echo($tokum[tatkcd]); ?>"> <td><?php echo($tokum[tatkcd]); ?></td> </tr> <?php } ?> </table> </form> </body> </html>

  • ACCESS 選択した値を別フォームに返す方法

    ACCESS初心者で、独学です。 質問の仕方や、言葉遣いが間々ならず、申し訳ございません。 現在、会社で受注管理システムを作り運用しています。 得意先の入力の効率化を図りたくて質問させて頂きました。 今のやりかたは・・・ 受注入力フォームの中で、コンボボックス「得意先コード」を選択すると、得意先が自動で入るようになっています。 その際、別の得意先検索フォームを開き、検索した得意先コードを覚えておいて、受注入力フォームの戻り、得意先コードを入力する、という方法を取っています。 これがやはり面倒との指摘があり・・・ 得意先検索フォームの得意先の行にコマンドボタン「選択」を設置しました。 クリックすると、受注入力フォームの得意先に値が返される、としたくてコードを作成しました。 私なりに考えたコードは以下です。 Private Sub cmb_選択_click() 受注入力F_cmb.得意先コード.value=Me.cmb.選択.Value End.Sub これだと、エラーでした。 ご教示お願い致します。

  • こんにちは

    こんにちは Windows XP PRO SP3 Visual Basic6.0(SP6) こちらの環境でプログラミングをしています。 入力画面から取引先コードにフォーカスを当てて 検索ボタンを押下すると、取引先一覧のダイアログを起動するような プログラムを組んでいます。 取引先一覧のプログラムは別exeで、shellを使用して呼び出すようにしてます。 取引先一覧で選択した取引先コードと取引先名を入力画面に返すことが うまくいきません。 取引先一覧側のプログラム 入力画面側のプログラム この二つにどうのようなプログラムを書けば 値を返すことができるのでしょうか? お忙しいとは思いますがご教授をお願いたします。

  • SELECT文が上手く書けません

    会社からSQLのSELECT文を書けと言われて3日目です。PostgreSQL のシステムでWHERE以下が WHERE 売上年月 = ? AND 得意先コード = ? AND 売上種別 = ? としました。画面上では売上年月、得意先コード、売上種別で検索できるようになっているのですが、3種類全て入力しないとエラーになります。この内1種類の入力でも検索できるようにしたいのですが、どのように書けばいいでしょうか? ANDをORに変えたりしたのですが上手くいきません。 全体のSELECT文は external.売上= SELECT 売上番号、売上日、得意先コード、売上区分、金額、入力日 FROM 売上一覧表 WHERE 売上年月 = ? AND 得意先コード = ? AND 売上種別 = ? です。 よろしくお願いします。

  • DBでデータ取得後の画面の再表示方法

    こんにちは。 現在PHP+MySQLで検索画面を作成しています。 検索項目にIDを入力し「検索」ボタンを押下すると、該当データがあれば、一覧を検索画面と同画面(検索TextBoxの下)に一覧表示しようと思っています。フレームは使っていません。 検索ボタン押下後、SQL発行しデータ取得までは上手くいっているのですが、画面の再表示が上手くいきません。 調べたところ Header("Location: http://~~~~.php"); や require("http://~~~~.php") で実現出来そうですが駄目でした。 ご存知の方アドバイスお願いします。

    • 締切済み
    • PHP
  • アクセス2013の値集合ソース内の検索か抜き出し

    アクセス2013のフォームのコンボボックスの『値集合ソース』内に書かれたSQLコードの検索か抜き出しはできませんか。 ※書き方がよくなかったので再投稿しています。 アクセス2013でゴリゴリに作られた画面があります。 そこで使われているテーブルを検索して影響範囲の調査をしたいのですが、検索しても『値集合ソース』内に書かれたSQLコードにはヒットしてくれません。 どの画面とどの画面のどこでそのテーブルが使用されているのかが知りたいですが、 コンボボックスとその『値集合ソース』を多用しているために困っています。 『値集合ソース』内に書かれたSQLコード内のテーブルを検索する方法か、 フォームに書かれた『値集合ソース』のコードをテキストで抜き出す方法はありませんか。

  • Accessでオートナンバーを別テーブルで取得

    Accessで得意先一覧と商品一覧のテーブル・フォームを作成しており、それぞれのフォームに選択ボックスを設け、チェックを入れたものだけを抽出し、1つの得意先に対し、複数の商品の一覧を作成したい と思っております。 現在あるテーブル・フォーム ■ 得意先コード 得意先名 担当者名 ■ 商品コード 商品名 価格 依頼書(Excelにエクスポートし一覧化)となる為、得意先に対する商品は都度変わっていきます。 現在は、得意先をメインフォーム、商品をサブフォームとし、全てコンボボックスで得意先1つを選択後、複数の商品を選択することで、同じオートナンバーIDを取得、依頼用空テーブルをコントロールソースとし、得意先テーブル、商品テーブルを作成後、IDでクエリを作成し、一覧としています。 しかし、得意先は約1万件、商品も300商品ぐらいある為、コンボボックスで選択に時間がかかっております。 それを、元々ある各一覧フォームから、チェックで選択し、それを依頼用の一覧としたいのですがどのようにしたら良いでしょうか? 単票形式フォーム同士で、メイン・サブフォームとすることもできず、困っております。 フィールド 得意先  商品コード  商品名  価格        得意先1  商品1     ・・・    ・・・        得意先1  商品2     ・・・    ・・・        得意先1  商品3     ・・・    ・・・ 別システムに取り込む為、依頼用の形式は上記のように決まっております 各一覧から、チェックで選択後、チェック分のみを抽出し、同じIDを取得後、一覧化することは可能なのでしょうか? お手数ですが、どなたかご教授願えませんでしょうか?

  • Accessのフォームで値が見た目変更されない

    はじめまして、こんにちは。 Accessを使用して自社ツールを作成しています。 バージョン:Access2003 OS:WindowsXP フォームのレコードソースに、あるテーブルを連結させて一覧にして表示しています。 複数のコンボボックスを用意して、選択された値によって検索をかけ、 レコードソースの値を書き換えて再表示しています。 この検索はコンボボックスの更新後処理にVBAでSQLを記述して行っています。 Dim str_sql As String str_sql = str_sql & "select * from T_テーブルA where ○○コード = 1" Me.RecordSource = str_sql かなり省略していますが、実際はコンボボックスで選択された値によって SQLを生成しています。 フォームにはtxt_件数という名前でテキストボックスを用意してあります。 レコードソースを設定した後に、同じ条件でカウントし件数を表示しようと しているのですが、これがうまくいきません。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) 件数が1件でもある時は正しい値が表示されます。 0件の場合は前回の表示のまま見た目上かわりません。 例) 1回目の検索で200件→テキストボックス[200]と表示 2回目の検索で0件→テキストボックス[200]と表示 3回目の検索で10件→テキストボックス[10]と表示 このような感じです。 ただし、実際は正しい値[0]が設定されているみたいです。 別のウインドウを一度フォームにかぶせて避けると[0]になりますし、、 2回目で[200]と表示されているものをコピーすると[0]がコピーされます。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) If Me!txt_件数 = 0 Then Me!txt_件数 = 0 End If 馬鹿げていますが、このようにしても正しく[0]が表示されませんでした。 Accessを再起動しても状態は変わらず、困っています。 環境の問題でしょうか? 解決策など解る方いらっしゃいましたら教えてください。 よろしくお願いいたします。

専門家に質問してみよう