Após organizar o produto em classe, o programa passou a apresentar o erro abaixo:
O produto moto 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 = false where id = ''' at line 3
Segue o codigo:
<?php require_once("conecta.php");
require_once ("class/Produto.php");
require_once ("class/Categoria.php");
?>
<?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_array = mysqli_fetch_assoc($resultado)){
$categoria = new Categoria();
$categoria->nome = $produto_array['categoria_nome'];
$produto = new Produto();
$produto->id = $produto_array['id'];
$produto->nome = $produto_array['nome'];
$produto->descricao = $produto_array['descricao'];
$produto->categoria = $categoria;
$produto->preco = $produto_array['preco'];
$produto->usado = $produto_array['usado'];
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto($conexao, $produto) {
$nome = mysqli_real_escape_string($conexao, $produto->nome);
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$produto->nome}', {$produto->preco}, '{$produto->descricao}', {$produto->categoria_id}, {$produto->usado})";
$resultadoDaInsercao = mysqli_query($conexao, $query);
return $resultadoDaInsercao;
}
function alteraProduto($conexao, Produto $produto)
{
$nome = mysqli_real_escape_string($conexao, $produto->nome);
$query = "update produtos set nome = '{$produto->nome}',
preco = {$produto->preco}, descricao = '{$produto->descricao}',
categoria_id= {$produto->categoria_id},
usado = {$produto->usado} where id = '{$produto->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 removeProduto($conexao, $id){
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}
<tr>
<td>Nome</td>
<td> <input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
</tr>
<tr>
<td>Preço</td>
<td><input class="form-control" type="number" name="preco"
value="<?=$produto['preco']?>"></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea class="form-control" name="descricao"><?=$produto['descricao']?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" <?=$produto->usado?> value="true"> Usado
</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>
</tr>
<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");
$produto = new Produto();
$categoria = new Categoria();
$categoria->id = $_POST['categoria_id'];
$produto->id = $_POST['id'];
$produto->nome = $_POST['nome'];
$produto->preco = $_POST['preco'];
$produto->descricao = $_POST['descricao'];
$produto->categoria = $categoria;
if(array_key_exists('usado', $_POST)) {
$produto->usado = 'true';
} else {
$produto->usado = 'false';
}
if(alteraProduto($conexao, $produto)) { ?>
<p class="text-success">O produto <?= $produto->nome ?>, <?= $produto->preco ?> foi alterado.</p>
<?php } else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?= $produto->nome ?> não foi alterado: <?= $msg?></p>
<?php
}
?>
<?php include("rodape.php"); ?>
<?php require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("logica-usuario.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");
?>
<?php
verificaUsuario();
$produto = new Produto();
$categoria = new Categoria();
$categoria->id = $_POST['categoria_id'];
$produto->nome = $_POST['nome'];
$produto->preco = $_POST['preco'];
$produto->descricao = $_POST['descricao'];
$produto->categoria = $categoria;
if(array_key_exists('usado', $_POST)){
$produto->usado = 'true';
} else{
$produto->usado = 'false';
}
?>
<?php
if(insereProduto($conexao, $produto)) {
?>
<p class="text-success">Produto <?= $produto->nome; ?>, <?= $produto->preco; ?> adicionado com sucesso!</p>
<?php
}
else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?=$produto->nome; ?> não foi adicionado: <?=$msg ?></p>
<?php } ?>
<?php include("rodape.php"); ?>
<?php require_once("cabecalho.php");
require_once("banco-produto.php");
?>
<table class="table table-striped table-bordered">
<?php
$produtos = listaProdutos($conexao);
foreach($produtos as $produto){
?>
<tr>
<td><?=$produto->nome?></td>
<td><?=$produto->preco?> </td>
<td><?= substr($produto->descricao, 0, 15) ?></td>
<td><?=$produto->categoria->nome?></td>
<td> <?=$produto->usado?> </td>
<td><a href="produto-altera-formulario.php?id=<?=$produto->id?>" class="btn btn-primary">Alterar</a> </td>
<td><form action="remove-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto->id?>" />
<button class="btn btn-danger">remover</button>
</form></td>
</tr>
<?php
}
?>
</table>
<?php include("rodape.php"); ?>