Foros del Web » Programando para Internet » PHP »

Error en checkbox

Estas en el tema de Error en checkbox en el foro de PHP en Foros del Web. Tengo un problema en un formulario con un checkbox, lo que pasa es que el formulario lo estoy haciendo en HTML y estoy usando un ...
  #1 (permalink)  
Antiguo 27/06/2011, 11:22
 
Fecha de Ingreso: junio-2011
Mensajes: 12
Antigüedad: 12 años, 10 meses
Puntos: 0
Error en checkbox

Tengo un problema en un formulario con un checkbox, lo que pasa es que el formulario lo estoy haciendo en HTML y estoy usando un "post" para despues llamar un script PHP para de ahi imprimir el resultado. Bueno mi duda es de que el checkbox es de aficiones y tengo para seleccionar varias como: deportes, musica, literatura y otras dos, pero al momento de imprimirlas solo me aparece la primera que se selecciona y no las demas.
El codigo html es:

<label> <br/> Aficiones: <br/>
<input type="checkbox" name="form_aficion" value="Cine" id="form_cine_0" />
Cine </label>

<label>
<input type="checkbox" name="form_aficion" value="Deporte" id="form_deporte_1" />
Deporte </label>
<br/>

<label>
<input type="checkbox" name="form_aficion" value="Literatura" id="form_literatura_2" />
Literatura </label>

<label>
<input type="checkbox" name="form_aficion" value="Teatro" id="form_teatro_3" />
Teatro </label>

<label>
<input type="checkbox" name="form_aficion" value="Musica" id="form_musica_4" />
Musica </label>

Y en el script, algo asi:

$aficion =$_POST['form_aficion'];

print "tus aficiones son $aficion";

pero como digo solo me aparece la primer aficion que selecciono y no las demas, como le hago para que me aparescan todas las que seleccione?
  #2 (permalink)  
Antiguo 27/06/2011, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en checkbox

Eso es normal, porque el name que usas es único.

Si deseas capturar varios checkbox entonces el name debería ser así: form_aficion[]

Y desde luego, lo que recibes es un array, por lo tanto debes imprimirlo con un bucle.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/06/2011, 13:19
 
Fecha de Ingreso: junio-2011
Mensajes: 12
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Error en checkbox

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso es normal, porque el name que usas es único.

Si deseas capturar varios checkbox entonces el name debería ser así: form_aficion[]

Y desde luego, lo que recibes es un array, por lo tanto debes imprimirlo con un bucle.
Me convencio tu respuesta pateketrueke, pero lo que pasa es que soy muy novato en la programacion y apenas le ando entendiendo jejeje si me pudieras corregir mi codigo te lo agradeceria mucho, es que nomas eso me falta de que imprima bien.

Mira el codigo del HTML es:

<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>

<body>
<form id="form_datos" name="form_datos" method="post" action="practica8.php" />
<h1> Formulario de datos personales </h1> <br/>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="16%"> <label> Nombre: <br/>
<input type="text" name="form_nombre" id="form_nombre" />
</label>

</td>
<td width="14%"> <label> Apellidos: <br/>
<input type="text" name="form_apellidos" id="form_apellidos" />
</label>

</td>

<td width="70%">
<label>
<select name="form_edad" size="1" multiple="multiple" id="form_edad">
<option>menor de 18</option>
<option>mayor de 18</option>
</select>
</label>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="16%"> <label> <br />
<br />
Peso: <br/>
<input type="text" name="form_peso" id="_form_peso" /> Kg.
</label>

</td>
<td width="14%">
<label> Sexo: <br/>
<input type="radio" name="form_sexo" value="Hombre" id="form_sexo_0" />
Hombre </label> <br/>
<label>
<input type="radio" name="form_sexo" value="Mujer" id="form_sexo_1" />
Femenino </label>


</td>
<td width="70%">
<label> <br/> Estado civil: <br/>
<input type="radio" name="form_estado" value="Casado" id="form_estado_0" />
Casado </label> <br/>

<label>
<input type="radio" name="form_estado" value="Soltero" id="form_estado_1" />
Soltero </label> <br/>

<label>
<input type="radio" name="form_estado" value="Divorciado" id="form_estado_2" />
Divorciado </label> <br/>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="25%"> <label> <br/> Aficiones: <br/>
<input type="checkbox" name="form_aficion[]" value="Cine" id="form_cine_0" />
Cine </label>

<label>
<input type="checkbox" name="form_aficion[]" value="Deporte" id="form_deporte_1" />
Deporte </label>
<br/>

<label>
<input type="checkbox" name="form_aficion[]" value="Literatura" id="form_literatura_2" />
Literatura </label>

<label>
<input type="checkbox" name="form_aficion[]" value="Teatro" id="form_teatro_3" />
Teatro </label>

<label>
<input type="checkbox" name="form_aficion[]" value="Musica" id="form_musica_4" />
Musica </label>


</td>
<td width="65%">&nbsp;</td>
<td width="10%">&nbsp;</td>
</tr>


</table>



<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="30%"> <br/> <br/>
<label>
<input type="reset" name="f_limpiar" id="f_limpiar" value="Limpiar" />
</label>
</td>
<td width="70%">
<br/> <br/>
<label>
<input type="submit" name="f_Enviar" id="f_Enviar" value="Enviar" />
</label>
</td>
</tr>
</table>
<p>&nbsp;</p>

