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

Erro ao adicionar produto

o seguinte erro na pagina ao inserir o produto : Notice: Undefined index: descricao in C:\xampp\htdocs\aplicacoes\loja\adiciona-produto.php on line 7 O Produto queijo,879, Foi adicionado com sucesso! sendo que o produto é adicionado sem descrição

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

$nome = $_GET['nome'];
$preco = $_GET['preco'];
$descricao = $_GET['descricao'];



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

<?php
}
?>

<?php include ("rodape.php"); ?>
7 respostas

Francisco, confere no seu formulário se no input de descrição tem um atributo name="descricao". O valor desse atributo name deve ser exatamente igual quando você tenta acessa-lo por $_GET

Oi Francisco, tudo bom?

Isso acontece porque nossa função insere produto é algo parecido com:

function insereProduto($conexao, $nome, $preco, $descricao) {
    $query = "insert into produtos (nome, preco, descricao) values ('{$nome}', {$preco}, '{$descricao}')";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
}

Percebe que o campo descrição está entre aspas simples?

Isso significa que se o parametro $descricao estiver vazio, nosso resultado na query será algo parecido com:

    $query = "insert into produtos (nome, preco, descricao) values ('Meu produto', 99.9, '')";

Ou seja, o campo não está realmente vazio!

Ele é uma string vazia, e é justamente isso que é adicionado no banco.

Caso estivessmos inserindo sem as aspas, teriamos algo como:

 $query = "insert into produtos (nome, preco, descricao) values ('Meu produto', 99.9, )";

Nesse caso realmente temos o campo vazio e haveria o retorno do erro =)

Uma possivel solução é remover as aspas simples e testar. Outra possivel solução é verificar se o campo descrição é vazio antes de realizar a query.

Qualquer dificuldade, compartilha com a gente!

Abraço e bons estudos

oi André Chaves fiz o que voce indicou mas continua a mesma coisa

Oi Francisco, verifica pra mim o que está sendo passado no seu parametro descrição. Algo como:

function insereProduto($conexao, $nome, $preco, $descricao) {
    var_dump("Conteudo: " . $descricao);die();
    $query = "insert into produtos (nome, preco, descricao) values ('{$nome}', {$preco}, '{$descricao}')";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
}

Adicione a linha do var_dump execute e mostra pra gente aqui o resultado =)

agora fica assim

Notice: Undefined index: descricao in C:\xampp\htdocs\aplicacoes\loja\adiciona-produto.php on line 7
string(10) "Conteudo: "

Então Francisco, como falei seu problema está no formulário, no campo de descrição você deve ter escrito o nome do input diferente de descricao.

Confere se realmente está escrito name="descricao"

solução!

solução do erro :

function insereProduto($conexao, $nome, $preco, $descricao) {
    $query = "insert into produtos (nome, preco, descricao) values ('{$nome}', {$preco}, '{$descricao}')";
    return mysqli_query($conexao, $query);
}

faltou na função insere produto

 return mysqli_query($conexao, $query);

resultado : O Produto copo,157,copo descartavel que vai acabar com o planeta Foi adicionado com sucesso!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software