Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida com Tabelas e FK e select com 2 tabelas e soma de campos


Davidson_N

Pergunta

Boa Tarde Galera, estou na duvida na crianção de um Banco de Dados, eu pretendo fazer um projeto de uma loja,

e como eu não tenho muito conhecimento ainda.

Mas a Dúvida é o seguinte, obs. eu ainda não fiz nenhuma tabela pois a duvida está nela.

Eu preciso criar uma tabela de produto, onde vai conter somente a descrição do mesmo.

E a tabela de compra onde vai conter o código do produto(da tabela produto) a quantidade comprada e o valor.

Nisso eu vou ter uma tabela de estoque que tem que conter os produtos comprados e a quantidade total desse produto.

E também uma tabela de venda que vai conter o codigo do produto e quantidade vendida e o valor que foi vendido.

Minha dúvida é como eu vou fazer com que a tabela de estoque vai pegar a quantidade da tabela de venda e compra por exemplo:

Eu compro um produto x a uma quantidade y, ai isso fica na tabale estoque, e faço uma venda desse produto x por uma quantidade z.

Alguém tem alguma sugestão ou dica de como eu consigo fazer isso. Obs. Vou usar o php também.

Grato, se alguém ficou com alguma dúvida eu tento explicar melhor.

Editado por Davidson_N
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Ola! Davidson_N

A tabela estoque será gravada quando houver uma entrada (compra) ou uma saida (venda). Então, quando você for fazer uma venda precisará primeiro ler o ultimo registro da tabela estoque para o produto em questão, onde constará o estoque atual. A partir do valor encontrado, e que se dará a possibilidade da venda , caso o estoque esteja positivo. Ao final quando tu fores gravar a venda, também precisará atualizar o estoque fazendo um novo lançamento reduzindo a quantidade que tu havia encontrado primeiro pela quantidade que tu vendeu. Da mesma forma quando tu fores fazer uma compra, precisara verificar o ultimo registro do estoque, e verificar o valor atual , e apos lançar a compra, deverá atualizar o estoque, lançando um novo registro, com o valor que tu iniciou mais a quantidade comprada.

Os comandos SQL que tu vai usar são: SELECT, INSERT (se for usar tabela de compra/venda e tabela de itens, tu vai precisar também do comando UPDATE)

Esses comandos vão ser escritos numa variavel que tu criar no PHP, enviados para o banco que tu estiver usando.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
Ola! Davidson_N

A tabela estoque será gravada quando houver uma entrada (compra) ou uma saida (venda). Então, quando você for fazer uma venda precisará primeiro ler o ultimo registro da tabela estoque para o produto em questão, onde constará o estoque atual. A partir do valor encontrado, e que se dará a possibilidade da venda , caso o estoque esteja positivo. Ao final quando tu fores gravar a venda, também precisará atualizar o estoque fazendo um novo lançamento reduzindo a quantidade que tu havia encontrado primeiro pela quantidade que tu vendeu. Da mesma forma quando tu fores fazer uma compra, precisara verificar o ultimo registro do estoque, e verificar o valor atual , e apos lançar a compra, deverá atualizar o estoque, lançando um novo registro, com o valor que tu iniciou mais a quantidade comprada.

Os comandos SQL que tu vai usar são: SELECT, INSERT (se for usar tabela de compra/venda e tabela de itens, tu vai precisar também do comando UPDATE)

Esses comandos vão ser escritos numa variavel que tu criar no PHP, enviados para o banco que tu estiver usando.

Espero ter ajudado.

Otimizando o tempo de consulta. Coloca o saldo de quantidade e o saldo de valor na tabela de produto. Assim, Já que você tem que usar o registro de produto de qualquer maneira, seja para compra, seja para a venda, economizará tempo de busca não tendo que ir a tabela de estoque para pegar o último..

Link para o comentário
Compartilhar em outros sites

  • 0

