我有一个数据库,允许用户通过编辑页面更新记录。提交修改后,我希望浏览器自动返回他们更新的页面以查看结果。我想过使用JS来实现这个目标:
if(mysqli_query($con, $sql)){
echo "<script> alert('You have successfully updated.');
window.location.href='javascript:history.go(-2)';
</script>";
}else{
echo "An error has occurred. Please go back and check the code: ".mysqli_error($con);
}
但这只会强制浏览器返回页面而不是刷新的页面,其中的更改可见。我需要手动刷新页面以便以这种方式查看结果。
我也尝试过:
if(mysqli_query($con, $sql)){
echo "<script> alert('You have successfully updated.');
window.location.href='01T.php?id=$id';
</script>";
}else{
echo "An error has occurred. Please go back and check the code: ".mysqli_error($con);
}
因为01T.php是显示信息的页面,但是没有用。
如何使用更合适的PHP解决方案将浏览器重定向到已编辑的相同ID以查看结果?
答案 0 :(得分:0)
使用header
重定向
if(mysqli_query($con, $sql)){
header("Location: [url]?id=$id");
}else{
echo "An error has occurred. Please go back and check the code: ".mysqli_error($con);
}
答案 1 :(得分:0)
我会使用PHP Sessions在页面之间保存消息,然后在加载新页面时检查是否存在消息。如果有,请显示它。
在您的情况下,如果查询成功运行,您将保存邮件,然后重定向用户。然后,当加载新页面时,检索该消息并显示它。
<?php
session_start();
...
if(mysqli_query($con, $sql)){
$_SESSION['message'] = "success";
header("Location: 01T.php?id=$id");
exit;
}else{
echo "error";
}
然后在您要显示消息的每个页面上:
<?php
session_start();
$msgHtml = null; //if it stays null, no message will be shown
//if there is a message. Capture it, then clear it from the session
if(!empty($_SESSION['message'])){
$message = $_SESSION['message'];
unset($_SESSION['message']);
//Build the content you want the user to see. Add CSS classes to style it
$msgHtml = "<div>$message</div>"
}
现在,如果有用户的消息,请显示它。如果没有消息,则不会输出任何内容。
在PHP中:
echo $msgHtml;
或在HTML中:
<body>
<?= $msgHtml ?>
</body>