Ajax+PHPでテキストボックスを使ってサブウィンドウで選択リストを開く方法

このQ&Aのポイント
  • Ajax+PHPを使用して、テキストボックスを使ってサブウィンドウで選択リストを開く方法についてのアドバイスをお願いします。
  • ページリロードのないAjax的な方法で、サブウィンドウで選択した値を親のテキストボックスに表示する方法についてアドバイスをいただきたいです。
  • ソースコードを添付いたしました。ご確認いただき、助言をお願いいたします。
回答を見る
  • ベストアンサー

Ajax+PHPでテキストボックス

どうしても上手くいかなくて、投稿させていただきます。 サブウィンドウにて選択リストを開き、 リンク文字を選択すれば、親のテキストボックスに 選択値が入るものを作りたいのです。 ページリロードのないAjax的なものを作りたいのです。 ソースコードは以下です。 アドバイスをお願いします。 【サブウィンドウ】 <?php $sql="select * from zip order by code";//zipテーブルは(code,addr)の配列 $rst = pg_query($con,$sql); $cnt = 0; while($col = pg_fetch_array($rst)) { $sub_code=$col["code"]; $sub_addr=$col["addr"]; $cnt++; $body .= "<tr>"; $body .="<td>$cnt</td>\n"; $body .="<td><a href='$PHP_SELF?code=".$col['code']."' onClick='copy2parent(this.form)'>$sub_code $sub_addr</a></td>\n"; $body .="<td><input type='hidden' value='$sub_code' name='sub_code' size=10></td>\n"; //このnameがダメだと思う・配列でname=sub_code$cntとやっても下記のjavascriptでつまずきます。 $body .="<td><input type='hidden' value='$sub_addr' name='sub_addr' size=10></td>\n";//上に同じ $body .= "</tr>\n"; } pg_free_result($rst); print "<script Language='JavaScript'> <!-- function copy2parent(f) { window.opener.document.form1.code.value = f.sub_code.value; //【親】のcodeテキストボックスに選択値を返す。 window.opener.document.form1.item.value = f.sub_addr.value; //【親】のitemテキストボックスに選択値を返す。 window.close(); // サブウィンドウを閉じる } // --> </script> "; print "<form method='POST' action='$PHP_SELF'> <table>$body</table> </form> "; ?>

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
noname#39970
noname#39970
回答No.1

document.getElementByName("sub_code").text ただ、件1のコードだと常にnameが"sub_code"だから複数用意されるものなら他と同じように数値をくっつけるとかしたらいいんでないかな。

javaphp
質問者

補足

早々の対応ありがとうございます。 おっしゃる通りで、 nameが全てsub_codeになるので、 sub_code$cntとします。 javascriptで window.opener.document.form1.code.value = f.sub_code.value; ↓ window.opener.document.form1.code.value = f.sub_code$cnt.value; としても上手く動作しません。 どうすれば良いですかね?

その他の回答 (2)

noname#30334
noname#30334
回答No.3

<input type='hidden' value='$sub_code' name='sub_code$cnt' size=10> は、whileループの中にあるので、データの件数分存在しますよね。 それに比べて、javascriptの window.opener.document.form1.code.value = f.sub_code$cnt.value; は、ループの外に1行あるだけだから、 $cntには、該当レコードの数値は、入りません。 copy2parent関数に引数で渡すしかないと思います。 頑張って下さい。

noname#39970
noname#39970
回答No.2

> f.sub_code$cnt.value が期待した文字列になってくれてるのか、なってるなら期待した値を出すのか確認してみたら?(javascriptならalert挟んで確認したりとか良くやる) PHPの式は良くわからないけどなんとなく f.sub_code.${cnt}.value みたいな書き方じゃないとだめな気がする

