同じ名前の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 } ?>