1500行表,每行包含一个表单--Ajax或其他什么?

时间:2012-10-19 12:28:47

标签: php ajax forms performance html-table

我有一个非常大的HTML表,包含1500行(由PHP生成的标记)。每行都有一个5元素复选框和一个textarea。

这是一个示例行:

<tr id="abc123">
    <td>abc123</td>
    <td valign="top"><input name="v1" value=1 type="checkbox"></td>
    <td valign="top"><input name="v2" value=2 type="checkbox"></td>
    <td valign="top"><input name="v3" value=3 type="checkbox"></td>
    <td valign="top"><input name="v4" value=4 type="checkbox"></td>
    <td valign="top"><input name="v5" value=5 type="checkbox"></td>
    <td valign="top"><textarea name="notes"></textarea></td>
    <td valign="top"><input type="submit" name="submit"></td>
    </tr>

有更多列,但这是重要的部分。

设置此项的最佳方法是什么,以便每60秒检查/重绘一次提交按钮?如果已提交行/表单,则提交按钮将需要更改为链接。

是否会同时发生多次写入会导致可怕的性能?我们的服务器可以处理它,但我更关心客户端功能(谁使用中档或更差的台式机)。

除了将记录分解到单独的页面(对此不感兴趣的客户)之外,是否有更好的方法在单个页面上处理这么多表单?

更新 我认为让用户点击他们想要更新的行可能会更有意义,然后只会将该行转换为表格。如果一行失去焦点,我将显示一个confim框,这样他们就不会丢失或提交不完整的数据。

3 个答案:

答案 0 :(得分:2)

1)将整个表格放在单个表格标签对之间。

2)使用名称标签识别每个复选框或其他元素,如下所示:

checkbox_abc123_1  (value=1)
checkbox_abc123_2  (value=2)
textbox_abc123 (value=foobar)

3)向每个输入对象添加onClick或onBlur事件。这将是你的ajax电话。将ID标记发送为&#39; name&#39;输入值为&#39; value&#39;。您将这些用于POST处理。

4)在POST页面上,标识您的输入元素(提示:explode(&#39; _&#39;,$ name);),验证内容并写入SQL表。

您可以使用您的帖子页面为每个表行提供更新,以向其他用户宣布该字段已更新。但是,这不能解决为其他用户更新输入对象的问题。

如果您需要回复实际代码,但这应该指向正确的方向。

答案 1 :(得分:0)

客户端应该没有问题,除非您期望有特定的限制,大多数现代浏览器都应该轻松应对。这可能需要一些时间,但没问题。

如果您担心性能,请确保您的代码干净且嵌套正确,我们可以说,有效的html严格代码,这将有助于客户端呈现页面。

关于时间,你必须使用javascript或类似的,取决于你更喜欢检查时间;在javascript中设置计时器并不困难。在页面末尾加载脚本,使其不会干扰表的初始呈现。

另外,如果你可以控制服务器,尝试使用mod_deflate,如果你不能和你使用php,在输出缓冲区中使用zip,如果你使用任何其他服务器端语言,尝试使用任何压缩方法可用。

更新

这是一个非常好的主意,它会减少页面传输的重量和渲染时间;您的用户会很感激,加上DOM的遍历也会更快更容易

再见

答案 2 :(得分:0)

尝试使用插件更适合用户jQuery Pagination或尝试DataTable