Foros del Web » Creando para Internet » Diseño web »

Formulario. Cómo colocar texto de "mensaje enviado"

Estas en el tema de Formulario. Cómo colocar texto de "mensaje enviado" en el foro de Diseño web en Foros del Web. Tengo un formulario de contacto programado en PHP y enlazado a una página HTML. Lo que quiero conseguir es que al enviar el mensaje aparezca ...
  #1 (permalink)  
Antiguo 20/01/2009, 09:11
Avatar de gorkreg  
Fecha de Ingreso: julio-2008
Mensajes: 305
Antigüedad: 15 años, 9 meses
Puntos: 8
Formulario. Cómo colocar texto de "mensaje enviado"

Tengo un formulario de contacto programado en PHP y enlazado a una página HTML. Lo que quiero conseguir es que al enviar el mensaje aparezca una casilla de texto con "El mensaje se ha enviado correctamente..." o "El mensaje no ha podido ser enviado..." (en el caso de que no se haya rellenado la dirección email. Esto ya está programado y funciona).

¿Cómo se consigue sin tener que abrir una nueva página HTML que sería una copia de la anterior pero con el texto incluído? Espero haberme explicado.

Os incluyo el código del archivo PHP. Ahora lo que sucede tras enviar el comentario es que se abre una nueva página HTML (ok.html o error.html):

<?php

// variables
$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "Formulario de contacto";
$nombre = Trim(stripslashes($_POST['nombre']));
$email = Trim(stripslashes($_POST['email']));
$comentario = Trim(stripslashes($_POST['comentario']));

// validacion
$validationOK=true;
if (Trim($email)=="") $validationOK=false;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
exit;
}

// cuerpo del email
$Body = "";
$Body .= "nombre: ";
$Body .= $nombre;
$Body .= "\n";
$Body .= "email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "comentario: ";
$Body .= $comentario;
$Body .= "\n";

// enviar el mail
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redireccionamiento
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>

Gracias
  #2 (permalink)  
Antiguo 20/01/2009, 10:00
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Formulario. Cómo colocar texto de "mensaje enviado"

Vamos! solo quieres una alerta, solo tienes que reemplazar esto:

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}

Por esto:

echo "<script language=\"JavaScript\">";
if ($success) {
echo "alert('Se ha enviado el mensaje correctamente');";
} else {
echo "alert('No se ha conseguido enviar el mensaje');";
}
echo "</script>";

Espero que te sirva.
  #3 (permalink)  
Antiguo 20/01/2009, 10:30
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Formulario. Cómo colocar texto de "mensaje enviado"

Usar los alert no es buena idea porque los clientes los ven mas como mensajes de error.
Para hacer lo que quieres puedes usar AJAX, te voy a explicar como hacerlo con jquery

Primero debajo de tu formulario crea un div donde mostraremos un mensaje segun se envie o no el correo
[html]
<div id="result"></div>
[html]

Luego hay que interceptar el evento submit para que ajax lo procese
Código HTML:
<script language="javascript">
$(document).ready(function() {
  // esto es un loader y es opcional
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
  // Aqui interceptamos el evento submit
    $('#form, #fat, #fo3').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(data) {
                $('#result').html(data);

            }
        })
        
        return false;
    }); 
})  
</script> 
No te olvides de ponerle como ID a tu formulario "fo3" y dentro del archivo php debes borrar los redireccionamientos.
Si no te quedó muy claro puedes ver un ejemplo aqui
  #4 (permalink)  
Antiguo 21/01/2009, 09:54
Avatar de gorkreg  
Fecha de Ingreso: julio-2008
Mensajes: 305
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Formulario. Cómo colocar texto de "mensaje enviado"

Muchas gracias a los dos. Lo probaré y a ver qué pasa.
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 20:17.