Foros del Web » Programando para Internet » PHP »

Envío de un checkbox no seleccionado

Estas en el tema de Envío de un checkbox no seleccionado en el foro de PHP en Foros del Web. Buenas a todos. Tan solo quería que me respondiérais a una duda: En un formulario, si un checkbox no está seleccionado, cuando hacemos el submit ...
  #1 (permalink)  
Antiguo 16/02/2006, 09:40
 
Fecha de Ingreso: febrero-2006
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Envío de un checkbox no seleccionado

Buenas a todos.
Tan solo quería que me respondiérais a una duda:
En un formulario, si un checkbox no está seleccionado, cuando hacemos el submit para enviar las variables a un determinado archivo, ¿la variable de ese checkbox no seleccionado es enviada con valor null o no se envía? Es que me interesaría que sí se enviara con valor nulo.

Muchas gracias.
  #2 (permalink)  
Antiguo 16/02/2006, 10:05
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Una forma sencilla de ver esto es que en la página que recibas tu checkbox hagas un echo de dicho check.
  #3 (permalink)  
Antiguo 16/02/2006, 10:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No se envia.

Si quieres que se envie con valor "null" u otro para que lo identifiques tendrías que resolver el problema con javascript.

Pero .. lo normal en estos casos (sin usar javascript) es que tu ya sabes o en PHP lo puedes recrear .. los valores y cuantos de esos checkbox tienes .. así que puedes hacer la "resta". Identificando los que seleccionastes - los que ya conoces .. sabras los que llegan con valor nulo. Si a su vez tienes algunos checbox que cambiaron su estado (vs a los que le distes propiedad "checked" al crearlos) puedes hacer la misma operación para ver los que cambiaron.

Por supuesto .. si tan sólo en PHP esperas todos los checbox posibles con sus valores "nulo/otro" te será más facil operar con ese dato en tus scripts y procesos PHP. Pero también dependes de "javascript" .. y que normalmente todo eso se enviará por "GET" (a no ser que se "serializado" de alguna forma sobre un campo "hidden" en el formulario y pueda subir junto con otras cosas (datos) por POST ... ).

Un saludo,
  #4 (permalink)  
Antiguo 16/02/2006, 10:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por mauled
Una forma sencilla de ver esto es que en la página que recibas tu checkbox hagas un echo de dicho check.
Algo más completo ..

Código PHP:
<?
echo "<pre>";
print_r($_POST); // o GET según uses tu "method" en el formulario.
echo "</pre>";
?>
En general como "debugg" ayuda bastante el uso de print_r() para ver que tiene una variable (de cualquier tipo).

También está la función: var_dump() para el mismo fin.

Un saludo,
  #5 (permalink)  
Antiguo 16/02/2006, 10:58
 
Fecha de Ingreso: febrero-2006
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Gracias.
He pensado que lo que haré, visto que no se envían, es en la página en la que recojo las variables hacer un
if (!isset($var)):
$var="";

Así tendré todas las variables de los checkbox con el contenido que yo quiero.
Un saludo.
  #6 (permalink)  
