PHPとJavaScriptの連携をしたいと思いましたが、下記が分からなかったので、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。
1. 下記の親ウィンドウで子ウィンドウを開く後、テキストエリアに文字を入力し、値をセットボタンを押すと、「親ウィンドウ」の「値が渡せます」には値が渡せますが、「値が渡せません」には値が渡せません。
違いはnameをtext00からdata[text02]に変更したのみとなります。
2. 下記のソースでは、子ウィンドウのテキストエリアに入力した内容をそのまま渡してますが、子ウィンドウのテキストエリアの情報を基に、PHPでデータベースを検索し、ヒットしたものを親ウィンドウに渡したいと思います。
下記のソースを例にすると、「値をセット」ボタンを押した後、テキストエリアの値を子ウィンドウのSELECT文のidに設定し、取得した$tmpの内容を親ウィンドウに渡したいと思います。
なお、記載のSQL文はシンプルですが、実際には複数のフィールドの値を取り、idの値も複数あります(下記のデータベースを例にすると、idに1と2を渡した際、親ウィンドウのテキストエリアに「あいうえお かきくけこ」と表示させ、idの値を隠し項目でもっていたいと思います)。
3. 上記2で親ウィンドウにデータベースの値を渡した後、子ウィンドウを開くクリック時、子ウィンドウのテキストエリアに渡したidの値を表示したいと思います。
【index.html(親ウィンドウ)】
<script type="text/javascript">
<!--
function window_open() {
window.open('sub.php',null,'width=640, height=480, scrollbars=yes')
};
//-->
</script>
</head>
<body>
<form action="index.php" method="post" name="form00" id="form00">
<a onclick="window_open()" href="javascript:void(0)">子ウィンドウを開く</a>
<br />
値が渡せます
<input type="text" name="text00" value="" readonly="readonly" />
<br />
値が渡せません
<input type="text" name="data[text02]" value="" readonly="readonly" />
</form>
</body>
【sub.php(子ウィンドウ)】
<script type="text/javascript">
<!--
function Set() {
window.opener.document.form00.text00.value=document.form01.text01.value;
window.opener.document.form00.data[text02].value=document.form01.text01.value;
window.close();
}
//-->
</script>
</head>
<body>
<form action="index.php" method="post" name="form01" id="form01">
<input type="text" name="text01" />
<input type="button" onclick="Set()" value="値をセット" />
</form>
<?php
/*
$link=mysql_connect('localhost', 'データベースユーザ名', 'データベースパスワード名');
mysql_select_db('データベース名', $link);
$query=mysql_query("SELECT nm_master FROM master_db WHERE id=2", $link);
$tmp="";
while ($row=mysql_fetch_array($query)) {
$tmp .= $row["nm_master"];
}
echo $tmp;
mysql_close($link);
*/
?>
</body>
【データベース:master_db】
フィールド名:(`id`, `nm_master`)
(1, 'あいうえお'),
(2, 'かきくけこ');
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
data[text00]を、扱いたいときは、
window.opener.document.form00.elements['data[text02]'].value=document.form01.text01.value;
ですね。
formの要素は、elementsの中に、名前が格納されてます。
text00の場合でも、
form.elements['text00']
で参照出来ます。
ご回答ありがとうございます。
質問1~3のうち、質問1についてはご教示いただいた方法で意図した動作となりました。
このたびはどうもありがとうございました。
以上、よろしくお願いします。
No.2
- 回答日時:
2,3の質問に関してですが、
いくつか方法はあると思いますが、
mysqlから値を取得するときに、idの属性を全部hiddenタグをつくっておく
<form>
<?php
while($row = mysql_fetch_array($query)){
echo sprintf('<input type="hidden" name="item_id" value="%s">', $row['id']);
echo $row['nm_master'] . '<br />';
}
</form><!--このようにformでくくって。-->
このようにして、hiddenタグで値を書いておけばとりあえずhiddenの中身をjavascriptからでも取得しやすい形になると思います。
後は、Set関数で、
<script>
function Set(){
var item_id = document.forms[0].elements['item_id'];
if(item_id.length !== undefined){
var ids = new Array();
for(var i=0; i<item_id.length; i++){
ids.push(item_id[i].value);
}
//とかやってやれば
//変数idsに配列として、全部のidが入っているはず。
//後はうまいことやって親windowに渡してやれば良いのでは。(例えばカンマ区切りにして文字列にしちゃうとか)
}else{ //一個しかない場合はlengthが取れない。
item_id.value //で値がとれるので、親windowに渡す。
}
}
</script>
といった感じで、実質、このご質問はjavascriptの話になるので、
この方法でこの後の処理に関してピンとこなかったら、javascriptのスレッドの方で
ご質問してみてはいかがでしょう。
ご回答ありがとうございます。
一度ご回答いただいた内容を検討し、分からないようであればjavascriptの方で質問するようにします。
このたびはどうもありがとうございました。
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(int)キャストとintvalの違い
-
Access2010 「演算子がありませ...
-
不明なコマンドです("FROM")。...
-
エクセルの文字間スペースを入...
-
オペランドが足りませんとコメ...
-
Excel2010でふりがなが漢字にな...
-
【ExcelVBA】sheet作成時にマク...
-
mfc42.dllファイルってなんです...
-
AUTOCAD 2010でdwlファイルの場...
-
ザウルスのLinuxでSEDのスクリ...
-
あみだくじの横線の本数の求め方
-
イース6のセーブデータ移行
-
JWWでDXFファイルを開きたい
-
フェイス・シートについて教え...
-
VBAでシートコピー後、シート名...
-
VBA シートの切り替えができな...
-
OBSが起動できません
-
WordPressをインストールしてい...
-
VBAで横データを縦データに変換...
-
ほそい線の傷があるDVDでWin 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(int)キャストとintvalの違い
-
『PHP』 MAMPで$_SERVER["REMOT...
-
access VBAで検索および抽出が...
-
GETからPOSTに変更
-
角度を求めるプログラム
-
if (isset($_POST["body"]) && ...
-
不明なコマンドです("FROM")。...
-
Access2010 「演算子がありませ...
-
【ExcelVBA】sheet作成時にマク...
-
WordPressをインストールしてい...
-
オペランドが足りませんとコメ...
-
Excel2010でふりがなが漢字にな...
-
エクセル/マクロ Exit Subが実...
-
エクセルの文字間スペースを入...
-
pythonでrequestsが使えない
-
VBA シートの切り替えができな...
-
mfc42.dllファイルってなんです...
-
エクセル 「実行時エラー"13":...
-
マクロ実行ボタンがコピー出来ない
-
VBAで横データを縦データに変換...
おすすめ情報