Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2012, 03:02
caitoss
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Checkbox por grupos en tabla dinámica

Se trata de desarrollar un script para individualizar la gestión de los usuarios de una empresa grande a partir de una BBDD con las siguientes tablas:
•usuarios
•modulos (funciones para cada division y/o proyecto: Documentos, calidad, CRM, ...etc.)
•divisiones (diferentes unidades de negocio de la empresa)
•proyectos (proyectos de cada división)
La intención es incluir en un campo [permisos] de la tabla usuarios un array que contiene las duplas [$modulo.$iddivision] y [$modulo.$idproyecto] que se seleccionen mediante checkbox para tener una matriz seleccionable para cada usuario.
El script sería algo parecido a esto:
<?php
echo "<form method=\"post\" name=\"peruid\">";
select uid from usuarios
while(list($uid)) {
select modulo from modulos
while(list($modulo)) {//LISTA HORIZONTAL(cabecera de la matriz)
echo "<input name=\"allbox\" onclick=\"CheckAll();\" type=\"checkbox\" value=\""._CHECKALL."\" >
select iddivision from divisiones]
while(list($iddivision)) {//LISTA VERTICAL(izquierda de la matriz)
<input type=\"checkbox\" name=\"array_permiso[]\" value=\"$modulo$iddivision\" >
}
select idproyecto from proyectos
while(list($idproyecto)) {//LISTA VERTICAL(izquierda de la matriz)
echo "<input type=\"checkbox\" name=\"array_permiso[]\" value=\"$modulo$idproyecto\" >";
}
}
}
echo "<input type=\"submit\" name=\"op\" value=\"GUARDAR\">";
/////////////////////////////////////////
echo "<script type=\"text/javascript\">\n\n
<!--\n\n
function CheckAll() {
for (var i=0;i<document.peruid['array_permiso[]'].length;i++)
document.peruid['array_permiso[]'][i].checked = document.peruid.allbox.checked;
}
function CheckCheckAll() {\n
var TotalBoxes = 0;\n
var TotalOn = 0;\n
for (var i=0;i<document.peruid.elements.length;i++) {\n
var e = document.peruid.elements[i];\n
if ((e.name != 'allbox') && (e.type=='checkbox')) {\n
TotalBoxes++;\n
if (e.checked) {\n
TotalOn++;\n
}\n
}\n
}\n
if (TotalBoxes==TotalOn) {\n
document.peruid.allbox.checked=true;\n
} else {\n
document.peruid.allbox.checked=false;\n
}\n
}\n\n
-->\n
</script>\n\n";
////////////////////////////
echo "</form>";
if ($op=="GUARDAR"){
sql_query("update usuarios set permisos='$array_permiso' where uid='$uid'
}
?>
//////////////////////////////////////////////////////////////////////////
Al final por cada usuario tendria una matriz:

USUARIO 1 MOD1 MOD2 MOD3 ....................

DIVISION1 X X X
DIVISION2 X X X
DIVISIONn X X X
PROYECTO1 X X X
PROYECTO2 X X X
PROYECTOn X X X

USUARIO 2

USUARIO n
////////////////////////////////////////////////////////////////////////////////////////////////
Lo único que me queda solucionar es identificar el $array_permiso para cada usuario no sólo para guardarlo sino para poder aplicar el CheckAll para cada módulo pues con el script que tengo cualquier CheckAll me activa permiso para todos los usuarios y todos los modulos .

Gracias por tu atención