Ir para conteúdo

POWERED BY:

Arquivado

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

Walter Chilomer

Insert e Update em duas tabelas ao mesmo tempo

Recommended Posts

Olá galera,

 

Tenho um sistema de estoque, onde dou baixa de um item e grava um protocolo (INSERT) e em seguida deve dar baixa na tabela estoque:

Tentei usar duas tabelas ao mesmo tempo, mas dá erro.

Tentei usar também um script de atualização, com INCLUDE, mas não ocorre a baixa, dá Erro.

Script:

 

Leitura da tabela estoque, cujos valores serão gravados na tabela baixa_est.

.......

<?php
}
elseif(!isset($_POST["enviar"]))
{
include "ddp_conecta.php";
$cod_item=$_POST["cod_item"];
$sql = ("SELECT * FROM tab_estoque WHERE ee_codigo like '$cod_item%'");
$res = mysql_query($sql);
if(mysql_num_rows($res)==0)
echo "ITEM NÃO ENCONTRADO!";
else
{
$registra = mysql_fetch_row($res);
$ee = $registra[0]; // ID COMUM DE TODAS AS TABELAS ($ee_ID)
$fc_ID = $registra[1];
$fantasia = $registra[2];
$codigo = $registra[8];
$descricao = $registra[9];
$unid = $registra[17];
$estoque = $registra[23];
$empresa = $registra[39];
?>
.-------------------------------
Gravação dos dados
<?php
}
else
{
$registro = $_POST["be_ID"];
$ee_ID = $_POST["ee_ID"];
$empresa = $_POST["fc_empresa"];
$fantasia = $_POST["fc_fantasia"];
$fc_ID = $_POST["fc_ID"];
$codigo = $_POST["ee_codigo"];
$descricao = $_POST["ee_descricao"];
$estoque = $_POST["ee_estoque"];
$unid = $_POST["ee_unid"];
$lote = $_POST["be_lote"];
$baixa_est = $_POST["be_baixa_est"];
$qt_sai = $_POST["ee_estoque"]-$_POST["be_baixa_est"];
$data_hoje = date('Y-m-d');
Essa linha INSERT está OK.
$res = mysql_query("INSERT INTO tab_baixa_est VALUES('$registro','$ee_ID','$empresa','$fantasia','$fc_ID','$codigo','$descricao','$estoque','$unid','$lote','$baixa_est','$qt_sai','$data_hoje')" + include_once "ddp_atualiza_est_baixa.php" );
Concatenando essa linha UPDATE com a linha acima INSERT dá erro ...near (1) ou (0) at line 1.
// " + "UPDATE tab_estoque SET ee_estoque='$qt_sai' WHERE ee_ID='$ee'");
if(mysql_affected_rows()>0)
include "registro_incluir.php";
else {
$erro = mysql_error();
echo "<p align='center'>Erro: $erro</p>";
}
}
mysql_close($con);
include_once "ddp_atualiza_est_baixa.php"; // Não funciona
?>

 

-----------------------------

 

Script do include, onde deve-se dar baixa do valor no estoque.

 

<?php
if(!isset($_POST["ee])) // ID lido no começo do script
{
?>
<form method="POST" action="ddp_atualiza_est_baixa.php">
<p align="center"><font size="2" face="Arial">ID:<br>
<input type="text" name="ee" size="05" maxlength="6" value="<?php echo $ee;?>" ><br><br>
</p>
</form>
<?php
}
elseif(!isset($_POST["enviar"]))
{
include "ddp_conecta.php";
$ee=$_POST["ee"];
$sql = "SELECT * FROM tab_estoque WHERE ee_ID=$ee";
$res = mysql_query($sql);
if(mysql_num_rows($res)==0)
echo "REGISTRO NÃO ENCONTRADO!";
else
{
$registro = mysql_fetch_row($res);
$estoque = $registro[23];
?>
<?php
}
}
else
{
$qt_sai = $_POST["ee_estoque"]-$_POST["be_baixa_est"];
include "ddp_conecta.php";
$sql = "UPDATE tab_estoque SET ee_estoque='$qt_sai' WHERE ee_ID=$ee";
$res = mysql_query($sql);
if(mysql_affected_rows()>0)
include "registro_atualizar_val_unit.php";
else
{
$erro = mysql_error();
echo "<p align='center'>ERRO: $erro</p>";
}
mysql_close($con);
}
?>
-----------------------
Entretanto, usando um UPDATE em uma tabela e outro UPDATE em outra tabela ao mesmo tempo, funciona.
Com INSERT e UPDATE não funciona ?????
Algum mestre pode dar alguma luz???
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
...,'$data_hoje')" + include_once "ddp_atualiza_est_baixa.php" );

Pra mim, esta forma de concatenar um arquivo php com sql é novo, nunca vi este tipo de concatenação.

 

Na minha opnião triggers resolve este problema com mais simplicidade.

 

E não esqueça, coloque os códigos na tag code <> para uma melhor leitura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

WDuarte,

Vc tem razão. Não existe esta forma de concatenar um arquivo php com sql. Foi uma distração minha, na hora de montar o rascunho. O correto seria a concatenação da linha em azul, conforme enunciado e conforme pesquisei na WEB.

Vou testar o Trigger.

Respondo assim que tiver implementado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então,

Testando o TRIGGER, não funciona.

Script:

 

// CREATE TRIGGER tgr_estoque
// AFTER UPDATE ON tab_estoque
// FOR EACH ROW
// BEGIN
// UPDATE tab_estoque SET ee_estoque=$qt_sai WHERE ee_ID=$ee;
// END;
// DELIMITER = |
Foi criado no PhpMyAdmin.
Alguém consegue enxergar algum erro no script acima?
Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pessoal,

Resolvido com o TRIGGER.

Script final:

 

//CREATE TRIGGER tgr_tab_baixa AFTER INSERT
//ON tab_baixa_est
//FOR EACH ROW
//BEGIN
// UPDATE tab_estoque SET ee_estoque = NEW.be_baixa_esto WHERE ee_ID = NEW.ee_ID;
//END;
Obrigado a todos pela colaboração.

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.