Chr*_*mey 7 php forms codeigniter
我正在使用Codeigniter创建一个Web应用程序,并且我创建了一些编辑表单(从mysql数据库中提取当前值).用户可以通过编辑表单中的数据来编辑当前数据库数据.
我想要做的是如果用户更改某些值,则执行某些操作.因此,我不仅希望在字段具有特定值时执行操作,而且仅在用户更改值并提交表单时执行操作.(具体来说,当用户通过将值从"no"更改为"yes"来表明她执行了某项任务时,我想做一些事情,比如设置完成任务的时间戳等等)
我试过谷歌搜索解决方案,但我找不到我需要的东西.谁能指出我正确的方向?
我没有使用CodeIgniter,但我确实完成了你在基于PHP的纯网站上做的事情.
我在不同的项目中遵循了两种思维方式.
策略#1:多次写入很便宜.
如果用户点击"提交"而不是"取消",则他们至少更改了一个字段.因此,做一件事的成本UPDATE table SET name=%s,email=%s,gender=%s WHERE id=%d并不仅仅是一件简单的事UPDATE table SET gender=%s WHERE id=%d.如果你要花费一个WHERE和一个写入,那么写一些额外的字段并不重要,特别是它会发生的频率.
所以:不要担心,只需用表格中的内容更新所有内容.如果用相同的数据覆盖字段,则无关紧要.当涉及到它时,您希望您的数据库能够反映表单中返回的所有内容,无论之前的数据库是什么.
策略#2:使用会话变量.
如果您已使用当前数据填充表单,则可能已将其拉入阵列.因此,将数组复制到$_SESSIONPOST中并比较字段后的字段.
策略1更容易编程,但确实使用稍多的数据库CPU和带宽.策略2的数据库影响略小,代价是Web服务器上使用的CPU相当多,而且更容易出现开发错误.
我仍然不知道哪种方式更好,但两者的论据似乎都是有效的.这些天,我倾向于寻求最简单的解决方案.但是我意识到扩展Web集群比数据库集群更容易,所以如果你正在开发一些非常大的东西,那么最好是更多的努力来优化你的数据库,而不是你的web服务器.
需要注意的是,如果你在数据库中存储,而不是临时文件的会话数据,然后#2其实是更昂贵的在数据库服务器的影响方面.