Foros del Web » Programando para Internet » Javascript »

Problema con checkbox

Estas en el tema de Problema con checkbox en el foro de Javascript en Foros del Web. Hola a todos Voy a poner un ejemplo para explicar mi problema a ver si se entiende. Tengo almacenados en una base de datos una ...
  #1 (permalink)  
Antiguo 23/07/2008, 11:53
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta Problema con checkbox

Hola a todos

Voy a poner un ejemplo para explicar mi problema a ver si se entiende.
Tengo almacenados en una base de datos una serie de ficheros y asociados a cada fichero varios artículos. El número de ficheros y artículos es variable.
En mi página PHP muestro un checkbox por cada fichero y cada artículo. El nombre es comun para todos los checkbox, pero el valor cambia y le añado un identificador para que se distingan:

fichero_1

articulo_1_1
articulo_1_2
fichero_2

articulo_2_3
articulo_2_4
artículo_2_5
fichero_3

articulo_3_6
El número que tiene asociado cada fichero es su identificador dentro de la base de datos.
En el caso de los artículos, el primer número es el identificador del fichero al que pertenece y el segundo el identificador propio.

Mi problema es que QUIERO QUE AL PULSAR SOBRE EL CHECKBOX ASOCIADO A UN FICHERO SE SELECCIONEN LOS ARTICULOS QUE LE PERTENECEN.

Mi código PHP para los checkbox está metido dentro de un while, por lo que solamente pongo una linea para definir los checkbox de los ficheros y otra para definir los de los artículos:

Código PHP:
echo "<input type='checkbox' name='seleccion[]' value=\"fichero_$id\" onClick='modificar_checkbox()'>"

echo 
"<input type='checkbox' name='seleccion[]' value=\"articulo_$id_$check\">"
El problema viene a la hora de hacer la función modificar_checkbox(), que ponga lo que ponga no consigo acceder a ningún checkbox para ponerlo a 'true'.
ALguien puede ayudarme?

Muchas gracias
  #2 (permalink)  
Antiguo 23/07/2008, 13:43
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Problema con checkbox

Estoy modificando el código PHP para intentarlo de otra forma más sencilla, el problema que tengo ahora, es que para probar si funciona, quiero pasar por parámetros a mi función Javascript dos variables, una es un número (será el identificador del fichero), y la otra es una cadena de números (serán los identificadores de los articulos asociados) de esta forma puedo tratar los checkbox en mi función js (o eso creo :) ).

Si pongo un parámetro funciona, pero al poner dos no, no sé si el problema es que no puedo pasar cadenas.

Mi código es:

Código PHP:
echo "<input type='checkbox' name=\"fichero_$id\" onClick='modificar_checkbox($id,$cadena)'>"
Sabeis cómo lo tengo que poner???

Última edición por scorm; 23/07/2008 a las 13:45 Razón: Lo habís escrito con errores en el código
  #3 (permalink)  
Antiguo 23/07/2008, 14:17
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Problema con checkbox

Código:
<!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=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function check_mis_articulos(chk_fichero){
	var array_pieces = new Array();
	for(var i=0;i<document.form1.elements.length;i++){//recorro los elementos del formulario
		array_pieces = document.form1.elements[i].value.split('_');//combierto el valor a un array
		//array_pieces[0]=articulo
		//array_pieces[1]=id del articulo
		//array_pieces[2]=id del fichero
		if(array_pieces.length>1){//filtro solo los chks de de articulos 
		
			if(array_pieces[array_pieces.length-1]==chk_fichero.value){//si ultima pos del array_pieces  = al id del fichero
				document.form1.elements[i].checked=chk_fichero.checked;//pongo el estado del fichero a los articulos
			}
		}
		
	}
	
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
  
  <input name="seleccion_ficheros[]" type="checkbox" id="fichero_1" value="1" onclick="check_mis_articulos(this)" />
  
 File 
 <br />
  &nbsp;&nbsp;&nbsp;&nbsp;
 <input type="checkbox" name="seleccion_articulos" value="articulo_1_1" />
  
 articulo1.1
 <br />
  &nbsp;&nbsp;&nbsp;&nbsp;
 <input type="checkbox" name="seleccion_articulos[]" value="articulo_2_1" />
 
articulo1.1
<br />
 &nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="seleccion_articulos[]" value="articulo_3_1" />

articulo1.1
<br />
 &nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="seleccion_articulos[]" value="articulo_4_1" />

articulo1.1
   <br />
  <br />
  <input name="seleccion_ficheros[]" type="checkbox" id="fichero_2" value="2" onclick="check_mis_articulos(this)"  />
  
 File 
 <br />
  &nbsp;&nbsp;&nbsp;&nbsp;
 <input type="checkbox" name="seleccion_articulos[]" value="articulo_1_2" />
  
 articulo1.1
 <br />
  &nbsp;&nbsp;&nbsp;&nbsp;
 <input type="checkbox" name="seleccion_articulos[]" value="articulo_2_2" />
 
articulo1.1
<br />
 &nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="seleccion_articulos[]" value="articulo_3_2" />

articulo1.1
<br />
 &nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="seleccion_articulos[]" value="articulo_4_2" />
articulo1.1
</form>
</body>
</html>
El nombre de los checks de los ficheros y los de los articulos deben ser diferentes porque a la hora de hacer $_POST no vas a saber cuales son articulos y cuales ficheros, ahora lo que te toca es parsear el valor de los articulos el el $_POST...

Saludos, espero que te sirva...
  #4 (permalink)  
Antiguo 23/07/2008, 16:45
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Problema con checkbox

Muchas gracias, me has ayudado mucho, le he hecho algunos cambios al código para que se adapte bien al mio, y funciona perfectamente.

Sólo espero que no me de problemas más adelante porque no pueda seguir lo que estoy haciendo de esta forma... :)

Muchas 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:07.