Jump to content
soaresra

Criando Menu intercambiando dados de 3 tabelas

Recommended Posts

Olá colegas, eu venho avançando a cada dia na programação em PHP mas eu travei em uma estrutura e queria a ajuda dos colegas mais experientes.

 

Eu tenho 3 tabelas:

Adm_Funcionarios_Usuarios - contem login e senha

# login,  senha
    jose,  1234

 

Sis_Setores: aonde tem os nomes dos módulos e os links dele. Ex. Administrativo, Financeiro, etc.

# linkNome          link

administrativo     administrativo.php

financeiro             financeiro.php

vendas                  vendas.php

 

Adm_Funcionarios_Usuarios_Acessos - contem login e módulos

# login,  autorizados
     jose,  administrativo, financeiro

 

Hoje eu só uso o menu carregando todas as opções

	$sql = "SELECT * FROM Sis_Setores WHERE linkNome = '$Sistema' AND situacao = 1;";

	$return = mysqli_query($conexao, $sql) or trigger_error(" Query falhou! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);
	while($LinhaMenu = mysqli_fetch_assoc($return))
	{
		echo '<a href="'.$LinhaMenu["link"].'" target="_self">'.$LinhaMenu["linkNome"]."</a>";
	}

O que eu estou tentando fazer é: (levando em consideração que eu já tenha as informações do usuário logado)

 

1 - Verifica quem é a pessoa logada / Já tenho isso pronto

2 - Verifica se a pessoa logada existe na tabela Adm_Funcionarios_Usuarios_Acessos no campo login / Já tenho isso pronto

 

Não estou conseguindo fazer

 

3 - Verifica na tabela Adm_Funcionarios_Usuarios_Acessos o campo autorizados os módulos que serão carregados

4 - Percorre a array com os valores, exemplo: administrativo, vendas

5 - Se existe na array a palavra administrativo que também existe no campo linkNome da tabela Sis_Setores

6 - Carrega no menu apenas os links que existem dentro da array.

 

O que eu tentei fazer sem sucesso (coisas de café com leite):

 

$sql = "SELECT autorizados FROM  Adm_Funcionarios_Usuarios_Acessos WHERE iduser = 1;";
$return = mysqli_query($conexao, $sql) or die(mysqli_error($conexao));
  
  if(!$result = mysqli_fetch_array($return))
  {
    echo "Deu Ruim no SQL dos Acessos";
  }
  else
  {
    $autorizados = $result["autorizados"];
    //echo $autorizados;

    foreach($autorizados as $valor)
      {
        $sql = "SELECT * FROM Sis_Setores WHERE linkNome = '$autorizados' AND situacao = 1;";
        $return  = mysqli_query($conexao, $sql) or trigger_error(" Query falhou! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);
        while($LinhaMenu = mysqli_fetch_assoc($LinksSubSistema))
        {
         echo '<a href="'.$LinhaMenu["link"].'" target="_self">'.$LinhaMenu["linkNome"]."</a>".$br;
        }     
      }
  }

O erro que dá é 

Warning: Invalid argument supplied for foreach() in testeArray.php on line 50 //Linha 50 -> foreach($autorizados as $valor)

 

Agradeço desde já aos colegas.

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Carlos Web Soluções Web
      Olá pessoal !!
      Estou desenvolvendo um menu em CSS, e eu gostaria de colocá-lo no CSS Responsive:
       
      @media screen and (max-width: 800px) {
      }
       
      O link do menu de como está atual se encontra em:
      MENU Link

      e o que eu desejo alcançar é:
      MENU RESPONSIVE

      Por favor me ajudem.....abraço !!
    • By rafalbino
      Fala pessoal! Tô com uma dúvida na versão mobile do meu menu.
      A versão desktop já está tudo ok, porém, quando acesso pelo mobile, ele aparece apenas um dos campos do menu e não ele totalmente.
       
      Segue o código:

      .menu{width: 100%;height: 50px;background-color: #fff; margin-top: -65px; }
      .menu ul{list-style: none;position: relative;float: right;}
      .menu ul li {width: 200px;float: left;}
      #menu2 {width: 130px;float: left;}
      #menu3 {width: 160px;float: left;}
      .menu ul li:last-child {width: 200px;float: left;}
      .menu i {vertical-align: middle; margin-right: 2px; margin-top: -4px;}
      .menu a{padding: 15px;display: block;text-decoration: none;text-align: center;background-color: #fff;color: #151e51; vertical-align: middle;  font-size: 16px;}
      .menu ul ul{position: absolute; margin-left: 50px; visibility: hidden; } /*Atacando a ul do submenu, escondendo os campos */
      .menu ul li:hover ul{visibility: visible;  }/*Atacando a ul do submenu, passando pela li interna, mostrando os campos ocultos*/
      .menu a:hover{background-color: #fff; font-weight: 500;}/*Alterando a cor da fonte quando o mouse passa por cima*/
      #primeiro{ border-radius: 7px 7px 0px 0px;}
      #ultimo{ border-radius: 0px 0px 7px 7px;}
      .menu ul ul li{float: none;width: 200px;  }/*Deixando as linhas do submenu na vertical*/
      .menu ul ul li:last-child {float: none; width: 200px;}/*Deixando as linhas do submenu na vertical*/
      .menu ul ul li a {background-color: #f1f1f1;border-radius: 0; text-align: left; margin-bottom: -20px; color: black;} /*Alterando a cor de fundo do submenu*/
      .menu ul ul li a:hover {background-color: #f1f1f1;color: black; } /*Alterando a cor de fundo do submenu*/
      .borda {border-radius: 0;}
      label[for="bt_menu"]{padding: 5px;background-color: #222;color: #fff;font-family: 'Arial';text-align: center;font-size: 30px;cursor: pointer;width: 50px;height: 50px; margin-top: -75px;}
      #bt_menu{display: none;}
      label[for="bt_menu"]{display: none;}
       
      Agora o código da versão mobile
       
      label[for="bt_menu"]{display: block;float: right; margin-top: -70px; background: #f35270;}
          #bt_menu:checked ~ .menu{margin-left: 0;}
          .menu{margin-top: 255px;margin-left: -110%;transition: all .9s;width: 100%; }
          .menu ul{float: none;}
          .menu ul li{width: 100%;float: none;}
          .menu ul li:last-child {width: 100%;float: none; margin-top: 55px;}    
          .menu ul ul{ /*Escondendo os subitens no modo mobile*/
              position: static;overflow: hidden;max-height: 0;transition: all .9s;}
          .menu ul li:hover ul{ /*mostrando os subitens no modo mobile*/
              height: auto;max-height: 900px;}
          .menu ul ul li{width: 100%}
          .menu ul ul li:last-child {width: 100%;}
       
       
    • By rafalbino
      Fala pessoal! Tô com uma dúvida na versão mobile do meu menu.
      A versão desktop já está tudo ok, porém, quando acesso pelo mobile, ele aparece apenas um dos campos do menu e não ele totalmente.
       
      Segue o código:

      .menu{width: 100%;height: 50px;background-color: #fff; margin-top: -65px; }
      .menu ul{list-style: none;position: relative;float: right;}
      .menu ul li {width: 200px;float: left;}
      #menu2 {width: 130px;float: left;}
      #menu3 {width: 160px;float: left;}
      .menu ul li:last-child {width: 200px;float: left;}
      .menu i {vertical-align: middle; margin-right: 2px; margin-top: -4px;}
      .menu a{padding: 15px;display: block;text-decoration: none;text-align: center;background-color: #fff;color: #151e51; vertical-align: middle;  font-size: 16px;}
      .menu ul ul{position: absolute; margin-left: 50px; visibility: hidden; } /*Atacando a ul do submenu, escondendo os campos */
      .menu ul li:hover ul{visibility: visible;  }/*Atacando a ul do submenu, passando pela li interna, mostrando os campos ocultos*/
      .menu a:hover{background-color: #fff; font-weight: 500;}/*Alterando a cor da fonte quando o mouse passa por cima*/
      #primeiro{ border-radius: 7px 7px 0px 0px;}
      #ultimo{ border-radius: 0px 0px 7px 7px;}
      .menu ul ul li{float: none;width: 200px;  }/*Deixando as linhas do submenu na vertical*/
      .menu ul ul li:last-child {float: none; width: 200px;}/*Deixando as linhas do submenu na vertical*/
      .menu ul ul li a {background-color: #f1f1f1;border-radius: 0; text-align: left; margin-bottom: -20px; color: black;} /*Alterando a cor de fundo do submenu*/
      .menu ul ul li a:hover {background-color: #f1f1f1;color: black; } /*Alterando a cor de fundo do submenu*/
      .borda {border-radius: 0;}
      label[for="bt_menu"]{padding: 5px;background-color: #222;color: #fff;font-family: 'Arial';text-align: center;font-size: 30px;cursor: pointer;width: 50px;height: 50px; margin-top: -75px;}
      #bt_menu{display: none;}
      label[for="bt_menu"]{display: none;}
       
      Agora o código da versão mobile
       
      label[for="bt_menu"]{display: block;float: right; margin-top: -70px; background: #f35270;}
          #bt_menu:checked ~ .menu{margin-left: 0;}
          .menu{margin-top: 255px;margin-left: -110%;transition: all .9s;width: 100%; }
          .menu ul{float: none;}
          .menu ul li{width: 100%;float: none;}
          .menu ul li:last-child {width: 100%;float: none; margin-top: 55px;}    
          .menu ul ul{ /*Escondendo os subitens no modo mobile*/
              position: static;overflow: hidden;max-height: 0;transition: all .9s;}
          .menu ul li:hover ul{ /*mostrando os subitens no modo mobile*/
              height: auto;max-height: 900px;}
          .menu ul ul li{width: 100%}
          .menu ul ul li:last-child {width: 100%;}
       
       
    • By Vinicius-Visanfe
      Ola tenho esses arquivos.
       
      // Esse arquivo usuarios.php tem a conexao e a parte de login e cadastro.
      ?php   class Usuario{   private $pdo;   //Construtor public function __construct($dbname, $host, $username, $password){ try { $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host, $username, $password); } catch (PDOException $e) { echo "Erro com BD: ".$e->getMessage(); }catch (Exception $e) { echo "Erro: ".$e->getMessage(); } }   //Cadastrar public function cadastrar($nome, $telefone, $email, $cpf, $bairro, $cidade, $senha){   //Antes de cadastrar verificar se ja esta cadastrado $cmd = $this->pdo->prepare("SELECT id from usuarios WHERE email = :e"); $cmd->bindValue(":e",$email); $cmd->execute(); if($cmd->rowCount() > 0) //Veio id { return false; }else // Não veio id { //Cadastrar $cmd = $this->pdo->prepare("INSERT INTO usuarios (nome, telefone, email, cpf, bairro, cidade, senha) values (:n, :t, :e, :c, :b, :d, :s)"); $cmd->bindValue(":n",$nome); $cmd->bindValue(":t",$telefone); $cmd->bindValue(":e",$email); $cmd->bindValue(":c",$cpf); $cmd->bindValue(":b",$bairro); $cmd->bindValue(":d",$cidade); $cmd->bindValue(":s",md5($senha)); $cmd->execute(); return true; }     }   //Logar public function entrar($email, $senha) { $cmd = $this->pdo->prepare("SELECT * from usuarios WHERE email = :e AND senha = :s"); $cmd->bindValue(":e",$email); $cmd->bindValue(":s",md5($senha)); $cmd->execute(); if($cmd->rowCount() > 0) //Se foi encontrado essa pessoa { $dados = $cmd->fetch();   if($dados['id'] == 1) { //Usuario ADM $_SESSION['id_master'] = 1; }else{ //Usuario Normal $_SESSION['id_usuario'] = $dados['id']; } return true; //Usuário encontrado }else{ return false; //Usuário não foi encontrado } }   } ?>   // Ja esse arquivo meu-perfil.php seria o Perfil de usuario   html lang="pt-br"> <head> <title>Meu perfil - Pé na Estrada</title>   <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="../css/style.css"> <link rel="stylesheet" href="../css/perfil.css">     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">   </head> <body> <header class="cabecalho"> <div class="container"> <div class="caixa-cabecalho"> <h1 class="logo"><img class="logo-pe" src="../images/logotipo-pne.png" width="50%"></h1> <button class="btn-menus"><a class="btns">Cadastrar <i class="fas fa-home"></i></button> <button class="btn-menul"><a class="btnl" href="">Sair <i class="fas fa-sign-out-alt"></i></i></a></button> </div> </div> </header> <main> <div class="container"> <div class="caixa-conteudo">   </div> </div> </main> <footer class="rodape"> <div class="container"> <div class="caixa-rodape"> <p class="titulo-rodape">Sobre</p><br> <a href="#" class="texto-rodape">Inicio</a> <a href="#" class="texto-rodape">Termos de Uso</a> <a href="#" class="texto-rodape">Pontos Turisticos</a> <a href="#" class="texto-rodape">Contato</a> </div> <div class="caixa-rodape" id="fale"> <p class="titulo-rodape">Fale Conosco</p><br> <p class="texto-rodape">(11) 98020-1329</p> <p class="texto-rodape">marketing@penaestrada.net.br</p> <P class="texto-rodape">contato@penaestrada.net.br</P> </div> <div class="caixa-links" id="redes"> <p class="titulo-rodape">Acesse nossos canais</p><br> <p class="texto-links"><i id="face" class="fab fa-facebook-f"></i> <i id="insta" class="fab fa-instagram"></i> <i id="twit" class="fab fa-twitter"></i> <i id="you" class="fab fa-youtube"></i></p> </div> <div class="caixa-rodape"> <p class="texto-rodape2">PAÚBA Criativa</p> </div> <div class="caixa-rodape"> <p class="texto-rodape2"> <i class="fas fa-credit-card" id="card"></i> Crédito/Débito <i class="fas fa-file-invoice-dollar" id="boleto"></i> Boleto </p> </div> <div class="caixa-rodape"> <p class="texto-rodape2"> Segurança <i class="fas fa-shield-alt" id="seguranca"></i> </p> </div> </div> <div class="caixa-reservados"> <p class="texto-reservados">PÉ NA ESTRADA © 2019 - Todos os direitos reservados</p> </div> </footer>   <!--Modal de Sign In--> <style> .modal-container{ width: 100vw; height: 100vh; background: rgba(0,0,0,.5); position: fixed; top: 0; left: 0; z-index: 2000; display: none; justify-content: center; align-items: center; } .modal-container.mostrar{ display: flex; } .modal{ background: #ffffff; width: 25%; min-width: 250px; padding: 20px; position: relative; border-radius: 8px; }   @keyframes modal{ from{ opacity: 0; transform: translate3d(0, -60px, 0); } to{ opacity: 1; transform: translate3d(0, 0, 0); } }   .mostrar.modal{ animation: modal .3s; }   .fechar{ position: absolute; font-size: 1.2em; top: -25px; right: -20px; width: 40px; height: 50px; border-radius: 50%; border: 2px solid #ffffff; background-color: #011936; color: #ffffff; cursor: pointer; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, .3); } .title{ font-weight: bold; color: #011936; } .form-sign{ display: grid; } .cx-form{ height: 40px; margin-top: 5px; border: 1px solid #a8dbff; border-radius: 7px; }   .cx-btn{ margin-top: 5px; width: 40%; height: 40px; background-color: #a8dbff; border: 1px solid #a8dbff; color: #011936; font-weight: bold; border-radius: 7px; }   </style> <div id="modal-signin" class="modal-container"> <div class="modal"> <button class="fechar"><i class="fas fa-times"></i></button> <h3 class="title">Cadastrar Propriedade</h3> <form class="form-sign" action="" method="post" enctype="multipart/forma-data"> <input class="cx-form" type="text" name="titulo" id="titulo" placeholder=" Titulo" maxlength="255" required> <input class="cx-form" type="text" name="endereco" id="endereco" placeholder=" Endereço" maxlength="255" required> <input class="cx-form" type="text" name="cep" id="cep" placeholder="CEP" maxlength="20" required> <input class="cx-form" type="text" name="bairro" id="bairro" placeholder=" Bairro" maxlength="60" required> <input class="cx-form" type="text" name="cidade" id="cidade" placeholder=" Cidade" maxlength="60" required> <input class="cx-form" type="text" name="estado" id="estado" placeholder=" Estado" maxlength="2" required> <input class="cx-form" type="text" name="info" id="info" placeholder=" informações" maxlength="600" required> <input class="cx-upload" type="file" name="images" id="images"> <input class="cx-btn" type="submit" value="CADASTRAR"> </form> </div> </div>   <script> function iniciaModal(modalId){ const modal = document.getElementById(modalId); if(modal) { modal.classList.add('mostrar'); modal.addEventListener('click', (e) => { if(e.target.id == modalId || e.target.className == 'fechar' || e.target.className == 'fas fa-times') { modal.classList.remove('mostrar'); } }); } }   const btn = document.querySelector('.btn-menus'); btn.addEventListener('click', () => iniciaModal('modal-signin'));   </script> </body> </html>   <!--PHP -->   <?php   if(isset($_POST['titulo'])){ $titulo = htmlentities(addslashes($_POST['titulo'])); $endereco = htmlentities(addslashes($_POST['endereco'])); $cep = htmlentities(addslashes($_POST['cep'])); $bairro = htmlentities(addslashes($_POST['bairro'])); $cidade = htmlentities(addslashes($_POST['cidade'])); $estado = htmlentities(addslashes($_POST['estado'])); $info = htmlentities(addslashes($_POST['info'])); $images = htmlentities(addslashes($_POST['images']));   if(!empty($titulo) && !empty($endereco) && !empty($cep) && !empty($bairro) && !empty($cidade) && !empty($estado) && !empty($info) && !empty($images)) { require_once '../classes/propriedades.php'; $us = new PDO("mysql:dbname=navarro7_usuarios;host=localhost", "navarro70", "Navarro0");   } } ?>   // E tenho esse código PHP na página login.php com campos de email e senha.   <?php     if(isset($_POST['email'])){   $email = htmlentities(addslashes($_POST['email'])); $senha = htmlentities(addslashes($_POST['senha'])); if(!empty($email) && !empty($senha)){ require_once 'classes/usuarios.php'; $us = new Usuario("navarro7_usuarios", "localhost", "navarro70", "Navarro0"); if($us->entrar($email, $senha)){ echo '<script>window.location.href = "/pages-adm/meu-perfil.php"</script>'; }else{ echo "Email e/ou senha estão incorretos!"; } }else{ echo "Preencha todos os campos!"; }   }   ?>  
      Alguém pode me ajudar nesse caso quero que quando o usuario usa a pagina login colocando o email e senha ela vai para a pagina meu-perfil.php mais que eu consiga fazer aparecer o nome dele na pagina.
       
    • By lukaizh
      Olá Galera,
       
      Estou iniciando um e-commerce pela Tray,e não entendo muito bem de css 
      eu gostaria de saber se tem como eu mudar o menu lateral esquerdo, para deixar ele na horizontal.
       
      e teria mais uma dúvida, se há alguma maneira de importar o site para o photoshop e depois pegar o css das camadas.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.