Estou com um problema na hora de adicionar e alterar meus produtos, apesar de estarem funcionando quando deixo o checkbox de usado desmarcado me aparece o seguinte aviso :( ! ) Notice: Undefined index: usado in C:\wamp64\www\loja\class\ProdutoFactory.php on line 13. Baixei a pasta da aula e aparentemente os códigos estão todos iguais, se alguém souber o motivo desse erro, fico grato. Segue os códigos:
ProdutoFactory
class ProdutoFactory {
private $classes = array("Produto", "Ebook", "LivroFisico");
public function criaPor($tipoProduto, $params) {
$nome = $params['nome'];
$preco = $params['preco'];
$descricao = $params['descricao'];
$categoria = new Categoria();
$usado = $params['usado'];
if (in_array($tipoProduto, $this->classes)) {
return new $tipoProduto($nome, $preco, $descricao, $categoria, $usado);
}
return new Produto($nome, $preco, $descricao, $categoria, $usado);
}
}
altera-produto
$tipoProduto = $_POST['tipoProduto'];
$produto_id = $_POST['id'];
$categoria_id = $_POST['categoria_id'];
$factory = new ProdutoFactory();
$produto = $factory->CriaPor($tipoProduto, $_POST);
$produto->atualizaBaseadoEm($_POST);
if (array_key_exists("usado", $_POST)) {
$produto->setUsado("true");
} else {
$produto->setUsado("false");
}
$produto->setId($produto_id);
$produto->getCategoria()->setId($categoria_id);
$produtoDAO = new ProdutoDAO($conexao);
if ($produtoDAO->AlteraProduto($produto)){
?>
<p class="alert alert-success"> Produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> alterado com sucesso!</p>
<?php
}else{
$msg = mysqli_error($conexao);
?>
<p class="alert alert-danger"> Produto <?= $produto->getNome() ?>, não foi alterado:
<?= $msg ?></p>
<?php
}
?>
insere-produto
$tipoProduto = $_POST['tipoProduto'];
$categoria_id = $_POST['categoria_id'];
$factory = new ProdutoFactory();
$produto = $factory->CriaPor($tipoProduto, $_POST);
$produto->atualizaBaseadoEm($_POST);
$produto->getCategoria()->setId($categoria_id);
if(array_key_exists('usado', $_POST)) {
$produto->setUsado("true");
} else {
$produto->setUsado("false");
}
$produtoDAO = new ProdutoDAO($conexao);
if ($produtoDAO->InsereProduto($produto)){
?>
<p class="alert alert-success"> Produto <?=$produto->getNome()?>, <?=$produto->getPreco()?> adicionado com sucesso!</p>
<?php
}else{
$msg = mysqli_error($conexao);
?>
<p class="alert alert-danger"> Produto <?= $produto->getNome()?>, não foi adicionado: <?= $msg ?></p>
<?php
}
die();
?>