Foros del Web » Programando para Internet » PHP »

Formulario de contacto: cambiar pestaña por mensaje en el formulario

Estas en el tema de Formulario de contacto: cambiar pestaña por mensaje en el formulario en el foro de PHP en Foros del Web. Buenas, Vuelvo por aquí con un nuevo problemita que debido a mis escasos conocimientos no soy capaz de resolverlo por mi mismo. Tengo una web ...
  #1 (permalink)  
Antiguo 14/05/2014, 06:35
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Formulario de contacto: cambiar pestaña por mensaje en el formulario

Buenas,

Vuelvo por aquí con un nuevo problemita que debido a mis escasos conocimientos no soy capaz de resolverlo por mi mismo. Tengo una web terminada, y ahora me han pedido un cambio en el formulario que no sé hacerlo.

Me han pedido cambiar la forma de enviar el mensaje desde el formulario. Quiero que sea un mensaje dentro del propio formulario y no otra página como me sale ahora mismo.

Os dejo los códigos que estoy usando.

Formulario:
Código:
<div class="featured_form">
	      <!-- form -->
	      <form name="frmContacto" method="post" action="sendbymail.php">
	        <table width="500px">
	          <tr>
	            <td><label for="first_name">Nombre: *</label></td>
	            <td><input type="text" name="first_name" maxlength="50" size="25" /></td>
              </tr>
	          <tr>
	            <td valign="top""><label for="last_name">Apellido: *</label></td>
	            <td><input type="text" name="last_name" maxlength="50" size="25" /></td>
              </tr>
	          <tr>
	            <td><label for="email">E-mail: *</label></td>
	            <td><input type="text" name="email" maxlength="80" size="35" /></td>
              </tr>
	          <tr>
	            <td><label for="telephone">Teléfono:</label></td>
	            <td><input type="text" name="telephone" maxlength="25" size="15" /></td>
              </tr>
	          <tr>
	            <td><label for="comments">Mensaje: *</label></td>
	            <td><textarea name="comments" maxlength="500" cols="30" rows="5"></textarea></td>
              </tr>
	          <tr>
	            <td colspan="2" style="text-align:center"><input type="submit" class="action_button1" value="Enviar" /></td>
              </tr>
            </table>
          </form>
	      <!--/form -->
Y aquí el archivo .php para que envie:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>deFincasAdministradres.com - Contacto</title>
</head>

