0

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

有没有更好的方法来做到这一点(使用或不使用codeigniter)?只是好奇想知道。提前致谢。

4

2 回答 2

0

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

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

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

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

唯一会失败的地方是,如果您合法地想要将空记录存储为更新值。

于 2013-04-22T07:28:10.023 回答
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)。

于 2013-04-22T07:45:12.807 回答