Foros del Web » Programando para Internet » PHP »

Formulario PHP

Estas en el tema de Formulario PHP en el foro de PHP en Foros del Web. Buenos días, Tengo un formulario básico en PHP y necesito mostrar un mensaje de confirmación ("el mensaje se ha enviado con éxito") que aparezca en ...
  #1 (permalink)  
Antiguo 25/11/2013, 06:06
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Formulario PHP

Buenos días,

Tengo un formulario básico en PHP y necesito mostrar un mensaje de confirmación ("el mensaje se ha enviado con éxito") que aparezca en la misma página del formulario.

Los documentos HTML y PHP son independientes (no hay código PHP incrustado en el HTML).

HTML

<?php include("contacto.php"); ?>
<form class="contact_form" action="contacto.php" method="post" >


<ul>
<li>
<label for="name">Nombre:</label>
<input name="nombre" type="text" required id="nombre" placeholder="Juan Tovar" /><br/>
</li>
<li>
<label for="email">Email:</label>
<input type="email" name="email" placeholder="[email protected]" required />
</li>
<li>
<label for="asunto">Asunto:</label>
<input type="text" name="asunto" placeholder="Asunto" required />
</li>
<li>
<label for="asunto">Delegaci&oacute;n:</label>
<select name="delegacion">
<option>-- Seleccionar --</option>
<option>Madrid</option>
<option>Sevilla</option>
</select>
</li>
<li>
<label for="mensaje">Mensaje:</label>
<textarea name="mensaje" cols="40" rows="6" required id="Mensaje" ></textarea>
</li>
<li>
<button class="submit" type="submit" >Enviar</button>
</li>
</ul>
</form>


PHP

<?php

//Importamos las variables del formulario de contacto
ini_set("SMTP","mrnet.kundenserver.de");

@$nombre = addslashes($_POST['nombre']);
@$email = addslashes($_POST['email']);
@$asunto = addslashes($_POST['asunto']);
@$delegacion = addslashes($_POST['delegacion']);
@$mensaje = addslashes($_POST['mensaje']);

//Preparamos el mensaje de contacto
$cabeceras = "From: $email\n" //La persona que envia el correo
. "Reply-To: $emailContacto\n";
$asunto = "Mensaje desde la pagina Web"; //asunto aparecera en la bandeja del servidor de correo
$email_to = "[email protected]"; //cambiar por tu email
$contenido = "$nombreEmpresa ha enviado un mensaje desde la web www.xxx.com solicitando información\n"
. "\n"
. "Nombre: $nombre\n"
. "Email: $email\n"
. "Asunto: $asunto\n"
."Delegación: $delegacion\n"
. "Mensaje: $mensaje\n"
. "\n";
//Enviamos el mensaje y comprobamos el resultado
if (@mail($email_to, $asunto ,utf8_decode($contenido) ,$cabeceras )) {

//Si el mensaje se envía muestra una confirmación
echo '<div style="width:70%; height:100px; margin:0 auto; text-align:center; background-color:#7ED77C; border:1px solid #063;"><div style="color:#055203; margin-top: 30px; font-size:20px; font-family:Roboto;">Su mensaje ha sido enviado satisfactoriamente.<br/><a href="xxx.html">Volver</a></div></div>';

}else{
//Si el mensaje no se envía muestra el mensaje de error
echo 'No enviado';
}
?>

Espero vuestros consejos. Gracias.
  #2 (permalink)  
Antiguo 25/11/2013, 07:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario PHP

En el action pon el propio formulario "formulario.php", luego modifica el "contacto.php" para que muestre el formulario si no ha recibe nada o muestre el mensaje si ha recibido el forumulario.... o ambas cosas.


Los @ que pones delante de las variable puede que te oculten mensajes de error, lo que puede que te interese en tiempo de producción, pero es poco practico en tiempo de programación.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/11/2013, 08:09
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Formulario PHP

Cita:
Iniciado por quimfv Ver Mensaje
En el action pon el propio formulario "formulario.php", luego modifica el "contacto.php" para que muestre el formulario si no ha recibe nada o muestre el mensaje si ha recibido el forumulario.... o ambas cosas.


Los @ que pones delante de las variable puede que te oculten mensajes de error, lo que puede que te interese en tiempo de producción, pero es poco practico en tiempo de programación.

Quimfv gracias por responder.

Lo siento pero no te entendí..... quieres decir que incluya un archivo (que contiene el código html del formulario) que se llame formulario.php y lo mencione en el action, luego modifico el contacto.php y muestro un mensaje u otro no?

Pero ese paso me lo ahorro tal y como lo tengo ahora, el mensaje se mostraría en otra ventana diferente si lo hago como tu me dices?

Gracias doblemente por la recomendación de los @ y de la respuesta.
  #4 (permalink)  
Antiguo 26/11/2013, 01:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario PHP

"formulario.php" por que no se como estas llamando al fichero donde tienes el formulario.

