Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Dar valores a los checkbox cuando no se seleccionan

Estas en el tema de Dar valores a los checkbox cuando no se seleccionan en el foro de Javascript en Foros del Web. Hola, mi duda es la siguiente y espero me puedan ayudar: Tengo un form con algunos checkbox donde le ingreso el valor 1 cuando se ...
  #1 (permalink)  
Antiguo 26/05/2014, 11:49
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 9 meses
Puntos: 1
Dar valores a los checkbox cuando no se seleccionan

Hola, mi duda es la siguiente y espero me puedan ayudar:

Tengo un form con algunos checkbox donde le ingreso el valor 1 cuando se seleccionan y se insertan esos valores en una BD, hasta ahí no hay ningún problema...

Mi problema es que cuando no selecciono nungún checkbox me manda un error por que no tiene datos pero checando mi BD me agrega un valor cero que es el que necesito.

Además cuando llamo al usuario que le he agregado esos valores, mis checkbox no se prenden los que deberían de prenderse.

He buscado algunos ejemplos para poder resolver estos problemas pero no he encontrado mucho mas que usar un

Código Javascript:
Ver original
  1. <style>
  2. var marcado = $("#chkStatus").prop("checked") ? true : false;
  3. </style>

aunque no sé muy bien el manejo de javascript, y del lado del servidor uso:

Código PHP:
Ver original
  1. if(!empty($_POST['menu_princ']))
  2. {
  3.     foreach($_POST['menu_princ'] as $indice)
  4.     {
  5.         echo $indice." - Consulta de los datos<br>";
  6.     }
  7.    
  8. }

Para poder ver si se agregan los datos y que valor traen.

Gracias por su ayuda y espero puedan responderme!!!!!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #2 (permalink)  
Antiguo 26/05/2014, 13:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Dar valores a los checkbox cuando no se seleccionan

No mencionas en qué parte se produce el error, ¿cuando guardas los datos?, ¿antes de hacerlo? Probablemente suceda cuando los guardes ya que no envías datos para los checkbox que no marcaste, en dicho caso, podrías hacer una validación antes de enviar los datos a procesarse:

Código Javascript:
Ver original
  1. checkbox.value = checkbox.checked ? 1 : 0;

Inténtalo así y nos dices cómo te fue, saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 26/05/2014, 14:06
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Cierto, es cuando se envían los datos. Ahora mi duda es la siguiente pues no programo en JS así que no sé si estoy bien:

Código Javascript:
Ver original
  1. <style>
  2. checkbox.value = checkbox.checked ? 1:0;
  3. </style>

Supongo que la sintaxis es la correcta y que en mi checkbox sólo debo tener la instrucción de:

Código HTML:
Ver original
  1. <input type='checkbox' name='menu_princ[]' value='1'/>

y la instrucción de PHP ya la quité puesto que sólo la puse para ver que datos se agregaban en la BD
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #4 (permalink)  
Antiguo 26/05/2014, 14:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Si se trata de un array de checkbox, dígase:

Código HTML:
Ver original
  1. <input type='checkbox' name='menu_princ[]' value='1'/> Rojo
  2. <input type='checkbox' name='menu_princ[]' value='1'/> Amarillo
  3. <input type='checkbox' name='menu_princ[]' value='1'/> Verde

La validación sería más sencilla:

Código Javascript:
Ver original
  1. var checkbox = document.getElementsByName("menu_princ[]");
  2. for (var i in checkbox)
  3.     checkbox[i].value = checkbox[i].checked ? 1 : 0;

Con esto, afectarías a todos los checkbox y ni siquiera haría falta que añadas el atributo value a cada uno de ellos, pues el script comprueba que cada checkbox esté marcado, de estarlo, se le asigna el valor 1, caso contrario, el valor 0, de este modo, cuando los datos lleguen al archivo PHP, podrás guardar ceros y unos, según corresponda a los checkbox marcados.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 26/05/2014, 14:36
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Digamos que tengo muchos checkbox con nombres diferentes:

