Foros del Web » Programando para Internet » PHP »

Formulario PHP: Radio buttons, desplegable, envío.

Estas en el tema de Formulario PHP: Radio buttons, desplegable, envío. en el foro de PHP en Foros del Web. Muy buenas a todos. Acabo de terminar una página web y necesito que el envio.php del formulario me funcione y envíe los datos correctamente. Tengo ...
  #1 (permalink)  
Antiguo 20/11/2012, 03:37
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Pregunta Formulario PHP: Radio buttons, desplegable, envío.

Muy buenas a todos. Acabo de terminar una página web y necesito que el envio.php del formulario me funcione y envíe los datos correctamente.

Tengo un par de problemas:
1. En el formulario tengo un radio button
2. Tambien tengo un desplegable con varias opciones.

Me gustaría saber como se procesa esa opción para que sea recibida en el destinatario que en ese caso sería yo! :)

He probado algo con el punto numero 1. del radiobutton, pero aún no poseo mucha lógica sobre esto y creo que lo hice realmente mal.

Os pongo el código de enviar.php:

Código PHP:
<?php
    
//Vamos a crear en primer lugar las variables de nuestro formulario (Todos los NAME del formulario)
    
$quiero $_POST['quiero'];
    
        if (
$quiero == "opcion1"
        {
            
$mensaje "El usuario ha seleccionado que quiere...:".$nombre." \r\n";
        }
        elseif (
$quiero == "opcion2")
        {
            
$mensaje "El usuario ha seleccionado que quiere...:".$nombre." \r\n";
        } 
    
    
$como $_POST['como'];
    
$nombre $_POST['nombre'];
    
$email $_POST['email'];
    
$tumensaje $_POST['tumensaje'];
    
    
    
//A donde llega el correo
    //Esta es mi cuenta de correo
    
$destinatario="[email protected]";
    
//Asunto del envío del formulario
    
$asunto="Nuevo contacto desde la web Ticktockdesigner.com";
    
    
    
//En el bloque de líneas “header”, ‘enviar.php’ creará la información que nos llegará acerca del remitente del formulario.
    
$header "MIME-Version: 1.0\r\n";
    
$header .= "Content-type: text/html; charset=UTF-8\r\n";
    
//From: $mail, esto significa que $mail, como es una variable tomara ahí el e-mail. ingresado en nuestro formulario. (remitente)
    
$header .= "From:" .$email"\r\n";
    
    
    
//Las líneas “mensaje” redactarán el correo que recibamos en el buzón que hemos escrito en la línea ‘para’ y con el ‘asunto’ indicado.
    
$mensaje "Acabas de recibir un correo de:".$nombre." \r\n";
    
$mensaje .= "Su e-mail es: "$mail ." \r\n";
    
$mensaje .= "Y esto es lo que quiere decirte: " $_POST['tumensaje'] . " \r\n";
    
$mensaje .= "Enviado el " date('d/m/Y'time());
    
    
//Hay que enviarlo estrictamente en este orden:
    
mail($destinatario,$asunto,$header,$mensaje);

    
$resultado='<p>Tu mensaje ha sido enviado correctamente. ¡Gracias!</p>';

    echo 
$resultado;

?>
A parte creo que el formulario tampoco debe de estar muy bien.. porque no envía... :( Espero que puedan echarme un cable.

Os envío el código del formulario, por si puediera valer:

Código HTML:
<form id="formulario" method="post" action="php/enviar.php" class="text" onSubmit="return validar(this)">

<ul id="formD">
	<li> <label for="quiero" >Quiero...</label>
 			<label class="anula" >
        <input type="radio" name="quiero" value="opcion1" id="quiero_0" />
       ¡Colaborar contigo!</label>
     	 <label class="anula">
        <input type="radio" name="quiero" value="opcion2" id="quiero_1" />
        ¡Contratarte!</label></li>
    <li class="marginLi"> 
    <label for="como" >¿Cómo me conociste?</label>
   <select name="como" id="como">
     <option>Por un amigo!</option>
     <option>A través de las redes sociales</option>
     <option>Por webs de diseño</option>
     <option>Otros</option>
   </select></li>
   </ul>

<ul id="formI">
	<li>
  		<label for="nombre" >Nombre *</label>
        <!--Requiere de un name para que se pueda acceder por medio de PHP-->
  		<input type="text" name="nombre" id="nombre" class="textfield"/>
    </li>
    <li> 
    	<label for="email">Email *</label>
   		<input type="text" name="email" id="email" class="textfield" />
    </li>
    
       <li class="floatArea"><label for="mensaje">Tu mensaje*</label>
   <textarea name="tumensaje" id="tumensaje" cols="45" rows="2" ></textarea>
       <p class="alinea">Los campos con asterisco (*) son obligatorios!.</p>
   <input type="submit" name="enviar" id="enviar" value="" class="enviar repara"/></li>
</ul>

</form> 
  #2 (permalink)  
Antiguo 20/11/2012, 03:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Pon en la segunda linea de enviar.php

echo "<pre>";
print_r($_POST);
echo "</pre>";


con ello verás que te llega del formulario.

Por ejemplo

<option value="Por un amigo!">Por un amigo!</option>

Te faltan los value de las option del desplegable, puede ser el mismo texto o un codigo (es lo mas normal)

Mira el manual de mail()

Cita:
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
no tienes los parametros en el orden adecuado.

Código PHP:
Ver original
  1. mail($destinatario,$asunto,$header,$mensaje);
  2.  
  3.     $resultado='<p>Tu mensaje ha sido enviado correctamente. ¡Gracias!</p>';
  4.  
  5.     echo $resultado;

La funcion mail() es booleana es decir retorna true si ha tenido exito y false si no lo ha tenido, luego es mucho suponer que siempre da como resultado

Cita:
Tu mensaje ha sido enviado correctamente. ¡Gracias!
Código PHP:
Ver original
  1. if(mail($destinatario,$asunto,$mensaje,$header)){
  2.    $resultado='<p>Tu mensaje ha sido enviado correctamente. ¡Gracias!</p>';
  3. }else{
  4.    $resultado='<p>Tu mensaje NO ha sido enviado correctamente. ¡Intentalo de nuevo!</p>';
  5. }
  6.     echo $resultado;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 20/11/2012, 04:07
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Uff! demasiado rápido o soy muy tonta o muy nerviosa, no se cual de todas. No entiendo muy bien lo que me quieres decir con lo del principio :( muchas gracias por el aporte!
  #4 (permalink)  
Antiguo 20/11/2012, 05:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Mas lento

Cita:
Pon en la segunda linea de enviar.php

echo "<pre>";
print_r($_POST);
echo "</pre>";


con ello verás que te llega del formulario.
Código PHP:
Ver original
  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre>";
  5.     //Vamos a crear en primer lugar las variables de nuestro formulario (Todos los NAME del formulario)
  6.     $quiero = $_POST['quiero'];

con esto aparecera en pantalla el contenido del array $_POST con lo que podràs corregir el formulario para que llegue lo que quieres que llegue. Una vez funcione elimina esas lineas.

Cita:
Por ejemplo

<option value="Por un amigo!">Por un amigo!</option>

Te faltan los value de las option del desplegable, puede ser el mismo texto o un codigo (es lo mas normal)
Una corrección necesaria para el formulario, las options llevan el parametro value y eso es lo que el formulario manda. Lo normal es poner codigos, 1,2,3... que luego deberas traducir a su significado.

Cita:
Mira el manual de mail()
Bajo mail() tienes el link a la pagina del manual http://php.net/manual/es/function.mail.php.

Cita:
no tienes los parametros en el orden adecuado.
en el manual veras el orden de los parametros, tu misma has puesto un comentario en el script al respecto

Cita:
//Hay que enviarlo estrictamente en este orden:
pero el orden que pones y el que dice el manual NO es el mismo.

Código PHP:
Ver original
  1. mail($destinatario,$asunto,$mensaje,$header);
  2.  
  3.     $resultado='<p>Tu mensaje ha sido enviado correctamente. ¡Gracias!</p>';
  4.  
  5.     echo $resultado;

esto, con el orden correcto, va a retornar que el mail se ha enviado correctamente, pase lo que pase al ejecutar mail(), es decir se haya enviado o no el mail, lo que no es correcto... por ello te propongo el condicional.

Código PHP:
Ver original
  1. if(mail($destinatario,$asunto,$mensaje,$header)){
  2.    $resultado='<p>Tu mensaje ha sido enviado correctamente. ¡Gracias!</p>';
  3. }else{
  4.    $resultado='<p>Tu mensaje NO ha sido enviado correctamente. ¡Intentalo de nuevo!</p>';
  5. }
  6.     echo $resultado;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 20/11/2012, 05:25
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Muchas gracias ! voy a probarlo ahora mismo!
  #6 (permalink)  
Antiguo 20/11/2012, 06:12
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Gracias muchas quimfv!
Recibo los siguientes datos:

Array
(
[quiero] => opcion1
[como] => Por webs de diseño
[nombre] => Vero
[email] => [email protected]
[tumensaje] => utf8_decode($mensaje)utf8_decovc
)
Tu mensaje ha sido enviado correctamente. ¡Gracias!

Pero por ejemplo al buzon de correo me llega solo "tumensaje", y pensaba que al recibir los datos no me apareceria. Voy a ver si le veo la logica. Gracias!
  #7 (permalink)  
Antiguo 20/11/2012, 06:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Cita:
[tumensaje] => utf8_decode($mensaje)utf8_decovc
Aqui debería aparecer el contenido del mensaje no entiendo proque te aparece eso....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 20/11/2012, 07:00
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Es que ese era mi mensaje! De la rabia pegué lo que tenia en el portapapeles.. jaja, perdona por la confusión!.
  #9 (permalink)  
Antiguo 20/11/2012, 12:03
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Cita:
Iniciado por quimfv Ver Mensaje
Aqui debería aparecer el contenido del mensaje no entiendo proque te aparece eso....
Mi formulario lleva funcionando practicamente todo el día, y de repente me voy dos horas y cuando regreso y lo relleno me tira el mensaje de "no hay sido enviado".

El archivo está todo correcto, pues no lo he tocado.

¿Algo que se me esté escapando?
¿puede cambiar asi como asi?
¿porque habra dejado de funcionar?


:( No entiendo nada......
  #10 (permalink)  
Antiguo 21/11/2012, 02:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Hay un factor que no controlas, el servidor de correo, que puede fallar de forma coyuntural. Debería ser puntual.

Hay una libreria que podrias estudiar phpmailer que da mas opciones que mail().
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 21/11/2012, 02:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 38
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Formulario PHP: Radio buttons, desplegable, envío.

Cita:
Iniciado por quimfv Ver Mensaje
Hay un factor que no controlas, el servidor de correo, que puede fallar de forma coyuntural. Debería ser puntual.

Hay una libreria que podrias estudiar [URL="http://www.tig12.net/downloads/apidocs/wp/wp-includes/PHPMailer.class.html"]phpmailer[/URL] que da mas opciones que mail().
Gracias quimfv, menuda putada. Desde luego ayer estuve buscando en foros y no pude encontrar un caso parecido... Voy a ver si puedo soluccionarlo, pero vamos, ayer probé en varios servidores ajenos al mío y si funcionaba. Desde luego que me está dando bastantes problemas. Gracias por todo.

Etiquetas: enviardatos, formulario, radiobutton
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 12:05.