Stackoverflow 的长期读者;第一次发海报,所以希望你能温柔:)
我在一个页面上有一个表单,由大约 50 个不同类型的字段(复选框/文本/十进制/日期等)组成。这些值是通过一个查询从大约 8 个表中提取的,大致如下所示:
SELECT * FROM p
LEFT JOIN pd on p.id=pd.id
LEFT JOIN pc on p.id=pc.id
LEFT JOIN pie on p.id=pie.id
etc.
WHERE p.id = xxx
我开始一天以为我只是在表单上使用一个简单的 POST,编写一堆验证和更新查询(用表单中的任何内容覆盖每个现有值)并完成它,但我质疑我的判断这里。
具体来说,如果现有值没有改变就覆盖它感觉是错误的,而且我有点担心如果数据库更新中途失败会发生什么(考虑用事务处理它)。我对较小的表格感到满意,但如果工作人员只更改了 1 或 2 个字段,这感觉就像是无用的写作。我的下一个想法是基于每个字段级别使其成为 AJAX。更改任何字段都会提交更改并保存。感觉它可能更有意义,即使我更愿意尽可能避免使用 js。当然,第三种选择是将其转换为具有多个提交按钮的多个表单,例如每个选项卡一个(表单已经分为多个选项卡),缺点是需要更频繁地重新加载页面,因为它需要更多提交(尽管在这里当然也可以使用 AJAX)。
我是否应该考虑这么多(到目前为止,我花了一天中的大部分时间阅读这里的旧线程......)?!这里涉及到一些财务数据,所以我主要关心的是可靠性和性能,但我也很好奇是否有其他人遵循的最佳实践?
---在实现以下选择的答案后更新---
作为 SO 的长期读者,我总是很欣赏提出问题的人后来跟进的线索,所以我想我自己会这样做。不确定正确的协议(protocol)或格式。
如上所述,我最终使用了 barnyr 的解决方案,它本质上使用 javascript 将提交时的表单与原始值进行比较,然后将更改发布到 mysql(使用 jquery 发布)。如果您正在考虑类似的情况,请考虑以下几点:
在这种情况下,第 2,3 和 4 点可以解决,但是如果我在开始时知道我现在所知道的,我可能会使用一个包含所有数据的大表,并在表单提交时简单地编辑整行。再说一次,我学到的东西会少很多,所以不后悔:) 希望这对那些在稍后阶段找到这个线程的人有所帮助。
最佳答案
好吧,我会将页面上的值与用户更改的值进行比较。然后我会将更改后的值发布到服务器,动态创建我的查询并仅更新已更改的字段。
此外,如果您要更新多个表,则绝对应该使用事务。
关于jquery - 将一个 50 字段的表单提交到多个表;常规 POST、AJAX POST 或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237314/