Ir para conteúdo

Arquivado

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

Andre Schmidt_130237

Como fazer para subtrair valores e um insert mysql

Recommended Posts

olá, boa noite, estou fazendo um painel na qual o cliente tem la seus produtos e suas quantidade. Eu queria saber como que eu faço para que quando o cliente for dar baixa la inserindo o valor que ele vendeu e diminuir em outra tabela, em que está a informação de quantidade em estoque. Desde ja agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Digamos que você tenha uma tabela de estoque na seguinte estrutura:

 

produtos

id int identity primary key, 
nome varchar(25), 
quantidade int

 

Sendo 'quantidade' a coluna que armazena a quantidade de unidades em estoque de determinado produto.

 

Se insere um produto na tabela...

INSERT INTO produtos (nome,quantidade)
VALUES (
 'Água Torneiral 200ml',
 1000
);

 

Então, após registrar a venda em uma tabela específica, você deve atualizar a quantidade de produtos na tabela 'produtos', subtraindo uma unidade. O comando SQL pode ser mais ou menos o seguinte:

UPDATE produtos
SET quantidade=quantidade-1
WHERE id=1

Com isso você decrementa em um a quantidade de produtos. Mas antes tem de verificar se a 'quantidade' já não chegou a zero.

 

Quando fizer a consulta novamente, o valor de quantidade será 999. Se esse comando for executado novamente, será 998, e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites
estou com a mesma duvida que o amigo ali em cima..

criei um um sistema de cadastro e consulta por código de barras.

onde a tabela PRODUTOS armazena o cadastro e tem esses campos:


`cd_barras` varchar(255) NOT NULL,

`preco_venda` varchar(255) NOT NULL,

`id_produto` int(11) NOT NULL,

`nome_produto` varchar(255) NOT NULL,

`tamanho` varchar(5) NOT NULL,

`preco_compra` varchar(255) NOT NULL,

`quantidade` varchar(10) NOT NULL,

`status` char(1) NOT NULL DEFAULT 'A',

`estoque_minimo` int(11) NOT NULL,

`estoque_maximo` int(11) NOT NULL


A tabela de SAIDAPRODUTOS armazena a venda.


estou tentando fazer com que quando o usuário informe a quantidade necessaria do produto e quando concluir a venda atualize a tabela PRODUTOS e a coluna QUANTIDADE decrementando o valor informado pelo usario.

EX: no estoque tinha 20 peças, o usuário na hora da venda informou que quer 5 peças. Usei o teu exemplo para fazer o update da tebela e não funcionou. Podes me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar a inteligencia da aplicação do lado do banco de dados utilizando triggers.

toda vez que ele inserir na tabela saida produto, é disparada uma trigger que atualiza a quantidade do produto na tabela de produto.

 

Procura sobre trigger after insert... abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar a inteligencia da aplicação do lado do banco de dados utilizando triggers.

toda vez que ele inserir na tabela saida produto, é disparada uma trigger que atualiza a quantidade do produto na tabela de produto.

 

Procura sobre trigger after insert... abraços!

Amigo, mas com o trigger quando eu fizer o cadastro da venda pela pagina php ele vai entender? pois eu fiz direto pelo mysql e funcionou tranquilo, mas pelo form de cadastro de venda não... oque pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, mas com o trigger quando eu fizer o cadastro da venda pela pagina php ele vai entender? pois eu fiz direto pelo mysql e funcionou tranquilo, mas pelo form de cadastro de venda não... oque pode ser?

 

O trigger (before insert) vai ser disparado assim que você qualquer tipo de insert na tabela.. e uma das ações dele é o update no campo quantidade da tabela produto subtraindo a quantidade inserida no seu insert (NEW.CAMPO)..

Existem várias maneiras de resolver essa sua necessidade , basta você definir se a inteligencia vai ficar do lado da aplicação ou do banco.

Pode criar uma função no php que faça um insert na tabela de saida de produto e um update na tabela de quantidade de produto... entre outras maneiras..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O trigger (before insert) vai ser disparado assim que você qualquer tipo de insert na tabela.. e uma das ações dele é o update no campo quantidade da tabela produto subtraindo a quantidade inserida no seu insert (NEW.CAMPO)..

Existem várias maneiras de resolver essa sua necessidade , basta você definir se a inteligencia vai ficar do lado da aplicação ou do banco.

Pode criar uma função no php que faça um insert na tabela de saida de produto e um update na tabela de quantidade de produto... entre outras maneiras..

No caso eu usei o after insert...esse foi o trigger que usei:

DELIMITER $$
CREATE TRIGGER Tgr_saidaprodutos_Insert AFTER INSERT
ON saidaprodutos
FOR EACH ROW
BEGIN
UPDATE Produtos SET qtde = qtde - NEW.quantidade
WHERE nome_produto = NEW.vendaroduto;
END$$
funcionou só eu inserindo dados diretamente no bd, e não pelo php... então criei uma função em php para fazer o insert na tabela de vendas e em seguida fazer o update na tabela de produtos.. mas não funcionou.. poderia me dar um exemplo de como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

No caso eu usei o after insert...esse foi o trigger que usei:

DELIMITER $$
CREATE TRIGGER Tgr_saidaprodutos_Insert AFTER INSERT
ON saidaprodutos
FOR EACH ROW
BEGIN
UPDATE Produtos SET qtde = qtde - NEW.quantidade
WHERE nome_produto = NEW.vendaroduto;
END$$
funcionou só eu inserindo dados diretamente no bd, e não pelo php... então criei uma função em php para fazer o insert na tabela de vendas e em seguida fazer o update na tabela de produtos.. mas não funcionou.. poderia me dar um exemplo de como fazer?

 

Não to entendendo quando você diz que pelo BD funciona e pelo PHP não..

 

Posta ai a estrutura das suas duas tabelas , para que eu possa dar uma olhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não to entendendo quando você diz que pelo BD funciona e pelo PHP não..

 

Posta ai a estrutura das suas duas tabelas , para que eu possa dar uma olhada.

Eu me refiro ao insert direto no phpmyadmin

 

TABELA vendaprodutos:

https://drive.google.com/file/d/0B1xLVh4sNMLHY2RvbmdBcUNta28/view?usp=sharing

 

TABELA produtos:

https://drive.google.com/file/d/0B1xLVh4sNMLHN0dXdmpKYzhiTDA/view?usp=sharing

 

NÃO consegui incluir a img

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oque eu estou tentando fazer é, quando concluo a venda, o php tem que buscar o registro que foi cadastrado com mesmo nome e código de barras que esta no cadastro da tabela produto, pegar o valor que foi informado na quantidade e subtrair no estoque:

 

Este é o codigo que estou usando(peguei uns exemplos na internet) o form aponta para cá. Faz o insert na tabela(VENDAPRODUTOS) e depois deveria fazer o UPDATE na tabela (PRODUTO).

 

<?php
require_once 'conexao.php';
$sql = "INSERT into vendaprodutos (cd_barras, nomeproduto, preco_venda, quantidade, tamanho) VALUES ('$cd_barras','$nomeproduto','$preco_venda','$quantidade','$tamanho')";
mysql_query($sql,$conexao);
$subquantidade = '$quantidade';
$sqlupdate = "UPDATE produtos SET qtde = '$subquantidade'";
$update1 = mysql_query($sqlupdate,$conexao);
header("Location: venda.php");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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