Bom dia.
Estou tendo o seguinte erro quando tento inserir ou alterar um produto:
Notice: Undefined index: usado in C:\wamp64\www\loja\class\ProdutoFactory.php on line 13
Isso acontece apenas se o campo 'Usado', no formulário, não estiver marcado.
Porém, mesmo com o erro, o produto é inserido no Banco quando adiciono e a coluna 'usado' recebe o valor 0, como esperado.
Quando altero o Usado no formulário também tenho o mesmo erro, mas novamente, a alteração é enviada para o Banco e o valor da coluna 'usado' é alterado, como esperado.
Já baixei o projeto da aula, comparei linha por linha e não consegui identificar o problema. Alguém poderia me ajudar?
Segue o meu código abaixo:
ProdutoFactory.php
class ProdutoFactory {
private $classes_array = array("Produto", "LivroFisico", "Ebook");
public function criaProduto($f_tipo_produto, $f_params) {
$f_nome = $f_params['nome'];
$f_preco = $f_params['preco'];
$f_descricao = $f_params['descricao'];
$f_categoria = new Categoria();
$f_usado = $f_params['usado'];
if (in_array($f_tipo_produto, $this->classes_array)) {
return new $f_tipo_produto($f_nome, $f_preco, $f_descricao, $f_categoria, $f_usado);
}
return new Produto($f_nome, $f_preco, $f_descricao, $f_categoria, $f_usado);
}
}
adiciona-produto.php
require_once("cabecalho.php");
require_once("logica-usuario.php");
verificaUsuario();
$tipo_produto = $_POST["tipo_produto"];
$categoria_id = $_POST["categoria_id"];
$factory = new ProdutoFactory();
$produto = $factory->criaProduto($tipo_produto, $_POST);
$produto->atualizaBaseadoEm($_POST);
$produto->getCategoria()->setId($categoria_id);
if (array_key_exists('usado', $_POST)) {
$produto->setUsado("true");
} else {
$produto->setUsado("false");
}
$produto_dao = new ProdutoDAO($conexao);
if ($produto_dao->insereProduto($produto)) :
?>
<p class="text-success">Produto <?= $produto->getNome() . ", " . $produto->getPreco(); ?> adicionado com sucesso!</p>
<?php
else :
$msgErro = mysqli_error($conexao)
?>
<p class="text-danger">Produto <?= $produto->getNome(); ?> não foi adicionado!</p>
<p class="alert-danger"><?= $msgErro; ?></p>
<?php
endif;