Foros del Web » Programando para Internet » PHP »

Formulario de contacto con select

Estas en el tema de Formulario de contacto con select en el foro de PHP en Foros del Web. Hola necesito añadir un campo de select para que los usuarios seleccionen el motivo del contacto afiliacion etc, tengo este formulario: Contacto.html Código PHP: < ...
  #1 (permalink)  
Antiguo 17/08/2009, 13:14
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Formulario de contacto con select

Hola necesito añadir un campo de select para que los usuarios seleccionen el motivo del contacto afiliacion etc, tengo este formulario:

Contacto.html
Código PHP:
<form id="form1" name="form1" method="post" action="enviar.php">
<
p>Nombre:<br />
<
label>
<
input name="nombre" type="text" id="nombre" />
</
label>
<
br />
Telefono:<br />
<
input name="telefono" type="text" id="telefono" />
<
br />
Email:<br />
<
input name="email" type="text" id="email" />
<
br />
Mensaje:<br />
<
textarea name="mensaje" id="mensaje"></textarea>
<
br />
<
label>
<
input type="submit" name="Submit" value="Enviar Formulario" />
</
label>
</
p>
</
form

enviar.php

Código PHP:
<?php

$mail
='[email protected]';


$nombre $_POST['nombre'];
$telefono $_POST['telefono'];
$email $_POST['email'];
$mensaje $_POST['mensaje'];

$thank="gracias.html";

$message "
nombre:"
.$nombre."
telefono:"
.$telefono."
email:"
.$email."
mensaje:"
.$mensaje."";

