单击 js 警报框中的 Ok/Cancel 按钮,更新 php 中的数据库 table

update db table in php on clicking Ok/Cancel buttons in the js alert box

我有一个 php 代码(所有代码都在同一个文件 mno.php),其中一次只允许一个用户登录时间。当另一个用户同时登录时,显示警告信息

第一个用户登录时,它进入else(在B行)

第2个用户登录同时, 它进入 if 块 if (mysqli_num_rows($result1) > 0) 并且警报消息将显示 (在 A 行) user 用户 A 当前正在登录。 你想接管吗?(使用“确定”和“取消”按钮)。

mno.php

/* php function for alert message */
function phpAlert($msg)
{
    echo '<script type="text/javascript">confirm("' . $msg . '")</script>';
}


if (mysqli_num_rows($result1) > 0) {
    while ($row = mysqli_fetch_array($result1)) {
        if ($row['open'] == "true") {
            if (!isset($_SESSION['admin'])) {
                 $message = "user " . $row['user_name'] . " is logged in. Do you want to take over ?";   
                 phpAlert($message); //Line A
            }
            break;
        }
    }
} else {
    $_SESSION['admin'] = true;  // Line B
}

单击警报框Ok/Cancel 按钮,我希望以下查询运行:

确定按钮:

$stmt1=$connect->prepare("UPDATE trace_users SET write_access='0' WHERE write_access='1'"); // revoke write access of all users
$stmt1->execute();

取消按钮:

session_destroy();   // destroy session data in storage
!isset($_SESSION['admin']);
header('location: /abc/mno.php');



这是我尝试过的方法,但我认为还需要做更多工作,因为单击 OkCancel[ 时不会调用下面的 if 和 else 块=62=] 按钮

if ( $_GET[confirm] == "yes" ) {
    $stmt1=$connect->prepare("UPDATE trace_users SET write_access='0' WHERE write_access='1'"); // revoke write access of all users
    $stmt1->execute();
} else if ( $_GET[confirm] == "no" ) {
    session_destroy();   // destroy session data in storage
    !isset($_SESSION['admin']);
    header('location: /abc/mno.php');
}

您应该创建两个单独的 php 文件,其中包含相应地放入 if 和 else 块中的内容,然后使用 ajax 调用这些文件。所以基本上你从你的js脚本开始并更新它来调用一个函数而不是直接调用确认:

echo '<script type="text/javascript">myConfirmFunction("' . $msg . '")</script>';

并像这样在 <script> 集团中实施 myConfirmFunction

<script type="text/javascript">
    function myConfirmFunction(message) {
        if(confirm(message)) {
            $.ajax({
                url: "update_trace_users.php",
                type: "GET",
                data: {},
                success: function(result) {
                      // Do something with result
                }
            });
        } else {
            $.ajax({
                url: "session_destroy.php",
                type: "GET",
                data: {}, // you can pass data to your php script
                success: function(result) {
                      // Do something with result
                }
            });
        }
    }
</script>

希望对您有所帮助!

要使以下条件行起作用(并注意键周围的引号!):

if ( $_GET['confirm'] == "yes" ) {

else if ( $_GET['confirm'] == "no" ) {

...当您的 mno.php 页面被调用时,必须有一个带有 ?confirm=yes=no 的查询字符串。现在,在您的提示中,您只需执行以下操作:

echo '<script type="text/javascript">confirm("' . $msg . '")</script>';

但是,单击 Javascript confirm 提示本身不会完成任何事情。没有发送任何内容,没有加载任何内容,也没有任何反应。你需要这样的东西:

<script type="text/javascript">
    let x = confirm("Take over?");
    window.location.href = '/abc/mno.php?confirm=' + (x === true ? 'yes' : 'no');
</script>

也就是说,得到确认提示的(true/false)结果,然后进行相应的操作。此处的操作是:重新加载添加了适当查询字符串的脚本

这似乎是您在这里遗漏的简单拼图。如果插入后还有其他问题,请使用必要的详细信息更新 OP,或提出新问题。