1. [+ Tu HOSTING con dominio GRATIS +] Haz clic aquí para contratarlo desde 3,95€ al mes. ¡Soporte WordPress! ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

mensaje de confirmacion debajo de formulario al cargar

Tema en 'Programación y Diseño Web' iniciado por noctam, 25 May 2010.

  1. noctam

    noctam Nuevo usuario

    Hola a todos de nuevo,

    Realizando un formulario de consulta para una web me he chocado de frente con una duda que no se solucionar.

    Quiero que, al enviar la consulta a traves del formulario de la web, aparezca un mensaje debajo del formulario indicando si la consulta se logro enviar o no.

    Hasta aqui bien, el problema esta en que al enviar la consulta me recarga la pagina y me la situa al comienzo de esta, y el formulario esta en la parde de abajo, con lo cual el mensaje de confirmacion de envio no se ve.

    Quisiera saber de que manera puedo hacer para que al enviar la consulta y recargar la pagina, se me vaya directamente a la parte del mensaje en lugar de al comienzo de la pagina.

    Graaaaacias a todos por echarme un cable^^
     
  2.  
  3. nasoft

    nasoft Nuevo usuario

    Buenas!
    Este es mi primer aporte en este foro así que espero hacerlo de la mejor manera posible.

    Lo que quieres hacer lo deberias realizar con una consulta ajax. Tu formulario deberia mandar los datos mediante una consulta ajax una página web que analice los datos y determine si se ha enviado o no de manera correcta. Luego, en el callback de la llamada ajax realizas la escritura en el sector correspondiente de tu página web actual. Con esto te ahorras las recargas de la página y puedes escribir tu respuesto donde te parezca mejor.
    Para ayudarte con estos temas existe una libreria de soporte javascript llamada jQuery. Revisala, ya hay varias cosas hechas que solucionan este problema

    Saludos!
     
  4. softim

    softim Nuevo usuario

    bueno, la idea del que posteo anterior no esta mal, pero tambien puede ser de la siguiente forma:

    al enviar la consulta y que se recargue nuevamente la pagina verifica que se haya enviado la misma, no se que lenguaje del lado del servidor estes utilizando, pero si utilizaras php podria ser:

    CODE, HTML o PHP Insertado:
    //Esto lo podrias coloar dentro del body (cuerpo de la página)
    //Si ha sido pulsado el boton del envio de la consulta
    <?php
    if (isset($_POST['enviarConsulta'])){
    ?>
    <script languaje='javascript' type='text/javascript'>
    //Direccionamos a la bandera donde esta el aviso
    document.location="#mensaje";
    </script>
    <?php
    }
    ?>

    La bandera que permitira ir a la zona del mensaje puede ser asi

    CODE, HTML o PHP Insertado:
    <a name='mensaje'><h3>Titulo del mensaje de confirmacion</h3></a>

    Esto resolveria tu problema... Saludos :)
     
  5. noctam

    noctam Nuevo usuario

    gracias a ambos por las respuestas, el codigo de mylton lo llevaba buscando ya un tiempo. no sabia como tendria que hacer esactamente la llamada a la bandera con php, pero ya veo que lo haces desde javascript^^
     
  6. jamc17

    jamc17 Nuevo usuario

    Yo lo que recomiendo es que lo hagas con Ajax, y no de la forma que lo plantea mylton,
    ya que te dá muchas más posibilidades, ademas de mejorar la legibilidad de tu código
    yo almenos no acostumbro mesclar html, css, javascript, y minimo php (con html) para mis vistas

    y puedes utilizar Jquery o prototype, aunque mejor te recomedaria que aprendas Javascript Ajax y luego
    trabajar con estas librerias.
     
  7. el under

    el under Nuevo usuario

    También opino que con ajax es mas fácil te dejo un link para que puedas ver un vídeo de como hacerlo, se ve bastante sencillo y es muy explicativo.

    http://www.youtube.com/watch?v=TiV5vCar_cI&feature=related


    pd = si puedo poner links?? :p
     
  8. marcus aurelio

    marcus aurelio Nuevo usuario

    Hola como estas?

    podrias hacelo facilmente con php. incluso recargando la pagina.. aca lo importante es usar un funcion de envi ode mail que pueda darnos un ok o un error.. en el envio..

    lamentablemente.. no logre hacer que la funcion mail de php me diga si pud enviar o no el correo.. pro con la clase phpmailer pude hacerlo..

    ahora vamos esto..

    al enviar un mail tenemos las siguientes posibilidades

    1) que el mail se envie correctamente...
    2) que el mail se envie y se envie mal. porejemplo que la direccion no tenga el formato correcto.. lo cual produciria un error... o por una falla del server o lo que fuera.
    3) que el server rebote el envio.. (direccion inexistente, casilla llena y todo eso.. )

    para la numero tres.. creo que no podemos hacer nada. pero para la uno y la dos si.. ejemplo...


    CODE, HTML o PHP Insertado:
    <?php 
    function envioHTML($destino,$origen_nombre,$origen_mail,$mail_respuesta,$subject,$mensaje,$copias){
    
    mysql_select_db($database_conexion);
    $query_conf_correo = "SELECT * FROM correos";
    $conf_correo = mysql_query($query_conf_correo) or die(mysql_error());
    $row_conf_correo = mysql_fetch_assoc($conf_correo);
    $totalRows_conf_correo = mysql_num_rows($conf_correo);
    include_once('class.phpmailer.php');
    
    $mail = new PHPMailer();
    
    
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->Host = $row_conf_correo['smtp']; // SMTP a utilizar. Por ej. smtp.elserver.com
    $mail->Username = $row_conf_correo['user']; // Correo completo a utilizar
    $mail->Password = $row_conf_correo['pass']; // Contraseña
    $mail->Port = $row_conf_correo['puerto']; // Puerto a utilizar
    
    
    $mail->From = $origen_mail; // Desde donde enviamos (Para mostrar)
    $mail->FromName = $origen_nombre;
    
    //$mail->AddAttachment('encabezado.swf'); 
    
    $mail->AddAddress($destino); // Esta es la dirección a donde enviamos
    if($copias!=''){
    $mail->AddBCC($copias) ;
    }
    $mail->IsHTML(true); // El correo se envía como HTML
    $mail->Subject = $subject; // Este es el titulo del email.
    $body = $mensaje;
    $mail->Body = $body; // Mensaje a enviar
    $exito = $mail->Send(); // Envía el correo.
    
    
    
    
    if(!$exito){
    $resultado='ERROR';
    
    }else{
    $resultado='OK';
    
    }
    
    return $resultado;
    }
    
    
    //ahora procesamos el formualario.
    
    if(isset($_POST['empresa'])){
    
    
    
    /*----------- INICIO DE CONFIGURACION-----------------*/
    //mail del destinatario (escribirlo entre las comillas)
    $destino=$row_seccion['email'];
    //nombre del que envía el correo (escribirlo entre las comillas)
    $origen_nombre=$_POST['nombre'].' '.$_POST['apellido'];
    //mail del que envía el correo (escribirlo entre las comillas)
    $origen_mail=$row_seccion['email'];
    //título del corrreo (escribirlo entre las comillas)
    $subject='Contacto desde '.$header_sitio;
    //página a la que se va luego de enviar el mail (escribirlo entre las comillas)
    
    /*----------- FIN DE LA CONFIGURACION-----------------*/
    
    $mensaje0="El Señor <b>".$_POST['nombre'].' '.$_POST['Apellido']."</b> completo el formulario de contacto en ".$header_sitio."<br />
    <br />";
    
    foreach($_POST as $k => $v){
    if($k!='Submit' &&  $k!='MM_insert'){
    $mensaje.="<b>".ucfirst($k)."</b>: $v<br />";
    }
    }
    
    
    $salir=envioHTML($destino,$origen_nombre,$destino,$origen_mail,$subject,$mensaje0.$mensaje,'');
    
    
    //ahora evaluamos las posibilidades en caso de envio fallido.. o no.. como veran $salir guarda ERROR u OK... podria ser true o false.. pero lo puse asi para que se entenda mejor.. 
    
    entonces... 
    
    if($salir=='OK'){
    
    header("Location: contacto.php?estado=OK"); //podrian mandar un hash.. md5('OK')
    
    }else{
    header("Location: contacto.php?estado=ERROR");
    }
    
    }
    
    
    //en el html podriamos poner esto.. 
    
    if(!isset($_GET['estado'])){
    
    //mostramos el formulario...
    }elseif(isset($_GET['estado']) && $_GET['estado']=='OK'){
    
    //mostramos mensaje tipo: su mensaje se envio exitosamente, muchas gracias.. y demas.. 
    
    }elseif(isset($_GET['estado']) && $_GET['estado']=='ERROR'){
    
    //mostramos mensaje tipo: Ha ocurrid un error inesperado por favor vuelva a intentarlo.
    }
    
    ?>
    
    
    
    
    de esta forma tendrias el mensaje siempre en el centro de la pantalla.. osea donde staba el formualrio..

    espero haber sido de ayuda.
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta · Sobre Devandhost · Efranet