Foros del Web » Programando para Internet » PHP »

actualizar BD desde checklist

Estas en el tema de actualizar BD desde checklist en el foro de PHP en Foros del Web. Buenas noches, tengo algún problemilla con la actualización de una base de datos en los que le paso los valores mediante un checklist: En la ...
  #1 (permalink)  
Antiguo 07/01/2019, 15:57
 
Fecha de Ingreso: junio-2011
Mensajes: 148
Antigüedad: 7 años, 6 meses
Puntos: 2
actualizar BD desde checklist

Buenas noches, tengo algún problemilla con la actualización de una base de datos en los que le paso los valores mediante un checklist:
En la BD tengo una tabla que se llama prefijos_perfiles con estas columnas:
ID, Usuario, Perfil, Permiso, Ver, Crear, Modificar, Borrar. Con esta tabla controlo los permisos que tienen los usuarios según el tipo de usuario que es.
Tengo esto:
Código PHP:
<form class="form-horizontal" action="permisos_perfiles/modificarPermisosPerfiles.php" method="POST">
<table class="table table-bordered mb-0 ">
<?php
$sentencia
="SELECT * FROM permisos_perfiles WHERE idusuario IN (SELECT idUsuario FROM usuarios WHERE idEmpresa='".$_SESSION['idEmpresaElegida'] ."') "
$resultado $conexion->query($sentencia) or die (mysqli_error($conexion));
while(
$filas=$resultado->fetch_array())
{
//Creamos las variables para poner si está activo o no el checkbox
$checkedVer $filas['ver'] == '1' 'checked' '';
echo 
"<tr>";
echo 
"<td>";
?>
<input type="text" name="id[]" value="<?php echo $filas['idPermisos_Perfiles']; ?>" >
<?php
echo "</td>";
//Ponemos un checkbox en función de lo que está activado o desactivado en la BD
echo "<td>";?> <input type="checkbox" name="activo[]" value="<?php echo $filas['activo']; ?><?php echo $checkedActivo?>  >
<?php
echo "</td>";
 echo 
"</tr>";
}
?>
</table>
<button class="btn sa-btn-primary" type="submit"><i class="fa fa-save"></i>Modificar Permisos Perfiles</button>
</form>
Y ahora en el archivo modificarPermisosPerfiles.php tengo esto:
Código PHP:
<?php

    
include '../conexion.php';
    for (
$i 0$i count($_POST['activo']); $i++) {
        if ((
$_POST['activo'][$i])==false) {
            
$_POST['activo'][$i] = '0';
            echo 
$_POST['id'][$i];
            echo 
$_POST['activo'][$i];
            echo 
'<script>';
                echo 
'alert("bbbbb");';
            echo 
'</script>';
        }
        else{
            
$_POST['activo'][$i] = '1';    
        }    

        
$sentecia="UPDATE permisos_perfiles SET activo='{$_POST['activo'][$i]}' WHERE idPermisos_Perfiles='{$_POST['id'][$i]}' ";

        
$conexion->query($sentecia) or die ("Error al actualizar datos de permisos perfiles: ".mysqli_error($conexion));
    }

    echo 
'<script>';
        echo 
'alert("Datos actualizados con exito!!");';
        echo 
'window.location.href="../inicio.php?cargar=PermisosPerfiles";';
    echo 
'</script>';
?>
No se me ha ocurrido otra forma de hacer el update por lo que hago un update por cada fila que tengo en la primera sentencia.
Tengo el alert("bbbbb") puesto apra ver si me entra en ese if pero no sé por qué pero no me entra.

A ver si podéis echarme una mano

Gracias y un saludo

PD: Edito comentando que entiendo que lo que mando es lo que está en la BD y no la interacción del check de si está o no marcado, y eso es precisamente lo que quiero saber

Última edición por elpre; 07/01/2019 a las 17:09 Razón: explicación
  #2 (permalink)  
Antiguo 08/01/2019, 14:28
 
Fecha de Ingreso: junio-2011
Mensajes: 148
Antigüedad: 7 años, 6 meses
Puntos: 2
Respuesta: actualizar BD desde checklist

REspondo comentando que en la BD la tabla "activo" es un varchar por lo que lo que hay ahora puesto de false, no vale. He puesto en el if un "isset" pero sigue sin funcionarme
  #3 (permalink)  
Antiguo 09/01/2019, 03:31
 
Fecha de Ingreso: junio-2011
Mensajes: 148
Antigüedad: 7 años, 6 meses
Puntos: 2
Respuesta: actualizar BD desde checklist

Voy a realizar un javascript en el que al hacer onclick pues cambie el valor que tiene y así mando el valor nuevo, porque creo que no me reconoce precisamente por eso.
Pensaba que funcionaba igual que el combobox que detecta lo que has seleccionado
  #4 (permalink)  
Antiguo 09/01/2019, 08:36
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: actualizar BD desde checklist

bueno si son solo esos 4 permisos no creo que haya problemas con tu metodo, pero si algún día requieres anexar más permisos en una app administrativa mayor, tendrás problemas creandote una tabla con muchas columnas.

Yo prefiero guardar los permisos en un json en un solo campo, el cual luego puedo almacenar en forma de array en alguna variable de sesion y consultarla cuando requiera validar un determinado permiso.

Lo Digo porque hay casos en lso que por ejemplo, hay hasta 100 permisos en una app como accesos a determinadas funciones o módulos de la app como una que actualmente estoy realizando.
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 09/01/2019, 10:58
 
Fecha de Ingreso: junio-2011
Mensajes: 148
Antigüedad: 7 años, 6 meses
Puntos: 2
Respuesta: actualizar BD desde checklist

