Foros del Web » Programando para Internet » PHP »

Recibir checkbox en correo

Estas en el tema de Recibir checkbox en correo en el foro de PHP en Foros del Web. Llevo dos días buscando tutoriales sobre el tema de los checkboxes y como recibirlos en el correo que crea el php, pero soy incapaz de ...
  #1 (permalink)  
Antiguo 22/02/2012, 21:20
Avatar de Beatzoo  
Fecha de Ingreso: septiembre-2009
Ubicación: Retire Hill
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Recibir checkbox en correo

Llevo dos días buscando tutoriales sobre el tema de los checkboxes y como recibirlos en el correo que crea el php, pero soy incapaz de conseguirlo. Solo sé lo básico de lo básico de php, ayer casi me flateo intentando dar con la solución, aprendí cosillas, pero no di con ella.

Este es el formulario HTML ($_POST):

Código HTML:
Ver original
  1. <tr>
  2.         <td id="intdata" width="545"><input type="checkbox" name="checkbox" id="op_graf" value="op_graf" />
  3.          
  4.           Artes gráficas, folletos, tarjetas, trípticos, stickers<br />
  5.           <input type="checkbox" name="interes[]" id="op_textil" value="op_textil" />
  6.          
  7.           Impresión textil<br />
  8.           <input type="checkbox" name="interes[]" id="op_ext" value="op_textil" />
  9.      
  10.           Diseño exterior, carteles, rótulos<br />
  11.           <input type="checkbox" name="interes[]" id="op_packng" value="op_packng" />
  12.        
  13.           Packaging, impresión en objetos<br />
  14.           <input type="checkbox" name="interes[]" id="op_intweb" value="op_intweb" />
  15.          
  16.           Diseño integral de sitio web<br />
  17.           <input type="checkbox" name="interes[]" id="op_remweb" value="op_remweb" />
  18.        
  19.           Remodelación de sitio web<br />
  20.           <input type="checkbox" name="interes[]" id="op_logo" value="op_logo" />
  21.          
  22.           Diseño de logotipo, imagen corporativa<br />
  23.           <input type="checkbox" name="interes[]" id="op_cata" value="op_cata" />
  24.        
  25.           Catálogo online<br />
  26.           <input type="checkbox" name="interes[]" id="op_ases" value="op_ases" />
  27.      
  28.           Asesoramiento </td>
  29.       </tr>

Y este es el php enlazado al HTML:

Código PHP:
Ver original
  1. <?php
  2. //proceso del formulario
  3. // si existe "enviar"...
  4. if (isset ($_POST['enviar'])) {
  5.  
  6. //recogemos las variables
  7. $nombre=$_POST['nombre'];
  8. $email=$_POST['email'];
  9. $poblacion=$_POST['poblacion'];
  10. $provincia=$_POST['provincia'];
  11. $telefono=$_POST['telefono'];
  12. $fax=$_POST['fax'];
  13. $empresa=$_POST['empresa'];
  14. $urlempresa=$_POST['urlempresa'];
  15. $consulta=$_POST['consulta'];
  16.  
  17.  
  18.  
  19.  
  20. //comprobamos si todos los campos fueron completados
  21. if ($nombre!='' && $email!=''  && $telefono!='' && $consulta!='') {
  22. // si es asi armamos el html
  23. $contenido = '<html><body>';
  24. $contenido .= '<h2>Consulta de presupuesto</h2>';
  25. $contenido .= '<p>Enviado el '.  date("d M Y").'</p>';
  26. $contenido .= '<hr />';
  27. $contenido .= '<p>Nombre: <strong>'.$nombre.'</strong>';
  28. $contenido .= '<p>Email: <strong>'.$email.'</strong>';
  29. $contenido .= '<p>Poblacion: <strong>'.$poblacion.'</strong>';
  30. $contenido .= '<p>Provincia: <strong>'.$provincia.'</strong>';
  31. $contenido .= '<p>Telefono: <strong>'.$telefono.'</strong>';
  32. $contenido .= '<p>Fax: <strong>'.$fax.'</strong>';
  33. $contenido .= '<p>Empresa: <strong>'.$empresa.'</strong>';
  34. $contenido .= '<p>URL de Empresa: <strong>'.$urlempresa.'</strong>';
  35. $contenido .= '<hr />';
  36. $contenido .= 'Comentario:<p>'.$consulta.'';
  37. $contenido .= '<hr />';
  38. $contenido .= '<p>Empresa: <strong>'.$interes.'</strong>';
  39. $contenido .= '</body></html>';
  40.  
  41.  
  42.  
  43. // si todos los campos fueron completados enviamos el mail
  44. mail ("[email protected]", "Consulta de presupuesto", $contenido, "From: $email\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit");
  45. $flag='ok';
  46. $mensaje='Mensaje enviado. Le responderemos lo antes posible.';
  47.  
  48. } else {
  49. //si no todos los campos fueron completados se frena el envio y avisamos al usuario
  50. $flag='err';
  51. $mensaje='Los campos con asterisco son obligatorios.';
  52. }
  53. }
  54. ?>

