Olá galera,
Estou usando o checkbox e consigo cadastrar tanto um produto usado como novo (checkbox marcado e checkbox desmarcado).
No banco de dados também a coluna de usando está se comportando bem, quando não marco o checkbox lá fica 0 e quando marco fica 1.
O problema é o seguinte, quando eu não marco o checkbox ou seja assumo que o produto é novo e o valor da coluna no banco de dados fica 0, aparece a seguinte mensagem:
"Notice: Undefined index: usado in /opt/lampp/htdocs/loja/adiciona-produto.php on line 11
Produto: Teste 5, Valor: R$ 1 adicionado com sucesso!"
Mesmo adicionando no banco normalmente ele me apresenta essa mensagem de "Notice: Undefined index". Já tentei resolver sozinho mas a mensagem sempre aparece quando eu não marco o checkbox.
Segue os códigos:
adiciona-produto.php:
<?php
include("cabecalho.php");
include("conecta.php");
include("banco-produto.php");
$nome = $_POST["nome"];
$preco = $_POST["preco"];
$descricao = $_POST["descricao"];
$categoria_id = $_POST["categoria_id"];
$usado = $_POST['usado'];
if(array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "false";
}
if(insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado)) {
?>
<p class="alert-success">Produto: <?= $nome ?>, Valor: R$ <?= $preco ?> adicionado com sucesso!</p>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="alert-danger">O produto <?= $nome ?> não foi adicionado:<br /> <?= $msg ?></p>
<?php
}
include("rodape.php");
?>
produto-formulario.php:
<?php
include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
$categorias = listaCategorias($conexao);
?>
<h1>Cadastro de Produtos</h1>
<form action="adiciona-produto.php" method="post">
<table class="table">
<tr>
<td>Nome</td>
<td><input class="form-control" type="text" name="nome" /></td>
</tr>
<tr>
<td>Preço</td>
<td><input class="form-control" type="number" name="preco" /></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea class="form-control" name="descricao"></textarea></td>
</tr>
<tr>
<td>Categoria</td>
<td>
<select name="categoria_id" class="form-control">
<?php foreach($categorias as $categoria) : ?>
<option value="<?=$categoria['id']?>"><?=$categoria['nome']?></option>
<?php endforeach ?>
</select>
</td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" value="true" /> Usado</td>
</tr>
<tr>
<td><input class="btn btn-primary" type="submit" value="Cadastrar" /></td>
</tr>
</table>
</form>
<?php include("rodape.php") ?>
banco-produto.php:
<?php
//listagem de Produtos do Banco
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 = mysqli_fetch_assoc($resultado)) {
array_push($produtos, $produto);
}
return $produtos;
}
//Inserindo Produtos no banco
function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
$result = mysqli_query($conexao, $query);
return $result;
}
//Removendo Produtos do Banco
function removeProduto($conexao, $id) {
$query = "delete from produtos where id = {$id}";
$result = mysqli_query($conexao, $query);
return $result;
}