如何仅更新php中的修改值

时间:2013-04-22 07:22:25

标签: php mysql codeigniter

我正在使用Codeigniter来构建网站。该网站有一个名为“更新记录”的选项,允许用户更新50个不同的值。更新页面具有旧值以及用于输入新值的空文本框。即使用户实际上没有更新任何内容,更新整个记录也没有任何意义(网站使用MySQL数据库)。我已尝试使用隐藏的表单字段与原始值,并尝试仅更新已修改的字段。虽然它工作正常,但每次将旧值与新值进行比较并且只有在发生更改时才更新过程。

有没有更好的方法(使用或不使用codeigniter)?只是好奇才知道。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我会解析post数组并删除任何没有更新值的条目(这意味着输入被提交为空)。

然后你只能更新修改过的记录

我不知道代码点火器如何在表单提交后将post数组传递给控制器​​,但你可以做类似的事情

<?php
foreach ($postData as $key => $value) {
    if (empty($value)) {
        unset($postData[$key]);
    }
}

如果您合法地希望将空记录存储为更新值,那么唯一可能会失败的地方。

答案 1 :(得分:0)

我使用javascript来过滤仅更新的值

1 - I use hashes.js to calculate a sha1 when page loaded. store it in hidden or just a variable, or you can do sha in the server.
2 - I also do a snapshot of the form in array when page loaded. I put all my input in one class and use jQuery('forminputs').each to put them in array.
3 - when user click submit, first I do another snapshot of the form as No. 2 and compare the hash. if the hash diff, I use php.js get the updated value php.array_diff_assoc(newsnapshot, oldsnapshot). and post this to server.

虽然这些看起来像很多计算,但实际上它在firefox或chrome中并不慢(从不尝试IE)。