Jump to content
Fórum Script Brasil
  • 0

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


Davidson_N

Question

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.

Edited by Davidson_N
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Davidson_N
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...