【问题标题】:Auto submit form error自动提交表单错误
【发布时间】:2013-09-17 21:23:18
【问题描述】:

我正在尝试制作类似于网络记事本的东西,它可以每分钟自动保存更改。 注释存储在数据库上每个用户的“notas”字段中。

这里涉及到一段代码:

<html>
    <head>
        <script type='text/javascript'>
    function submitForm(){
    document.nota.submit();
    }
    function setTimeForSubmit(){
    window.setTimeout("submitForm()",60000);//Expire after 60 Sec
}
</script>
</head>
    <body onload="setTimeForSubmit()">
<form method="POST" name="nota" id="nota" action="notas.php"> 
                            <textarea name="txtNota" id="txtNota">
                                <?php
                                if(isset($_POST['txtNota'])){
                                $sql = 
                                   "UPDATE `login` 
                                    SET `notas`= ".$_POST['txtNota']." 
                                    WHERE login_id = ".$_SESSION['login_id']."";
                                $rs = $DB->Execute($sql);
                                }
                                $sql2 = "SELECT notas FROM login WHERE login_id=".$_SESSION['login_id']."";
                                $rs2 = $DB->Execute($sql2);
                                echo $rs2->fields[0];   
                                echo $_SESSION['login_id'];
                                ?>
                            </textarea>
                               <input type='submit' name='guardar' value="guardar"/>
                            </form>
       </body>
</html>

我已经检查了每个变量和查询,它们没问题,但是当我尝试以这种方式提交时,UPDATE 不起作用。它在自己完成时工作,$_POST$_SESSION 本身也有正确的值,SELECT

关于为什么它不起作用的任何线索?它也不会抛出任何错误

【问题讨论】:

  • 也许您在更新查询中缺少单引号 (') ?您是否收到更新查询的任何特定错误?可能与数据库权限有关的东西?
  • 查询工作没有任何麻烦,但我的问题是它们不能一起工作,我认为我的问题在于表单提交。

标签: javascript php mysql forms


【解决方案1】:

改变

`notas`= ".$_POST['txtNota']." 

`notas`= '".$_POST['txtNota']."'

你错过了'

【讨论】:

  • 它成功了!,我不敢相信它是如此愚蠢。我还有一个问题: ' 是必要的,因为它是文本吗?我有类似的查询,没有 ' 效果很好。
  • 好吧...使用准备好的查询总是比生成 SQL 更好。
【解决方案2】:

我遇到了类似的问题,这个解决方案对我有用。

这使用了一个脏位和一个围绕表单提交的包装器。这是因为我最终有几个保存触发器,包括处理破坏性视图切换事件。而且我不想最终保存非更改事件。

注意:我想我在另一个 SO 问题上找到了这个解决方案,也许你可以帮我链接它。

    // PROP SHEET: save after a second using dirty bit for other save triggers
    $('#props input, #props textarea, #props select').change(function() {
        $('#props').attr('dirty', true);
        console.log('change event fired',$(this));
        delay(function(){
          save_props();
        }, 1000 );
    });

    var delay = (function(){
      var timer = 0;
      return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
      };
    })();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2013-02-17
    • 2018-01-15
    • 2013-03-15
    相关资源
    最近更新 更多