Foros del Web » Programando para Internet » PHP »

Mostrar mensaje de envio correcto en la misma pagina

Estas en el tema de Mostrar mensaje de envio correcto en la misma pagina en el foro de PHP en Foros del Web. Hola, soy novata en esto de las páginas web y necesito ayuda por favor,que al validar un formulario en php me envie un mensaje informando ...
  #1 (permalink)  
Antiguo 17/06/2015, 21:45
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Busqueda Mostrar mensaje de envio correcto en la misma pagina

Hola, soy novata en esto de las páginas web y necesito ayuda por favor,que al validar un formulario en php me envie un mensaje informando si se envio correctamente o si falló en envio del formulario al email. Sé que se hace con header Location pero no encuentro bien la forma de que funcione.
Este es el formulario de contacto.php

<form method="POST" id="form" name="form" action="validacion.php">

<ul>
<li>
<label for="nombre">Nombre </label>
<input tabindex="1" type="text" name="nombre" class="nombre" value='<? php if(isset($_POST['nombre'])){ echo $_POST['nombre']; } ?>'><?php if(isset($errors)){ echo $errors[1]; } ?>
</li>


<li>
<label for="apellido">Apellido</label>
<input tabindex="2" type="text" name="apellido" class="apellido" value='<?php if(isset($_POST['apellido'])){ echo $_POST['apellido']; } ?>'><?php if(isset($errors)){ echo $errors[2]; } ?>
</li>


<li>
<label for="mail">Email</label>
<input tabindex="3" type="text" name="email" class="email" placeholder="[email protected]" value='<?php if(isset($_POST['email'])){ $_POST['email']; } ?>'><?php if(isset($errors)){ echo $errors[3]; } ?>
</li>



<li>
<label for="tel">Tel&eacute;fono</label>
<input tabindex="4" type="text" name="tel" class="tel" placeholder="Ej:01154556817" value='<?php if(isset($_POST['tel'])){ $_POST['tel']; } ?>'><?php if(isset($errors)){ echo $errors[4]; } ?>
</li>


<li>
<textarea class="textarea mensaje" tabindex="5" cols="39" rows="9" name="mensaje" placeholder="Escriba aqu&iacute; su mensaje..." ><?php if(isset($_POST['mensaje'])){ $_POST['mensaje']; } ?></textarea><?php if(isset($errors)){ echo $errors[5]; } ?>

</li>



<li class="form-button">
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php if(isset($result)) { echo $result; } ?>
</li>


</ul>

</form>




y esta es la página de validacion.php

<?php
if(isset($_POST['boton'])){
if($_POST['nombre'] == ''){
$errors[1] = '<div class="error">Ingrese un nombre </div>';
}else if($_POST['apellido'] == '' ){
$errors[2] = '<div class="error">Ingrese un apellido números</div>';
}else if($_POST['email'] == '' ){
$errors[3] = '<div class="error">Ingrese un email </div>';
}else if($_POST['tel'] == ''){
$errors[4] = '<div class="error">Ingrese un teléfono </div>';
}else if($_POST['mensaje'] == ''){
$errors[5] = '<div class="error">Ingrese un mensaje</div>';
}else{
$dest = "[email protected]". ", ";
$dest .= "[email protected]"; //Email de destino
$asunto = "Contacto";
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
//Cabeceras del correo
$headers = "From: $nombre <$email>\r\n"; //Quien envia?
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //

if(mail($dest,$asunto,$cuerpo,$headers)){
header('Location: contacto.php');
$result = '<div class="result_ok">Email enviado correctamente </div>';

// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['apellido'] = '';
$_POST['email'] = '';
$_POST['tel'] = '';
$_POST['mensaje'] = '';
}else{
header('Location: contacto.php');
$result = '<div class="result_fail">Hubo un error al enviar el mensaje
</div> ';

}

}

}

?>


Pido por favor su ayuda, necesito hacer un trabajo y tiene que funcionar esto. Desde ya muchas gracias y disculpen las molestias.
  #2 (permalink)  
Antiguo 18/06/2015, 02:36
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Ponle una variable a la página del header y sabrás si lo has enviado bien o mal el formulario.
  #3 (permalink)  
Antiguo 18/06/2015, 07:38
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Hola Baldaweb, muchas gracias por responder y por brindar tu ayuda.
Ahora con el tema de la variable , en donde debería implementarla y como la llamaría desde la página contacto.php?
en la página de contacto.php se llama a la variable $result desde el submit
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php if(isset($result)) { echo $result; } ?>
  #4 (permalink)  
Antiguo 18/06/2015, 07:46
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Algo sencillo

