Foros del Web » Creando para Internet » HTML »

Formulario Check box en php

Estas en el tema de Formulario Check box en php en el foro de HTML en Foros del Web. Hola Foreros! NEcesito una ayuda, resulta que estoy haciendo un formulario HTML, la cual este se tiene que mandar al mail. Logre hacer el formulario ...
  #1 (permalink)  
Antiguo 04/09/2010, 13:04
Avatar de Luchiok  
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 8 años, 5 meses
Puntos: 0
Formulario Check box en php

Hola Foreros!

NEcesito una ayuda, resulta que estoy haciendo un formulario HTML, la cual este se tiene que mandar al mail.
Logre hacer el formulario mas el PHP (send.php) para que se envien los datos al correo.

Resulta que mi formulario tiene que tener algunas CheckBox, pero no logro ni tampoco se como hacer para que el dato marcado en el Checkbox se mando al mail

Este es mi php:
Código:
<?php
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$empresa = $_POST['empresa'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());


mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Mensaje Enviado';
?>
Y este es mi HTML:

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>Documento sin t&iacute;tulo</title>
</head>

<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><form id="nombre" name="nombre" method="post" action="send.php">
      <label>
        Nombre:
        <input name="nombre" type="text" id="nombre" size="30" />
        </label>
      <p>Empresa:
        <label>
        <input name="empresa" type="text" id="empresa" size="30" />
        </label>
      </p>
      <p>Email:
        <label>
        <input name="mail" type="text" id="mail" size="30" />
        </label>
      </p>
      <p>Mensaje:
      
      <p>
        <label>
        <textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
        </label>
      </p>
      <p>
        <label>
        <input type="submit" name="enviar" id="enviar" value="Enviar" />
        </label>
      </p>
    </form>    </td>
  </tr>
</table>
</body>
</html>

Saludos Gracias!
  #2 (permalink)  
Antiguo 04/09/2010, 21:40
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 9 años, 4 meses
Puntos: 1530
Respuesta: Formulario Check box en php

¿donde están los checkbox?

solo se enviarán los checkbox que sean marcados, y se enviará lo que contengan en value, si no se especifica nada, usualmente el navegador envía On:

<input name="check" type="checkbox" value="si_me_marcan_envío_esto" />

y el resultado en php será:

echo $_POST['check']; //devolverá: si_me_marcan_envío_esto
  #3 (permalink)  
Antiguo 05/09/2010, 17:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 10 años, 5 meses
Puntos: 1567
Respuesta: Formulario Check box en php

Luchiok:

El caso es que un checkbox puede tener multiples selecciones y lo expuesto por maycolalvarez no te va a funcionar si hay mas de un checkbox marcado

El form: (mirá los coechetes en el name)

Código HTML:
Ver original
  1. Pastas:<input type="checkbox" value="Pastas" name="comida[]"><br />
  2. Piza:<input type="checkbox" value="Piza" name="comida[]"><br />

El php, con el foreach recorremos el array que componen la variable comida e imprimimos cada uno de los valores marcados, además podrías verificar con empty() si han dejado todo sin marcar