Então pessoal eu entendi maio sou menos, minha estrutura mysql deve ficar assim?

create database loja;

// Tabela produtos removida//

create table produtos(

codigo int(10) unsigned not null auto_increment,

descricao varchar(80),

primary key(codigo));

//Tabela estoque editada//

create table estoque(

codigo int(10) unsigned not null auto_increment,

descricao varchar(80),

quantidade int(4),

primary key(codigo));

create table compra(

codigo int(10) unsigned not null auto_increment,

cod_est int(10),

quantidade int(4),

valor float,

data_compra varchar(10),

foreign key (cod_est) references estoque(codigo),

primary key(codigo));

create table venda(

codigo int(10) unsigned not null auto_increment,

cod_est int(10),

quantidade int(4),

valor float,

data_venda varchar(10),

foreign key (cod_est) references estoque(codigo),

primary key(codigo));

seria isso mesmo? eu fico na duvida em relação a essa parte por enquanto.

Se tiver alguém que possa me ajudar fico grato =D

Consegui fazer o que eu queria

os html e php e o mysql estão certinho, os updates estão funcionando certinho.

Html: Estoque.html

<html>
<head><title>Loja - Estoque</title></head>
<body>
<h3>
<center>Estoque</center>
</h3>
<form name="formulario" method="POST" action="est.php">
<table border=0 align="center">
<tr><td><p align="right">Descrição:</p></td><td><input type="text" name="desc" size="50"> </select></td></tr>
</table>
<center><input type="submit" value="Enviar">
        <input type="reset" value="Limpar"></center>
</form>

</body>
</head>
est.php
<?php

    $conexao=mysql_connect("localhost","root","");
    
    if ($conexao)
    {
      print "Conexão Ao MySQL Efetuada Com Sucesso! <br>";
    }
    else
    {
      print "Falha na Conexão Com o MySQL. Tente Novamente! <br>";
    }
    
    mysql_select_db("comercio",$conexao);
    
    $desc = $_POST["desc"];
    
    $sql1 = "insert into estoque values (null,'$desc','0')";
    
    $resultado = mysql_query($sql1);
    
    if ($resultado)
    {
       print "Inseridos com Sucesso <br>";
    } 
    else
    {
       print "Erro na Inserção <br>";
    }
?>
compra.html
<html>
<head><title>Loja - Compra</title></head>
<body>
<h3>
<center>Compra</center>
</h3>
<form name="formulario" method="POST" action="enviarcompra.php">
<table border=0 align="center">
<tr><td><p align="right"> Produto:</p></td><td><select name='prod'><?php 
                
                                    $conexao=mysql_connect("localhost","root","");
        
                                    mysql_select_db("comercio",$conexao);
                
                
                                    $sql = 'SELECT * FROM estoque';
                
                                    $resultado = mysql_query($sql,$conexao);
                
                                    while($dados = mysql_fetch_array($resultado))
                                
                                    {
                
                                        echo "<option value='". $dados['codigo'] ."'>". $dados['desc_prod'] ."</option>";
                
                                    }
?> </select></td>
</tr>
<tr><td><p align="right">Quantidade:</p></td><td><input type="text" name="quant" maxlength="4" size="4"></td></tr>
<tr><td><p align="right">Valor: </p></td><td><input type="text" name="val" maxlength="8" size="8" value="0.0"></td></tr>
<tr><td><p align="right">Data da Compra: </p></td><td><input type="text" name="data" maxlength="10" size="10" value="dd/mm/aaaa"></td></tr>
</table>
<center><input type="submit" value="Enviar">
        <input type="reset" value="Limpar"></center>
</form>

