Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro "Notice: Undefined index: usado in C:\wamp\www\loja\adiciona-produto.php on line 12"

Ao adicionar o produto sem marcar o checkbox "Usado" recebo o erro abaixo, porém meu produto é adicionado com sucesso.

O mesmo não acontece quando marco o checkbox.

A linha 12 é referente a

$usado = $_POST['usado'];

Segue o erro que recebo:

Notice: Undefined index: usado in C:\wamp\www\loja\adiciona-produto.php on line 12

insert into produtos (nome, preco, descricao, categoria_id, usado) values ('Teste22', 5, 'adsada', 1, false)
Produto Teste22, 5 adicionado com sucesso!

OBS.: Copiei o código do próprio curso, mas também não deu certo.

Agradeço desde já!

2 respostas
solução!

É porque quando não é marcado essa chave não existe.

Tente validar antes de atribuir:

$usado = isset( $_POST['usado'] ) ? 1 : 0

ou assim:

   $usado = False;
    if ($_POST['usado']) {
        $usado = True;
     }

Obrigada! Fiz desta forma e deu certo.

$usado = isset( $_POST['usado'] ) ? 1 : 0

Eu estava validando desta forma (conforme o curso):

    if(array_key_exists('usado', $_POST)) {
        $usado = "true";
    } else {
        $usado = "false";
    }

Você sabe me informar o que há de errado?

Abaixo o código completo:

<?php     
    include("cabecalho.php");
    include("conecta.php");
    include("banco-produto.php");
?>

<?php
    $nome = $_POST["nome"];
    $preco = $_POST["preco"];
    $descricao = $_POST["descricao"];
    $categoria_id = $_POST['categoria_id'];
    $usado = $_POST['usado']; 

?>

<?php

    if(array_key_exists('usado', $_POST)) {
        $usado = "true";
    } else {
        $usado = "false";
    }

?>

<?php 
    if(insereProduto($conexao,$nome,$preco,$descricao,$categoria_id,$usado)) {
?>
        <p class="text-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php
    } else {
        $msg = mysqli_error($conexao);
?>
        <p class="text-danger">O produto <?= $nome; ?> não foi adicionado: <?= $msg ?></p>
<?php
    }

    include("rodape.php"); ?>