单击 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');
这是我尝试过的方法,但我认为还需要做更多工作,因为单击 Ok 和 Cancel[ 时不会调用下面的 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,或提出新问题。
我有一个 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');
这是我尝试过的方法,但我认为还需要做更多工作,因为单击 Ok 和 Cancel[ 时不会调用下面的 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,或提出新问题。