同じ名前のPOSTデータ
ボタンを押した箇所の値が上手く送れないケース
NGな例:
<form method="post" action="delete.php"> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="1"> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="2"> </form>
最初のボタンを押しても、$_POST['item']の値は 2 になる
※どこを押しても$_POST['item'] は常に 2
OKな例:
<form method="post" action="delete.php"> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="1"> </form> <form method="post" action="delete.php"> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="2"> </form>
→それぞれformで括ってやれば、ボタンを押した箇所のitemの値が送られます
ループでまわす時などは間違えやすいので注意
NG: formタグがループの外
<form method="POST" action="delete.php"> <?php foreach ($array as $ary) { ?> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="<?php echo $ary ?>"> <?php } ?> </form>
OK: formタグを中に入れる
<?php foreach ($array as $ary) { ?> <form method="POST" action="delete.php"> <input type="submit" value="削除" onClick="return confirm('この品物を削除しますか?')"> <input hidden name='item' value="<?php echo $ary ?>"> </form> <?php } ?>