来自php的MySQL UPDATE不...更新

时间:2013-11-12 02:24:13

标签: php mysql sql-update

除了php代码之外,这是这里构建的示例: http://jsfiddle.net/MJU8S/ 每当编辑一个字段时,如果按下了输入,则应将更新发送到数据库。问题是根本没有发送任何东西。

我该如何解决这个烂摊子?它甚至可能吗?

<script type="text/javascript">
    function edit(){
        var input = this.getElementsByTagName("input")[0];
        input.removeAttribute("disabled");
        input.focus();
        input.addEventListener("keypress", save, false);
    }

    function save(e){
        if (e.type == "keypress" && e.keyCode != 13)
            return;
        this.setAttribute("disabled", "disabled");
        /*removed*/document.cookie = "variable=" + this.getAttribute("name");
        /*removed*/document.cookie = "value=" + this.getAttribute("value");
        /*removed*/document.cookie = "id=" + this.getAttribute("id");
        /*removed*/
        <?php
            $variable = $_COOKIE["variable"];
            $value = $_COOKIE["value"];
            $id = $_COOKIE["id"];
            mysql_connect(localhost,$username,$password);
            @mysql_select_db($database) or die("<script type=\"text/javascript\">parent.alert('Errore nella connessione al database: salvataggio interrotto.');</script>");
            $update_query = "UPDATE Serie SET `$variable`='$value' WHERE `id`='$id'";
            mysql_query($update_query) or die("<script type=\"text/javascript\">parent.alert('Errore nella query: salvataggio interrotto.');</script>");
            mysql_close();
        ?>
    }
</script>



<小时/> 你的名声很重要,不是吗? = P Btw ...

编辑:感谢您的课程,这是我第一次为网络做点什么。如果我理解正确,我需要Ajax做一些没有刷新的东西,像这样吗?

<script type="text/javascript">
    function edit(){
        var input = this.getElementsByTagName("input")[0];
        input.removeAttribute("disabled");
        input.focus();
        input.addEventListener("keypress", save, false);
    }

    function save(e){
        if (e.type == "keypress" && e.keyCode != 13)
            return;
        this.setAttribute("disabled", "disabled");
        /*new*/var value = this.getAttribute("value");
        /*new*/if(value == "" || value == null)
        /*new*/ return;
        /*new*/ var variable = this.getAttribute("name");
        /*new*/ var id = this.getAttribute("id");
        /*new*/ xmlhttp.open("POST","update_query.php",true);
        /*new*/ xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        /*new*/ xmlhttp.send("variable="+variable+"&value="+value+"&id="+id);
    }
</script>

然后我想把这个连接放在“update_query.php”中:

<?php
    $variable = $_POST["variable"];
    $value = $_POST["value"];
    $id = $_POST["id"];
    mysql_connect(localhost,$username,$password);
    @mysql_select_db($database) or die("<script type=\"text/javascript\">parent.alert('Errore nella connessione al database: salvataggio interrotto.');</script>");
    $update_query = "UPDATE Serie SET $variable='$value' WHERE id='$id'";
    mysql_query($update_query) or die("<script type=\"text/javascript\">parent.alert('Errore nella query: salvataggio interrotto.');</script>");
    mysql_close();
?>



<小时/> 不,它仍然不起作用......

编辑:我错误地得到了一些价值。

function save(e){
    if (e.type == "keypress" && e.keyCode != 13)
        return;
    this.setAttribute("disabled", "disabled");
    /*new*/var value = e.target.value;
    if(value == "" || value == null)
        return;
    /*new*/ var variable = e.target.name;
    /*new*/ var id = e.target.id;
    xmlhttp.open("POST","update_query.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("variable="+variable+"&value="+value+"&id="+id);
}

3 个答案:

答案 0 :(得分:2)

您不能只在JavaScript中间放置一段PHP代码,并希望它能像您在问题示例中那样工作。

您的问题中的PHP代码将在服务器上运行一次,当请求页面时 - 代码将无法访问浏览器,如果您在浏览器中“查看”页面的来源,则不会在document.cookie = "id=" + this.getAttribute("id");

行后看到任何内容

为了使您的JavaScript函数以您希望的方式保存到数据库,您需要通过AJAX请求将数据发送到服务器端PHP脚本,然后将获取该数据并保存

否则 - 一个简单的表单POST就足够了。

答案 1 :(得分:1)

另一个问题:

    document.cookie = "variable=" + this.getAttribute("name");
    document.cookie = "value=" + this.getAttribute("value");
    document.cookie = "id=" + this.getAttribute("id");

您每次使用=时都在重写document.cookie。设置cookie的工作代码应为:

    document.cookie = "variable=" + encodeURIComponent(this.getAttribute("name"));
    document.cookie += ";value=" + encodeURIComponent(this.getAttribute("value"));
    document.cookie += ";id=" + encodeURIComponent(this.getAttribute("id"));

+=附加下一个Cookie值,";添加分号,分隔Cookie key1=value1;key2=value2对。 此外,Cookie必须使用encodeURIComponent进行编码。有关详细信息,请参阅http://www.thesitewizard.com/javascripts/cookies.shtml

答案 2 :(得分:1)

你需要使用

  • AJAX如果您不想刷新页面。如果是这种情况,请查看http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first。您必须将编辑后的值传递给另一个php页面,该页面将为您执行数据库操作。 Javascript是一种客户端技术,主要在浏览器上进行操作。 PHP是一种服务器端技术,可以处理服务器上的资源。你好像误解了他们。

  • 最简单的方法是简单地用ajax发布值。