【问题标题】:Problems with PHP SQL HTML & AJAX submissionPHP SQL HTML & AJAX 提交的问题
【发布时间】:2011-03-03 15:35:40
【问题描述】:

所以我还有一个问题,

我正在尝试让 AJAX 脚本工作,但点击后页面将重新加载但无法更新数据库字段。

我使用的代码我已经为网站上的其他类似脚本工作,但由于某种原因,使用相同的代码不起作用,使用的代码如下;

将调用发送到 AJAX 的 HTML 代码:

<input onClick="read('<? echo $id; ?>')" id="read" name="read" type="checkbox" value="1" style="position:relative; top:2px; width: auto">

确认用户选择并发送到表单处理文件的代码:

function read(ID) {
    if(confirm('Are you sure you have read this carefully, you will not be alerted again "' + ID + '" ?')) {
        $.get('http://<? echo ROOT . ADMIN . INCLUDES; ?>formHandling.php', { read: ID }, function(data) {
            window.location.href = 'http://<? echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].""; ?>';
        });
    }
    return false;
}

最后是处理 SQL 查询的代码:

if (isset($_GET['read'])) {

    // Pass the GET data and associate them to variables
    $read = trim($_GET['read']);

    $query  = "UPDATE cms_motd SET read='$read' WHERE id='1'";
    $result = mysql_query($query)or die("Database query died: " . mysql_error());

    unset($_GET['readConfirm']);
}

提前感谢所有帮助。

问候,

丹。

【问题讨论】:

    标签: php jquery mysql html ajax


    【解决方案1】:

    你不是说:

    $query  = "UPDATE cms_motd SET read='1' WHERE id='$read'";
    

    代替:

    $query  = "UPDATE cms_motd SET read='$read' WHERE id='1'";
    

    编辑:

    不知道是不是copy&past错误:

    $result = mysql_query($query);or die("Database query died: " . mysql_error());
    

    需要:

    $result = mysql_query($query) or die("Database query died: " . mysql_error());
    

    【讨论】:

    • 遗憾的是,$read 是已确认阅读消息的用户的 id,该值作为关系条目进入数据库,以表明用户已阅读该消息以供将来使用。跨度>
    • 您确定该记录存在于数据库中吗?当你从 PMA 运行查询时,它会影响行吗?
    • 是的,表 cms_motd 存在,“id”字段和“read”字段也存在,“read”设置为 int(2) 字段并且在编写时当前为空。也是“;”你发现是一个错字,已删除但没有解决问题:(
    • cms_motd表中是否有ID=1的记录?我不明白为什么选择更新,我会设计不同的系统。当有人阅读消息时,您将首先插入而不是插入,稍后再更新。
    • 是的,cms_motd 表中有一行 id = 1,目的是提高效率,即不在填充过多的表中创建新表或新字段。因此 cms_motd 是消息本身,其中一个字段是“已读”,它将列出已确认已阅读新消息的用户的所有相对 ID。
    【解决方案2】:

    我遇到了一些挑战,即您执行查询但不给代码任何反馈以继续。例如,如果查询失败怎么办?你就按吗?

    以下是我处理此类 Ajax 事务的方式(是的,速记!)

    $('#read').click(function() {
      $("#div").dialog({        //Shows dialog
        height: 250,
        width: 450,
        modal: true,
    buttons: {
       "Cancel": function() {
        $( this ).dialog( "close" );
       },
       "Save": function() {
            $.ajax({
            url: "url.php",                   //
            timeout: 30000,
            type: "POST",
            data: $('#form').serialize(),
            dataType: 'json',
            error: function(XMLHttpRequest, textStatus, errorThrown)  {
                alert("An error has occurred making the request: " + errorThrown)
            },
            success: function(data){                                                        
                   $('#updatediv).html(data.stuff);
                src="web/imgs/icons/24deleteB.png"></td>';
    
            }
    
            $( this ).dialog( "close" );
       }
    
    
        }
    
    
       });
    });
    

    现在,URL.php 将执行查询并将 json_encoded 字符串返回给 AJAX,然后 AJAX 将能够通过成功/错误函数知道事务是否成功。您可以对成功案例进行额外的调节,以确保以特定方式保存某些内容,或者结果与您在做某事之前想要的案例相匹配。成功时,我只展示了一个简单的 .html 内部 html 类型操作,但您可以执行任何数量或多种操作,例如显示/隐藏、内部 html 等。选择权在您手中。另外,请注意,我使用 Jquery UI 对话框而不是系统对话框,因此如果您逐字使用,则需要 Jquery UI 使其看起来更漂亮。最后,注意我使用的是 Jquery 提供的 .click 功能,而不是 onclick,这只是一个头发清洁器。

    【讨论】:

    • 感谢您的帮助,但我不是在寻找我拥有的代码的重新工作,我正在寻找修复我拥有的代码的解决方案。
    • @Daniel,无论如何,错误处理是我们工作的重要组成部分,尤其是在处理可能失败且确实失败的异步连接时。 JQuery 让它变得如此简单,不使用它就是犯罪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2011-10-12
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多