Foros del Web » Programando para Internet » Javascript »

obtener valor de cada checbox de un arreglo y compararlo

Estas en el tema de obtener valor de cada checbox de un arreglo y compararlo en el foro de Javascript en Foros del Web. Hola forer@s que tal les va Bueno pues iré al tema, genero unos checkboxes de una consulta mysql: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php ...
  #1 (permalink)  
Antiguo 18/10/2012, 11:54
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
obtener valor de cada checbox de un arreglo y compararlo

Hola forer@s que tal les va

Bueno pues iré al tema, genero unos checkboxes de una consulta mysql:

Código PHP:
Ver original
  1. <?php
  2. while($row = mysql_fetch_array($rs,MYSQL_ASSOC)){
  3. ?>
  4. <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="<?php echo $row['id_carpeta'] ?>" />
  5. <?php
  6. }
  7. ?>

lo que seria algo como:

<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />

necesito hacer en javascript lo siguiente:

for(i=0; i<todos los checbox; i++){
si (autorizados_read[i]==document.getElementByName('autorizados_read'+'['+i+']').value){
document.getElementByName('autorizados_read'+'['+i+']').checked=true;
}
}

osea por cada checbox que se genera que compare lo que tenga en el arreglo autorizados_read con el valor del checbox en turno y si hay coincidencia que le ponga (al checkbox en turno) checked true



lo que no se es como decirle a javascript que tengo un arreglo de checkbox y que quiero su valor

habra manera de poder hacer esto en javascript o en jquery??

o de que forma puedo hacer esa comparacion entre mi arreglo y el valor de cada checkbox??

gracias por su tiempo
  #2 (permalink)  
Antiguo 18/10/2012, 13:33
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

O faltan datos o ahy algo que no se entiende, analizemos

tu php genera esto de una forma dinámica

Código HTML:
Ver original
  1. <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
  2.  <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" />
  3.  <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />

y querés comparar 1,2,3 contra los valores de otro array(), supongamos con los valores 0,2,5, con los checkbox en tu html, quedarian

Código HTML:
Ver original
  1. <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
  2.  <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" checked="checked" />
  3.  <input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />

Lo que no sabemos es donde está definida esa otra lista de valores, es una variable?, un array ya definido? ó también se genera dinámicamente?
Además quedan otros detalles a analizar, fijate el titulo de tu post
"obtener valor de cada checbox de un arreglo y compararlo"
Tus value ($row['id_carpeta']) provienen de la misma base de datos, no hay arreglo alguno


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 18/10/2012, 13:57
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

hola emprear

Cita:
tu php genera esto de una forma dinámica

Código HTML:
Ver originalCopiar
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />


y querés comparar 1,2,3 contra los valores de otro array(), supongamos con los valores 0,2,5, con los checkbox en tu html, quedarian

Código HTML:
Ver originalCopiar
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" checked="checked" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />

has entendido bien esta parte

Cita:
Lo que no sabemos es donde está definida esa otra lista de valores, es una variable?, un array ya definido? ó también se genera dinámicamente?
es un arreglo y yo lo defino de otro registro de un campo de mi BD (tabla autorizados), pero a fin de cuentas quedaría, por ejemplo: var autorizados_read = ["0","2","5"]

aunque no veo en que afectaría de donde saco el arreglo para lo que quiero hacer

Cita:
Además quedan otros detalles a analizar, fijate el titulo de tu post
"obtener valor de cada checbox de un arreglo y compararlo"
Bueno es que aqui yo entiendo (igual tengo mal el concepto) que al generar dinamicamente checkboxes y definir su name asi: name="autorizados_read[]" estoy creando un arreglo de checboxes por eso necesito el valor de cada checkbox de ese arreglo

aunque muy probablemente estoy equivocada en ese concepto por lo que comentas

Cita:
Tus value ($row['id_carpeta']) provienen de la misma base de datos, no hay arreglo alguno
y porque efectivamente el value ($row['id_carpeta']) proviene de la misma BD (tabla carpetas)

