- 締切済み
画像のファイル名をPOSTで渡す
1.jpg 2.jpg 3.jpg の3つの画像ファイルがあります。 この3つの画像をボタンとして表示して押下したボタンの画像ファイル名をPOSTとして渡したいのですが、下記のソースだとどれを選択しても 3.jpgが渡されてしまうので困っています。アドバイスお願いします。 JavaScriptqを使用しても結構です。 <?php print '<form method="POST" action="b.php">' . "\r\n"; for($i=1;$i<=3;$i++){ print ' <BUTTON name="image" >' . "\r\n"; print ' <img src="../'.$i.'.jpg" >' . "\r\n"; print ' </BUTTON>' . "\r\n"; } print '</form>' . "\r\n"; ?>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- wp_
- ベストアンサー率54% (132/242)
[送信元php] <form action="<?php /*送信先php*/ ?>" method="POST" name='f1'> <input type="image" name="i1" id="i1" src="1.jpg" onClick="gogo('1.jpg')" /> <input type="image" name="i2" id="i2" src="2.jpg" onClick="gogo('2.jpg')" /> <input type="image" name="i3" id="i3" src="3.jpg" onClick="gogo('3.jpg')" /> <input type="hidden" name="fileName" value="" /> </form> <script type="text/javascript"><!-- function gogo(arg) { document.getElementById('fileName').value = arg; document.getElementById('f1').submit; } // --></script> [送信先php] <?php print_r($_POST); ?> こんな感じかな。動作確認はしてない。 肝として「ボタンが押された→値を変更→送信」の流れを理解すると良いです。 (onclick -> gogo()が呼ばれる -> fileNameタグのvalueが引数argになる -> f1をsubmit) 3.jpgが必ず出てしまう原因としては、同じ変数名で送信しているから 最後のものが優先して送信されているものと思われます。 <form action="自身"> <input type="hidden" name="moge" value="hoge" /> <input type="hidden" name="moge" value="moge" /> <input type="hidden" name="moge" value="gyo-" /> <input type="submit" /> </form> <?php print_r($_POST); ?> とするとgyo-が出るはずです。
for文の中に、 type="hidden"で$i.jpgを渡すタグを記入してはどうでしょうか? for($i=1;$i<=3;$i++){ print " <input type=\"hidden\" name=\"image\" value=\"$i\">"; print ' <BUTTON name="image" >' . "\r\n"; print ' <img src="../'.$i.'.jpg" >' . "\r\n"; print ' </BUTTON>' . "\r\n"; }
補足
hiddenを追加してPOSTを表示してみましたが、やはり3.jpgが 表示されてしまいます。何か間違っていますか? <?php print "<form method=\"POST\" action=\"b.php\">"."\r\n"; for($i=1;$i<=3;$i++){ print " <input type=\"hidden\" name=\"image\" value=\"../$i.jpg\">"; print "<button type=\"submit\" name=\"image\" value=\"../$i.jpg\">"."\r\n" print "<img src=\"../$i.jpg\">"."\r\n"; print "</button>"."\r\n"; } print '</form>' . "\r\n"; print $_POST["image"]; ?>