Oi! Então, eu estou há algum tempo com problema para adicionar e alterar os produtos.
Quando eu tento adicionar, após clicar o botão, o resultado do var_dump
é:
Erro: string(158) "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '', '', '')' at line 1"
Tirando esse var_dump, não aparece nada na linha de comando.
A função insere produto tá assim:
function insereProduto(Produto $produto) {
$isbn = "";
if($produto->hasIsbn()) {
$isbn = $produto->getIsbn();
}
$taxaImpressao = "";
if($produto->hasTaxaImpressao()) {
$taxaImpressao = $produto->getTaxaImpressao();
}
$waterMark = "";
if($produto->hasWaterMark()) {
$waterMark = $produto->getWaterMark();
}
$tipoProduto = get_class($produto);
$query = "INSERT INTO produtos (nome, preco, descricao, categoria_id, usado, isbn, tipoProduto, taxaImpressao, waterMark) VALUES('{$produto->getNome()}', {$produto->getPreco()}, '{$produto->getDescricao()}', {$produto->getCategoria()->getId()}, {$produto->isUsado()}, '{$isbn}', '{$tipoProduo}, '{$taxaImpressao}', '{$waterMark}')";
return mysqli_query($this->conexao, $query);
}
E o SQL de produtos tá assim:
CREATE TABLE produtos (
id INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
preco DECIMAL(10,2) NOT NULL),
descricao TEXT,
categoria_id INTEGER NOT NULL,
usado BOOLEAN DEFAULT FALSE,
isbn VARCHAR(255),
tipoProduto VARCHAR(255) NOT NULL
);
INSERT INTO produtos (nome, preco, descricao, categoria_id, usado, isbn)
VALUES('Livro Stephen King', 75, 'Um livro pelo grande autor Stephen King', 5, 0, '002589753', 'Livro');
INSERT INTO produtos
DELETE FROM produtos WHERE id=2;
DELETE FROM produtos WHERE id=8;
ALTER TABLE produtos ADD COLUMN taxaImpressao VARCHAR(255);
ALTER TABLE produtos DROP COLUMN taxaImpressao;
ALTER TABLE produtos ADD COLUMN waterMark VARCHAR(255);
ALTER TABLE produtos DROP COLUMN waterMark;
SELECT * FROM produtos;
E o arquivo adiciona produto, assim:
<?php
require_once "conecta.php";
require_once "cabecalho.php";
require_once "logica-usuario.php";
// Verifica se o usuário está logado
verificaUsuario();
$tipoProduto = $_POST['tipoProduto'];
$categoria_id = $_POST['categoria_id'];
$factory = new ProdutoFactory();
$produto = $factory->criarProd($tipoProduto, $_POST);
$produto->atualizaBaseadoEm($_POST);
$produto->getCategoria()->setId($categoria_id);
array_key_exists('usado', $_POST) ? $produto->setUsado("true") : $produto->setUsado("false");
$produtoDAO = new ProdutoDAO($conexao);
if($produtoDAO->insereProduto($produto)) { ?>
<form action="produto-formulario.php">
<p class="text-success"> O produto <?php echo $produto->getNome()?>, R$<?php echo $produto->getPreco()?> adicionado com sucesso! </p>
<button class="btn" type="submit">Voltar</button>
</form>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<form action="produto-formulario.php">
<p class="text-danger"> O produto <?php echo $produto->getNome()?>, R$<?php echo $produto->getPreco()?> não foi adicionado
<br><span>Erro: <?=var_dump($msg);?></span></p>
<button class="btn" type="submit">Voltar</button>
</form>
<?php
}
mysqli_close($conexao);
?>
<?php require_once "rodape.php" ?>
O restante do código atualizado tá no meu github https://github.com/analubarreto/ :).
Obrigada, desde já ^^