Código HTML:
Ver original
  1. <tr>
  2.         <td>
  3.         <center>
  4.             <input type='hidden' name='iduser[$a]' value='".$row[0]."'/>".$row[0]."
  5.         </center>
  6.         </td>
  7.        
  8.         <td>
  9.         <center>
  10.             <input type='hidden' name='user[$a]' size='3' maxlength='2' value='".$row[1]."'/>".$row[1]."
  11.         </center>
  12.         </td>
  13.        
  14.         <td>
  15.         <center>
  16.             <input type='checkbox' name='menu_princ[]' value='1'/>
  17.         </center>
  18.         </td>
  19.        
  20.         <td>
  21.         <center>
  22.             <input type='checkbox' name='panel[]' value='1'/>
  23.         </center>
  24.         </td>
  25.        
  26.         <td>
  27.         <center>
  28.             <input type='checkbox' name='insertar_user[]' value='1'/>
  29.         </center>
  30.         </td>
  31.        
  32.         <td>
  33.         <center>
  34.             <input type='checkbox' name='consulta_user[]' value='1'/>
  35.         </center>
  36.         </td>
  37.        
  38.         <td>
  39.         <center>
  40.             <input type='checkbox' name='modifica_user[]' value='1'/>
  41.         </center>
  42.         </td>
  43.        
  44.         <td>
  45.         <center>
  46.             <input type='checkbox' name='permisos_user[]' value='1'/>
  47.         </center>
  48.         </td>
  49.        
  50.         <td>
  51.         <center>
  52.             <input type='checkbox' name='control_user[]' value='1'/>
  53.         </center>
  54.         </td>
  55.        
  56.         <td>
  57.         <center>
  58.             <input type='checkbox' name='norte[]' value='1'/>
  59.         </center>
  60.         </td>
  61.        
  62.         <td>
  63.         <center>
  64.             <input type='checkbox' name='sur[]' value='1'/>
  65.         </center>
  66.         </td>
  67.        
  68.         <td>
  69.         <center>
  70.             <input type='checkbox' name='foraneo[]' value='1'/>
  71.         </center>
  72.         </td>
  73.     </tr>

pero con tu ejemplo del código JS creo que me doy una idea aunque necesito imlpementarla para ver que pasa, por el momento sólo lo hago con el primer elemento que es menu_princ...
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #6 (permalink)  
Antiguo 26/05/2014, 14:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Si los nombres de los checkbox son distintos, ¿por qué los tratas como arrays? Eso es lo que haces cuando colocas los corchetes [] junto al nombre y no sería la manera correcta. En este caso, el script variaría solo en la primera línea.

Código Javascript:
Ver original
  1. var checkbox = document.getElementsByTagName("input");
  2. for (var i in checkbox)
  3.     checkbox[i].value = checkbox[i].checked ? 1 : 0;

Como solo los <input> de tipo checkbox pueden tener la propiedad checked, entonces no haría falta otro filtro que compruebe que cada elemento sea un checkbox y así la aplicación del script se realizaría solo a dichos elementos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 26/05/2014, 15:06
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Leí en varios tutoriales que los corchetes me sirven para poder guardar los datos para diferenciar los tipos de checkbox que agregue.

Ahora me surgen más dudas con respecto a lo que ando haciendo :S
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #8 (permalink)  
Antiguo 26/05/2014, 15:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Con los corchetes, creas un array de elementos, lo cual te permite recoger varios valores asociados a un nombre, por ejemplo:

Código HTML:
Ver original
  1. <input type = "checkbox" name = "colores[]" value = "rojo" />
  2. <input type = "checkbox" name = "colores[]" value = "amarillo" />
  3. <input type = "checkbox" name = "colores[]" value = "verde" />

Cuando envías los datos del formulario, al archivo PHP llega un array asociado a colores, el cual contiene a los valores de los checkbox marcados. Supongamos que marcamos rojo y verde, entonces, en el archivo PHP tendremos lo siguiente:

Código PHP:
Ver original
  1. echo implode(', ', $_POST['colores']); //Imprime 'rojo, verde'

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 26/05/2014, 16:34
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Dar valores a los checkbox cuando no se seleccionan

Ah muy bien, ahora entiendo el funcionamiento y veo que de nada sirve poner los corchetes...

Voy a probar los ejemplos que me has dado y cualquier cosa os vuelvo a molestar un poco :)

Gracias por tu ayuda amigo!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!

Etiquetas: checkbox, form
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 18:41.