一个 HTML 表格中的多个表单


Multiple form within one 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>

它无效。我能做什么?

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

在到达

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

如果你想

在不使用javascript的情况下跨浏览器执行此操作:

对每一行使用不同名称的提交按钮,其中名称包含 id 信息。喜欢

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

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

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

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

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

2)或者他们将发送第一个提交按钮的名称以显示在表单的HTML源中。

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

isset($_POST['dummySubmit']);

您无法执行更新,但您可以将所有发布的值输出回用户(这样他们的工作就不会丢失),以及一条消息,告诉他们需要显式单击提交按钮,并让他们重试。

或。。。你可以放弃使用单个按钮,每次都更新每条记录,这可能并不像你想象的那么糟糕。我认为尝试过滤掉哪些记录在尝试减少 sql 查询时发生了变化通常没有多大好处。但是,如果您真的想要,可以发送连接在一起的行数据的 md5 哈希,然后在提交和比较时重新组合哈希。

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