</body>
</head>
envircompra.php
<?php

    $conexao=mysql_connect("localhost","root","");
    
    if ($conexao)
    {
      print "Conexão Ao MySQL Efetuada Com Sucesso! <br>";
    }
    else
    {
      print "Falha na Conexão Com o MySQL. Tente Novamente! <br>";
    }
    
    mysql_select_db("comercio",$conexao);
    
    $prod = $_POST["prod"];
    $quant = $_POST["quant"];
    $val = $_POST["val"];
    $data = $_POST["data"];
    
    $sql1 = "insert into compra values (null,'$prod','$quant','$val','$data')";
    
    $resultado = mysql_query($sql1);
    
    if ($resultado)
    {
       print "Inseridos com Sucesso <br>";
    } 
    else
    {
       print "Erro na Inserção <br>";
    }
    
    $sql = "update estoque set quantidade=quantidade+'$quant' where codigo ='$prod'";
    
    $resultado = mysql_query($sql);
    
    if ($resultado)
    {
       print "Dados Do Cliente Alterado Com Sucesso <br>";
    } 
    else
    {
       print "Erro Na Alteração Dos Dados Do Cliente <br>";
    }
?>
venda.html
<html>
<head><title>Loja - Venda</title></head>
<body>
<h3>
<center>Venda</center>
</h3>
<form name="formulario" method="POST" action="enviarvenda.php">
<table border=0 align="center">
<tr><td><p align="right"> Produto:</p></td><td><select name='prod'><?php 
                
                                    $conexao=mysql_connect("localhost","root","");
        
                                    mysql_select_db("comercio",$conexao);
                
                
                                    $sql = 'SELECT * FROM estoque';
                
                                    $resultado = mysql_query($sql,$conexao);
                
                                    while($dados = mysql_fetch_array($resultado))
                                
                                    {
                
                                        echo "<option value='". $dados['codigo'] ."'>". $dados['desc_prod'] ."</option>";
                
                                    }
?> </select></td>
</tr>
<tr><td><p align="right">Quantidade:</p></td><td><input type="text" name="quant" maxlength="4" size="4"></td></tr>
<tr><td><p align="right">Valor: </p></td><td><input type="text" name="val" maxlength="8" size="8" value="0.0"></td></tr>
<tr><td><p align="right">Data da Compra: </p></td><td><input type="text" name="data" maxlength="10" size="10" value="dd/mm/aaaa"></td></tr>
</table>
<center><input type="submit" value="Enviar">
        <input type="reset" value="Limpar"></center>
</form>

</body>
</head>
enviarvenda.php
<?php

    $conexao=mysql_connect("localhost","root","");
    
    if ($conexao)
    {
      print "Conexão Ao MySQL Efetuada Com Sucesso! <br>";
    }
    else
    {
      print "Falha na Conexão Com o MySQL. Tente Novamente! <br>";
    }
    
    mysql_select_db("comercio",$conexao);
    
    $prod = $_POST["prod"];
    $quant = $_POST["quant"];
    $val = $_POST["val"];
    $data = $_POST["data"];
    
    $sql1 = "insert into venda values (null,'$prod','$val','$quant','$data')";
    
    $resultado = mysql_query($sql1);
    
    if ($resultado)
    {
       print "Inseridos com Sucesso <br>";
    } 
    else
    {
       print "Erro na Inserção <br>";
    }
    
    
    $sql = "update estoque set quantidade=quantidade-'$quant' where codigo ='$prod'";
    
    $resultado = mysql_query($sql);
    
    
    if ($resultado)
    {
       print "Dados Do Cliente Alterado Com Sucesso <br>";
    } 
    else
    {
       print "Erro Na Alteração Dos Dados Do Cliente <br>";
    }
?>

Agora eu preciso fazer um select para saber meu lucro, subtraindo o valor da venda pelo valor da compra. Já pesquisei em vários lugar mas não consegui achar um código que chegue perto disso =/, achei vários que fizesse coisas a mais mas nada simples.

E esse select eu preciso fazer pelo php e conseguir imprimir ele, também não consegui fazer isso.

Se alguém conseguir me ajudar fico grato.

Editado por Davidson_N
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...