3
respostas

Erro

olá. no meu além do erro que era pra dar, teve esses dois primeiros notificados com "notice".

Notice: Undefined index: nome in /Applications/XAMPP/xamppfiles/htdocs/loja/adiciona-produto.php on line 10 Notice: Undefined index: preco in /Applications/XAMPP/xamppfiles/htdocs/loja/adiciona-produto.php on line 11 O produto não foi adicionado: Notice: Use of undefined constant msg - assumed 'msg' in /Applications/XAMPP/xamppfiles/htdocs/loja/adiciona-produto.php on line 26 msg

nao sei onde está o erro, sendo que nas determinadas linhas consta: 10- $nome = $_GET['nome']; 11- $preco = $_GET['preco']; 12- $conexao = mysqli_connect('localhost', 'root', '', 'loja');

Pode me ajudar com o que está havendo??

3 respostas

Fernanda, no geral, notice's não indicam problemas, se tudo ocorreu como esperado, eles podem ser "ignorados" (ou mesmo desativados no php.ini).

Quanto aos notices que você indicou, esse Undefined index: preco indica que a valor 'preco' não está definida no seu GET:

$preco = $_GET['preco']

Ou seja, não esta vindo nenhum valor do seu formulário.

Ja esse "Use of undefined constant" geralmente ocorre quando você utilizou uma constante sem defini-la, no caso, deve haver alguma constante chamada "msg" no seu código.

As constantes se diferenciam dos valores por não estarem entre aspas (ou aspas simples). O php quando identifica que a constante não foi definida, ele assume aquilo como um valor e dispara um notice (o php adora fazer esse tipo de coisa). Ou seja, se você usa algo como:

$_GET[msg];

o Php tenta achar onde aquela msg foi definida, por exemplo:

define("msg","exemplo de mensagem");

Se ele não encontra, assume o valor de msg como sendo "msg".

Olá Fernanda, tudo bem?

Não estão sendo encontrados os index nome e preco, você está utilizando da seguinte forma:

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

Tente desta forma:

$nome = $_POST['nome'];
$preco = $_POST['preco'];

Espero ter lhe ajudado!

Olá,

Uma boa maneira de evitar esses notices quando estiver acessando um valor de uma das super globais $_POST ou $_GET é utilizar a função filter_input. Dessa maneira:

$nome = filter_input(INPUT_GET, 'nome');

Essa função é algo equivalente a:

if (!isset($_GET['nome'])) {
    $nome = null;
} elseif (!is_string($_GET['nome'])) {
    $nome = false;
} else {
    $nome = $_GET['nome'];
}

Mais informações sobre essa função você encontra na documentação aqui http://br1.php.net/manual/en/function.filter-input.php