0

この foreach ループは、約 120 のテーブル行を作成します。

各行には、ユーザーが姓名を更新/変更できる 2 つの入力フィールドがあります。

入力値を変更した後、ユーザーは「保存」ボタンをクリックして、$_POST で入力値を送信します。

    <table>
    <? foreach ($members as $member) {?>
    <form name="member" action="" method="POST">
    <tr>
    <td><input name="id" type="hidden" value="<? echo $member['id'] ?>"></td>
    <td><input name="first_name" type="text" value="<? echo $member['first_name'] ?>"></td>
    <td><input name="last_name" type="hidden" value="<? echo $member['last_name'] ?>"></td>
    <td><input type="submit" value="Save"></td>
    </tr>
    </form>
<? } ?>

とを含む 120 個の入力フィールドがあるという問題がありname="id"ます。name="first_name"name="last_name"

通常、送信された値を次のように取得しますが、変数に入れます。

$first_name = $_POST['first_name'];

送信ボタンが配置されているタグform内の値のみを送信しますか、それとも他のフォーム間で値が混同されるのを防ぐための別の解決策がありますか?<form>

4

2 に答える 2

0

フォームごとに異なるテーブルを使用する必要があります。ただし、カウンターに基づいて異なる名前を付けることで、フィールドを区別できます。このような:

<?
$i = 0;
foreach ($members as $member) {
?>
<table>
<form name="member" action="" method="POST">
<tr>
<td><input name="<?php echo 'id_'.$i;?>" type="hidden" value="<? echo $member['id'] ?>"></td>
<td><input name="<?php echo 'first_name_'.$i;?>" type="text" value="<? echo $member['first_name'] ?>"></td>
<td><input name="<?php echo 'last_name_'.$i;?>" type="hidden" value="<? echo $member['last_name'] ?>"></td>
<td><input type="submit" value="Save"></td>
</tr>
</form>
</table>
<?php
$i++;
} ?>
于 2013-10-16T19:52:11.767 に答える