我试图在删除记录时显示一条消息,2 秒后它消失并将我重定向到另一个页面。
我有以下代码。它显示消息,但不会消失,并且在视觉上不是很愉快。
我分享了删除记录时消息应该去哪里的工作表的完整代码,在底部添加发送的代码。
<?php
session_start();
if($_SESSION['rol'] != 1)
{
header("location: ./");
}
include "../conexion.php";
if(!empty($_POST))
{
if($_POST['idusuario'] == 1){
header("location: lista_usuarios.php");
mysqli_close($conection);
exit;
}
$idusuario = $_POST['idusuario'];
$query_delete = mysqli_query($conection,"UPDATE usuario SET estatus = 0 WHERE idusuario = $idusuario ");
mysqli_close($conection);
}
if(empty($_REQUEST['id']) || $_REQUEST['id'] == 0 )
{
header("location: lista_usuarios.php");
mysqli_close($conection);
}
else
{
$idusuario = $_REQUEST['id'];
$query = mysqli_query($conection,"SELECT u.nombre,u.usuario,r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol
WHERE u.idusuario = $idusuario ");
mysqli_close($conection);
$result = mysqli_num_rows($query);
if($result > 0)
{
while ($data = mysqli_fetch_array($query))
{
$nombre = $data['nombre'];
$usuario = $data['usuario'];
$rol = $data['rol'];
}
}
else
{
header("location: lista_usuarios.php");
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<?php include "includes/scripts.php"; ?>
<title>Eliminar Usuario</title>
</head>
<body>
<?php include "includes/header.php"; ?>
<section id="container">
<br>
<div class="data_delete">
<br>
<h2><i class="fas fa-user-times"></i> ¿Está seguro de eliminar el siguiente registro?</h2>
<br>
<p>Nombre: <span><?php echo $nombre; ?></span></p>
<p>usuario: <span><?php echo $usuario; ?></span></p>
<p>Tipo Usuario: <span><?php echo $rol; ?></span></p>
<form method="post" action="">
<input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>">
<a href="lista_usuarios.php" class="btn_cancel">Cancelar</a>
<div id="mensaje-emergente"></div>
<button type="submit" class="btn_ok" onclick="ejecutaAlerta()"><i class="fas fa-user-times"></i> Eliminar</button>
</form>
</div>
</section>
<?php include "includes/footer.php"; ?>
<script>
function ejecutaAlerta()
{
/* Localizamos el contenedor y cambiamos el texto */
let mensaje = document.getElementById('mensaje-emergente');
mensaje.innerText = 'Hola StackOverflow!';
/* Hacemos aparecer el mensaje */
mensaje.style.visibility = 'visible';
mensaje.style.opacity = 1;
setTimeout(function()
{
/* Hacemos desaparecer el mensaje suavemente */
mensaje.style.opacity = 0;
/* Tras los 0.5 segundos de la animación cargamos la web de destino */
setTimeout(function()
{
mensaje.style.visibility = 'hidden';
window.location = lista_usuarios.php;
}, 500);
}, 5000);
}
</script>
</body>
</html>
我建议您在页面本身内显示该弹出消息。一切都会变得更简单,视觉上更有吸引力。
版(知道完整代码后)
当我们按下它时,我曾经
Event.preventDefault()
阻止按钮实现其目的(提交表单),但我们在动画结束时使用HTMLFormElement.submit()
:最后告诉大家,这不是最优雅的做法。从视觉上讲,最好的方法是通过 XHR 完成,让表格行消失,而无需重新加载页面。
此外,您的 PHP 代码还存在与SQL 注入相关的严重安全问题。
快速修复可以使用
mysqli_real_escape_string()
以下方式:后来:
注释:
window.open
我建议使用window.location.replace
在其中我们将指示我们想要到达但在同一个选项卡内的路线document.write
在仅显示文本时使用它,也许是在页面的特定部分(这样做会更实用)。focus()
,也就是说,如果意图是显示警告然后重定向,那么这一切都是为了将焦点放在网页的某些元素上代码: