Jump to content
will_chido

Dificuldade em realizar consulta em duas tabelas bd

Recommended Posts

Bom dia a todos sou novo aqui encontrei um problema ao tentar realizar uma consulta em duas tabelas bd, para voltar resultado impresso na tela, ja tentei algumas formas li alguns tópicos mas sem sucesso tentei o uso de inner join talvez ou quase certo eu esteja fazendo errado se alguem puder me ajudar segue o pedaço do meu codigo, preciso incluir a pesquisa tambem na tabela ( categorias)

 

 <?php
                            foreach ($vendas as $c) {

                                echo '<tr>';
                                echo '<td>' . $c->nomeCliente . '</td>';
                                echo '<td>' . $c->valorTotal. '</td>';
                                echo '<td>' . date('d/m/Y', strtotime($c->dataVenda)) . '</td>';
                                echo '<td>' . $c->nome. '</td>';
                                echo '</tr>';
                            }
                            ?>

Share this post


Link to post
Share on other sites

Poderia postar as tabelas a serem utilizadas?

Qual a ligação entre as mesmas?

Share this post


Link to post
Share on other sites

<?php
                            foreach ($produtos as $p) {
                                echo '<tr>';
                                echo '<td>' . $p->descricao. '</td>';
                                echo '<td>' . $p->saida. '</td>';
                                echo '<td>' . $p->precoCompra . '</td>';
                                echo '<td>' . $p->precoVenda . '</td>';
                                echo '<td>' . $p->estoque. '</td>';
                                echo '</tr>';
                            }
                            ?>

Share this post


Link to post
Share on other sites

Segue exemplo:

 

SQLs

CREATE TABLE clientes (
	idCliente INT NOT NULL AUTO_INCREMENT,
	nomeCliente VARCHAR(100) NOT NULL,
	PRIMARY KEY (idCliente)
);
INSERT INTO clientes (nomeCliente) VALUES
('Hugo Silva'),
('Reinaldo Saraiva');

CREATE TABLE produtos (
	idProduto INT NOT NULL AUTO_INCREMENT,
	descricao VARCHAR(100) NOT NULL,
	quantidade INT NOT NULL,
	preco DECIMAL(6,2) NOT NULL,
	PRIMARY KEY (idProduto)
);
INSERT INTO produtos (descricao, quantidade, preco) VALUES
('Notebook Dell', 100, 3000),
('Celular Nokia', 1000, 10000);

CREATE TABLE vendas (
	idVenda INT NOT NULL AUTO_INCREMENT,
	idCliente INT NOT NULL,
	valorTotal DECIMAL(6,2) NOT NULL,
	dataVenda DATE NOT NULL,
	PRIMARY KEY(idVenda),
	FOREIGN KEY (idCliente) REFERENCES clientes (idCliente)
);
INSERT INTO vendas (idCliente, valorTotal, dataVenda) VALUES
(1, 90000, CURRENT_DATE),
(2, 90000, CURRENT_DATE);

CREATE TABLE itens_de_venda (
	idItem INT NOT NULL AUTO_INCREMENT,
	idVenda INT NOT NULL,
	idProduto INT NOT NULL,
	quantidadeItem INT NOT NULL,
	precoItem DECIMAL(6,2) NOT NULL,
	PRIMARY KEY(idItem),
	FOREIGN KEY (idVenda) REFERENCES vendas (idVenda),
	FOREIGN KEY (idProduto) REFERENCES produtos (idProduto)
);
INSERT INTO itens_de_venda (idVenda, idProduto, quantidadeItem, precoItem) VALUES
(1, 1, 1, 2000),
(1, 2, 10, 2000),
(2, 1, 1, 2000);

 

CÓDIGO PHP

<?php

# SIMPLE CONN
$pdo = new PDO ( 'mysql:host=localhost;dbname=sua_database', 'root', '' );
$pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

