我使用以下内容生成表单:
<form method="post" action="">
<input type="hidden" name="group_name" value="<?php echo $user_group ?>" />
<table width="100%" border="0">
<tr>
<td>User</td>
<td>Email</td>
<td> </td>
</tr>
<?php foreach ($user_info as $key => $array) {
while ($row = mysql_fetch_array($array)) { ?>
<input type="hidden" name="remove_user_id" value="<?php echo $row['id'] ?>" >
<input type="hidden" name="email" value="<?php echo $row['email'] ?>" >
<tr>
<td><?php echo $row['first_name']." ".$row['last_name']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><input type="submit" value="Remove" name="removeuser" /></td>
</tr>
<?php } } ?>
</table>
...other form controls...
这是生成预期的表单数据。但是,当表单行发布到我的处理系统时,它总是发送生成的最后一行,我不明白为什么。有人看到这个问题吗?
答案 0 :(得分:4)
您在同一表单中有多个提交按钮,因此最后一行是要处理的最后一行,也是发送到服务器的行。
每行需要不同的表格:
<input type="hidden" name="group_name" value="<?php echo $user_group ?>" />
<table width="100%" border="0">
<tr>
<td>User</td>
<td>Email</td>
<td> </td>
</tr>
<?php foreach ($user_info as $key => $array) {
while ($row = mysql_fetch_array($array)) { ?>
<form method="post" action="">
<input type="hidden" name="remove_user_id" value="<?php echo $row['id'] ?>" >
<input type="hidden" name="email" value="<?php echo $row['email'] ?>" >
<tr>
<td><?php echo $row['first_name']." ".$row['last_name']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><input type="submit" value="Remove" name="removeuser" /></td>
</tr>
</form>
<?php } } ?>
</table>
请注意,现在每行都会打印<form>
元素。我不确定你在使用其他表单元素做什么,所以那些可能需要自己的(新)<form>
标记。
另请注意,这是在不检查错误的HTML的情况下,所以如果您对此感到担心,您需要采用另一种方式,但由于您使用表格进行布局,我不认为这将是一件大事。
修改强>
这是一个更好的答案:
<table width="100%" border="0">
<tr>
<td>User</td>
<td>Email</td>
<td> </td>
</tr>
<?php foreach ($user_info as $key => $array) {
while ($row = mysql_fetch_array($array)) { ?>
<tr>
<td><?php echo $row['first_name']." ".$row['last_name']; ?></td>
<td><?php echo $row['email']; ?></td>
<td>
<form method="post" action="">
<input type="hidden" name="remove_user_id" value="<?php echo $row['id'] ?>" >
<input type="hidden" name="email" value="<?php echo $row['email'] ?>" >
<input type="hidden" name="group_name" value="<?php echo $user_group ?>" />
<input type="submit" value="Remove" name="removeuser" />
</form>
</td>
</tr>
</form>
<?php } } ?>
</table>
这应该完全符合您的要求,应该验证为正确的HTML,但其他表单元素需要一个新的<form>
标记(在给定代码下面的标记)。