Antiguo 25/04/2006, 12:26
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 12 años, 7 meses
Puntos: 0
como hago para recojer todas los chek no seleccionados con un
foreach (...
if (!isset($var)):
$var="";
__________________
:aplauso: Ivomat
  #7 (permalink)  
Antiguo 25/04/2006, 14:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por ivomat
como hago para recojer todas los chek no seleccionados con un
foreach (...
if (!isset($var)):
$var="";
Ya se ha comentado en el mensaje que los "checkbox" que no seleccionas de por sí y por definición de HTML: no pasan al script PHP de proceso.

Así que TU tendrás que saber por otro médio ese total de "checkbox" que tenías y restarlos a los que sabes que vas a recibir.

O por otro médio tratar los checkbox (javascript) para generar un valor "X" si el checkbox no se selección y que pase junto al resto. Pregunta en el foro de javascript por este tema en concreto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 27/04/2006, 16:48
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 12 años, 7 meses
Puntos: 0
no te entiendo como sera esa resta , yo se cuantos estan seleccionados digamos 4 y el usario quita 1 (unckeck) como se cual es el que quito con esa resta.

gracias
__________________
:aplauso: Ivomat
  #9 (permalink)  
Antiguo 27/04/2006, 17:40
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Los checkbox tienen una propiedad value, la cual aporta su valor a la variable php, por tanto, tienes esto;

<input type="checkbox" name="check1" value="1">
<input type="checkbox" name="check2" value="2">
<input type="checkbox" name="check3" value="3">
<input type="checkbox" name="check4" value="4">

Si por ejemplo tu no checkas el 2 y los demás si, entonces sabes que el valor 2 no va a llegar. Ahora, si deseas dar otro value al sugerido a cada checkbox, puedes hacer que los nombres sean similares, para recorrerlos con un for y saber la posicion del que no llegó, asi:

Código PHP:

<input type="checkbox" name="check1" value="algo">
<input type="checkbox" name="check2" value="otro">
<input type="checkbox" name="check3" value="nose">
<input type="checkbox" name="check4" value="nada">

<?php
   $nchecks
=4;
   for(
$i=1;$i<=$nchecks;$i++)
   {
       
$nombre="check$i";
       if(!isset(
$_POST[$nombre])) echo "No se presionó el $nombre";
   }
?>
  #10 (permalink)  
Antiguo 28/04/2006, 08:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por claudiovega
Los checkbox tienen una propiedad value, la cual aporta su valor a la variable php, por tanto, tienes esto;

<input type="checkbox" name="check1" value="1">
<input type="checkbox" name="check2" value="2">
<input type="checkbox" name="check3" value="3">
<input type="checkbox" name="check4" value="4">

Si por ejemplo tu no checkas el 2 y los demás si, entonces sabes que el valor 2 no va a llegar. Ahora, si deseas dar otro value al sugerido a cada checkbox, puedes hacer que los nombres sean similares, para recorrerlos con un for y saber la posicion del que no llegó, asi:

Código PHP:

<input type="checkbox" name="check1" value="algo">
<input type="checkbox" name="check2" value="otro">
<input type="checkbox" name="check3" value="nose">
<input type="checkbox" name="check4" value="nada">

<?php
   $nchecks
=4;
   for(
$i=1;$i<=$nchecks;$i++)
   {
       
$nombre="check$i";
       if(!isset(
$_POST[$nombre])) echo "No se presionó el $nombre";
   }
?>
Otra forma de tratar el tema es como "array" según describe esta FAQ:

http://www.forosdelweb.com/showthrea...710#post518710

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 28/04/2006, 16:22
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 12 años, 7 meses
Puntos: 0
me salio esto
"No se presionó el check1No se presionó el check2No se presionó el check3 "
y deje de presionar uno, no me deberia salir el nombre del que no presione??? estos son los que presione no me sirven , me interesa el que no selecciono.

gracias
__________________
:aplauso: Ivomat
  #12 (permalink)  
Antiguo 28/04/2006, 16:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por ivomat
me salio esto
"No se presionó el check1No se presionó el check2No se presionó el check3 "
y deje de presionar uno, no me deberia salir el nombre del que no presione??? estos son los que presione no me sirven , me interesa el que no selecciono.

gracias
Así no lo vas a conseguir .. De HTML y tu formulario NO pasan los checkbox que NO seleccionas!!!!.

Tu tienes forma de saber los checkbox que indicas en el formulario, los generas dinámicamente: desde un array .. una llamada a una BBDD .. etc? .. o los creas "a mano" sobre el HTML? ..

Se trata de que con PHP puedas "recorrer" de alguna forma los "checkbox" (mejor dicho sus valores) .. el "total" de ellos para luego ir comparando UNO a UNO si está en la "lista" de los que quedaron "marcados". Así obtendrás los que NO has marcado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 28/04/2006, 17:10
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 12 años, 7 meses
Puntos: 0
ya entiendo ya se que no puedo capturar el evento de los que no selecciono , pero no se como programar lo que me estas diciendo ir comparando uno a uno para ver si esta???????
me podrias dar un ejemplo.

los que el selecciona ya los tengo guardados en la base de datos , pero ahora quiero eliminar de esa tabla los que el no selecciona como hago >>>>

gracias
__________________
:aplauso: Ivomat
  #14 (permalink)  
Antiguo 28/04/2006, 17:43
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Esto me funciona, copia el codigo y pégalo en un archivo php nuevo. Lo malo, es que no se pude conocer el value del que no fue clickado, lo que no es posible por lo demas.

Codigo:

Código PHP:
<html>
<body>
<form name="algo" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="checkbox" name="check1" value="algo">
<input type="checkbox" name="check2" value="otro">
<input type="checkbox" name="check3" value="nose">
<input type="checkbox" name="check4" value="nada">

<input type="submit" name="enviar" value="Enviar">
<br>
<br>
<?php
   
if(isset($_POST['enviar']))
   {
      
$nchecks=4;
      for(
$i=1;$i<=$nchecks;$i++)
      {
         
$nombre="check$i";
         if(!isset(
$_POST[$nombre])) echo "No se presionó el $nombre<br>";
      }
   }
?> 
</form>
</body>
</html>
Si te sirve, emula esta idea en tu codigo.
  #15 (permalink)  
Antiguo 28/04/2006, 19:11
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 16 años, 1 mes
Puntos: 2
Otra forma de resolver esto seria agregando campos hidden con el valor del checkbox (eg. para el caso que no sepas cuantos sean...) luego haces un bucle con ese array, que siempre se envia, y revizas si esta seteado el checkbox correspondiente o no...

Saludos
__________________
JmN
  #16 (permalink)  
Antiguo 29/04/2006, 09:14
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 11 años, 7 meses
Puntos: 0
muy bueno, gracias
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:12.