# OBTEM OS ITENS VENDIDOS
# NA VENDA COM ID = 1
$itens = $pdo->prepare ('
	SELECT
		*
	FROM
		vendas v
	INNER JOIN
		clientes c ON (c.idCliente = v.idCliente)
	INNER JOIN
		itens_de_venda iv ON (iv.idVenda = v.idVenda)
	INNER JOIN
		produtos p ON (iv.idProduto = p.idProduto)
	WHERE
		v.idVenda = 1
');
$itens->execute ();

# PEGA OS DADOS E MONTA
# TABELA
$getItens = $itens->fetchAll ( PDO::FETCH_OBJ );

echo "
	<table border=1>
		<thead>
			<tr>
				<th>ID da Venda</th>
				<th>Cliente</th>
				<th>Produto</th>
				<th>Preco do Produto</th>
				<th>Quantidade Comprada</th>
				<th>Data da Venda</th>
			</tr>
		</thead>

		<tbody>
";
	foreach ( $getItens as $key => $i ) {
		echo "
			<tr>
				<td>{$i->idVenda}</td>
				<td>{$i->nomeCliente}</td>
				<td>{$i->descricao}</td>
				<td>R$ {$i->precoItem}</td>
				<td>{$i->quantidadeItem} Unidades</td>
				<td>{$i->dataVenda}</td>
			</tr>
		";
	}
echo "
		</tbody>
	</table>
";

 

OBSERVAÇÕES

SQL e Código citados acima são apenas exemplos para guiar-lhe;

2º - Se suas tabelas não estiverem "conectadas" de algum modo, será

difícil conseguir "unir"  os dados presentes nas mesmas.

 

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 Alberto Nascimento
      Preciso que o nome do arquivo que foi salvo durante o registro de um formulário, ao ser exibido através de uma busca e mostrado em ECHO possa se tornar um link.
      Como consigo fazer isso?
       
      echo "<a href="http://www.meusite.com.br/app/".$rows_cursos['novonome'].";  
       
    • By Onaita
      Boa noite, preciso de uma ajuda com o código abaixo:
      - Dentro da variável '$dados' tenho uma array em que o id repete com datas diferentes, preciso descartar uma das duas arrays repetidas com o mesmo 'id', mantendo a de menor data, ou seja, o resultado final seria:
      "Array ( [0] => Array ( [id] => 12 [data] => 2020-07-02 ) , [1] => Array ( [id] => 13 [data] => 2020-06-10 ) ) "
      - já tentei de tudo um pouco a princípio estou trabalhando com a ideia de loop dentro de loop, para varrer e comparar, mas como vcs podem ver estou deixando passar alguma coisa;
      <?php
      $dados =     [array("id" =>12, "data"=>"2020-07-02"),
                  array("id" =>13, "data"=>"2020-06-10"),
                  array("id" =>13, "data"=>"2020-06-15"),
                  array("id" =>12, "data"=>"2020-05-12")];
      $total = count($dados);
      foreach($dados as $item){
          for($i=1; $i < $total; $i++){
              if($item['id'] == $dados[$i]['id']){
                  if(strtotime($item['data']) <= strtotime($dados[$i]['data'])){
                      unset($dados[$i]);
                      $dados = array_values($dados);
                      $total = count($dados);
                      
                  }    
              }    
          }    
      }
      print_r($dados);
      Array ( [0] => Array ( [id] => 12 [data] => 2020-07-02 ) ) //resultado
       
      Se alguém achar o erro, ou uma forma de resolver esse problema ficarei muito agradecido!
      Obrigado e Um grande abrs a todos!
    • By jribeirojr
      Olá pessoal boa tarde, gostaria de saber se conseguem me ajudar.
      Hoje tenho um sistema que contempla o site e uma área administrativa, tudo feito em Codigniter, mas que começou a ficar muito grande, devido as diversas funcionalidades e estava pensando em reestruturar, mas estou bem confuso como poderia estruturar, se criando um RESTFull e conectando tanto o site quanto o administrativo, usar php com um VUE, React, Node, etc.
      Fico imaginando o seguinte e gostaria da opinião de vcs:
      - criar um restfull através de uma url tipo api.dominio.com.br
      - criar as conexões do admin usando react ou vue onde o usuário acessaria pela url app.dominio.com.br
      - criar as conexões do site usando react ou vue onde o usuário acessaria pela url www.dominio.com.br
       
      O que acham? Fico com receio da quantidade de administração / controle que teria para poder atualizar, etc. Conseguiriam me dar uma luz?
       
      Lembrando que este sistema posso usar para diferentes clientes com o mesmo nicho de negócio, se alguém puder me ajudar agradeço e desculpe o email longo, eu hoje uso PHP, MySQL, Mustache, JQuery
       
      Obrigado
       
    • By Alberto Nascimento
      Estou tentando, mas não esta exibindo o registro...
       
      localizar.php
       
      <?php session_start(); $_SESSION["localizarfotografia"] = $_POST["codphoto"]; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>EXIBIR FOTOGRAFIA PELO CÓDIGO INTERNO</title> <style type="text/css"> <!-- .Style6 {font-size: 13px} .auto-style20 { text-align: center; } .auto-style22 { background-color: #FEB624; } .auto-style23 { font-family: Verdana, Geneva, Tahoma, sans-serif; font-size: xx-small; text-align: center; } .auto-style25 { background-color: #FFCC66; } .auto-style26 { font-size: x-small; } .auto-style27 { font-size: x-small; text-align: center; } .auto-style28 { text-align: center; background-color: #FEB624; } --> </style> </head> <body style="margin-top: 50"> <body onload="form1.login.focus();"> <form id="form1" name="form1" method="post" action="pesquisaragora.php"> <div class="auto-style20"> <table align="center" cellpadding="0" cellspacing="0" class="auto-style23" style="width: 500"> <tr> <td class="auto-style20"> &nbsp;</td> </tr> <tr> <td class="auto-style22"> &nbsp;</td> </tr> <tr> <td class="auto-style25" style="height: 41px">Informe o código da FOTOGRAFIA abaixo</td> </tr> <tr> <td class="auto-style25"> <table align="center" style="width: 450"> <tr> <td class="auto-style27"><span class="Style6"> <label> <input name="codphoto" type="text" id="codphoto" style="width: 305px; height: 83px;" /></label></span></td> </tr> <tr> <td class="auto-style26"><strong> </strong></td> </tr> <tr> <td class="auto-style20"><span class="Style6"> <label> <input type="submit" name="Submit" value="LOCALIZAR PHOTO" /></label></span></td> </tr> </table> </td> </tr> <tr> <td class="auto-style25">&nbsp;</td> </tr> <tr> <td class="auto-style28"> &nbsp;</td> </tr> </table> <br></div> </form> </body> </html>  
      pesquisarphoto.php
       
      <?php include("config.php"); $codphoto = $_POST['codphoto']; $sql_logar = "SELECT * FROM photos WHERE codphoto = '$codphoto'"; $exe_logar = mysql_query($sql_logar) or die (mysql_error()); $fet_logar = mysql_fetch_assoc($exe_logar); $num_logar = mysql_num_rows($exe_logar); $codphoto = $fet_logar['codphoto']; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; if ($num_logar == 0){ echo "Desculpe, mas a foto não foi localizada."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui e tente novamente.</a>"; } else{ session_start(); $_SESSION['codphoto'] = $codphoto; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; echo $exibir["codphoto"]; echo $exibir["nome"]; echo $exibir["cidade"]; echo $exibir["uf"]; } ?>  
       
       
       
       
       
       
       
       
    • By rogerblower
      o Google me avisou de dois erros no meu site;
       
      Clickable elements too close together
      Text too small to read
       
      Na verificação constatei que o erro é;
       
      Fatal error:  Call to undefined function db_connect() in
       
      O php não me mostra esse erro mesmo habilitando os erros no php ini os arquivos de conexão que estou usando são;
       
      ini.php
      <?php define('DB_HOST', 'localhost'); define('DB_USER', 'user'); define('DB_PASS', 'senha'); define('DB_NAME', 'banco'); ini_set('display_errors', true); error_reporting(E_ALL); require_once 'functions.php'; functions.php
       
      <?php function db_connect() { $pdo = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8', DB_USER, DB_PASS); return $pdo; } function make_hash($str) { return sha1(md5($str)); } function isLoggedIn() { if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in']!== true) { return false; } return true; } O erro esta nesta linha
      <?php $pdo = db_connect(); $sql = $pdo->prepare("SELECT * FROM servicos "); $sql->execute(); while($row=$sql->fetch(PDO::FETCH_ASSOC)){ echo'<a href="servicos.php?id='.$row['id'].'">'.$row['servico'].'</a>'; } Incluo a conexão com banco na header.php e nas demais páginas não aparece o erro
      realmente não sei o que pode estar acontecendo.
      se alguém pode me ajudar?
       
      Obrigado
       
×

Important Information

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