Código PHP:
Ver original
  1. <?php include("contacto.php"); ?>
  2. <form class="contact_form" action="contacto.php" method="post" >
  3. ....

Código PHP:
Ver original
  1. <?php include("contacto.php"); ?>
  2. <form class="contact_form" action="formulario.php" method="post" >
  3. ....

Ya estas cargando los dos ficheros luego el formulario debe llamarse a si mismo.... y contacto, incluido en el anterior, ara lo que le digas....mostrar el formulario si no ha recibido nada o mostrar el mensaje si ha recibido el forumulario.... o ambas cosas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 26/11/2013, 04:16
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Formulario PHP

Cita:
Iniciado por quimfv Ver Mensaje
"formulario.php" por que no se como estas llamando al fichero donde tienes el formulario.

Código PHP:
Ver original
  1. <?php include("contacto.php"); ?>
  2. <form class="contact_form" action="contacto.php" method="post" >
  3. ....

Código PHP:
Ver original
  1. <?php include("contacto.php"); ?>
  2. <form class="contact_form" action="formulario.php" method="post" >
  3. ....

Ya estas cargando los dos ficheros luego el formulario debe llamarse a si mismo.... y contacto, incluido en el anterior, ara lo que le digas....mostrar el formulario si no ha recibido nada o mostrar el mensaje si ha recibido el forumulario.... o ambas cosas.

Perdona mi ignorancia y es por eso que sigo sin entenderte....

contactar.html -> página html donde está el formulario.
contacto.php -> procesa todo lo recibido del formulario html

Sería más sencillo si en el código php hago un "return true" o "return false" y recupero la variable en el HTML y ahí muestro un mensaje? Creo que serviría para lo que quiero, como se puede recuperar variables desde html?

Gracias de nuevo.
  #6 (permalink)  
Antiguo 26/11/2013, 05:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Formulario PHP

No puede ser contactar.html por que tiene codigo php, debe ser contactar.php

Cita:
HTML

<?php include("contacto.php"); ?> /// <----- Aqui el codigo php
<form class="contact_form" action="contacto.php" method="post" >


<ul>
<li>
<label for="name">Nombre:</label>
....
Luego

Código PHP:
Ver original
  1. <?php include("contacto.php"); ?>
  2. <form class="contact_form" action="contactar.php" method="post" >
  3. ....

Cuando mandas un formulario por post o por get estas mandano los datos del formulario, es lo que estas leyendo cuando haces

Código PHP:
Ver original
  1. $nombre = addslashes($_POST['nombre']);
  2. $email = addslashes($_POST['email']);
  3. $asunto = addslashes($_POST['asunto']);
  4. $delegacion = addslashes($_POST['delegacion']);
  5. $mensaje = addslashes($_POST['mensaje']);

En contacto.php.

Pero eres tu que has puesto el include contacto.php en contactar.php.


Cita:
HTML

<?php include("contacto.php"); ?>
<form class="contact_form" action="contacto.php" method="post" >


<ul>
<li>
<label for="name">Nombre:</label>

....
Luego debes mandar el formulario a "contactar.php" para que lo trate "contacto.php" que es una parte del primero.

Una vez tratados los datos del formulario, "contacto.php" debe mostrar el formulario si no ha recibido nada, la primera vez que se carga "contactar.php", o mostrar el mensaje si ha recibido el forumulario.... o ambas cosas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 26/11/2013 a las 05:28
  #7 (permalink)  
Antiguo 10/12/2013, 03:43
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Formulario PHP

Buenos días,

Perdón por no contestar antes pero no he podido....

He quitado el include de la página contactar.html tal que así:

<form class="contact_form" action="contacto.php" method="post" id="formulario">


<ul>
<li>
<label for="name">Nombre:</label>
<input name="nombre" type="text" required id="nombre" placeholder="Juan Tovar" /><br/>
</li>
<li>
<label for="email">Email:</label>
<input type="email" name="email" placeholder="[email protected]" required />
</li>
<li>
<label for="asunto">Asunto:</label>
<input type="text" name="asunto" placeholder="Asunto" required />
</li>
<li>
<label for="asunto">Delegaci&oacute;n:</label>
<select name="delegacion">
<option>-- Seleccionar --</option>
<option>Madrid</option>
<option>Sevilla</option>
</select>
</li>
<li>
<label for="mensaje">Mensaje:</label>
<textarea name="mensaje" cols="40" rows="6" required id="Mensaje" ></textarea>
</li>
<li>
<button class="submit" type="submit" >Enviar</button>
</li>
</ul>


</form>

El formulario sólo lo trata contacto.php que realiza bien sus funciones ya que me llegan los correos, pero mi duda es como puedo mostrar echo 'Mensaje enviado correctamente' en la página contactar.html.


echo("<script> location.href='contactar.html';
</script>");

Esto me redirige a contactar.html pero no se muestra ningún mensaje. Debo añadir una función en javascript?

Sigo sin entenderte...

Etiquetas: formulario, html, select, variable
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 15:59.