表单同时更新数据库的多个项目

时间:2013-02-27 16:45:01

标签: php html database forms

我正在尝试创建一个页面,该页面将显示表格中的项目以及每个项目的所有字段。目的是让用户可以在线更新项目的详细信息。

我的桌子上有大约14个字段,并且计划像下面这样做。它会有意义吗?或者是否有更有效的方法来做到这一点?

<form>
(query all items in table)
while (...) {
    <span class="details">NAME: </span>
    <input name="name" value="<?php echo $info['name']; ?>">
    <span class="details">CATEGORY: </span>
    <input name="category" value="<?php echo $info['category']; ?>"
...
... and so on 12 more times
}
<button to submit the form>
</form>

然后,我想在数据库中仅更新用户已更新的字段。我应该逐个检查每个字段吗?或者有更简单的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我目前正在使用此代码禁用所有未更改的字段:

<script>
$(function() {
    $('.input').change(function() {
        $(this).addClass('changed');
    });
    $('input[type=submit]').click(function(){
     $('form').find('.input:not(.changed)').attr("disabled", "disabled");
    });
});
</script>

我在所有表单元素(select,textarea,input等)中添加了'input'类,然后,如果脚本更改则会看到它们,然后添加另一个名为'changed'的类,之后,当单击提交按钮时,该脚本禁用所有未更改的元素。

答案 1 :(得分:0)

Akam的答案非常棒 - 对未更改的输入元素应用disabled =“disabled”实际上会阻止它们被提交,只有更改的变量才会被发送到服务器。

我在这里要添加的是...... .changed这里已经检查提交/输入的值是否与原始值不同。但是您也可以在提交时轻松地将值与原始值进行比较(例如,使用===,或者如果您已经想要进行一些卫生/验证,则可以使用正则表达式等)

这都是优雅的javascript(或jQuery)解决方案,但我看到(傻;-)人们也在服务器端进行比较(例如用php)。但是,你要么来回反弹原始值 - 这不是那么糟糕(意思是:你必须将新值和旧值传递回服务器 - 但不要再从数据库中读取它们 - 然后你松了比只更新数据库中的所有表单值更多。