entonces como hacer el bucle de checkboxes y comparar su valor con mi arreglo??

gracias por su tiempo
  #4 (permalink)  
Antiguo 18/10/2012, 17:59
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

Quizás se pueda resolver incluso desde el mismo MySQL, pero no es mi fuerte


imáginate lo siguiente, con una consulta creas un array1 con los valores de id_carpeta
luego creas otro array2 con los registros de ese otro campo. los arrays los podés crear con array_push() de php

luego comparas y vás escribiendo los checkboxes
Código PHP:
Ver original
  1. <?php
  2. $array1 = array(
  3.     0  => 1,
  4.     1  => 2,
  5.     2  => 3,
  6.     3 => 4,
  7. );
  8. $array2 = array(
  9.     0  => 1,
  10.     1  => 2,
  11.     2  => 7,
  12.     3 => 4,
  13. );
  14.  
  15.  
  16. foreach($array1 as $key => $valor){
  17. if($valor == $array2[$key]){
  18. echo "<input type='checkbox' id='autorizados_read_". $key . "' name='autorizados_read[]' value='$valor' checked='checked' />\n";
  19. }else{
  20. echo "<input type='checkbox' id='autorizados_read_" . $key . "' name='autorizados_read[]' value='$valor' />\n";
  21. }
  22. }
  23. ?>

autorizados_read[] en realidad es tan solo un constructor para pasarle al action del form esos campos como un array
notá que te corregi los id diferenciándolos con el id_carpeta, ya que los id deben de ser únicos

Quizás se pueda optimizar, pero creo que como solución sirve

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 18/10/2012, 18:45
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

bueno, el asuntillo que le veo a esta opcion es que yo tengo que mostrar todos los checkboxes, coincidan o no con mi arreglo de autorizados_read, lo que necesito es que me cheque los que si coincidan con ese arreglo, pero que me muestre todos los checkboxes.

Haber supongamos que yo tengo 3 carpetas asignadas a un usuario,

las carpetas las tengo registradas en la tabla carpetas con los campos: id_carpeta, id_usuario, nombre_carpeta

despues tengo la tabla autorizados donde tengo: id_usuario, nombre_usuario, carpetas_autorizadas

donde carpetas_autorizadas es un campo multivalor que guarda las id de las carpetas a las que el usuario puede entrar; por ejemplo [0,2,5]

ahora yo muestro todas las carpetas que hay en la tabla carpetas, por cada registro agrego dinamicamente un input checkbox con el valor de su id

<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />

ahora quiero que me aparezcan por default checked los checkboxes que concidan con los que ya tenian registrados en carpetas_autorizadas algo asi como:

<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="1" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="2" />
<input type="checkbox" id="autorizados_read" name="autorizados_read[]" value="3" />
  #6 (permalink)  
Antiguo 18/10/2012, 18:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

Ejecutaste mi ejemplo. los checkboxes se muestran todos, la diferencia es que los que coincide aparecen como "checked" que es lo que necesitabas según tu enunciado


__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 18/10/2012, 18:56
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

No bueno disculpa no he probado, recien lei, lo que pasa es que no me quedo claro entonces

Cita:
con una consulta creas un array1 con los valores de id_carpeta
esa consulta que dices en lugar de hacer el tipico while($row=myslq_fetch_array) hago el foreach?? o dentro del while armo el arreglo?? y despues fuera del while hago el foreach

creo que es lo utimo que dije bueno dejame hacer las pruebas y te comento

aunque tengo un pequeño problema el array que tiene los valores multiusuario forzosamente lo tengo que manejar en javascript, creo que de hecho por eso trataba de capturar los valores de los checkboxes desde js y hacer ahi la comparacion

gracias
  #8 (permalink)  
Antiguo 18/10/2012, 19:09
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener valor de cada checbox de un arreglo y compararlo

los while para recorrer la tabla los hacés igual, pero solo para construir los arrays(), mira el manual de php para array_push()

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: cada, input, php, 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 20:15.