【问题标题】:onClick argument of php functionphp函数的onClick参数
【发布时间】:2016-02-01 09:23:49
【问题描述】:

我编写了下面的代码来将mysql 中的变量设置为 1 或 0。但不知何故,每当我 click 第一个按钮 (1) 时,它总是将分配给第二个按钮的 0 值保存在mysql 表。

<head>
<?php
function update_ziekenwagen($Status) {
    $servername = "localhost";
    $username = "webapp";
    $password = "password";
    $dbname = "spoed";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "UPDATE AlgemeneVars SET value='".$Status."' WHERE id=4";    

    if ($conn->query($sql) === TRUE) {
        echo "Record updated successfully:" . $Status;
        //echo "UPDATE AlgemeneVars SET value=' " . $Status . " ' WHERE id=4";
    } else {
        echo "Error updating record: " . $conn->error;
    }

    $conn->close();}
?>
</head>
<body>
<input type="button" value="Vertr" id="Vertr" name="Vertr" onclick="document.write('<?php update_ziekenwagen(1); ?>');" />
<input type="button" value="Terug" id="Terug" name="Terug" onclick="document.write('<?php update_ziekenwagen(0); ?>');" />
</body>

【问题讨论】:

  • 你是如何解决这个问题的?
  • 这不是它的工作原理。您不能直接从 Javascript 调用 php(或任何其他服务器端语言)函数。阅读 AJAX
  • 你可以使用jquery、ajax来实现
  • @DigitalDouble 是对的。到底是怎么回事?当您执行代码时,它将使用1 调用update_ziekenwagen() 函数,然后使用0,因此您将始终在数据库中看到0 值。您无需单击按钮来保存值。试试这个,直接修改你数据库中的值,然后执行代码,不要点击按钮,即使不点击按钮,你也会看到一个0保存在数据库中!
  • 您的知识非常混乱。 PHP 代码在服务器上运行并生成您想要的任何输出(在本例中为带有内联 JS 的 HTML)。对函数update_ziekenwagen() 的两次调用都发生在生成的内容到达浏览器之前。任何用户交互(点击,例如)都发生在浏览器中,并且不会返回服务器。您可以使用链接、表单或 Ajax 将数据发送回服务器。

标签: javascript php mysql


【解决方案1】:
<head>
<?php
function update_ziekenwagen() {
    $Status = $_POST['status'];
    $servername = "localhost";
    $username = "webapp";
    $password = "sW7HwM225PxrwbZC";
    $dbname = "spoed";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "UPDATE AlgemeneVars SET value='".$Status."' WHERE id=4";    

    if ($conn->query($sql) === TRUE) {
        echo "Record updated successfully:" . $Status;
        //echo "UPDATE AlgemeneVars SET value=' " . $Status . " ' WHERE id=4";
    } else {
        echo "Error updating record: " . $conn->error;
    }

    $conn->close();
}
if (!empty($_POST)){
    update_ziekenwagen();
}
?>
</head>
<body>
<form>
    <input type="hidden" name="status" value="1" />
    <input type="submit" />
</form>
<form>
    <input type="hidden" name="status" value="0" />
    <input type="submit" />
</form>
</body>

尽管使用上述代码,您仍然可以在不使用 Ajax 的情况下使其工作。但这根本不是安全或好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多