一个HTML表格中的多个表单

时间:2012-06-10 15:00:08

标签: php html html5 forms html-table

在一个非常长的产品列表中,我正在创建一个表。应该可以更新每一行。如果我在一个表中放置多个表单,则HTML无效。一个解决方案是为每一行创建一个表,但格式真的很难看。

我想这样做:

<table>
<tr><form><td><input type=\"text\" name=\"name\" value=\"".$row['name']."\" /></td>\n";
</td><td></td>....<td><input type=\"submit\" name=\"Submit_btn\" id=\"Submit_btn\" value=\"Update\"></td></tr></form>
<tr><form><td></td><td></td>....<td><input type=\"submit\" name=\"Submit_btn\" id=\"Submit_btn\" value=\"Update\"></td></tr></form>
.
.
.
</table>

无效。我能做什么?

3 个答案:

答案 0 :(得分:2)

在整个表格周围使用一个表格。

过滤掉到达服务器后不需要的数据。

答案 1 :(得分:2)

如果你想跨浏览器这样做,不使用javascript:

为每行使用不同名称的提交按钮,其中名称包含id信息。像

<input type="submit" name="id[589] value="update this row">

只要用户点击该提交按钮,或者选项卡按钮tpo给它焦点,然后按回车键,浏览器就会可靠地发送该提交按钮的名称(并且只有那个提交按钮),然后你可以通过

获得id
$id = key($_POST['id']);

但问题是,当表单焦点位于不同类型的输入元素上时,如果用户通过回车键提交表单,例如type=text。表单将提交,但不同的浏览器将

1)根本不发送任何提交按钮的名称,

2)或者他们会发送第一个提交按钮的名称,以显示在表单的html源代码中。

如果您在表单的开头放置一个虚拟提交按钮,并隐藏w / css,那么您可以通过

可靠地检测到这种类型的表单提交
isset($_POST['dummySubmit']);

您无法执行更新,但您可以将所有已发布的值输出回用户(这样他们的工作不会丢失),同时还会显示一条消息,告诉他们需要明确点击提交按钮,然后让他们再试一次。

或... 你可以放弃使用单独的按钮,每次更新每条记录,这可能没有你想象的那么糟糕。我认为在尝试减少sql查询的过程中尝试过滤掉哪些记录已经改变通常没什么好处。但是如果你真的想要,可能会发送连接在一起的行数据的md5哈希值,然后在提交和比较时重新计算哈希值。

答案 2 :(得分:0)

使用id指定行。 同时将已更改行的id发送到服务器以进行过滤。