関連するQ&A

  • PHPのfor文

    送り側で次の情報を送ると、 select SyaName from Syain where SyaNo = 2select SyaName from Syain where SyaNo = Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /result.php on line 33 という文がループします。 SyaNo=1 から SyaNo=10 の計算をさせたいのですが、 なぜこれではだめなのでしょうか。。。 どう表記したらよろしいのでしょうか? 送り側>----------------------------<input type="text" name="WorDateYear" size="8" maxlength="4">年 <input type="text" name="WorDateMonth" size="5" maxlength="2">月<br> <input type="submit" name="create" value="作成"> >------------------------------- 受け側>---------------------------- $sql = "select WorDate,ComName,GenName,StrTime,EndTime,SyaNo1,SyaNo2,SyaNo3,SyaNo4,SyaNo5,SyaNo6,SyaNo7,SyaNo8,SyaNo9,SyaNo10 from Denpyo where WorDate like '%" . $_GET['WorDateYear'] . "-%" . $_GET['WorDateMonth'] . "%'"; $result1 = mysql_query($sql,$link); <? $body .= "<table> while($col = mysql_fetch_array($result1)){ for($cnt=1; $cnt<=10; $cnt++){ $sql = "select SyaName from Syain where SyaNo = " . $col[SyaNo.$cnt]; print $sql; $result2 = mysql_query($sql,$link); $col2 = mysql_fetch_array($result2); $SyaNo . $cnt = $col2['SyaName']; } $body .= "<tr>\n"; $body .= "<td rowspan='2'>" . date("j",$col['WorDate']) . "日</td>\n"; $body .= "<td rowspan='2'>" . date("w",$col['WorDate']) . "曜日</td>\n"; $body .= "<td rowspan='2'>" . $col['ComName'] . "</td>\n"; $body .= "<td rowspan='2'>" . $col['GenName'] . "</td>\n"; $body .= "<td>" . $col['StrTime'] . "</td>\n"; $body .= "<td>" . $col['EndTime'] . "</td>\n"; $body .= "<td>" . $SyaNo1 . "</td>\n"; $body .= "<td>" . $SyaNo2 . "</td>\n"; $body .= "<td>" . $SyaNo3 . "</td>\n"; $body .= "<td>" . $SyaNo4 . "</td>\n"; $body .= "</tr>\n"; $body .= "<tr>\n"; if ($col['StrTime'] < 074500){ $Str = 074500 - $col['StrTime']; } $body .= "<td>" . $Str . "</td>\n"; if ($col['EndTime'] > 170000){ $EndT = $col['EndTime'] - 170000; } $body .= "<td>" . $EndT . "</td>\n"; $body .= "<td>" . $SyaNo5 . "</td>\n"; $body .= "<td>" . $SyaNo6 . "</td>\n"; $body .= "<td>" . $SyaNo7 . "</td>\n"; $body .= "<td>" . $SyaNo8 . "</td>\n"; $body .= "</tr>\n"; } $body .= "</table>\n"; print $body; ?> >-------------------------------

    • ベストアンサー
    • PHP
  • PHPカレンダーについて

    今カレンダーを作成している段階です。 http://w1.nirai.ne.jp/freeze/main/file11.html ↑このサイトのプログラムを参考にしているんですが、 <html> <head> <title>カレンダー</title> </head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST"> <select name="year"> <?php $cnt = 1970; while($cnt<2038){   if($cnt==date(Y)){   echo "<option value='$cnt' selected>$cnt</option>";   } else {  echo "<option value='$cnt'>$cnt</option>";  } $cnt++; } ?> </select> <select name="month"> <?php $cnt=1; while($cnt<13){   if($cnt == date(n)){   echo "<option value='$cnt' selected>$cnt</option>";   } else {   echo "<option value='$cnt'>$cnt</option>";   } $cnt++; } ?> </select> <input type="submit" value="作成!"> </form> </body> </html> このPHPプログラムを実行してもエラーが消えません。 どこが間違っているのかどなたか教えてください。

    • 締切済み
    • PHP
  • PHP+MYSQLで直近3件のデータ表示

    直近のデータを3件表示するのに $sql =" select * from テーブル order by フィールド(date型) desc limit 3" ; だとうまくいくのですが DATETIME形に変えるとうまくいかないのは、何か変な事してますでしょうか? $sql =" select * from テーブル order by フィールド(datetime型) desc limit 3" ; 他の箇所は両方とも全く一緒です。 データは入れてあります。 宜しくお願いいたします。 全文は書けなかったので <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql =" select * from mem order by rupdate desc limit 3" ; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "<B>$recmax 件のデータがみつかりました。</B>"; $body .= "<TABLE border='1' cellpadding='2' cellspacing='0'> <TR> <TH bgcolor='#00CCCC'>会員ID</TH> <TH bgcolor='#00CCCC'>会員名</TH> <TH bgcolor='#00CCCC'>性別</TH> <TH bgcolor='#00CCCC'>ジャンル</TH> <TR>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<TR>\n"; $body .= "<TD>" . $col["id"] . "</TD>\n"; $body .= "<TD>" . $col["name"] . "</TD>\n"; $body .= "<TD>" . $col"seibetu"] . "</TD>\n"; $body .= "<TD>" . $col["cate"] . "</TD>\n"; $body .= "</TR>\n"; } $body .= "</TABLE>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> 以下 <?= $body ?> を貼り付けています

    • ベストアンサー
    • PHP
  • ループしてしまいます

    $colの結果は5件です。 次のfor文を流すと、cnt=1の場合の $SyaNo . $cnt = $col2['SyaName']; が print $SyaNo . $cnt によって表示されますが、 cnt=1のみの結果がループします。 cnt=2、cnt=3、cnt=4の結果はどうしたら表示されるでしょうか? どうしてループしてしまうのでしょうか? --------- while($col = mysql_fetch_array($result1)){ for($cnt=1; $cnt<=4; $cnt++){ print $cnt . " "; print $col[SyaNo.$cnt] . " "; if ($col[SyaNo.$cnt] != ""){ $sql = "select SyaName from Syain where SyaNo = " . $col[SyaNo.$cnt]; $result2 = mysql_query($sql,$link); $col2 = mysql_fetch_array($result2); $SyaNo . $cnt = $col2['SyaName']; print $SyaNo . $cnt; } } ------------- $body .= "<td>" . $SyaNo1 . "</td>\n"; $body .= "<td>" . $SyaNo2 . "</td>\n"; $body .= "<td>" . $SyaNo3 . "</td>\n"; $body .= "<td>" . $SyaNo4 . "</td>\n";

    • ベストアンサー
    • PHP
  • 【FireFox】サブウィンドウ表示とテキストボックス値

    メインのウィンドウにテキストボックスとボタンがあり、 ボタンをクリックするとjavascriptによりサブウィンドウ が開くHTMLがあります。 しかし、FireFoxに限り、ボタンを押してサブウィンドウ を開くとメインのHTMLのテキストボックスに入力していた 値が消えてしまいます。 ================ main.html ===================== <html> <head> <script Language="JavaScript"><!-- function openSubWin(){ window.open("sub.html","window","width=300,height=300"); } // --></script> </head> <body> <form action="#" name="myform"> <input type="text" name="no"> <button id="button1" onclick="openSubWin();" >サブウィンドウ</button> </form> </body> </html> ================== サブウィンドウ ================ <html> <body> サブウィンドウ </body> </html> IEでは問題ありませんでした。 何か解決方法はありますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 検索結果のテーブルの各カラムヘッダをキーにソートしたい

    上が検索フォーム、下が検索結果のように、画面を横割りにフレーム分割しています。 この検索結果リストの各カラムヘッダにハイパーリンクを仕込んで、 それをクリックするたびに昇順⇔降順でソートさるようにしたいですが、 PHP側をどのように改造する必要がありますでしょうか? 下記の例では、価格、書名がリンクになるイメージです。 【上段フレーム: search_form.htm】 <HTML> <HEAD></HEAD> <BODY> <FORM method="POST" action="list.php" target="result_list"> 書名<INPUT size="44" type="text" name="title"> を含む <INPUT type="submit" name="exec" value="検索"> </FORM> </BODY> </HTML> 【下段フレーム: result_list.php】 <?php $con = mysql_connect(DBSERVER, DBUSER, DBPASSWORD); $selectdb = mysql_select_db(DBNAME, $con); $sql = "select * from bookdb where (title like '%$title%') order by price"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "<B>$recmax 冊みつかりました。</B>"; $body .= "<TABLE border='1'> <TR> <TD>価格</TD> <TD>書名</TD> <TR>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<TR>\n"; $body .= "<TD>" . $col["price"] . "</TD>\n"; $body .= "<TD>" . $col["title"] . "</TD>\n"; $body .= "</TR>\n"; } $body .= "</TABLE>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> <HTML> <HEAD></HEAD> <BODY> <?= $body ?> </BODY> </HTML> ■ 環境 PHP 5.0.4 Win MySQL mysql 4.0.14b Win ■知識レベル: HTMLタグ打ち、初歩的なSQLを理解できる程度、PHP他プログラミング知識なし

    • ベストアンサー
    • PHP
  • サブウィンドウから親ウィンドウのフォームへの書き込み

    よろしくお願いします。 やりたい事は サブウィンドウを開いて サブウィンドウのテキストボックスに入力した内容を 親ウィンドウのテキストボックスに書き込みたいのです。 以下親ウィンドウ(oya.html) <html> <head> <script type="text/javascript"> <!-- function search(){ window.open( 'sub.html' ,'childwin', "width=350,height=250,location=no,menubar=no,toolbar=no,resizable=yes,scrollbars=yes" ); } --> </script> </head> <body> <form name="mainform" method="POST" action="hoge.php"> <TABLE border="1"> <TR> <TD>A:<INPUT type="text" name="A" id="A"></TD> </TR> <TR> <TD>B:<INPUT type="text" name="B" id="B"></TD> </TR> <TR> <TD><input type="button" onclick="search();return false;" value="サブウィンドウ"></TD> </TR> <TR> <TD><center><input type="submit" name="exec" value="確認"></center></TD> </TR> </TABLE> </form> </body> </html> 以下サブウィンドウ(sub.html) <html> <head> <script type="text/javascript"> <!-- --> </script> </head> <body> <form name="subform"> <TABLE border="1"> <TR> <TD>A:<INPUT type="text" name="A" id="A"></TD> </TR> <TR> <TD>B:<INPUT type="text" name="B" id="B"></TD> </TR> <TR> <TD><input type="button" value="入力"></TD> </TR> </TABLE> </form> </body> </html> 以上です。親ウィンドウの中にformが入れ子状態になってしまうため javascriptで対応できないのかと思い質問させて頂きました。 ご教示お願いいたします。

  • mysqlから取り出した検索結果にチェックボックスを付けたい。

    こんばんは。PHP・mysql共に初心者の者です。どなたかお知恵をお貸しください。以下に環境を記します。 Windows2000/sp5 Apache/2.0.55 PHP/5.0.5 MySQL 5.0 簡単な名簿のデータ(ID・名前・年齢・生年月日・住所・電話番号)をMysqlから取り出してブラウザで表示させるだけなんですが、全て表示させるまでは成功しました。 この表示をID・名前・年齢だけにして、各レコードの左端にチェックボックスを配置し、1件または複数件チェックを入れて「詳細を表示」ボタンをおすと、チェックを入れた人のID・名前・年齢・生年月日・住所・電話番号が表示されるようにしたいのです。 while文の中にチェックボックスを組み込んだり、色々と試行錯誤しましたがダメでした。 まったく勉強不足で申し訳ないのですが、どなたか具体的なソースをご教授ください。よろしくお願いします。 以下に、全てのデータ表示のためのソースをさらします。 <?php $dbserver = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "meibo"; $con = mysql_connect($dbserver,$dbuser,$dbpassword); mysql_query("set names sjis"); $selectdb = mysql_select_db($dbname); $sql = "select id, name, age, bday, address, tel, curdate(), (year(curdate())-year(bday)) - (right(curdate(),5)<right(bday,5)) as age from meibo_1"; $rst = mysql_query($sql); $body = mysql_num_rows($rst) . "件のデータがあります。. <br><br>"; $body .= "<table border='1'> <tr> <th NOWRAP>ID</th> <th NOWRAP>氏名</th> <th NOWRAP>年齢</th> <th NOWRAP>生年月日</th> <th NOWRAP>住所</th> <th NOWRAP>電話番号</th>  </tr>"; while ($col = mysql_fetch_array($rst)) { $body .= "<nobr><tr>" . "<td NOWRAP>$col[id]</td>" . "<td NOWRAP>$col[name]</td>" . "<td NOWRAP>$col[age]</td>" . "<td NOWRAP>$col[bday]</td>" . "<td NOWRAP>$col[address]</td>" . "<td NOWRAP>$col[tel]</td>" . "</tr></nobr>"; } $body .= "</table>"; mysql_free_result($rst); $con = mysql_close($con); ?> <!doctype html public "-//w3c//dtd html 4.01 transitional//en"> <html> <head> </head> <body> <?=$body?> </body> </html>

    • 締切済み
    • PHP
  • PHPとhtmlについて

    初心者なりに下のようなプログラムを作ってみましたが、「注文画面へ」のボタンを押しても反応がありません。どうしたらいいでしょうか?教えてください。 あと、注文画面へ行くとボールの個数を選んだ後に出る合計金額を次のページに反映させたいのですが、それもわかりません。もしよければ、こちらも教えてください。 よろしくお願いします。 <html> <head> <title> 商品確認 </title> <script language ="JavaScript"> <!-- function calc(amount){ document.ball.total.value = 4095 * eval(amount); }//--> </script> </head> <body> <form name=ball> V4SLBL ソフトタッチ鈴入り4号球<br> <hr> 個数: <select name ="num" onchange = "javascript:calc(this.value)"> <option value =0>0 <option value =1>1 <option value =2>2 <option value =3>3 <option value =4>4 <option value =5>5 </select> 小計: <input type="text" size="8" name="total">円<br> <hr> <?php $go['V4SLBL ソフトタッチ鈴入り4号球'] = "4,095円"; echo " 商品確認"; echo "<table border=\"1\">"; foreach($go as $key=>$value) echo '<tr><td>'."$key</td><td>$value</td></tr>"; echo '</table>'; echo"<form action=\"m4.php\" method = \"post\"> <input type = \"submit\" value = \"注文画面へ\"></form>"; echo"<form action=\"m1.php\" method = \"post\"> <input type = \"submit\" value = \"戻る\"></form>"; ?> </form> </body> </html>

    • 締切済み
    • PHP
  • チェックボックスのチェック処理

    HTMLでボタン押下時にチェックしたいことがあります。 ■カテゴリーA~Cで、カテゴリー毎に選択できるのは一つのみ  (例)「A1・あ」と「A2・お」が選択時はNG ■カテゴリーは最大2つまで選択可能  (例)「A1・い」と「C1・さ」が選択時はOK    「A1・い」と「B2・く」と「C1・さ」が選択時はNG <html> <head> </head><body> <form> <table border="1"> <tr> <td>A1</td> <td><input type="checkbox" name="chk1" value="1">あ</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">い</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">う</td> </tr> <tr> <td>A2</td> <td><input type="checkbox" name="chk1" value="1">え</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">お</td> </tr> <tr> <td>B1</td> <td><input type="checkbox" name="chk1" value="1">か</td> </tr> <tr> <td>B2</td> <td><input type="checkbox" name="chk1" value="1">く</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">け</td> </tr> <tr> <td>C1</td> <td><input type="checkbox" name="chk1" value="1">さ</td> </tr> <tr> <td>C2</td> <td><input type="checkbox" name="chk1" value="1">し</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">す</td> </tr> </table> <input type="submit" value="チェック"> </form> </body> </html> すみませんがよろしくお願いします。

専門家に質問してみよう