3
I’m having trouble with my code that excludes a record of a sale and that must make the replenishment of the quantity of products in the table of origin.
Example of how this code works:
- On the table
produto
has a quantity of 17 products from the same stock.
- Was sold a quantity of 3 products on the table
itens_venda
.
- When deleting the record from the table
itens_venda
with the quantity of 3 products sold these 3 products return to the register with 17 products from the tableproduto
getting a quantity of 20 products.
The only problem with the code is that does not return the quantity sold when the record of the sale is deleted!.
- Code of the exclusion form
form method="POST">
<p> ID item venda:
<select name="cd_itens_venda" required="">
<option value=""> </option>
<?php
foreach ($resultado_selecao as $valor) {
echo "<option value='{$valor['cd_itens_venda']}'>{$valor['cd_itens_venda']}</option>";
}
?>
</select>
</p>
<button name="Deletar">Deletar item de venda</button>
</form>
- Full PHP code
<?php
require_once 'conexao.php';
if(isset($_POST['Deletar'])){
// Especifica a variável
$cd_itens_venda = $_POST['cd_itens_venda'];
try {
// TABELA ITENS_VENDA
$conexao->beginTransaction();
$remove = "DELETE FROM itens_venda WHERE cd_itens_venda = :cd_itens_venda";
$remocao = $conexao->prepare($remove);
$remocao->bindValue(':cd_itens_venda',$cd_itens_venda);
$remocao->execute();
// TABELA PRODUTO
// Seleciona o registro do produto a ser excluído
$seleciona_produto = "SELECT cd_produto FROM itens_venda WHERE cd_itens_venda = :cd_itens_venda";
// Pega a quantidade de determinado registro de venda tabela itens_venda
$quantidade_vendida = "SELECT quantidade FROM itens_venda WHERE cd_itens_venda = :cd_itens_venda";
// Query que faz a atualização da quantidade de estoque da tabela produto
$atualiza_quantidade = "UPDATE produto SET quantidade = quantidade + '$quantidade_vendida' WHERE cd_produto = '$seleciona_produto'";
$quantidade_produto = $conexao->prepare($atualiza_quantidade);
$quantidade_produto->bindValue(':cd_itens_venda',$cd_itens_venda);
$quantidade_produto->execute();
$conexao->commit();
} catch (PDOException $falha_remocao) {
echo "A remoção não foi feita".$falha_remocao->getMessage();
}
}
// Query que seleciona o registro de itens_venda
$seleciona_nomes = $conexao->query("SELECT cd_itens_venda FROM itens_venda");
// Resulta em uma matriz
$resultado_selecao = $seleciona_nomes->fetchAll();
?>
I understand I’m not using the
$cd_produto = $_POST['cd_produto']
and that to make the code work I need to put a field in the form asking for this value (using data request to speed up), you could reformulate your response in PHP code because the idea is that I just use the$cd_itens_venda = $_POST['cd_itens_venda']
– user198162
Try it this way:
$cd_itens_venda = intval($_POST['cd_itens_venda']);
, bindValue only accepts values, you can try usingbindParam()
– Ivan Ferrer
@Ivanferrer reworked the question, runs without appearing the error in the browser, only it does not return the quantity in the table
produto
when the record in the tableitens_venda
is excluded.– user198162