<body>
<?php
if(isset($_POST['email'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = "[email protected]";
$email_subject = "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo "Por favor, vuelva atrás y verifique la información ingresada, gracias.<br />";
die();
}

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $_POST['first_name'] . "\n";
$email_message .= "Apellido: " . $_POST['last_name'] . "\n";
$email_message .= "E-mail: " . $_POST['email'] . "\n";
$email_message .= "Teléfono: " . $_POST['telephone'] . "\n";
$email_message .= "Comentarios: " . $_POST['comments'] . "\n\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

echo "Gracias por ponerse en contacto con nosotros, le responderemos con la mayor brevedad posible.";
}
?>
</body>
</html>
Muchas gracias.
Un saludo.
  #2 (permalink)  
Antiguo 14/05/2014, 06:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Una pista

<form name="frmContacto" method="post" action="<--- aqui pones el nombre del archivo que contiene el formulario --->">

es decir mandas el formulario al mismo archivo, antes de mostrar nada debe ver si se esta recibiendo el contenido del formulario. Si no recibes nada muestras el formulario, si recibes el formulario muestras la respuesta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/05/2014, 04:13
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Cita:
Iniciado por quimfv Ver Mensaje
Una pista

<form name="frmContacto" method="post" action="<--- aqui pones el nombre del archivo que contiene el formulario --->">

es decir mandas el formulario al mismo archivo, antes de mostrar nada debe ver si se esta recibiendo el contenido del formulario. Si no recibes nada muestras el formulario, si recibes el formulario muestras la respuesta.
Buenas, acabo de poner ese código dentro del formulario enlazando con mi sendbyemail.php pero sigue redireccinando a dicho archivo.
  #4 (permalink)  
Antiguo 15/05/2014, 04:17
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Es decir yo cuando le doy a enviar y se hace corrctamente, la página se me redirecciona a mi archivo php con el formulario apareciendo un mensaje que puse.

Lo que busco es que al darle enviar, debajo del boton enviar ponga: Muchas gracias, el formulario se ha enviado correctamente.

Gracias, un saludo!
  #5 (permalink)  
Antiguo 15/05/2014, 04:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Si ya lo habia enetendido así.
Cita:
es decir mandas el formulario al mismo archivo, antes de mostrar nada debe ver si se esta recibiendo el contenido del formulario. Si no recibes nada muestras el formulario, si recibes el formulario muestras la respuesta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 15/05/2014, 05:32
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Cita:
Iniciado por quimfv Ver Mensaje
Si ya lo habia enetendido así.
Lo siento pero no he entendido lo que habias puesto en el otro post muy bien...
He añadido la línea de código que me has mandado pero sigue redireccionando al otro archivo y no se queda en el index.

Gracias por tu paciencia.
  #7 (permalink)  
Antiguo 15/05/2014, 05:43
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Ahhhhhhhh, vale vale vale. Ahora funciona.
He cambiado lo que me dijiste y se queda en el index.html.

Ahora habría alguna forma de que aparezca algún mensaje debajo del formulario? Porque puede inducir a error y los usuarios pueden mandar un sinfin de formularios.
  #8 (permalink)  
Antiguo 15/05/2014, 05:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Si tienes que leer lo que llega por POST validarlo y mostrar la respuesta donde quieras. Es largo, que es lo que no sabes hacer.

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['email'])) {
  3.  
  4. // Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
  5. $email_to = "[email protected]";
  6. $email_subject = "Contacto desde el sitio web";
  7.  
  8. // Aquí se deberían validar los datos ingresados por el usuario
  9. if(!isset($_POST['first_name']) ||
  10. !isset($_POST['last_name']) ||
  11. !isset($_POST['email']) ||
  12. !isset($_POST['telephone']) ||
  13. !isset($_POST['comments'])) {
  14.  
  15. echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
  16. echo "Por favor, vuelva atrás y verifique la información ingresada, gracias.<br />";
  17. die();
  18. }
  19.  
  20. $email_message = "Detalles del formulario de contacto:\n\n";
  21. $email_message .= "Nombre: " . $_POST['first_name'] . "\n";
  22. $email_message .= "Apellido: " . $_POST['last_name'] . "\n";
  23. $email_message .= "E-mail: " . $_POST['email'] . "\n";
  24. $email_message .= "Teléfono: " . $_POST['telephone'] . "\n";
  25. $email_message .= "Comentarios: " . $_POST['comments'] . "\n\n";
  26.  
  27.  
  28. // Ahora se envía el e-mail usando la función mail() de PHP
  29. $headers = 'From: '.$email_from."\r\n".
  30. 'Reply-To: '.$email_from."\r\n" .
  31. 'X-Mailer: PHP/' . phpversion();
  32. @mail($email_to, $email_subject, $email_message, $headers);
  33.  
  34. echo "Gracias por ponerse en contacto con nosotros, le responderemos con la mayor brevedad posible.";
  35. }else{
  36.  
  37. //Aqui el formulario
  38.  
  39. }
  40. ?>

