Jump to content


Photo

Menu Php Com Banco De Dados


  • Faça o login para participar
1 reply to this topic

#1 ADE5

ADE5

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:RS

Posted 30/11/2010, 09:42

Olá galera,
Estou participando da construção de um sistema que possui vários tipos de usuários, sendo que terei que identificar o usuário na hora do login através do código do login deste usuário (isto tá tranquilo, fiz com sessões). Tenho uma tabela com as permissões que este usuário possui, como tipos de operações que ele tem acesso (cadastros, consultas, liberações etc..).
Este sistema terá um menu lateral com os acessos que este usuário tem (carregado na hora do login, verificando as permissões de acesso na tabela)
Bom meu problema é o seguinte:
Não faço a minima idéia como faço o carregamento deste menu de forma que sejam carregados apenas os menus e submenus que o usuário tem acesso.
Se alguem tiver alguma idéia de como construir isso, ou algum link que me possa ser útil.
Desde já agradeço!

Tentei fazer isso de uma forma que acho não ser a forma correta, pois manjo pouco de PHP.
Faço uma consulta no BD (codigo_formulario_tipo serão os itens do menu e codigo_formulario serão os submenus)
Chamo o menu com include na página.

menu.php
<?php

$consulta = pg_query("SELECT f.codigo_formulario_tipo,f.codigo_formulario, lfl.codigo_formulario,lfl.codigo_login
FROM formulario f
INNER JOIN libera_formulario_login lfl
ON lfl.codigo_formulario = f.codigo_formulario AND lfl.codigo_login = '{$_SESSION['codigo_login']}' ORDER BY f.codigo_formulario ASC");

$conta = pg_num_rows($consulta);
$liberacao = false;
$cadastro = false;
if($conta!=''){ //acrescento o cabeçalho do menu
echo "<ul id=\"DHTMLSuite_tree2\" class=\"DHTMLSuite_tree\">";

while($y = pg_fetch_array($consulta)){
$cft = array($y['codigo_formulario_tipo']); //estes serão os menus
$cf = array($y['codigo_formulario']); //estes serão os submenus

foreach ($cft as $codigo_f_t) {
if($codigo_f_t == '4'){ //se o usuario tiver liberação para este tipo de formulário
if ($liberacao == false){ //evita que o cabeçalho seja carregado toda vez que fizer o loop
$liberacao = true;
echo"<li id=\"node1\" noDrag=\"true\" noSiblings=\"true\" ><a href=\"#\">Administra&ccedil;&atilde;o</a>
<ul>";
}

foreach ($cf as $codigo_f){ //verifica os submenus para ver se possui liberação

if ($codigo_f == '2'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece19\">Cadastro do Tipo de usuário</a></li>";
}

if ($codigo_f == '3'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece18\">Cadastro de login</a></li>";
}
if ($codigo_f == '21'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece20\">Liberação de Formulário</a></li>";
}

}

}

}


foreach ($cft as $codigo_f_t) { //verifica o próximo item do menu
if($codigo_f_t == '1'){
if ($cadastro == false){
$cadastro = true;
echo"<li id=\"node1\" noDrag=\"true\" noSiblings=\"true\" ><a href=\"#\">Cadastro</a>
<ul>";
}
foreach ($cf as $codigo_f){

if ($codigo_f == '1'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece1\">Técnico</a></li>";
}
if ($codigo_f == '4'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece2\">Qualificação do Técnico</a></li>";
}
if ($codigo_f == '5'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece3\">Serviço do Técnico</a></li>";
}
if ($codigo_f == '6'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece17\">Tipo de Serviço</a></li>";
}
if ($codigo_f == '7'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece13\">Veículo</a></li>";
}
if ($codigo_f == '8'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece14\">Tipo de Veículo</a></li>";
}
if ($codigo_f == '10'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece4\">Unidade</a></li>";
}
if ($codigo_f == '11'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece5\">Produtor</a></li>";
}
if ($codigo_f == '12'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece6\">Propriedade</a></li>";
}
if ($codigo_f == '13'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece7\">Localidade</a></li>";
}
if ($codigo_f == '14'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece8\">Estrada</a></li>";
}
if ($codigo_f == '15'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece15\">Tipo de Estrada</a></li>";
}
if ($codigo_f == '16'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece9\">Talhão</a></li>";
}
if ($codigo_f == '17'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece16\">Propriedade do Talhão</a></li>";
}
if ($codigo_f == '18'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece10\">Cultura</a></li>";
}
if ($codigo_f == '19'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece11\">Variedade</a></li>";
}
if ($codigo_f == '20'){
echo"<li id=\"node2\"><a style=\"cursor:pointer\" id=\"aparece12\">Safra</a></li>";
}

} //fim foreach ($cf as $codigo_f)

echo"</ul></li>";

} // fim do if($codigo_f_t == '1'){

} //fim do foreach"$codigo_f_t"

} //fim do while

} //fim do if
?>

Isso é uma tentativa, sei que pode ser uma loucura, mas o problema é que não sei qual a forma correta de construir esse tipo de consulta.
Aberto as críticas e comentários.
Obrigado!

#2 Leonardo Garcia

Leonardo Garcia

    Normal

  • Usuários
  • 110 posts
  • Sexo:Masculino
  • Localidade:Londrina Paraná

Posted 18/01/2011, 18:40

De uma olhada no site OGordo.com //Um blog de peso

procure por menu infinito; deve lhe ajudar.
Eu podia tá matando, roubando ou me prostituindo. Mas só quero um ponto.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq