0

这个 foreach 循环创建了大约 120 个表行。

每行都有两个输入字段,用户可以在其中更新/更改名字和姓氏。

更改输入值后,用户单击“保存”按钮以使用 $_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"andname="first_name"和的输入字段name="last_name"

通常我会像这样将提交的值取为变量:

$first_name = $_POST['first_name'];

是否会form<form>在提交按钮所在的 -tags 内提交值,或者是否有其他解决方案可以防止这些值在其他表单之间混淆?

4

2 回答 2

3

由于您的表单标签在您的 foreach 循环内,因此是的:每个提交按钮只会提交first_namelast_name单击的提交按钮在同一表单上的值。

但是,您的 html 无效。有效的 html 将规定您要么在表格单元格(td标签)中创建每个表单,要么找到一种不同的方式将保存按钮与特定字段(使用一些 javascript 或不同的标记)相关联。看到这个答案:https ://stackoverflow.com/a/1249715/2061789

于 2013-10-16T19:10:52.653 回答
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 回答