Foros del Web » Programando para Internet » PHP »

arreglo de checkboxes dudas

Estas en el tema de arreglo de checkboxes dudas en el foro de PHP en Foros del Web. Hola forer@s: Tengo un formulario que recoge los deportes favoritos del usuario mediante checkbox, estos estan en un arreglo y en otra pagina se procesa ...
  #1 (permalink)  
Antiguo 30/01/2011, 15:18
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
arreglo de checkboxes dudas

Hola forer@s:

Tengo un formulario que recoge los deportes favoritos del usuario mediante checkbox, estos estan en un arreglo y en otra pagina se procesa la informacion y muestra lo q el usuario eligio. No tengo problema con el codigo, lo hace bien. Pero tengo dudas que espero ustedes puedan resolver, aca el codigo:

Código HTML:
<html>
<head></head>
<body>
Elige tus deportes favoritos:<br />
<form method="post" action="arreglo_checkboxes.php" name="form_deportes">
Futbol: <input type="checkbox" name="deportes[]" value="Futbol" /><br />
Basquetbol: <input type="checkbox" name="deportes[]" value="Basquetbol" /><br />
Voleibol: <input type="checkbox" name="deportes[]" value="Voleibol" /><br />
Tenis: <input type="checkbox" name="deportes[]" value="Tenis" /><br />
Americano: <input type="checkbox" name="deportes[]" value="Americano" /><br />
Box: <input type="checkbox" name="deportes[]" value="Box" /><br />
<input type="submit" value="Enviar" />
</form>
</body>
</html> 
Código PHP:
<?php

echo "Tus deportes favoritos son: <br />";

for(
$i=0;$i<count($_POST['deportes']);$i++) {
  echo 
$_POST['deportes'][$i] . '<br>';
}  

?>

Mi dudas:

¿Como se sabe cuales fueron los que el usuario selecciono, si ni siquiera hay alguna condicion?
¿Como seria el codigo si quisiera saber los que no se seleccionaron?
Gracias
  #2 (permalink)  
Antiguo 30/01/2011, 15:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: arreglo de checkboxes dudas

Hola,

Nunca había probado un código así... Pero si dices que funciona...

Dado que todos son deportes, yo lo hubiera hecho con un select multiple.

Con PHP recoges los valores y ya está...

Pero si quieres hacerlo así y te funciona...

Bueno respecto a lo de los que no se han seleccionado, puedes hacerlo con javascript, antes de enviar el formulario:

Código Javascript:
Ver original
  1. function NoSeleccionadas() {
  2. var vector=new Array();
  3. j=0;
  4. var elementos=document.getElementById('form_deportes').elements;
  5. for(i=0;i<elementos.length;i++) {
  6. if(elementos.type=='chechbox' && elementos.checked==false) {
  7. vector[j]=elementos.value;
  8. j++;
  9. }
  10. }
  11. }

No sé si el código es correcto del todo (lo acabo de escribir a lo loco :D). Pero sería algo así.

Luego ese vector lo guardas en un hidden o lo que sea dentro del formulario y lo envias.

Espero que te haya servido.

Saludos!
  #3 (permalink)  
Antiguo 30/01/2011, 15:52
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: arreglo de checkboxes dudas

Gracias por tu respuesta...el caso es que ese script era para explicar el uso de checkbox y el aprovechamiento de los arreglos también, pero no me esperaba que me preguntaran como hace para saber los que se seleccionaron y como seria para enviar los no seleccionados, ese es el asunto.

También pues saber si es posible solo con php...o hay que implementar javascript para saber los no seleccionados.
  #4 (permalink)  
Antiguo 30/01/2011, 16:02
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: arreglo de checkboxes dudas

La verdad es que creo que con PHP no se puede saber los que no se seleccionan... Una solución solo con PHP sería...

$vector_deportes=array("nadar","correr","futbol");
Código PHP:
Ver original
  1. $deportes=$_POST['deportes'];
  2. for($i=0;$i<count($deportes);$i++) {
  3. if(!in_array($deportes[$i],$vector_deportes)) echo "NO ESTOY ENTRE LOS SELECCIONADOS";
  4. }

Pero bueno, no me parece una solución del todo acertada...

A ver si alguien sabe hacerlo :)

Un saludo!

Etiquetas: checkboxes, arreglos
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 05:37.