gpt4 book ai didi

php - 检查提交时表单值是否已更改

转载 作者:可可西里 更新时间:2023-11-01 12:52:32 24 4
gpt4 key购买 nike

我正在使用 Codeigniter 创建一个网络应用程序,并且我已经创建了一些编辑表单(从 m​​ysql 数据库中提取当前值)。用户可以通过编辑表单中的数据来编辑当前数据库的数据。

我想做的是在用户更改某些值时执行某些操作。所以,我不想只在字段具有特定值时执行操作,而只是在用户更改值并提交表单时执行操作。 (具体来说,当用户通过将值从“否”更改为"is"来指示她已执行某项任务时,然后我想做一些事情,例如为任务的完成设置时间戳等)

我试过使用谷歌搜索解决方案,但找不到我需要的东西。谁能指出我正确的方向?

最佳答案

我没有使用过 CodeIgniter,但我确实在纯基于 PHP 的网站上做过您正在做的事情。

我在不同的项目中遵循了两种思维方式。

策略 #1:多次写入成本低。

如果用户点击“提交”而不是“取消”,则他们至少更改了一个字段。因此,执行 UPDATE table SET name=%s,email=%s,gender=%s WHERE id=%d 的成本并不比简单的 UPDATE table SET gender 高多少=%s 其中 id=%d。如果您要以 WHERE 和写入为代价,那么写入一些额外的字段并不重要,尤其是考虑到它发生的频率。

所以:不用担心,只需使用您在表单中返回的内容更新所有内容即可。如果用相同的数据覆盖一个字段,也没关系。归根结底,您希望数据库反射(reflect)表单中返回的所有内容,而不管之前数据库中有什么。

策略 #2:使用 session 变量。

如果您已使用当前数据填充表单,您可能已经将其放入数组中。所以将数组复制到$_SESSION中,然后比较POST之后的字段。

策略 1 更易于编程,但确实使用了稍微多一点的数据库 CPU 和带宽。策略 2 对数据库的影响略小,但会在 Web 服务器上使用更多的 CPU,并且更容易出现开发错误。

我仍然不知道哪种方式更好,但两者的论据似乎都有效。这些天来,我倾向于选择最简单的解决方案。但我意识到扩展 Web 集群比扩展数据库集群更容易,因此如果您正在开发非常大的东西,最好花更多的精力优化数据库而不是 Web 服务器。

请注意,如果您将 session 数据存储在数据库而不是临时文件中,那么 #2 实际上对数据库服务器的影响成本更高。

关于php - 检查提交时表单值是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com