【问题标题】:Post the only modify input field php [closed]发布唯一修改输入字段php [关闭]
【发布时间】:2014-07-25 07:41:20
【问题描述】:

这里我有 10 个输入字段。然后,当用户单击提交按钮时,我想要唯一已修改的输入字段发送到数据库并更新,而不是发送到数据库的所有输入字段。

我怎样才能实现它?

【问题讨论】:

  • 你可以使用update
  • 有什么区别?

标签: php html mysql


【解决方案1】:

如果您需要保存用户触摸的字段,请参阅第一个变体。但缺点是如果用户将字段“abc”更改为“xyz”,然后将其更改为“abc”,则该字段将被标记为已更改。如果这不是您想要的,请查看下一个变体。

(1)

当字段被修改时,您可以在字段中使用onchange() 事件来设置变量。然后使用input hidden 字段将这些变量发送到服务器。像这样:

<input type='text' name='input1' onchange="getElementsByName('input1changed')[0].value = 1;">
<input type='text' name='input2' onchange="getElementsByName('input2changed')[0].value = 1;">

<input type='hidden' name='input1changed' value=0>
<input type='hidden' name='input2changed' value=0>

然后在你的 PHP 代码中:

if ($_POST['input1changed'])
   store $_POST['input1']

if ($_POST['input2changed'])
   store $_POST['input2']

(2)

<input type='hidden' name='input1old' value='sometext1'>
<input type='text'   name='input1'    value='sometext1'>

<input type='hidden' name='input2old' value='sometext2'>
<input type='text'   name='input1'    value='sometext2'>

在 PHP 中:

if ($_POST['input1old'] != $_POST['input1'])
    store $_POST['input1']

if ($_POST['input2old'] != $_POST['input2'])
    store $_POST['input2']

【讨论】:

  • 任何例子?因为我有点新。
  • 你也应该添加后端验证。如果用户不使用 javascript 怎么办? (或它的机器人)
  • 第二种变体不使用 JavaScript,可能是最好的选择。
  • 这很好。这似乎有点不必要。如果您没有隐藏的值,则没有可发布的内容,因此无需更新!?!?
  • @Strawberry 你的意思是在新旧值没有区别的情况下应该禁用提交吗?
【解决方案2】:

您可以比较这两个数组。
第一个是您在网站上加载的数据,第二个是$_POST 数组。

【讨论】:

    【解决方案3】:

    如果设置了输入,您可以检查您的 php 并相应地编写查询。

    if(isset($_POST['name'])){
    <!-- query -->
    }
    

    【讨论】:

    • 这是不正确的。 OP 只想更新更改的数据,这不会这样做
    • 是的,他可以检查它们是否已设置并相应地编写升级查询
    • 那么你也应该添加这个作为答案:)
    • @DarkBee 它已经在答案中:P 就在代码上方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2023-02-10
    • 2012-09-14
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多