Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte, estou fazendo um sisteminha que tem permissões de usuários, tais como, adicionar, editar e excluir interligados com módulos, como: noticias, categorias, galeria de fotos, etc..
Então me veio uma ideia na hora de mudar a permissão do usuário selecionado...
Tenho os seguintes dados no banco:
Tabela admin_modulos
id_modulo | modulo
1|Noticias
2|Categorias
3|Publicidades
4|Enquetes
Tabela admin_nivel_permissao
id_nivel_permissao | permissao
1|Adicionar
2|Editar
3|Excluir
Tabela admin_permissao
id_modulo | id_usuario | id_nivel_permissao
1|1|1
1|1|2
1|1|3
2|1|1
3|1|2
3|1|3
Bom, nesse caso ai de cima, o usuario com o ID = 1 teria no total de 6 permissões distribuidas nos 4 módulos existentes no sistema.
O resultado acima imprimia o seguinte:
<table cellspacing="1" cellpadding="0" bordercolor="#cccccc" border="1" bgcolor="#ffffff">
<tbody><tr>
<td><b>Módulo</b></td>
<td>Adicionar</td>
<td>Editar</td>
<td>Excluir</td>
</tr>
<tr>
<td>Notícias</td>
<td><input type="checkbox" value="1" name="addnews" checked="checked"/></td>
<td><input type="checkbox" value="2" name="editnews" checked="checked"/></td>
<td><input type="checkbox" value="3" name="excnews" checked="checked"/></td>
</tr>
<tr>
<td>Categorias</td>
<td><input type="checkbox" value="1" name="addcats" checked="checked"/></td>
<td><input type="checkbox" value="2" name="editcats"/></td>
<td><input type="checkbox" value="3" /></td>
</tr>
<tr>
<td>Publicidades</td>
<td><input type="checkbox" value="1" name="addpubs" /></td>
<td><input type="checkbox" value="2" name="editpubs" checked="checked"/></td>
<td><input type="checkbox" value="3" name="excpubs" checked="checked"/></td>
</tr>
<tr>
<td>Enquetes</td>
<td><input type="checkbox" value="1" name="addpubs" /></td>
<td><input type="checkbox" value="2" name="editpubs" /></td>
<td><input type="checkbox" value="3" name="excpubs" /></td>
</tr>
</tbody></table>
Então eu tentei fazer algumas instruções SQL mais não consegui fazer com que funcionasse da maneira acima, o modo iria servir tanto para ver as permissões que o usuario selecionado tinha, quanto para se quisesse alterar alguma permissão, adicionar ou remover.
Lembrando que a caixinha do form em formato checkbox iria sempre aparecer no design acima, apenas com as permissões marcadas que cada usuario tinha.
Se alguém puder me ajudar, eu tentei da seguinte maneira, mais não deu certo.
<?php
$temp = "-1";
$permissoes = $db -> consulta('SELECT id_usuario, A.modulo, B.id_nivel_permissao, GROUP_CONCAT(permissao) as permissoes
FROM admin_modulos as A
INNER JOIN admin_nivel_permissao as B
INNER JOIN admin_permissao as C
ON B.id_nivel_permissao = C.id_nivel_permissao
AND A.id_modulo = C.id_modulo
WHERE C.id_usuario = '.$temp.'
GROUP BY id_usuario, B.id_nivel_permissao, A.modulo');
?>
<form action="" method="get">
<table>
<tbody><tr>
<td><b>Permissões</b></td>
</tr>
</tbody></table>
<p>Usuário: <span class="status">Teste</span></p>
<table cellspacing="1" cellpadding="0" bordercolor="#cccccc" border="1" bgcolor="#ffffff">
<tbody><tr>
<td><b>Módulo</b></td>
<td>Adicionar</td>
<td>Editar</td>
<td>Excluir</td>
</tr>
<?
foreach($permissoes as $P){
echo '<tr>';
echo '<td>'.$P['modulo'].'</td>';
echo '<td><input type="checkbox" value="'.$P['id_nivel_permissao'].'" name="'.$P['permissoes'].'" checked="checked"</td>';
echo '<td><input type="checkbox" value="'.$P['id_nivel_permissao'].'" name="'.$P['permissoes'].'" checked="checked"</td>';
echo '<td><input type="checkbox" value="'.$P['id_nivel_permissao'].'" name="'.$P['permissoes'].'" checked="checked"</td>';
echo '<tr/>';
}
?>
</tbody></table>
<br/>
<input type="submit" value="Alterar"/>
</form>
Ah, e desculpem me se estou me passando com alguma besteira ou pedindo demais! =)
Juro que já tentei várias formas, dai resolvi recorrer ao fórum.
Desde já obrigado.
Carregando comentários...