I'm a building a simple system to allow/disallow permissions in specific areas but I want to know what is the best way to send the values of checkboxes from jquery.ajax()
to process in a PHP function and insert in a table:
Doesn't exists a problem, just I want know a way to Insert the value of each checkbox from each Area in a table table_perfiles_permisos
without create a variable for each checkbox and insert! Some dynamic using foreach or something.
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>
jQuery to serialize form
formchecks = $(form).serialize();
$.ajax({
type : "POST",
url: "process.php",
data: formchecks,
success: function(response) {
if (response == "success") {
//actions if success
} else {
//actions if doesn't success
}
}
});
So should be the data stored
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
eg if checkbox is checked, will store 1 else will be 0 for each checkbox in each area
I hope I have explained enough.
Rather than storing each permission type in a separate database column, you can make it a binary number and store entire permission sets as integers. This way you can always add new permission types without having to modify your DB.
For instance, if you define permission type constants as follows:
define('PERMISSION_CREATE', bindec('0001'));
define('PERMISSION_SEARCH', bindec('0010'));
define('PERMISSION_EDIT', bindec('0100'));
define('PERMISSION_DELETE', bindec('1000'));
you can then combine them with bitwise OR operator:
$permissions_set = (PERMISSION_CREATE | PERMISSION_SEARCH);
this equals 0011 (binary) or 3, which is the number you can store in your DB.
To check if a specific permission is "on", use bitwise AND:
if( ($permissions_set & PERMISSION_CREATE) === true ) {
// create is on
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.