Jump to content
Vitas

Update após o insert

Recommended Posts

Vitas

Boas pessoal :)

Tenho uma questão relativa ao insert e update das tableas na bd. Estou a fazer um pequeno programa de gestão de stocks com a venda e tenho duvida como eu posso dar entrada aos produtos.

Tenho uma tabela produtos com os seguintes campos (IDProduto, Nome, Descrição, Imagem, Preço, Stock) e outra tabela tbl_entrada com os seguintes campos (ID_Entrada, Data, IDProduto, Unidades).

O que eu queria fazer é na pagina de registo de entradas onde tenho um jumpmenu para selecionar um produto e uma textbox para meter a quantidade que quer introduzir, ao registar a entrada quero que haja um update a tabela produtos para actualizar o stock (unidades(entrada) + stock(produtos) = newstock).

Sou novato nestas coisas por isso agradecia que alguem me explicasse o processo todo. (Para não me esquecer a relação entre a tbl_entrada e produtos tem que ser de produtos para tbl_entrada ou de tbl_entrada para produtos?)

Se existe um metodo mais simples para dar entradas aos produtos agradeço.

Share this post


Link to post
Share on other sites
tobias

Boas,

ora bem, primeiro uma observação:

Tenho uma tabela produtos com os seguintes campos (IDProduto, Nome, Descrição, Imagem, Preço, Stock) e outra tabela tbl_entrada com os seguintes campos (ID_Entrada, Data, IDProduto, Unidades).

Cuidado com os nomes dos campos, se forem realmente esses pensa em mudar... eu pessoalmente sou adepto de ter tudo em letras minúsculas, porque depois torna-se mais fácil de "usar"/escrever os campos.

Em relação ao que pretendes fazer.

Não sabes como inserir os dados na bd, ou fazer a ligação? ou isso já tens tudo feito e só tens duvidas de como fazer os dois(update e inserir) ao mesmo tempo, ou o que?...

Especifica mais a duvida, eu consegui perceber o que pretendes, mas não sei quais são as tuas duvidas.

Se for para explicar como isso funciona:

No teu formulário(jumpbox e a textbox) metes um campo hidden e depois no inicio do ficheiro, fazes uma condição para restringir aquele código apenas quando é usado o teu formulário.

Detro dessa condição vais ter o SQL(INSERT INTO tbl_entrada (Data, IDProduto, Unidades) VALUE ($_POST[data], .....)

executas (mysql_query) e fazes o update da outra tabela, subtraindo a quantidade selecionada no campo unidades. (UPDATE produtos SET stock = stock - $_POST[unidades]...)

Pronto, alguma duvida pergunta, tentarei responder.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
Vitas

Hmm inserir eu sei :P

A minha dúvida é mesmo o ciclo, como e onde devo colocar.

Mais uma questao, não tem que se declarar as variaveis antes de fazer o update? ou pode se escrever directamente na query os $_POST ou campos da bd?

Obrigado

Share this post


Link to post
Share on other sites
tobias

Podes usar directamente, não sei se será o mais correcto, mas poder podes.

ciclo? de primeira vista não me parece precisares de nenhum.

cada vez que é clicado o botão das encomendas, é feito esse código, ao carregar a página, pelo que é bom teres o código bem em cima, no inicio da página, logo após a ligação com a base de dados.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
tobias

if ($_POST[hidden] == 1) //Inserir
{
$sql = "INSERT INTO tbl_entrada (Data, IDProduto, Unidades) VALUES ('','".$_POST['data']."','".$_POST['idproducto']."','".$_POST['unidades']."')";
$result =  mysql_query($sql, $link);	

$sql = "UPDATE produtos SET Stock= Stock - '".$_POST['unidades']."'  WHERE IDProduto= ".$_POST['idproducto'];
$result =  mysql_query($sql, $link); 
}

Atendendo que tens o id_entrada auto_incremento, de resto é só exemplo, muito provavelmente tem algum erro de sintax, porque meti-me ai a escrever isso.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
SecretStory

Podes usar directamente, não sei se será o mais correcto, mas poder podes.

Não vejo o problema de usar directamente. Eu uso directamente e não tenho problemas nenhuns com isso. Alias, isso só faz ganhar desempenho (PHP é uma linguagem interpretativa, ou seja, a máquina compila o codigo conforme o vai executando, de instrução a instrução... poupa-se umas linhas a declarar variáveis (o que ajuda no desempenho)). E se é incorrecto devido ao facto de outras pessoas virem a modificar o nosso código, pois acho que toda a gente que percebe PHP sabe o que é as variáveis GET e POST. É questão de comentar no ficheiro o que essas variáveis representam para caso que venham a usar a nosso codigo futuramente.

Mas pronto. Cada um com a sua mania x)

Share this post


Link to post
Share on other sites
tobias

SecretStory,

Concordo plenamente contigo, até porque também as uso assim, mas só não tenho a certeza absoluta que seja a maneira mais correcta.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
Vitas

hmm muito obrigado, ja tenho uma ideia.

O hidden serve criar condição( para meter la o valor 1, que para reconhecer no if?)

E faz o insert e o update ao mesmo tempo simplesmente vai buscar os dados para o update ao próprio form certo?

Eu é que estava a complicar tentava fazer o insert e depois seleccionar o campo stock e unidades de varias tabelas e subtrair e depois fazer o update...

Obrigado :P

Share this post


Link to post
Share on other sites
tobias

Pois :) , também dava, mas não vale a pensa tar a fazer mais pesquisas á bd quando temos a informação na "mão" :P


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
Vitas

Pois :)

Obrigado  :P agora so experimentar se funciona depois vou postar o resultado :D

Share this post


Link to post
Share on other sites
Vitas

Bem já testei o código mas há um problema é não há insert mas ele faz o update, ele faz o update das unidades como eu queria mas a tbl_entrada continua vazia -.-"

<?php
if ($_POST['hidden'] == 1)
{
$sql = "INSERT INTO tbl_entrada (IDProduto, Unidades) VALUES ('".$_POST['id_produto']."', '".$_POST['une']."')";
$result = mysql_query($sql, $PrefeitosDB);

$sql = "UPDATE produtos SET Unidades = Unidades + '".$_POST['une']."' WHERE IDProduto = '".$_POST['id_produto']."'";
$result = mysql_query($sql, $PrefeitosDB);

}	 
?>

Tenho o código assim alguma ideia porque ele não insere?

Na tbl_entrada tenho o ID_entrada como auto increment e a Data como timestamp (Current timestamp) suponho que não é preciso meter no insert pois ele preenche sozinho.

Share this post


Link to post
Share on other sites
tobias

Unidades está em que formato? numérico? se sim, retira as pelicas.

caso continuo a não dar, mete um echo $sql; logo abaixo do inserir, para ver o que dá, para poderes visualizar o que está a ser pedido á base de dados, mete no sql e verifica o erro.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
Vitas

Já funciona :P

O insert não reconhecia o campo IDProduto, enganei me a escrever era suposto ser ID_Produto -.-"

Obrigado :)

Share this post


Link to post
Share on other sites
tobias

Pois foi o que te disse em relação aos nomes, usa nomes mais simples, e escreve sempre da mesma forma, ou sempre minúsculas ou se te habituares a escrever a primeira sempre maiúscula, mas usa o mesmo padrão para todas, para não teres enganos desses.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
Vitas

É o que vou fazer antes de continuar a fazer o resto da aplicação :)

Obrigado pelo conselho  :P

Share this post


Link to post
Share on other sites
tobias

Mete o solved (resolvido)


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.