</form>
</body>

</html>




Y del script del PHP es:

<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
$nombre =$_POST['form_nombre'];
$apellidos =$_POST['form_apellidos'];
$edad =$_POST['form_edad'];
$peso =$_POST['form_peso'];
$sexo =$_POST['form_sexo'];
$estado =$_POST['form_estado'];


$mensaje= "$nombre, $apellidos, $edad, $peso, $sexo, $estado, $aficion";

print $mensaje;


?>


</body>

</html>



Lo que no me imprime es la aficion y la edad y pues ya no hayo ni que hacer
  #4 (permalink)  
Antiguo 27/06/2011, 14:36
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error en checkbox

En el único que lo has hecho es en afición

Código PHP:
<input type="checkbox" name="form_aficion[]" value="Cine" id="form_cine_0" />
Cine </label
<
label>
<
input type="checkbox" name="form_aficion[]" value="Deporte" id="form_deporte_1" />
Deporte </label
<
br/>    
<
label>
<
input type="checkbox" name="form_aficion[]" value="Literatura" id="form_literatura_2" />
Literatura </label
<
label>
<
input type="checkbox" name="form_aficion[]" value="Teatro" id="form_teatro_3" />
Teatro </label>
<
label>
<
input type="checkbox" name="form_aficion[]" value="Musica" id="form_musica_4" />
Musica </label
Código PHP:
$aficion=$_POST['form_aficion'];


$aficion[0será igual a Cine
$aficion
[1será igual a Deporte
$aficion
[2será igual a Literatura 

Un saludo
  #5 (permalink)  
Antiguo 27/06/2011, 15:43
 
Fecha de Ingreso: junio-2011
Mensajes: 12
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Error en checkbox

Cita:
Iniciado por naked Ver Mensaje
En el único que lo has hecho es en afición

Código PHP:
<input type="checkbox" name="form_aficion[]" value="Cine" id="form_cine_0" />
Cine </label
<
label>
<
input type="checkbox" name="form_aficion[]" value="Deporte" id="form_deporte_1" />
Deporte </label
<
br/>    
<
label>
<
input type="checkbox" name="form_aficion[]" value="Literatura" id="form_literatura_2" />
Literatura </label
<
label>
<
input type="checkbox" name="form_aficion[]" value="Teatro" id="form_teatro_3" />
Teatro </label>
<
label>
<
input type="checkbox" name="form_aficion[]" value="Musica" id="form_musica_4" />
Musica </label
Código PHP:
$aficion=$_POST['form_aficion'];


$aficion[0será igual a Cine
$aficion
[1será igual a Deporte
$aficion
[2será igual a Literatura 

Un saludo
Es decir que en el script pondria algo como esto:

<?php
$nombre =$_POST['form_nombre'];
$apellidos =$_POST['form_apellidos'];
$edad =$_POST['form_edad'];
$peso =$_POST['form_peso'];
$sexo =$_POST['form_sexo'];
$estado =$_POST['form_estado'];

$aficiones=$_POST['form_aficion'];

$aficion[0] = "Cine";
$aficion[1] = "Deporte";
$aficion[2] = "Literatura";
$aficion[3] = "Teatro";
$aficion[4] = "Musica";

$mensaje= "$nombre, $apellidos, $edad, $peso, $sexo, $estado, $aficion";

print $mensaje;

?>


Lo que pasa es que nombre, apellidos los estoy usando como "text", estado y sexo como "radio" y edad con este codigo

<select name="form_edad" size="1" multiple="multiple" id="form_edad">
<option>menor de 18</option>
<option>mayor de 18</option>
</select>

Pero cuando corro el programa, no me arroja los resultados de "edad" y los checkbox de "aficion"
  #6 (permalink)  
Antiguo 27/06/2011, 15:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en checkbox

Combo, es notable que no comprendes como funcionan los formularios.

Y el problema no es precisamente de PHP, pues un formulario es en su base 100% HTML; así que para comprender que tipos de valores esperas en PHP, debes redactar el formulario correcto.

Te invito a descubrir algún manual de HTML, para que comprendas los atributos necesarios por tipo de campo en el formulario.

También te sugiero leer lo siguiente que te ayudará con PHP.
http://www.php.net/variables.external
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/06/2011, 16:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Error en checkbox

Hola Combo.

Mira el ejemplo de esta página Ejemplo

Es más o menos lo que tú quieres hacer. La forma en que muestra los elementos seleccionados del select múltiple es lo que tendrías que hacer para los checkbox.
  #8 (permalink)  
Antiguo 27/06/2011, 16:42
 
Fecha de Ingreso: junio-2011
Mensajes: 12
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Error en checkbox

Cita:
Iniciado por Nexus10 Ver Mensaje
Hola Combo.

Mira el ejemplo de esta página [URL="http://www.desarrolloweb.com/articulos/1576.php"]Ejemplo[/URL]

Es más o menos lo que tú quieres hacer. La forma en que muestra los elementos seleccionados del select múltiple es lo que tendrías que hacer para los checkbox.
Perfecto, eso era lo que buscaba.. Mil gracias..

Y perdon por preguntar tanto, pero como dicen vale mas preguntar a quedarse siempre con la duda..

Saludos y gracias de nuevo.

Etiquetas: checkbox
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:55.