Quiero mostrar 2 de esto cuando tenga éxito o error, sin embargo, cuando lo pruebo, simplemente no se ejecuta después de la publicación porque cuando presiono enviar cambios, vuelve a cargar el navegador.
Quiero imprimir un div que contenga esos mensajes después de POST, incluso la web se vuelve a cargar después de enviarlo.
<div id="messageSuccess" class="alert alert-success alert-dismissible show fade"> <div class="alert-body"> <button class="close" data-dismiss="alert"> <span>×</span> </button> Congrats, Settings successfully updated! You may required to relogin to see the changes [<a style="color: #0E880B;" href="/logout">Logout</a>]. </div> </div> <div id="messageFailed" class="alert alert-danger alert-dismissible show fade"> <div class="alert-body"> <button class="close" data-dismiss="alert"> <span>×</span> </button> Oh no, Settings failed to update! Please try again later. </div> </div> <?php require_once '../db_conn.php'; $userid = $_SESSION['user_id']; $urlImgur = $_GET['urlAvatar']; if (isset($_POST["changeAvatar"])){ $sql = "UPDATE users SET `imgur`='$urlImgur' WHERE `user_id`='$userid'"; $statement = $conn->prepare($sql); if ($statement->execute()) { //I use this method before, but link very messy I want a clean error, //like other website throwing error with popup //header("Location: /user/settings?success-settings=Successfully Updated!"); echo '<script type="text/javascript"> var element = document.getElementById("messageSuccess"); element.classList.remove("no-display"); </script>' } else { //header("Location: /user/settings?error-settings=Error Updating!"); echo '<script type="text/javascript"> var element = document.getElementById("messageFailed"); element.classList.remove("no-display"); </script>' } $conn = null; $sql = null; } ?>Resolver Usé este tipo de método:
require_once '../db_conn.php'; $userid = $_SESSION['user_id']; $urlImgur = $_GET['urlAvatar']; if (isset($_POST["changeAvatar"])){ $sql = "UPDATE users SET `imgur`='$urlImgur' WHERE `user_id`='$userid'"; $statement = $conn->prepare($sql); if ($statement->execute()) { header("Location: /user/settings?status=success"); } else { header("Location: /user/settings?status=error"); } $conn = null; $sql = null; } if(isset($_GET['status']) && $_GET['status'] == "success"){ echo '<div id="messageSuccess" class="alert alert-success alert-dismissible show fade">'; echo '<div class="alert-body">'; echo '<button class="close" data-dismiss="alert">'; echo '<span>×</span>'; echo '</button>'; echo 'Congrats, Settings successfully updated! You may required to relogin to see the changes [<a style="color: #0E880B;" href="/logout">Logout</a>].'; echo '</div>'; echo '</div>'; } if(isset($_GET['status']) && $_GET['status'] == "error"){ echo '<div id="messageFailed" class="alert alert-danger alert-dismissible show fade">'; echo '<div class="alert-body">'; echo '<button class="close" data-dismiss="alert">'; echo '<span>×</span>'; echo '</button>'; echo 'Oh no, Settings failed to update! Please try again later.'; echo '</div>'; echo '</div>'; }