Boa tarde pessoal, meu código não está alterando produto e não retorna erros, ficando dificil a resolução do problema.
Segue o código do produtoDAO.php :
<?php
class ProdutoDAO {
function __construct ($conexao) {
$this->conexao = $conexao;
}
function listaProdutos() {
$produtos = array();
$resultado = mysqli_query($this->conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto_atual = mysqli_fetch_assoc($resultado)) {
$categoria = new Categoria;
$categoria->setNome($produto_atual['categoria_nome']);
$id = $produto_atual['id'];
$nome = $produto_atual['nome'];
$preco = $produto_atual['preco'];
$descricao = $produto_atual['descricao'];
$usado = $produto_atual['usado'];
$isbn = $produto_atual['isbn'];
if($produto_atual['tipoProduto'] == "Livro") {
$produto = new Livro($nome,$preco,$descricao,$categoria,$usado);
$produto->setIsbn($isbn);
}
else {
$produto = new Produto($nome,$preco,$descricao,$categoria,$usado);
}
$produto->setid($id);
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto(Produto $produto) {
if($produto->temIsbn()) {
$isbn = $produto->getIsbn();
}
else {
$isbn = null;
}
$tipoProduto = get_class($produto);
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado, tipoProduto, isbn) values ('{$produto->getnome()}', {$produto->getPreco()}, '{$produto->getdescricao()}', {$produto->getcategoria()->getId()}, {$produto->getusado()}, '{$tipoProduto}', '{$isbn}')";
return mysqli_query($this->conexao, $query);
}
function alteraProduto(Produto $produto) {
if ($produto->temIsbn()) {
$isbn = $produto->getIsbn();
} else {
$isbn = "";
}
$tipoProduto = get_class($produto);
$query = "update produtos set nome = '{$produto->getnome()}', preco = {$produto->getPreco()}, descricao = '{$produto->getdescricao()}', categoria_id= {$produto->getcategoria()->getId()}, usado = {$produto->getusado()}, tipoProduto = '{$tipoProduto}', isbn = '{$isbn}' where id = '{$produto->getId()}'";
return mysqli_query($this->conexao, $query);
}
function buscaProduto($id) {
$query = "select * from produtos where id = {$id}";
$resultado = mysqli_query($this->conexao, $query);
return mysqli_fetch_assoc($resultado);
}
function removeProduto($id) {
$query = "delete from produtos where id = {$id}";
return mysqli_query($this->conexao, $query);
}
}
Código do produto-altera-formulario.php :
<?php require_once("cabecalho.php");
#require_once("banco-categoria.php");
#require_once("banco-produto.php");
$id = $_GET['id'];
$produtoDAO = new ProdutoDAO($conexao);
$produto_buscado = $produtoDAO->buscaProduto($id);
$categoriaDAO = new categoriaDAO($conexao);
$categorias = $categoriaDAO->listaCategorias();
$id = $produto_buscado['id'];
$nome = $produto_buscado['nome'];
$preco = $produto_buscado['preco'];
$descricao = $produto_buscado['descricao'];
$categoria = new Categoria;
$categoria->setId($produto_buscado['categoria_id']);
$usado = $produto_buscado['usado'] ? "checked='checked'" : "";
$isbn = $produto_buscado['isbn'];
$tipoProduto = $produto_buscado['tipoProduto'];
if ($tipoProduto == "Livro") {
$produto = new Livro($nome,$preco,$descricao,$categoria,$usado);
$produto->setIsbn($isbn);
}
else {
$produto = new Produto($nome,$preco,$descricao,$categoria,$usado);
}
$produto->setid($id);
?>
<h1>Alterando produto</h1>
<form action="altera-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto->getid()?>">
<table class="table">
<?php include("produto-formulario-base.php"); ?>
<tr>
<td>
<button class="btn btn-primary" type="submit">Alterar</button>
</td>
</tr>
</table>
</form>
<?php include("rodape.php"); ?>
E por fim o código do altera-produto.php :
<?php require_once("cabecalho.php");
$categoria = new Categoria;
$categoria->setId($_POST['categoria_id']);
if(array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "false";
}
$isbn = $_POST['isbn'];
$tipoProduto = $_POST['tipoProduto'];
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
if($tipoProduto == "Livro") {
$produto = new Livro ($nome,$preco,$descricao,$categoria,$usado,$tipoProduto);
$produto->setIsbn($isbn);
}
else {
$produto = new Produto ($nome,$preco,$descricao,$categoria,$usado,$tipoProduto);
}
$produto->getid($_POST['id']);
$produtoDAO = New ProdutoDAO($conexao);
if($produtoDAO->alteraProduto($produto)) { ?>
<p class="text-success">O produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> foi alterado.</p>
<?php } else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?= $produto->getNome() ?> não foi alterado: <?= $msg?></p>
<?php
}
?>
<?php include("rodape.php"); ?>