Foros del Web » Programando para Internet » PHP »

como hacer para cuando deseleccionen un checkbox este elimine el campo

Estas en el tema de como hacer para cuando deseleccionen un checkbox este elimine el campo en el foro de PHP en Foros del Web. Hola buenas tardes, tengo un listado de permisos de usuario con checkbox, inserto al usuario y selecciono a que pagina puede entrar este usuario, despues ...
  #1 (permalink)  
Antiguo 13/01/2012, 11:46
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
como hacer para cuando deseleccionen un checkbox este elimine el campo

Hola buenas tardes,

tengo un listado de permisos de usuario con checkbox, inserto al usuario y selecciono a que pagina puede entrar este usuario, despues al modificar traigo todo los campos y dejo marcado o chequeado los que fueron seleccionado al insertar, aca va mi consulta:

como hago para Actualizar estos checkbox, ya que al seleccionar un permiso nuevo el sistema deberia insertar este registro no actualizar y al deseleccioanr uno ya seleccionado debe eliminar este registro de la BD y esto no se como hacerlo.


Gracias de antemano.
  #2 (permalink)  
Antiguo 13/01/2012, 12:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: como hacer para cuando deseleccionen un checkbox este elimine el campo

¿Insertar y eliminar para el cambio de permisos? yo creo que sería mejor unir los permisos separando por algún caracter y guardar (actualizar) un solo campo en la bd.

Aunque de poder, se puede hacer lo que quieres, con simples consultas, pero necesitarías indicar algo de código y de tu tabla de permisos, de lo contrario sólo te puedo decir:

Cuando indiquen los permisos, verificas que no exista el permiso para la persona en la bd, si no existe lo insertas. Si el permiso se quita, verificas si existe en la bd, si existe lo eliminas.
  #3 (permalink)  
Antiguo 15/01/2012, 14:53
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: como hacer para cuando deseleccionen un checkbox este elimine el campo

hola como haces eso de comparar a una base de datos si existe lo eliminas y si no existe lo agregas. te muestro el codigo que tengo para insertar en la base de datos los permisos a los usuarios, antes te comento que estos permisos son para que entren a cada modulo de un menu determinado:

codigo de insertar:
Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['bt_agregar']))
  3. {
  4. for ($j = 0; $j < count($_POST['id_modulo']); $j++)
  5.                 {
  6.                     $sql_permisos="INSERT INTO usuario_modulo_empresa"
  7.                     ."(id_usuario,id_modulo, id_empresa) VALUES"
  8.                     ."('".$_POST['id_usuario']."','".$_POST['id_modulo'][$j]."','".$_POST['id_empresa']."')";
  9.                     conectarDB();
  10.                     echo nl2br($sql_permisos);
  11.                     mysql_query($sql_permisos)
  12.                     or die ("Modulos acceso: ".mysql_error());
  13.                 }
  14. }
  15. /****************
  16. aca muestro todos los modulos del menu para el cual el usuario tendra permisos de ver
  17. ******************/
  18. <?
  19. $sql="SELECT * FROM submenu";
  20. conectarDB();
  21. $query=mysql_query($sql) or die("error al mostrar los submenus:".mysql_error());
  22.  
  23.         while($m=mysql_fetch_array($query))
  24.          {//$i=$i+1;
  25.           echo "<tr><td id=\"ckecked\"><b>".$m['nombre_item']."</b><br>";
  26.  
  27.          // echo "<input type=\"checkbox\" class=\"check_todos[$i]\">Todos los Permisos<br>";
  28.            //$i++;                      
  29.            $sql_item="select id_modulo,nombre_modulo from menu_modulos where id_item='$m[id_item]'";
  30.            //echo nl2br($sql_item);
  31.             $query_i=mysql_query($sql_item) or die("error al mostrar los Item:".mysql_error());
  32.             while($item=mysql_fetch_array($query_i))
  33.            {
  34.                 echo"<input type=\"checkbox\" class=\"ck\" name=\"id_modulo[]\" value=\"$item[id_modulo]\">".$item['nombre_modulo']."";
  35.  
  36.            }
  37.                 echo"</td>";
  38.         }
  39.         echo" </tr>";
  40.  
  41. ?>

esta es la tabla de permiso

Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuario_modulo_empresa` (
  2.   `id_usuario` varchar(50) NOT NULL,
  3.   `id_modulo` int(11) NOT NULL,
  4.   `id_empresa` int(11) NOT NULL
  5. )

en esta inserto el id_usuario, id_modulo y la empresa , esto lo hice ya que el sistema tendra varias empresas, es un sistema que tendra multiples empresas del mismo dueño .

espero que me puedan ayudar gracias..
  #4 (permalink)  
Antiguo 16/01/2012, 14:01
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: como hacer para cuando deseleccionen un checkbox este elimine el campo

dejo el codigo para eliminar lo malo que al eliminar elimina todo los registros donde coinciden el usuario y empresa, es facil eliminar al seleccionar un checkbox pero no se como se hace que al deseleccionar que elimine el dato en la base de datos.

Código PHP:
Ver original
  1. <?php
  2.                 /*Muestro todas las empresas*/
  3.                 $sql_ver="SELECT * FROM empresas";
  4.                 //echo nl2br($sql_ver)."<br>";
  5.                 conectarDB();
  6.                 $query_ver=mysql_query($sql_ver) or die("Error al mostrar las empresas:".mysql_error());
  7.                 while($emp=mysql_fetch_array($query_ver))
  8.                 {
  9.                         /*Muestro los datos que estan seleccionados segun los registros de la base de datos*/
  10.                         $sql_em="SELECT empresas.id_empresa,nombre_empresa
  11.                        FROM empresas,usuario_empresa,usuario where
  12.                        usuario.id_usuario='1' AND usuario_empresa.id_empresa='$emp[id_empresa]'
  13.                        AND empresas.id_empresa=usuario_empresa.id_empresa AND usuario.id_usuario=usuario_empresa.id_usuario";
  14.                         //echo nl2br($sql_em)."<br>";
  15.                         conectarDB();
  16.                         $query=mysql_query($sql_em) or die("Error al mostrar las empresas:".mysql_error());
  17.                         if($consulta=mysql_fetch_array($query))
  18.                         {
  19.                  ?>
  20.  
  21.                         <input name="id_empresa[<?php $i?>]" class="ck5" type="checkbox" value="<?php echo $emp['id_empresa']?>" checked='cheked'>
  22.                         <?php echo ucfirst($emp['nombre_empresa']);
  23.                         /**
  24.                         aca intento eliminar por donde coincida el Usuario y la Empresa, pero al deseleccionar me elimina
  25.                         todos los registros que coincidan el usuario y contrase&ntilde:a
  26.                         **/
  27.                         /*$sql_eliminar="DELETE FROM usuario_empresa WHERE id_empresa='$consulta[id_empresa]' AND id_usuario='1'";
  28.                         $query_eli=mysql_query($sql_eliminar) or die("Error al eliminar las empresas:".mysql_error());
  29.                         echo nl2br($sql_eliminar)."<br>";*/
  30.                         }
  31.                         else
  32.                         {
  33.         ?>
  34.                         <input name="id_empresa[<?php $i?>]" class="ck5" type="checkbox" value="<?php echo $emp['id_empresa']?>">
  35.                         <?php echo ucfirst($emp['nombre_empresa']);
  36.                         ?>
  37.         <?
  38.                         }
  39.  
  40.         }
  41.         ?>

Etiquetas: checkbox, registro, usuarios, campos
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 22:34.