if (
mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank" );

?>
Necesito que cuando me envien eso por email me muestre elmotivo del contacto pero no se como hacerlo
  #2 (permalink)  
Antiguo 17/08/2009, 13:46
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Formulario de contacto con select

:/ digo es solo cosa de poner el select y ya, supongo estas recien comenzando con esto de la programacion asi que te dejo codigo...

en el formulario agregas despues de email por ejemplo
Código php:
Ver original
  1. Email:<br />
  2. <input name="email" type="text" id="email" />
  3. <br />
  4. Motivo
  5. <select name="motivo">
  6. <option value="" selected>seleccione un motivo</option>
  7. <option value="1" >Motivo 1</option>
  8. <option value="2" >Motivo 2</option>
  9. <option value="3" >Motivo 3</option>
  10. <option value="4" >Motivo 4</option>
  11. </select>

y en el php que envias pones por ejemplo....

Código php:
Ver original
  1. if ($_POST[motivo] == "") {$motivo = "No Disponible";}
  2. if ($_POST[motivo] == "1") {$motivo = "Motivo 1";}
  3. if ($_POST[motivo] == "2") {$motivo = "Motivo 2";}
  4. if ($_POST[motivo] == "3") {$motivo = "Motivo 3";}
  5. if ($_POST[motivo] == "4") {$motivo = "Motivo 4";}
  6.  
  7. /*y en e mensaje agergas*/
  8.  
  9. $message = "
  10. nombre:".$nombre."
  11. telefono:".$telefono."
  12. email:".$email."
  13. mensaje:".$mensaje."";
  14. motivo : "$motivo";

es solo codigo para que veas, se puede arreglar mas pero por motivos practicos lo expuse asi, saludos....
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 18/08/2009, 03:09
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Formulario de contacto con select

Vale muchas gracias, ya esta, pero cuando recibo el email dice:

Cita:
From:World Wide Web Owner (info@oran**.com)
Desde donde canvio eso? Pone el email del host y el titulo no se que es :S


Edito:

Cuando le doy ea enviar se queda en blanco :S esta bien?:


Cita:
<form id="form1" name="form1" method="post" action="enviar.php">
<p>Nombre:<br />
<label>
<input name="nombre" type="text" id="nombre" />
</label>
<br />
Edad:<br />
<input name="telefono" type="text" id="telefono" />
<br />
Email:<br />
<input name="email" type="text" id="email" />
<br />
Motivo<br/>
<select name="motivo">
<option value="" selected>Seleccione un motivo</option>
<option value="1" >Ayuda y Soporte</option>
<option value="2" >Afiliacion</option>
<option value="3" >Ser Staff</option>
<option value="4" >Sugerencia</option>
<option value="5" >Otro</option>
</select>
<br/>
Mensaje:<br />
<textarea name="mensaje" id="mensaje"></textarea>
<br />
<label>
<input type="submit" name="Submit" value="Enviar Formulario" />
</label>
</p>
</form>


Cita:
<?php

$mail='[email protected]';


$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

$thank="gracias.html";

$message = "
nombre:".$nombre."
telefono:".$telefono."
email:".$email."
mensaje:".$mensaje."";

if ($_POST[motivo] == "") {$motivo = "No Disponible";}
if ($_POST[motivo] == "1") {$motivo = "Ayuda y Soporte";}
if ($_POST[motivo] == "2") {$motivo = "Afiliacion";}
if ($_POST[motivo] == "3") {$motivo = "Ser Staff";}
if ($_POST[motivo] == "4") {$motivo = "Sugerencia";}
if ($_POST[motivo] == "5") {$motivo = "Otro";}
/*y en e mensaje agergas*/


$message = "

nombre:".$nombre."
telefono:".$telefono."
email:".$email."
mensaje:".$mensaje."";
motivo : "$motivo";

if (mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank" );

?>

Última edición por SeaPirates; 18/08/2009 a las 03:24
  #4 (permalink)  
Antiguo 18/08/2009, 06:20
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
Respuesta: Formulario de contacto con select

eso es por usar mail(), si quiere modificar completamente tu mail te recomiendo que uses una class con la phpmailer.

yo la uso y es muy buena nunca me ha fallado, la utilizo por medio de una funcion.

Cuando tomes los datos
Código PHP:
#inicias el objeto
$mail = new phpmailer();

$destinatario $email;
#Tipo de contenido en el Email
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"
#dirección del remitente 
$headers .= "From: Tu Nombre <[email protected]>\r\n"
#dirección de respuesta, si queremos que sea distinta que la del remitente 
$headers .= "Reply-To: [email protected]\r\n";

#enviamos el email
echo envia($destinatario,$asunto,$cuerpo,$headers); 
----
Funcion envia();
-----
Código PHP:
function envia($destinatario,$asunto,$cuerpo,$headers){
global 
$mail;

  
//Definimos las propiedades y llamamos a los métodos 
  //correspondientes del objeto mail
  
$mail->IsSMTP ();
  
//Con la propiedad Mailer le indicamos que vamos a usar un 
  //servidor smtp
  
$mail->Mailer    "smtp";

  
// Esta variable es para que llegue a hotmail
  
$mail->Helo "www.tuweb.tld";

  
//Puerto que usaremos
  
$mail->Port=25;
  
  
//Asignamos a Host el nombre de nuestro servidor smtp
  
$mail->Host "localhost"

  
//Le indicamos que el servidor smtp requiere autenticación
  
$mail->SMTPAuth true;

  
//Le decimos cual es nuestro nombre de usuario y password
  
$mail->Username "[email protected]"
  
$mail->Password "tu_contraseña"

  
//Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  
$mail->From "[email protected]"
  
$mail->FromName "Tu Nombre"

  
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  
$mail->Timeout=30;

  
//Indicamos cual es la dirección de destino del correo
  
$mail->ClearAllRecipients();
  
$mail->AddAddress($destinatario);
  
$mail->AddCC("[email protected]"); 

  
//Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  
  //hacemos unos cambios para ver que onda
  
$cuerpo stripslashes ($cuerpo);
  
$cuerpo_text str_replace ('</p>''

'
$cuerpo);
  
$cuerpo_text str_replace ('<br>''
'
$cuerpo_text);
  
$cuerpo_text strip_tags ($cuerpo_text);
  
  
$mail->Subject $asunto;
  
  
$mail->Body $cuerpo;

  
//Definimos AltBody por si el destinatario del correo no admite email con formato html 
  
$mail->AltBody $cuerpo_text;

  
//se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true
  
$exito $mail->Send();

  
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho 
  //para intentar enviar el mensaje, cada intento se hara 5 segundos despues 
  //del anterior, para ello se usa la funcion sleep    
  
$intentos=1
  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
//echo $mail->ErrorInfo;
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }
 

Recuerda que estos campos debes llenarlos para hacer la conexion SMTP.

$mail->Host = "localhost";
$mail->Username = "[email protected]";
$mail->Password = "tu_contraseña";
  #5 (permalink)  
Antiguo 18/08/2009, 08:47
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Formulario de contacto con select

Lo siento no entiendo demasiado, el formulario seria el mismo que estoy usando?
  #6 (permalink)  
Antiguo 18/08/2009, 10:05
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Formulario de contacto con select

From:World Wide Web Owner (info@oran**.com)
eso es lo que llega por que asi esta definido el smtp de tu servidor, y para que llegue lo que tu desees solo debes modificar la cabecera
te dejo como quedaria tu codigo con headers, ya que php mailer es un clase, y pues a mi gusto mail(); como funcion bien hecha es lo mismo....

Código php:
Ver original
  1. <?php
  2. /*Defines tus variables*/
  3. $nombre = $_POST['nombre'];
  4. $telefono = $_POST['telefono'];
  5. $email = $_POST['email'];
  6. $mensaje = $_POST['mensaje'];
  7. $thank="gracias.html";
  8. /* vemos el motivo */
  9. if ($_POST[motivo] == "") {$motivo = "No Disponible";}
  10. if ($_POST[motivo] == "1") {$motivo = "Ayuda y Soporte";}
  11. if ($_POST[motivo] == "2") {$motivo = "Afiliacion";}
  12. if ($_POST[motivo] == "3") {$motivo = "Ser Staff";}
  13. if ($_POST[motivo] == "4") {$motivo = "Sugerencia";}
  14. if ($_POST[motivo] == "5") {$motivo = "Otro";}
  15. /* definimos las cabeceras */
  16. $hdr="MIME-Version: 1.0\n";
  17. $hdr.="Content-type: text/html; charset=iso-8859-1\n";
  18. $hdr.="Content-Transfer-Encoding: 8bit\n";
  19. $hdr.="X-Priority: 1\n";
  20. $hdr.="X-MSMail-Priority: High\n";
  21. $hdr.="From: \"Mensaje enviado de TUWEB\" <$mail>\n";
  22.  
  23. /*
  24. enviamos el correo como html
  25. y en mensaje ocupamos la funcion nl2br para los saltos de linea que pudiera haber....
  26. si no sabes como funciona ver funcion en php.net
  27. */
  28. $cuerpo.="<html>\n<body>\n";
  29. $cuerpo .= "<font size=\"2\" face=\"Verdana, Arial\"><b><u>Nombre</u></b> : $nombre<br />";
  30. $cuerpo .= "<b><u>Tel&eacute;fono</u></b> : " . $telefono . "<br />";
  31. $cuerpo .= "<b><u>Email</u></b> : " . $email . "<br />";
  32. $cuerpo .= "<b><u>Motivo</u></b> : " . $motivo . "<br />";
  33. $cuerpo .= "<b><u>Mensaje</u></b> : " . nl2br($mensaje) . "<br /></font>";
  34. $cuerpo.="</body>\n</html>\n";
  35.  
  36. mail("$mail"," aqui lo que llega como asunto", $cuerpo, $hdr);
  37. header ("Location: $thank" );

espero te sirva saludos....
__________________
Gokuh Salvo al mundo. PUNTO!!!!

Última edición por kaninox; 18/08/2009 a las 10:10
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 23:43.