Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, tenho um sistema para fazer onde vou criar uma area administrativa que contém varios módulos... ATENDIMENTO, FINANCEIRO, COMERCIAL ...
Tenho que fazer um módulo interno de Permissões, onde, no ato de cadastro de cada usuário, ou listo quais os modulos que ele poderá ter acesso ou não.
Só que eu já vi isso sendo cadastrado no banco da seguinte forma:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.facefilmes.com.br/locacao/imagens/sql.jpg&key=bdfb616efd3f382958cdea8517a8725591915e5b7306a3a6f0e2ee32249e2abe" alt="sql.jpg" />
Ou seja, ele separa o campo permissao_modulos da seguinte forma acima. ID do módulo (vírgula) e as demais ID's.
Como manipular isso no momento na consulta/inserção/alteração/exclusão
Não amigo, o que eu quis dizer é como faço pra manipular um campo que tem conteúdo assim: 1, 2, 3, ...
Separados por vírgula.
Por exemplo, passo como parametro o número 2... Como que ele verifica no campo se tem ou não o número 2 ???
Como faço pra deletar isso, editar, excluir...
Não entendi o contexto das permissões, mas vamos ver o que vou escrever lhe dar alguma ideia...
Vamos dizer que o número 2 é acesso ao módulo de Excluir.
Você primeiramente vai resgatar esse campo de permissões, claro, e pode transformá-lo em um array.
$Modulo = 2;
$arrPermissoes = explode(',', $CampoResgatadoDoDB);
if(in_array($Modulo, $arrPermissoes)){
echo "Tem permissão";
}else{
echo "Não tem permissão";
}
[]'s
Sistema de níveis... É melhor que você faça com uma regra só, exemplo: campo nivel, suponhamos que seu valor seja 3, e o nivel 3 é o nível de administrador, você faria a função se ele pode exlcuir, adicionar, editar no PHP.
suponhamos que você tenha uma tabela que lista os registros, e ao lado os links de editar, excluir e adicionar, se seu nivel é 3 você poderia fazer tudo, mais se seu nível for 2, digamos que você não pode excluir dados, então é só fazer a rotina, se o nivel for maior que 2 você mostra o link para excluir, e na query de exclusão, depois do WHERE você sempre adiciona o AND campo_nivel = 3.
Entendeu ?
Na verdade pessoal, o que eu to com dúvida é em como manipular o campo permissões, onde tem as ID's das permissões separadas por vírgula.
Porém, eu consegui fazer a inserção/update, conforme código abaixo:
<?php foreach($arrayModulos AS $indice=>$valor){?>
<input type="checkbox" name="ckbModulos[]" class="ckb" value="<?=$valor["ID"]?>" />
<p class="ckb"><?=$valor["TITULO"]?></p>
<?php }?>
Depois o Insert/Update separando a ID com uma vírgula.
$update_modulos = implode(", ",$_POST['ckbModulos']);
AGORA, o que eu to penando aqui é para ele fazer a Consulta no BD e trazer checado as ID's correspondentes aos checkbox.
O Campo de exibição é o mesmo que acima:
<?php foreach($arrayModulos AS $indice=>$valor){?>
<input type="checkbox" name="ckbModulos[]" class="ckb" value="<?=$valor["ID"]?>" />
<p class="ckb"><?=$valor["TITULO"]?></p>
<?php }?>
O que eu tentei fazer é, pego a variável $modulos, que é a que puxa do banco de dados com as ID's, ex: 1, 2, 3...
E tento comparar com o <?=$valor["ID"]?> do foreach.
Só que esse <?=$valor["ID"]?> é um UNICO numero, já o $modulos são todos, ex: 1, 2, 3...
E agora?
Sua solução está na função IN do MySQL.
Exemplo:
select * from tabela where campo IN ('1','2','3');
Sacou ? não precisa manipular nada na hora da consulta. :thumbsup:
Cara, deu certo aqui, na verdade fiz uma gambiarra, mais rodou perfeitamente.
Solução:
<?php
//retira a virgula e cria um 'vetor'
$aux = explode(", ", $modulos);
$n=0;
?>
<span>Módulos</span>
<?php foreach($arrayModulos AS $indice=>$valor){?>
<input type="checkbox" name="ckbModulos[]" class="ckb" value="<?=$valor["ID"]?>"<?php if(($valor["ID"] == $aux[0]) || ($valor["ID"] == $aux[1]) || ($valor["ID"] == $aux[2]) || ($valor["ID"] == $aux[3]) || ($valor["ID"] == $aux[4]) || ($valor["ID"] == $aux[5]) || ($valor["ID"] == $aux[6]) || ($valor["ID"] == $aux[7]) || ($valor["ID"] == $aux[8]) || ($valor["ID"] == $aux[9])){?>
checked="checked" <?php }?> />
<p class="ckb"><?=$valor["TITULO"]?></p>
<?php
$n++;
}?>
>
Olá, tenho um sistema para fazer onde vou criar uma area administrativa que contém varios módulos... ATENDIMENTO, FINANCEIRO, COMERCIAL ...
Tenho que fazer um módulo interno de Permissões, onde, no ato de cadastro de cada usuário, ou listo quais os modulos que ele poderá ter acesso ou não.
Só que eu já vi isso sendo cadastrado no banco da seguinte forma:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.facefilmes.com.br/locacao/imagens/sql.jpg&key=bdfb616efd3f382958cdea8517a8725591915e5b7306a3a6f0e2ee32249e2abe" alt="sql.jpg" />
Ou seja, ele separa o campo permissao_modulos da seguinte forma acima. ID do módulo (vírgula) e as demais ID's.
Como manipular isso no momento na consulta/inserção/alteração/exclusão
Você pode usar a permissão na condição da query, ou mesmo utilizar IF'S
if($permissao_usuario = '1'){
//FAZ A QUERY DO BANCO DE DAODS
}else{