- ベストアンサー
明細行の複数ボタンの処理に関する質問
- 明細行の複数ボタンの処理について教えてください。データを明細形式に一覧表示し、行ごとに更新ボタンを配置し、ボタンが押されたらその行の内容を別画面に表示したいです。
- FORMのPOSTではなく、JavaScriptを使用した場合、どのように記述する必要がありますか?詳細ボタンを押した行をB.phpで取得する方法を教えてください。
- A.phpでは、各行の詳細ボタンを作成し、window_open()関数を使用して別ウィンドウを開く処理を行っています。B.phpでは、詳細ボタンが押された行を取得するために、$_POST['input']の値を調べています。どのようにすれば正しく行を取得できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
よくみたらtype=submitなのにonclickで処理しているんですね formにちゃんと「f_od」というnameを振っているか、 inputというnameの要素が競合する書き方をしていないかチェックするくらいでしょうか? 以下のソースでためした範囲では問題なくボタンのkeyを返しているみたいです <script> function window_open(){ window.open("about:blank","window_name","width=640,height=480,scrollbars=yes,menubar=yes,toolbar=yes,status=yes,directories=yes,location=yes,titlebar=yes"); document.f_od.target = "window_name"; document.f_od.method = "POST"; document.f_od.action="hoge.php"; document.f_od.submit(); } </script> <form method="post" name="f_od" onclick="window_open()"> <?PHP for($i=0;$i<5;$i++){ print $i.":<input type=\"submit\" name=\"input[{$i}]\" value=\"go\"><br>\n"; } ?> </form> <?PHP if(isset($_POST["input"]) and is_array($_POST["input"])){ print key($_POST["input"]); } ?>
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
javascriptを使う使わないにかかわらず タイプsubmitの要素については、サーバーにデータを渡すことができ タイプbuttonの要素については、渡すことができません submitは「送信ボタン」でbuttonは「ただの飾り」 だと思っておけばよいでしょう
お礼
yambejp様、何度もご回答ありがとうございます。 助かりました!
- yambejp
- ベストアンサー率51% (3827/7415)
<input type='submit' name='input[$count]' value='詳細 onclick='window_open();'> から飛んでくるなら $meisai_id=key($_POST['input']); で受けている「$meisai_id」がまさに押された行数では? (カウンタが0から始まっているなら$meisai_id +1行目かもしれませんが)
お礼
yambejp様、ご回答ありがとうございます。 おっしゃる通り、$meisai_id=key($_POST['input']); で取得できると 思っていましたが、取得できないんです、、、 何がおかしいでしょうか、、、 あと、質問の中で、B.php と UPDATE.php は同一です。 よろしくお願いします。
お礼
yambejp様、ご回答ありがとうございます。 教えて頂いたように記述したところ正しく引き渡す事ができました。 但し、1点だけ教えて下さい。 submitの意味が正確に理解できていなくて申し訳ありませんが、以下の(1)は受け渡しが できたものの、(2)に関してはできませんでした。 ボタンはあくまでも "button" で、javascript側でsubmit したらと思いましたが、うまく 動かず、、、、 このような記述ではまずいのでしょうか、、、、 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。 ◆ (1) <script> function window_open(){ window.open("about:blank","window_name","width=640,height=480,scrollbars=yes,menubar=yes,toolbar=yes,status=yes,directories=yes,location=yes,titlebar=yes"); document.fod.target = "window_name"; document.fod.method = "POST"; document.fod.action="RINGI_UPDATE.php"; } </script> <form name="fod" onclick="window_open();"> <?php for($count=1;$count<$row+1;$count++) { print("<TD><input type='submit' name=inputtest[$count] value='詳細' >\n"); } ?> </form> ◆ (2) <script> function window_open(){ window.open("about:blank","window_name","width=640,height=480,scrollbars=yes,menubar=yes,toolbar=yes,status=yes,directories=yes,location=yes,titlebar=yes"); document.fod.target = "window_name"; document.fod.method = "POST"; document.fod.action="RINGI_UPDATE.php"; document.fod.submit(); } </script> <form name="fod" onclick="window_open();"> <?php for($count=1;$count<$row+1;$count++) { print("<TD><input type='button' name=inputtest[$count] value='詳細' >\n"); } ?> </form>