アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えて下さい。

データを明細形式に一覧で表示させ、そこへ更新ボタンをそれぞれの行へ配置し、
ボタンが押されたら、その行の内容を別画面に表示させるような事をしたいと考えております。

その際に、単純なFORMのPOSTであれば、key関数を用いて何行目かという情報を取得
する事ができますが、以下のようなjavascriptを使った場合はどのような記述をすれば良いでしょうか?

◆ A.php

<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="UPDATE.php";
document.f_od.submit();
}

</script>

*** 省略

for($count=0;$count<$row+1;$count++) {
print("<TR>\n");
  print("<TD><input type='submit' name='input[$count]' value='詳細 onclick='window_open();'>\n");
print("</TD>\n");
print("</TR>\n");
}

◆ B.php

<?php
if (count($_POST['input'])>0){
$meisai_id=key($_POST['input']);
}
?>

上のループで作成した複数の詳細ボタンの中で、どの行が押されたか?をB.phpで取得したいです。

よろしくお願いします。

A 回答 (3件)

<input type='submit' name='input[$count]' value='詳細 onclick='window_open();'>



から飛んでくるなら

$meisai_id=key($_POST['input']);

で受けている「$meisai_id」がまさに押された行数では?
(カウンタが0から始まっているなら$meisai_id +1行目かもしれませんが)
    • good
    • 0
この回答へのお礼

yambejp様、ご回答ありがとうございます。

おっしゃる通り、$meisai_id=key($_POST['input']); で取得できると
思っていましたが、取得できないんです、、、

何がおかしいでしょうか、、、

あと、質問の中で、B.php と UPDATE.php は同一です。

よろしくお願いします。

お礼日時:2014/04/23 09:27

よくみたら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"]);
}
?>
    • good
    • 0
この回答へのお礼

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>

お礼日時:2014/04/23 17:44

javascriptを使う使わないにかかわらず


タイプsubmitの要素については、サーバーにデータを渡すことができ
タイプbuttonの要素については、渡すことができません

submitは「送信ボタン」でbuttonは「ただの飾り」
だと思っておけばよいでしょう
    • good
    • 0
この回答へのお礼

yambejp様、何度もご回答ありがとうございます。

助かりました!

お礼日時:2014/04/24 08:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!