Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据复选框的值在表中存储多个权限?_Php_Checkbox - Fatal编程技术网

Php 如何根据复选框的值在表中存储多个权限?

Php 如何根据复选框的值在表中存储多个权限?,php,checkbox,Php,Checkbox,我正在构建一个简单的系统来允许/禁止特定区域的权限,但我想知道将jquery.ajax()中的复选框值发送到PHP函数中并插入到表中的最佳方法是什么: 这不存在问题,只是我想知道一种方法,可以插入表表\u perfiles\u permisos中每个区域中每个复选框的值,而不必为每个复选框创建变量并插入!使用foreach之类的动态工具 HTML <form> <div id="permisosPerfiles"> <div id

我正在构建一个简单的系统来允许/禁止特定区域的权限,但我想知道将
jquery.ajax()
中的复选框值发送到PHP函数中并插入到表中的最佳方法是什么:


这不存在问题,只是我想知道一种方法,可以插入表
表\u perfiles\u permisos
中每个区域中每个复选框的值,而不必为每个复选框创建变量并插入!使用foreach之类的动态工具

HTML

    <form> 
    <div id="permisosPerfiles">
        <div id="leftPermisos">
        <p>
        <h4>Usuarios</h4>
        <label for="pCrearUsuario">Crear</label>
        <input id="pCrearUsuario" name="permUsuarios[]" value="CrearU" type="checkbox" />
        <label for="pBuscarUsuario">Buscar</label>
        <input id="pBuscarUsuario" name="permUsuarios[]" value="BuscarU" type="checkbox"/>
        <label for="pModificarUsuario">Modificar</label>
        <input id="pModificarUsuario" name="permUsuarios[]" value="ModificarU" type="checkbox"/>
        <label for="pEliminarUsuario">Eliminar</label>
        <input id="pEliminarUsuario" name="permUsuarios[]" value="EliminarU" type="checkbox"/>
        </p>

        <p>
        <h4>Clientes</h4>
        <label for="pCrearCliente">Crear</label>
        <input id="pCrearCliente" name="permClientes[]" value="CrearC" type="checkbox"/>
        <label for="pBuscarCliente">Buscar</label>
        <input id="pBuscarCliente" name="permClientes[]" value="BuscarC" type="checkbox"/>
        <label for="pModificarCliente">Modificar</label>
        <input id="pModificarCliente" name="permClientes[]" value="ModificarC" type="checkbox"/>
        <label for="pEliminarCliente">Eliminar</label>
        <input id="pEliminarCliente" name="permClientes[]" value="EliminarC" type="checkbox"/>
        </p>
        <p>
        <h4>Marca, Producto Subproducto</h4>
        <label for="pCrearMPS">Crear</label>
        <input id="pCrearMPS" name="permMPS[]" value="CrearMPS" type="checkbox"/>
        <label for="pBuscarMPS">Buscar</label>
        <input id="pBuscarMPS" name="permMPS[]" value="BuscarMPS" type="checkbox"/>
        <label for="pModificarMPS">Modificar</label>
        <input id="pModificarMPS" name="permMPS[]" value="ModificarMPS" type="checkbox"/>
        <label for="pEliminarMPS">Eliminar</label>
        <input id="pEliminarMPS" name="permMPS[]" value="EliminarMPS" type="checkbox"/>
        </p>
        </div>

        <div id="rightPermisos">
        <p>
        <h4>Póliza</h4>
        <label for="pCrearPoliza">Crear</label>
        <input id="pCrearPoliza" name="permPoliza[]" value="CrearP" type="checkbox"/>
        <label for="pBuscarPoliza">Buscar</label>
        <input id="pBuscarPoliza" name="permPoliza[]" value="BuscarP" type="checkbox"/>
        <label for="pModificarPoliza">Modificar</label>
        <input id="pModificarPoliza" name="permPoliza[]" value="ModificarP" type="checkbox"/>
        <label for="pEliminarPoliza">Eliminar</label>
        <input id="pEliminarPoliza" name="permPoliza[]" value="EliminarP" type="checkbox"/>
        </p>
        <p>
        <h4>Servicio</h4>
        <label for="pCrearServicio">Crear</label>
        <input id="pCrearServicio" name="permServicio[]" value="CrearS" type="checkbox"/>
        <label for="pBuscarServicio">Buscar</label>
        <input id="pBuscarServicio" name="permServicio[]" value="BuscarS" type="checkbox"/>
        <label for="pModificarServicio">Modificar</label>
        <input id="pModificarServicio" name="permServicio[]" value="ModificarS" type="checkbox"/>
        <label for="pEliminarServicio">Eliminar</label>
        <input id="pEliminarServicio" name="permServicio[]" value="EliminarS" type="checkbox"/>
        </p>
        </div>
    </div>
</form>
存储的数据也应如此

table_perfiles
*id   *nombre   *descripcion
1      NameOne    DescOne
2      NameTwo    DescTwo

table_perfiles_permisos
*id_perfil *area_permiso *buscar *crear *eliminar *modificar 
    1            1          0      1         1        1
    1            2          0      0         1        0
    2            1          1      1         1        1


table_areas_permisos
*id *nombre
1    usuarios
2    clientes
3    mps
4    poliza
5    servicio
e、 g.如果选中复选框,则每个区域中的每个复选框将存储1,否则将为0


我希望我已经解释得够多了。

与其将每个权限类型存储在单独的数据库列中,不如将其设置为二进制数,并将整个权限集存储为整数。通过这种方式,您可以随时添加新的权限类型,而无需修改数据库

例如,如果按如下方式定义权限类型常量:

define('PERMISSION_CREATE', bindec('0001'));
define('PERMISSION_SEARCH', bindec('0010'));
define('PERMISSION_EDIT',   bindec('0100'));
define('PERMISSION_DELETE', bindec('1000'));
然后可以将它们与按位OR运算符组合:

$permissions_set = (PERMISSION_CREATE | PERMISSION_SEARCH);
这等于0011(二进制)或3,这是可以存储在数据库中的数字

要检查特定权限是否为“开”,请使用按位和:

if( ($permissions_set & PERMISSION_CREATE) === true ) {
    // create is on
}

对不起,怎么了?看起来您已经对此进行了排序,到底是什么不起作用?不存在问题,只是我想知道一种方法,可以插入表中每个区域的每个复选框的值,而无需为每个复选框创建变量并插入!一些用foreach的第纳尔语什么的!哦,对了,我明白你的意思了。我会在HTML表单中创建一个大的2d数组,所以你只需要迭代一个变量,你可以动态地修改它。因此,您可以将其更改为类似于
的内容,然后只需循环
$\u POST['perm']
,然后可以循环每个子项以获得每个区域的权限。我不确定我是否解释得很好……我认为它会起作用,不知道谁能做到这一点:name=“perm[Users][]”,但当我在jquery中使用这个名称时,它会是什么样子?这通常是$('forminput[name=user]:checked')……这是一个有趣的问题。也许最好的办法是为所有输入指定一个特定的类,并使用该类在jQ中进行选择:
$('form input.myClassName:checked')
-但我承认这确实会使该元素变得更加困难。这是设置权限的好方法,但我使用的是php会话,然后当用户登录时,他们的许可证将根据您所在的区域加载,允许或拒绝访问权限集。。。那么,你的例子是否适用于此?
if( ($permissions_set & PERMISSION_CREATE) === true ) {
    // create is on
}