Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcosvn

Exibir dados da tabela estrangeira

Recommended Posts

Bom dia turma !

 

já procurei na internet e até encontrei muito artigo relacionado, mas ainda estou com muito dificuldade para exibir os dados da tabela principal (usuario) com a tabela (empresas - estrangeira)

 

o usuário do site, ao se cadastrar, vai inserir seus dados e a empresa em que trabalha. Em seguida, a página referente aquela empresa (ex: atento.php) deve exibir todos os usuários daquela empresa entenderam ?

 

 -  o nome do Banco de Dados "TrocaEmpresas"

a tabela é essa: 

UaAswtb.jpg

 

supondo que na tabela empresas esteja assim: 

id: 1

Nome: Atento

 

Considerando que preciso exibir apenas o "nome ", "sobrenome" , "email" e "Empresa", como faço para exibir todos os usuários cadastrados nessa empresa na página atento.php ?

 

encontrei muita coisa sobre INNER JOIN, mas não consigo de jeito nenhum fazer funcionar, eu não estou entendendo muito bem o funcionamento, agradeço a disposição dos que me ajudarem a esclarecer essa dificuldade.

 

um abraço, vlw

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, se entendi bem, você quer exibir também o nome da(s) empresa(s), certo?

 

vamos tentar assim:

1. observe as tabelas:

 

8ze4d4.jpg

 

2hces5l.jpg


perceba que:
- o "id" da empresa está reproduzido na coluna id_empresa da tabela usuarios,
conforme seu modelo (a coluna em Varchar é desnecessária);
- as 2 colunas (id da tabela empresas e id_empresa da tabela usuarios)
são do mesmo tipo;

2. selecione as colunas desejadas, as tabelas,
explique a relação entre elas (no exemplo, usando "on")
e limite sua consulta, pelo nome da empresa,
como você pediu:

 

213rhap.jpg

 

1 outra possibilidade:

mpzr7.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Issoo aiii, maravilha Fernando, muito obrigado pela força cara !!  mas antes de finalizarmos você pode me ajudar com mais uma situação ??

 

eu preciso exibir os dados na página atento.php, mas estou errando com o comando ECHO

 

eu coloquei o seguinte código o que me parecia o correto:

<?php 
$result_usuario = "SELECT usuarios.nome, usuarios.sobrenome, empresas.nome FROM
usuarios JOIN empresas ON usuarios.id_empresa=empresas.id_empresa WHERE empresas.nome='Atento'";

$resultado_usuario = mysqli_query($conn, $result_usuario);?>
        
<?php while($resultado = mysqli_fetch_assoc($resultado_usuario)){?>
<tr>
<td class="text-center"><?php echo $resultado["usuarios.nome"]; ?></td>
<td class="text-center"><?php echo $resultado["usuarios.sobrenome"]; ?></td>
<td class="text-center"><?php echo $resultado["empresa.nome"]; ?></td>
							
</tr>
<?php } ?>

imaginei que deveria Inserir o ECHO conforme o código acima mas obviamente ele retorna um erro, porém, quando eu escreve assim: 

 

<td class="text-center"><?php echo $resultado["nome"]; ?></td>
<td class="text-center"><?php echo $resultado["sobrenome"]; ?></td>
<td class="text-center"><?php echo $resultado["empresas"]; ?></td>

ele funciona ! mas de certo modo que nao consegui entender muito bem, pois ocorre o seguinte: 

 

v74XcVQ.jpg

 

Veja que <?php echo $resultado["nome"]; ?> Retorna o nome da empresa e não do usuario , enquando o sobrenome funciona.

 

me ajuda a resolver isso irmão !

 

mt obrigado 

um abraço

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

opas.. sim, ai da problema mesmo; cada coluna deve ter seu nome..

pesquise sobre "alias"; basicamente é 1 apelido que você vai usar na query e depois p/ exibir; ex:

$result_usuario = "SELECT usuarios.nome, usuarios.sobrenome,
empresas.nome nomeempresa FROM usuarios JOIN empresas
ON usuarios.id_empresa=empresas.id
WHERE empresas.nome='Supermercado x'";
(...)
echo $resultado["nomeempresa"];