Código PHP:
Ver original
  1. $comida = $_POST['comida'];
  2.  
  3. if(empty($comida){
  4. echo "Debe seleccionar una opción...";
  5. exit();
  6. }
  7.  
  8.  
  9. foreach ($comida $f) {
  10. echo $f."<br />";
  11. }


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 05/09/2010, 22:39
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 7 años, 8 meses
Puntos: 460
Respuesta: Formulario Check box en php

Cita:
Iniciado por emprear Ver Mensaje
Luchiok:

El caso es que un checkbox puede tener multiples selecciones y lo expuesto por maycolalvarez no te va a funcionar si hay mas de un checkbox marcado

El form: (mirá los coechetes en el name)

Código HTML:
Ver original
  1. Pastas:<input type="checkbox" value="Pastas" name="comida[]"><br />
  2. Piza:<input type="checkbox" value="Piza" name="comida[]"><br />

El php, con el foreach recorremos el array que componen la variable comida e imprimimos cada uno de los valores marcados, además podrías verificar con empty() si han dejado todo sin marcar

Código PHP:
Ver original
  1. $comida = $_POST['comida'];
  2.  
  3. if(empty($comida){
  4. echo "Debe seleccionar una opción...";
  5. exit();
  6. }
  7.  
  8.  
  9. foreach ($comida $f) {
  10. echo $f."<br />";
  11. }


Saludos
pues la manera que le expusistes es la mas correcta de utilizar el checkbox pero sin embargo la que pus maycolalvares tambien es valida x ejemplo la primera vez q vi html en una pagina no muy buena pero cuando uno esta investigando cree q es la mejor usaban un check para los dias de esta manera
Código HTML:
Ver original
  1. <input type="checkbox" name="lunes" value="lunes"/>
  2. <input type="checkbox" name="martes" value="martes"/>
y funcionaba perfectamente al recibir cada uno por separado claro es mas optimo como lo indicaste trabajandolo como array
Código HTML:
Ver original
  1. <input type="checkbox" name="dias[]" value="lunes"/>
  2. <input type="checkbox" name="dias[]" value="martes"/>
y recibirlo una sola vez y recorrerlo con el foreach pero de las dos formas se puede saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 05/09/2010, 22:46
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 10 años, 5 meses
Puntos: 1567
Respuesta: Formulario Check box en php

carlos_belisario:

Gracias, siempre se aprende algo, tomaré nota de esto y lo probaré.
Y disculpas a maycolalvares por mi objeción.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 05/09/2010, 22:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 7 años, 8 meses
Puntos: 460
Respuesta: Formulario Check box en php

eso mismo digo yo todos los dias se aprende algo y como te dije la manera mas optima a mi gusto es la que propusistes en tu post ya que solo se recibe una vez y se trabaja con el foreach pero de abas se puede hacer yo usaba anteriormente esa xq lo vi en un tutorial de html q para el momento q lo lei para mi fue lo maximo pero cuando vi todas las fallas q habia al leer otros me di cuenta q tenia q investigar mas y q siempre hay mas opciones y aveces mejores que las que conocemos saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 06/09/2010, 13:45
Avatar de Luchiok  
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Formulario Check box en php

Hola Muchachos, primero Gracias por ayudarme, les queriq decir que ic los cambios pero no me manda e mail ahora, les dejos los codes para que vean si me equivoque en el algo que seguro:

HTML:
Código:
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><form id="nombre" name="nombre" method="post" action="send.php">
      <label>
        Nombre:
        <input name="nombre" type="text" id="nombre" size="30" />
        </label>
      <p>Empresa:
        <label>
        <input name="empresa" type="text" id="empresa" size="30" />
        </label>
      </p>
      <p>Email:
        <label>
        <input name="mail" type="text" id="mail" size="30" />
        </label>
      </p>
      <p>Pastas:<input type="checkbox" value="Pastas" name="comida[]"><br />
Piza:<input type="checkbox" value="Piza" name="comida[]"><br /></p>
<p>Mensaje:</p>
      <p>
        <label>
        <textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
        </label>
      </p>
      <p>
        <label>
        <input type="submit" name="enviar" id="enviar" value="Enviar" />
        </label>
      </p>
    </form>    </td>
  </tr>
</table>
PHP:
Código:
<?php
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$empresa = $_POST['empresa'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$comida = $_POST['comida'];
 if(empty($comida){
  echo "Debe seleccionar una opción...";
   exit();
      }
foreach ($comida $f) {
 echo $f."<br />";
 }

$para = '[email protected]';
$asunto = 'Contacto prueba escuela';




mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Mensaje Enviado';
?>
  #8 (permalink)  
Antiguo 06/09/2010, 15:54
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 7 años, 8 meses
Puntos: 460
Respuesta: Formulario Check box en php

Cita:
foreach ($comida $f) {
echo $f."<br />";
}
creo q el foreach esta errado ya q este se usa de esta manera
Código PHP:
Ver original
  1. foreach($arreglo as $id=>$valor){
  2.    echo "el indice del arreglo es ".$id." el valor es ".$valor;
  3. }
eso te recorre el $arreglo y te imprime el indic como el valor adaptalo a lo que lo kieres usar suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 06/09/2010, 16:17
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 10 años, 5 meses
Puntos: 1567
Respuesta: Formulario Check box en php

Luchiok:

Disculpa, pero cometí un error en el código, te paso este con un par de cambios, ya lo probé y funcionó correctamente, use un while ye integré las comidas en el mensaje, cosa que no habias hecho, mira lo que esta entre ###cambios


<?php
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$empresa = $_POST['empresa'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

######## cambios
$comida=$_POST['comida'];

$mensaje .= "\n\nPedidos:\n\n";
while (list ($key,$val) = @each ($comida)) {
$mensaje .="$val,\n";
}
####### cambios
$para = '[email protected]';
$asunto = 'Contacto prueba escuela';


mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Mensaje Enviado';
?>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 06/09/2010, 21:00
Avatar de Luchiok  
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Formulario Check box en php

Gracias emprear y carlos_belisario

Ya el formulario funciona correctamente!

Se les agradece!

Etiquetas: box, php, formulario
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 04:42.