formularios - formulario php-al enviarse en la misma página
formularios en php y mysql ejemplos (7)
Tengo un formulario php que se encuentra en contact.html
El formulario se procesa desde processForm.php
Cuando un usuario rellena el formulario y hace clic en Enviar, processForm.php envía el correo electrónico y dirige al usuario a - processForm.php con un mensaje en esa página "¡Correcto! Su mensaje ha sido enviado".
No sé mucho sobre php, pero sé que la acción que está pidiendo esto es:
// Die with a success message
die("<span class=''success''>Success! Your message has been sent.</span>");
Mi pregunta es, ¿cómo puedo mantener el mensaje dentro del formulario div sin redireccionar a la página processForm.php?
Puedo publicar todo el processForm.php si es necesario, pero es largo.
Gracias
Amigo. Úselo de esta manera, no habrá "mensaje variable indefinido" y funcionará bien.
<?php
if(isset($_POST[''SubmitButton''])){
$price = $_POST["price"];
$qty = $_POST["qty"];
$message = $price*$qty;
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="#" method="post">
<input type="number" name="price"> <br>
<input type="number" name="qty"><br>
<input type="submit" name="SubmitButton">
</form>
<?php echo "The Answer is" .$message; ?>
</body>
</html>
Hay dos formas de hacerlo:
- Al enviar el formulario a la misma página. (Esto puede hacerse configurando la acción del formulario en la misma URL) en cuyo caso debe manejar el formulario enviado con un script PHP.
if(isset($_POST[''submit''])) { // Enter the Code you want to execute after the form has been submitted // Dispaly Success or failure Message if any } else { // Display the Form and the Submit Button }
2. Usar la presentación de formulario AJAX que es un poco más difícil que el primer método para un principiante.
La mejor manera de mantenerse en la misma página es publicar en la misma página.
<form method="post" action="<?=$_SERVER[''PHP_SELF''];?>">
Para permanecer en la misma página en el envío, puede dejar la acción vacía ( action=""
) en la etiqueta del formulario, o dejarla fuera del todo.
Para el mensaje, cree una variable ( $message = "Success! You entered: ".$input;"
) y luego repita la variable en el lugar de la página donde desea que aparezca el mensaje con <?php echo $message; ?>
.
Me gusta esto:
<?php
if(isset($_POST[''SubmitButton''])){ //check if form was submitted
$input = $_POST[''inputText'']; //get input text
$message = "Success! You entered: ".$input;
}
?>
<html>
<body>
<form action="" method="post">
<?php echo $message; ?>
<input type="text" name="inputText"/>
<input type="submit" name="SubmitButton"/>
</form>
</body>
</html>
Tienes que usar un código similar a esto:
echo "<div id=''divwithform''>";
if(isset($_POST[''submit''])) // if form was submitted (if you came here with form data)
{
echo "Success";
}
else // if form was not submitted (if you came here without form data)
{
echo "<form> ... </form>";
}
echo "</div>";
El código con if
like this es típico para muchas páginas, sin embargo, esto está muy simplificado.
Normalmente, debe validar algunos datos en el primer "si" (compruebe si los campos del formulario no estaban vacíos, etc.).
Por favor visite www.thenewboston.org o phpacademy.org . Hay muy buenos tutoriales en video PHP, incluidos los formularios.
Prueba esto ... funcionó para mí
<form action="submit.php" method="post">
<input type="text" name="input">
<input type="submit">
</form>
------ submit.php ------
<?php header("Location: ../index.php"); ?>
Puedes usar # acción en acción de forma
<?php
if(isset($_POST[''SubmitButton''])){ //check if form was submitted
$input = $_POST[''inputText'']; //get input text
$message = "Success! You entered: ".$input;
}
?>
<html>
<body>
<form action="#" method="post">
<?php echo $message; ?>
<input type="text" name="inputText"/>
<input type="submit" name="SubmitButton"/>
</form>
</body>
</html>