tente ahe.. outro abraço

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por andreygsantos
      Pessoal, normalmente faço modelagem de banco de dados usando o CA ErWin, mas precisei utilizar a ferramenta de modelagem do MySQL Workbench 8.0 Community.
      O problema ocorre quando a ferramenta começa a "enfeitar o pavão" quando se trata de FK. Vou mostrar um exemplo básico:

      Temos aqui 3 tabelas representando condomínio, unidades e vagas. As vagas pertencem ao condomínio, assim como as unidades. As vagas podem pertencer a unidades diferentes no decorrer do tempo porque não são vagas fixas, portanto não posso pendurar vaga na unidade.
      Problema 1: FK recebe o nome da tabela origem automaticamente.
      Até aqui posso renomear o atributo ou alterar as configurações de modelagem.
       

      Atributos renomeados, temos o seguinte modelo representado acima. Agora vamos levar a PK da entidade UNIDADE para ser FK não identificação na entidade VAGA.
       

      E agora temos o Problema 2: a ferramenta não entende que o atributo CondomínioID já existe e cria novamente com o prefixo da entidade origem. Parece um problema besta e fácil de resolver apagando o atributo duplicado e mantendo apenas UnidadeID, mas ao sincronizar com o banco de dados, começam a surgir erros com índices.
      Abaixo mostro como fica a modelagem no ERWin sem qualquer interferência:
       

      Como podem ver, a modelagem fica perfeita. O ErWin entende que o atributo já existe na entidade e leva apenas o atributo que vai diferenciar para fazer o relacionamento.
       
      Vocês devem estar se perguntando por que eu não uso o ErWin então... Mas a versão do ErWin que tenho não suporta MySQL após a versão 5.x e uma licença nova dessa ferramenta vai me custar 1 rim, senão os 2... Teoricamente, o Workbench deveria fazer essa modelagem sem problemas, mas eu não conheço bem e talvez possa ser alguma configuração. Alguém teria uma luz?
      Obrigado.
       
    • Por phfmiranda
      Bom dia,
       
      Tenho um BD com 3 tabelas
       
      tb_cliente - Chave primaria id_cliente
      tb_dados - chave estrangeira id_cliente
      tb_crediario - chave estrangeira id_cliente
       
      O que acontece é que como já temos dados nas mesmas não estou conseguindo criar a chave estrangeira abaixo, tem alguma ideia de como criar a mesma sem alterar os dados??
       
      ALTER TABLE `tb_dados` ADD FOREIGN KEY (`id_cliente`) REFERENCES `tb_cliente`(`id_cliente`) ON DELETE CASCADE  
      Obrigado.
    • Por Hamilcar
      Bom dia a todos!
      Estou tentando fazer uma base de dados onde tenho 3 tabelas, usuario, requerimento e escala. Onde um usuario faz um requerimento e deste requerimento geraria uma escala.
      Gostaria de preparar a base de dados para que quando cadastrar um requerimento, esse requerimento só seja incluído se houver um usuario ligado a este requerimento, e quando cadastrar uma escala, esta seja ligada ao requerimento que a gerou, e quando for editar ou excluir, não exclua um requerimento sem excluir a escala.
      Tentei aqui um modelo com chave estrangeira, mas quando incluo um requerimento que não esteja vinculado a um usuario, dá um "warning" e inclue assim mesmo, e para excluir também faz da mesma forma. abaixo as tabelas.
       
      CREATE TABLE `usuario` (
        `nome_usuario` varchar(100) DEFAULT NULL,
        `id_usuario` int(11) NOT NULL,
        `telefone_usuario` varchar(20) DEFAULT NULL,
        `data_cadastro_usuario` datetime DEFAULT NULL,
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
       
      CREATE TABLE `requerimento` (
        `id_requerimento` int(11) NOT NULL,
        `data_requerimento` datetime NOT NULL,
        `status_requerimento` enum('0','1') NOT NULL DEFAULT '0',
        `id_usuario` int(11) NOT NULL
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
       
      CREATE TABLE `escala` (
        `id_escala` int(11) NOT NULL,
        `local_escala` varchar(100) NOT NULL,
        `horário_escala` varchar(100) NOT NULL,
        `data_escala` date NOT NULL,
        `id_requerimento` int(11) NOT NULL
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
       
      --
      -- Índices para tabela `escala`
      --
      ALTER TABLE `escala`
        ADD PRIMARY KEY (`id_escala`),
        ADD KEY `fk_requerimento_escala` (`id_requerimento`);
      --
      -- Índices para tabela `requerimento`
      --
      ALTER TABLE `requerimento`
        ADD PRIMARY KEY (`id_requerimento`),
        ADD KEY `fk_usuario_requerimento` (`id_usuario`);
      --
      -- Índices para tabela `usuarios`
      --
      ALTER TABLE `usuario`
        ADD PRIMARY KEY (`id_usuario`);
      COMMIT;
    • Por Ak_Ray
      Olá pessoal, estou com um problema relativamente simples! mas sou novo em banco de dados e php então não consegui resolver. Estou construindo um sistema de registro e login há um certo tempo, meu professor ainda não ensinou e não ensina muito bem então decidi aprender sozinho por tutoriais na internet ._. então achei um tutorial legal, segui todos os passos e está tudo funcionando! porém, agora quero exibir os dados registrados, porém não sei como fazer isso, quero exibir em específico o nome do usuário. Lembrando que sou novo nesse assunto então desconsiderem minha maneira de programar kkk
       
      ================================================================================================================================
      Código php:
      <?php
      class Usuario
      {
          private $pdo;
          public $msgErro = "";
          public function conectar($nome, $host, $usuario, $senha)
          {
              global $pdo;
              global $msgErro;
              try {
              $pdo = new PDO("mysql:dbname=".$nome.";host=".$host,$usuario,$senha);    
              } catch (PDOException $e) {
                  $msgErro = $e->getMessage(); 
              }
          return $conectar;    
          }
          public function cadastrar($nome, $telefone, $email, $senha)
          {
              global $pdo;
              //verificar se já existe email cadastrado 
              $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e");
              $sql->bindValue(":e",$email);
              $sql->execute();
              if($sql->rowCount() > 0)
              {
                  return false; // ja esta cadastrado
              }
              else 
              {
                   //caso não, cadastrar 
                   $sql = $pdo->prepare("INSERT INTO usuarios (nome,telefone,email,senha) VALUES (:n, :t, :e, :s)");
                   $sql->bindValue(":n",$nome);
                   $sql->bindValue(":t",$telefone);
                   $sql->bindValue(":e",$email);
                   $sql->bindValue(":s",md5($senha));
                   $sql->execute();
                   return true; 
              }     
              
          }
          public function logar($email, $senha)
          {
              global $pdo;
              //verificar se  o email e senha estao cadastrados, se sim  
              $sql = $pdo->prepare("SELECT id_usuario from usuarios where email = :e and senha = :s");
              $sql->bindValue(":e",$email);
              $sql->bindValue(":s",md5($senha));
              $sql->execute();
              if($sql->rowCount() > 0)
              {
                 //entrar no sistema (sessao)
                 $dado = $sql->fetch();
                 session_start();
                 $_SESSION['id_usuario'] = $dado['id_usuario'];
                 return true; //logado com sucesso 
              }
              else
              {
                 return false;//nao foi possível logar
              }
              //entrar no sistema (sessao)
          }
      }
      ?>
       
      ================================================================================================================================
      Código html:
      <!-- verificação se está logado -->
      <?php 
      session_start(); 
      if(!isset($_SESSION['id_usuario']))

      header("location: index.php"); 
      exit; 
      }
      else{    
          include ('CLASSES/usuarios.php');
          require_once 'CLASSES/usuarios.php';
          $consulta = "SELECT nome from usuarios"; //aqui estava tentando puxar os dados por um tutorial aleaório

      }
      ?> 
      <html lang="pt-br">
      <head>
      <meta charset="utf-8">
      <link rel="stylesheet" href="CSS/estilouser.css" type="text/css" media="screen">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
      <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
      <title> Ak_Ray Projects </title>
      </head> <body bgcolor="#B3D1F7">

      <div class="navbar">
      <a href="#home">Meu</a>
      <a href="#news">Projetos</a>
      <a href="#newss">Novidades</a>
      <a href="sair.php" style="position: relative;left:1020px;">Sair</a>
      <!--<a href="sair.php">Sair</a>-->
      </div>
      <div class="branco"> 
      <h2>
        <center>
         <font color="#20A1C6">
          Criação e Desenvolvimento de Jogos<br>Ak_Ray
         </font>
        </center>
       </h2>
      <div class="titlee">
      <strong>The Amazing word of Bimo</strong>
      <div class="contt">
      <center><img src="IMG/FOTOJOGO.png" width="150" style="border-radius: 20px;"></center>
      <a href=\"bimo.netlify.com\"><img class="animacao" src="IMG/button.png" width="40"></a>
      </div>
      </div><br>
      The Amazing Word of Bimo foi um Jogo criado em 2019, inspirado na franquia de jogos de <strong>Super Mario World.</strong>
      O jogo está em versão de desenvolvimento e está sendo produzido e alterado
      constantemente. 
      </div>
      <?php  echo con;  ?> // exibindo só de teste

      </body></html>
       
      ================================================================================================================================
      Obs caso precisem: 
      nome do banco de dados:  projeto_login
      host: localhost
      usuario: root
      senha: ""
      tabela criada: usuarios
      tutoriais assistidos: 
       
    • Por tupinikin
      Bom dia senhores.
      Estou dando manutenção em uma banco de dados que não estava normalizado, sem chaves estrangeiras etc etc
      depois de cria-las, quando vou importar os dados, acontecem vários erros, pq tem chaves primárias que foram excluidas
      e no caso da estrangeira, fica ausente.
      No phpmyadmin tem a opção de não checar as chaves, mas não gostaria de manter dados que não existem.
       
      Qual a forma mais fácil de eu encontrar os registros que estão referenciados á um chave primária que não existe?
       
      grato
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.