Estou recebendo mensagem quando adiciono produto e quando altero :
echo $query;
update produtos set nome = 'Raquete de tenis', preco = 280.00, descricao = 'produto alterado', categoria_id = , usado = where id = '3'
O produto nome: Raquete não foi alterado: 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 ' usado = where id = '3'' at line 1
e quando adiciono o produto apresenta o mesmo erro:
echo $query;
insert into produtos (nome,preco,descricao,categoria_id,usado) values ('telefone', 1, 'xxxxxxx', 1, )
O produto nome: telefone não foi adicionado: 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
produto-altera-formulario.php
<?php
require_once 'class/Categoria.php';
require_once 'class/Produto.php';
require_once 'cabecalho.php';
require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'logica-usuario.php';
verificaUsuario();
$produto = new Produto();
$categoria = new Categoria();
$categoria->id = (!empty($_POST['categoria_id']) ? $_POST['categoria_id'] : "");
$produto->setNome(!empty($_POST['nome']) ? $_POST['nome'] : "");
$produto->setPreco(!empty($_POST['preco']) ? $_POST['preco'] : "");
$produto->setDescricao(!empty($_POST['descricao']) ? $_POST['descricao'] : "");
$produto->setCategoria($categoria);
if (array_key_exists('usado', $_POST)) {
$produto->setUsado("true");
} else {
$produto->setUsado("false");
}
$produto->setUsado($usado);
?>
<?php
if(insereProduto($conexao,$produto)) { ?>
<p class="text-alert">
O produto nome: <?= $produto->getNome();?>, preço: <?= $produto->getPreco();?> adicionado com sucesso!
</p>
<?php } else {
$msg = mysqli_error($conexao)
?>
<p class="text-danger">
O produto nome: <?=$produto->getNome();?> não foi adicionado: <?=$msg;?>
</p>
<?php } ?>
<?php require_once 'rodape.php'; ?>
banco produto.php
<?php
require_once 'class/Categoria.php';
require_once 'class/Produto.php';
require_once 'conecta.php';
function listaProdutos($conexao) {
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id = c.id");
while($produto_atual = mysqli_fetch_assoc($resultado)) {
$produto = new Produto();
$categoria = new Categoria();
$categoria->nome = $produto_atual['categoria_nome'];
$produto->setId($produto_atual['id']);
$produto->setNome($produto_atual['nome']);
$produto->setPreco($produto_atual['preco']);
$produto->setDescricao($produto_atual['descricao']);
$produto->setCategoria($categoria);
$produto->setUsado($produto_atual['usado']);
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto($conexao,Produto $produto) {
if(array_key_exists('usado', $_POST)) {
$produto->getUsado("true");
} else {
$produto->getUsado("false");
}
$query = "insert into produtos (nome,preco,descricao,categoria_id,usado) values ('{$produto->getNome()}', {$produto->getPreco()}, '{$produto->getDescricao()}', {$produto->getCategoria()->id}, {$produto->getUsado()})";
echo($query);
return mysqli_query($conexao, $query);
}
function removeProduto($conexao, $id) {
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}
function buscaProduto($conexao, $id) {
$query = "select * from produtos where id = {$id}";
$resultado = mysqli_query($conexao, $query);
return mysqli_fetch_assoc($resultado);
}
function alteraProduto($conexao,Produto $produto) {
$query = "update produtos set nome = '{$produto->getNome()}', preco = {$produto->getPreco()}, descricao = '{$produto->getDescricao()}', categoria_id = {$produto->getCategoria()}, usado = {$produto->getUsado()} where id = '{$produto->getId()}'";
echo $query;
return mysqli_query($conexao, $query);
}
altera-formulario.php
<?php
require_once 'class/Produto.php';
require_once 'cabecalho.php';
require_once 'conecta.php';
require_once 'banco-produto.php';
$produto = new Produto();
$produto->setId((!empty($_POST['id']) ? $_POST['id'] : ""));
$produto->setNome((!empty($_POST['nome']) ? $_POST['nome'] : ""));
$produto->setPreco(!empty($_POST['preco']) ? $_POST['preco'] : "");
$produto->setDescricao(!empty($_POST['descricao']) ? $_POST['descricao'] : "");
$produto->setCategoria($categoria);
if (array_key_exists('usado', $_POST)) {
$produto->setUsado("true");
} else {
$produto->setUsado("false");
}
$produto->setUsado($usado);
?>
<?php
if(alteraProduto($conexao, $produto)) { ?>
<p class="text-success">
O produto nome: <?= $produto->getNome();?>, preço: <?= $produto->getPreco();?> foi alterado!
</p>
<?php } else {
$msg = mysqli_error($conexao)
?>
<p class="text-danger">
O produto nome: <?=$produto->getNome();?> não foi alterado: <?=$msg;?>
</p>
<?php } ?>
<?php require_once 'rodape.php'; ?>
produto-formulario-base.php
<tr>
<td>Nome:</td>
<td><input class="form-control" type="text" name="nome" value="<?=$produto->getNome() ?>"></td>
</tr>
<tr>
<td>Preço:</td>
<td><input class="form-control" type="number" name="preco" value="<?=$produto->getPreco() ?>"></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea name="descricao" class="form-control"><?=$produto->getDescricao() ?></textarea></td>
</tr>
<tr>
<td></td>
<td class="text-left"><input type="checkbox" name="usado" <?=$produto->getUsado()?> value="true"> Usado</td>
</tr>
<tr>
<td>Categoria</td>
<td>
<select name="categoria_id" class="form-control">
<?php
foreach ($categorias as $categoria) :
$essaEhACategoria = $produto->categoria_id == $categoria->id;
$selecao = $essaEhACategoria ? "selected='selected'" : "";
?>
<option value="<?=$categoria->id?>"<?=$selecao?>> <?=$categoria->nome?>
</option>
<?php
endforeach ?>
</select>
</td>
</tr>