Si envias el formulario
$variable="Email enviado correctamente"
Si hubo un error
$variable="Hubo un error al enviar el mensaje"

Código PHP:
Ver original
  1. header('Location: contacto.php?result=$variable');

Y en tu formulario
Código PHP:
Ver original
  1. <?php if(isset($result)) { echo $result; } ?>
  #5 (permalink)  
Antiguo 18/06/2015, 08:00
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

muchas gracias por responder y la ayuda .
Lo probe de esta manera

en validacion.php

if(mail($dest,$asunto,$cuerpo,$headers)){
header('Location: contacto.php?result=$var');
$var = '<div class="result_ok">Email enviado correctamente </div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['apellido'] = '';
$_POST['email'] = '';
$_POST['tel'] = '';
$_POST['mensaje'] = '';
}else{
header('Location: contacto.php?result=$var');
$var = '<div class="result_fail">Hubo un error al enviar el mensaje </div> ';

}



y en contacto.php

<li class="form-button">
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php if(isset($result)) { echo $result; } ?>
</li>


lo entendí bien?
  #6 (permalink)  
Antiguo 18/06/2015, 08:12
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Pero mejor poner en la variable $var 1 o 0
Código PHP:
Ver original
  1. $var = 1 //exito en el formulario
  2. $var = 0 //fracaso en el formulario

Y en contacto
Código PHP:
Ver original
  1. if(isset($result)) {
  2. if ($result==1)
  3. echo '<div class="result_ok">Email enviado correctamente </div>';
  4. else
  5. echo '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
  6.  
  7.  }
  #7 (permalink)  
Antiguo 18/06/2015, 08:31
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Así es como lo puse
en contacto.php
<li class="form-button">
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php
if(isset($result)) {
if ($result==1)
echo '<div class="result_ok">Email enviado correctamente</div>';
else
echo '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
}
?>

</li>


y así lo hice en validacion.php

if(mail($dest,$asunto,$cuerpo,$headers)){
header('Location: contacto.php?result=$var');
$var=1;
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['apellido'] = '';
$_POST['email'] = '';
$_POST['tel'] = '';
$_POST['mensaje'] = '';
}else{
header('Location: contacto.php?result=$var');
$var=0;

}


lo probé y no me funciono , está bien pensado lo que me disjiste , no se porque no me funciona.
  #8 (permalink)  
Antiguo 18/06/2015, 08:57
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

No se porque no me funciona. ¿Habré hecho algo mal? . Busco el error pero no lo veo , no lo encuentro.
  #9 (permalink)  
Antiguo 18/06/2015, 09:05
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

$result lo debes recoger de esta forma:

Código PHP:
Ver original
  1. $result = $_GET['result'];

Y $var debe ir antes del header
Código PHP:
Ver original
  1. $var=1;
  2. header('Location: contacto.php?result=$var');
  3.  
  4. $var=0;
  5. header('Location: contacto.php?result=$var');
  #10 (permalink)  
Antiguo 18/06/2015, 09:15
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Muchas Gracias por tu ayuda.
Haber si lo entendí bien. en contacto.php
No se en que parte ubicaría el GET, perdón soy nueva en esto y aun sigo aprendiendo.

<li class="form-button">
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php

if(isset($_GET['result'])) {
if ($result==1)

echo '<div class="result_ok">Email enviado correctamente </div>';
else
echo '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
}
?>

</li>


en validación.php

if(mail($dest,$asunto,$cuerpo,$headers)){
$var=1;
header('Location: contacto.php?result=$var');
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['apellido'] = '';
$_POST['email'] = '';
$_POST['tel'] = '';
$_POST['mensaje'] = '';
}else{
$var=0;
header('Location: contacto.php?result=$var');
}
  #11 (permalink)  
Antiguo 18/06/2015, 09:36
Avatar de Romi41  
Fecha de Ingreso: junio-2015
Mensajes: 7
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

Creo que ya te entendí. en contacto.php

<li class="form-button">
<input type="submit" value="Enviar" class='boton' name='boton'/>
<?php
$result = $_GET['result'];
if(isset($result)) {
if ($result==1)

echo '<div class="result_ok">Email enviado correctamente </div>';
else
echo '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
}
?>


pero me sale este mensaje de error
Notice: Undefined index: result in C:\xampp\htdocs\proyecto\contacto.php on line 90
como se define $result?
  #12 (permalink)  
Antiguo 19/06/2015, 02:54
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Mostrar mensaje de envio correcto en la misma pagina

¿Cuando envías el formulario en la barra de dirección está la variable $result?

Mira a ver que tiene la variable $result, usa dd($_GET['result'])

No te puedo ayudar más.

Etiquetas: formulario-php, header:location
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.