Cita:
Iniciado por xfxstudios Ver Mensaje
bueno si son solo esos 4 permisos no creo que haya problemas con tu metodo, pero si algún día requieres anexar más permisos en una app administrativa mayor, tendrás problemas creandote una tabla con muchas columnas.

Yo prefiero guardar los permisos en un json en un solo campo, el cual luego puedo almacenar en forma de array en alguna variable de sesion y consultarla cuando requiera validar un determinado permiso.

Lo Digo porque hay casos en lso que por ejemplo, hay hasta 100 permisos en una app como accesos a determinadas funciones o módulos de la app como una que actualmente estoy realizando.
Qué tipo de permisos puede haber más???
quiero decir que a parte de ver, crear, eliminar o modificar qué más se puede hacer????
Esto es curiosidad más que nada y para tenerlo en cuenta para el futuro.

Agradezco la respuesta. Comentar que lo que conlleva el título del hilo ya lo he conseguido.
Al final lo he realizado con javascript.
En el input he puesto esto:
Código HTML:
<input type="checkbox" id="ver<?php echo $filas['idPermisos_Perfiles']; ?>" name="ver<?php echo $filas['idPermisos_Perfiles']; ?>" value="<?php echo $filas['ver']; ?>" <?php echo $checkedVer; ?> onclick="valorCheckbox(<?php echo $filas['idPermisos_Perfiles']; ?>);"  >
este es el script
Código:
<script language="JavaScript" type="text/javascript">
function valorCheckboxVer(elemento) {
  var check=document.getElementById("ver"+elemento);
  if(check.value==1){
    check.value=0;
  }
  else{
    check.value=1;
  }
}
</script>
Y listo en el archivo de modificar.php realizo el update directamente y funciona perfectamente
  #6 (permalink)  
Antiguo 09/01/2019, 14:47
 
Fecha de Ingreso: abril-2006
Mensajes: 200
Antigüedad: 12 años, 8 meses
Puntos: 26
Respuesta: actualizar BD desde checklist

Cita:
Iniciado por elpre Ver Mensaje
Qué tipo de permisos puede haber más???
quiero decir que a parte de ver, crear, eliminar o modificar qué más se puede hacer????
Esto es curiosidad más que nada y para tenerlo en cuenta para el futuro.
Bueno yo te puedor esponder por experiencia, tienes los SISTEMAS ERP, donde se tiene Permisos, por Modulos, y por cada Modulo, tienes funciones y areas destinadas a Grupo de usuarios distintintos,
Tiene el area de CONTABILIDAD , donde existe un jefe y los Auxiliares, en una empresa que mueve Millones de Dolares al año, tienen varios empleados por AREA que ingresan reportes, facturas, Documentos, traspasos, para cada cual Existe un permiso , el gerente puede tener permisos para ver las Estadisticas de todas sus AREAS, Contabilidad,Produccion,Ventas, etc, los permisos pueden ser un infierno, si no se hacen adecuadamente desde un inicio, todo depende siempre de la Magnitud,

pero siempre se resume a lo mismo, LISTAR,VER,EDITAR,BORRAR;
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #7 (permalink)  
Antiguo 10/01/2019, 05:01
 
Fecha de Ingreso: junio-2011
Mensajes: 148
Antigüedad: 7 años, 6 meses
Puntos: 2
Respuesta: actualizar BD desde checklist

Cita:
Iniciado por tuadmin Ver Mensaje
Bueno yo te puedor esponder por experiencia, tienes los SISTEMAS ERP, donde se tiene Permisos, por Modulos, y por cada Modulo, tienes funciones y areas destinadas a Grupo de usuarios distintintos,
Tiene el area de CONTABILIDAD , donde existe un jefe y los Auxiliares, en una empresa que mueve Millones de Dolares al año, tienen varios empleados por AREA que ingresan reportes, facturas, Documentos, traspasos, para cada cual Existe un permiso , el gerente puede tener permisos para ver las Estadisticas de todas sus AREAS, Contabilidad,Produccion,Ventas, etc, los permisos pueden ser un infierno, si no se hacen adecuadamente desde un inicio, todo depende siempre de la Magnitud,

pero siempre se resume a lo mismo, LISTAR,VER,EDITAR,BORRAR;
A eso me refiero, yo creo que una cosa son los permisos y luego ya en los departamentos diferentes pues lo que pueda hacer.
Yo para esto lo he intentado hacer multiempresa, y hay un admin general y luego ya admin de cada empresa que tendrán sus respectivos empleados, aunque va a ser una aplicación bastante específica que va a servir sobre todo para llevar un recuento de dispositivos y lo que hacen.
  #8 (permalink)  
Antiguo 12/01/2019, 20:29
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: actualizar BD desde checklist

Cita:
Iniciado por elpre Ver Mensaje
A eso me refiero, yo creo que una cosa son los permisos y luego ya en los departamentos diferentes pues lo que pueda hacer.
Yo para esto lo he intentado hacer multiempresa, y hay un admin general y luego ya admin de cada empresa que tendrán sus respectivos empleados, aunque va a ser una aplicación bastante específica que va a servir sobre todo para llevar un recuento de dispositivos y lo que hacen.
En lo personal creo debes estar atento a como planificas la aplicación y sobre todo el tema de permisos que aunque no lo creas, va mas allá de solo leer, escribir, etc, piensa en el alcance y evolución de tu aplicación en función de su posible competencia actual y futura.

El tema de los permisos va asociado a cada tipo de aplicación a su manera, pero igual debe ser un sistema flexible que admita modificaciones sin alterar todo el entorno de la app, que en caso de estar en producción podría afectar su uso por parte de los clientes.

En todo caso, es tu proyecto y éxitos en este. Saludos
__________________
[email protected]
HITCEL



La zona horaria es GMT -6. Ahora son las 16:23.