¿Cómo sería el código que tengo que poner para recibir los valores marcados en los checkboxes? En caso de que no se marque ninguno me da igual, que no aparezca nada en ese campo a la hora de mirarlo en el mail recibido.

Espero que lo hayáis entendido. Un saludo y muchas gracias de antemano.

Última edición por Beatzoo; 22/02/2012 a las 21:21 Razón: Faltas ortográficas
  #2 (permalink)  
Antiguo 23/02/2012, 00:57
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Recibir checkbox en correo

Utiliza print_r($_POST) para ver cómo recibes las variables. EN principio,

$contenido .= '<p>Empresa: <strong>'.$interes.'</strong>';

$interes es un array por lo tanto esta linea no puede funcionar como tú quieres.

Por otra parte, si sólo sabes lo básico de PHP te recomiendo que estudies.
Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 23/02/2012, 14:24
Avatar de Beatzoo  
Fecha de Ingreso: septiembre-2009
Ubicación: Retire Hill
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Recibir checkbox en correo

Cita:
Iniciado por repara2 Ver Mensaje
Utiliza print_r($_POST) para ver cómo recibes las variables. EN principio,

$contenido .= '<p>Empresa: <strong>'.$interes.'</strong>';

$interes es un array por lo tanto esta linea no puede funcionar como tú quieres.
Agradezco tu ayuda, pero no comprendo. ¿Qué línea no funciona, la que me aconsejas? Porque si es así no comprendo que lo pongas como hipotética solución.
Yo tengo puesto el name= como array, pero me da igual si es array o no, lo que quiero conseguir es que las opciones marcadas me lleguen al correo.

Haciendo el print_r me sale esta línea:

Array ( [nombre] => A [email] => [email protected] [poblacion] => [provincia] => [telefono] => 256363698 [fax] => [empresa] => [urlempresa] => [interes] => op_textil [consulta] => texto de prueba [enviar] => Enviar )

He marcado los dos primeros checkbox y solo aparece en el r_print el segundo (op_textil), en el email recibido no aparece ninguno.

Gracias y saludo.
  #4 (permalink)  
Antiguo 24/02/2012, 00:32
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Recibir checkbox en correo

El problema del email viene después, primero soluciona el problema de recibir los checkbox por $_POST. No te he planteado ninguna solución, eso lo tienes que buscar tú. Te he mostrado la manera de detectar el error: si haces print_r($_POST) y no ves todos los checkbox marcados, entonces no estás recibiendo los valores por POST. En teoría, la clave interes de tu array debería ser también un array incluyendo las opciones que has marcado, pero eso no funciona. Prueba poniendo a cada campo un name distinto a ver si así te llegan. A partir de ahí puedes continuar con el problema del email.
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: checkbox, recibir
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 08:23.