Esto lo debes tener al principio de index que deberá ser .php no .html.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 15/05/2014, 06:18
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Cita:
Iniciado por quimfv Ver Mensaje
Si tienes que leer lo que llega por POST validarlo y mostrar la respuesta donde quieras. Es largo, que es lo que no sabes hacer.

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['email'])) {
  3.  
  4. // Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
  5. $email_to = "[email protected]";
  6. $email_subject = "Contacto desde el sitio web";
  7.  
  8. // Aquí se deberían validar los datos ingresados por el usuario
  9. if(!isset($_POST['first_name']) ||
  10. !isset($_POST['last_name']) ||
  11. !isset($_POST['email']) ||
  12. !isset($_POST['telephone']) ||
  13. !isset($_POST['comments'])) {
  14.  
  15. echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
  16. echo "Por favor, vuelva atrás y verifique la información ingresada, gracias.<br />";
  17. die();
  18. }
  19.  
  20. $email_message = "Detalles del formulario de contacto:\n\n";
  21. $email_message .= "Nombre: " . $_POST['first_name'] . "\n";
  22. $email_message .= "Apellido: " . $_POST['last_name'] . "\n";
  23. $email_message .= "E-mail: " . $_POST['email'] . "\n";
  24. $email_message .= "Teléfono: " . $_POST['telephone'] . "\n";
  25. $email_message .= "Comentarios: " . $_POST['comments'] . "\n\n";
  26.  
  27.  
  28. // Ahora se envía el e-mail usando la función mail() de PHP
  29. $headers = 'From: '.$email_from."\r\n".
  30. 'Reply-To: '.$email_from."\r\n" .
  31. 'X-Mailer: PHP/' . phpversion();
  32. @mail($email_to, $email_subject, $email_message, $headers);
  33.  
  34. echo "Gracias por ponerse en contacto con nosotros, le responderemos con la mayor brevedad posible.";
  35. }else{
  36.  
  37. //Aqui el formulario
  38.  
  39. }
  40. ?>

Esto lo debes tener al principio de index que deberá ser .php no .html.
Acabo de poner el index con la extensión .php e introducido ese código al principio y la página se queda totalmente en blanco. ¿Qué he hecho mal?
  #10 (permalink)  
Antiguo 15/05/2014, 06:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

A ver, no se trata de copiar/pegar lee lo que te estoy sugeriendo entiendelo y adaptalo a lo que tienes. Si no lo entiendes pregunta.
Cita:
Es largo, que es lo que no sabes hacer.
La estructura de index.php debe ser la siguiente, en lo que hace referencia al formulario


Condicional compruebo si recibo un formulario
-----Si lo recibo (primera opción del condicional)
-----------Valido
-----------Muestro respuesta
-----Si NO lo recibo (segunda opción del condicional)
-----------Muestro el formulario


De manera que la primera vez que entro en la pagina como NO recibo el formulario, simplemente se va a mostrar el formulario (segunda opción del condicial). Cuando se mande el formulario a la misma pagina, voy a recibir un formulario y hare la primera parte del condicional.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 15/05/2014 a las 06:31
  #11 (permalink)  
Antiguo 16/05/2014, 08:43
Avatar de vistor92  
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 20
Antigüedad: 12 años
Puntos: 0
Respuesta: Formulario de contacto: cambiar pestaña por mensaje en el formulario

Cita:
Iniciado por quimfv Ver Mensaje
A ver, no se trata de copiar/pegar lee lo que te estoy sugeriendo entiendelo y adaptalo a lo que tienes. Si no lo entiendes pregunta.
La estructura de index.php debe ser la siguiente, en lo que hace referencia al formulario


Condicional compruebo si recibo un formulario
-----Si lo recibo (primera opción del condicional)
-----------Valido
-----------Muestro respuesta
-----Si NO lo recibo (segunda opción del condicional)
-----------Muestro el formulario


De manera que la primera vez que entro en la pagina como NO recibo el formulario, simplemente se va a mostrar el formulario (segunda opción del condicial). Cuando se mande el formulario a la misma pagina, voy a recibir un formulario y hare la primera parte del condicional.
Madre mía, pues si que se me escapa bastante de las manos. Al final opté por redirigir a una página "clon" del index con un mensaje y listo. Más adecuado para mis conocimientos.

Muchas gracias por tu ayuda, de verdad.
Un saludo.

Etiquetas: contacto, formulario, mensaje, pestaña
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 19:48.