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

3.1 Criando funções no PHP

Prezados,

Ao realizar o exercicio o retorno da página me vem da maneira abaixo. Já conferi virgula por virgula e está igual ao do exercício, inclusive já até troquei pelo que está no "opinião de instrutor" e recebo a mesma mensagem.

Notice: Undefined index: nome in C:\xampp\htdocs\loja\adiciona-produto.php on line 8

Notice: Undefined index: preco in C:\xampp\htdocs\loja\adiciona-produto.php on line 9 Produto não foi adicionado.

<?php include ("cabecalho.php"); ?>

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

}

$nome = $_GET['nome']; $preco = $_GET['preco']; $conexao = mysqli_connect('localhost','root','', 'loja');

if (insereProduto($conexao, $nome, $preco)) { ?>

O Produto <?= $nome ?> adicionado com sucesso com preço de R$ <?= $preco ?>.

<?php } else { ?>

Produto <?= $nome ?> não foi adicionado.

<?php } ?>

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

2 respostas
solução!

Cara, quando você acessa essa página, existem parâmetros na URL?

Tipo assim: adiciona-produto.php?nome=nomedoproduto&preco=1.99

É necessário que esses parâmetros existam pra que possam ser acessadas por $_GET[].

Uma forma de contornar o problema seria verificar se o campo existe, isso pode ser feito usando a função isset().

Essas mensagem de erro de "undefined index" podem ocorrer ao tentar receber um campo que não existe pela URL ($_GET) ou ao receber um formulário ($_POST),

Eu fiz uma alteração para mostrar como isso funciona, e fiz um ajuste no código. Se os campos estiverem vazios, ele vai mostrar uma mensagem de erro, caso contrário, vai tentar gravar no banco

<?php include ("cabecalho.php"); ?>
<?php 
function insereProduto($conexao, $nome, $preco) { $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})"; return mysqli_query($conexao, $query);
}
$nome = "";
$preco = "";
if (isset($_GET['nome'])){
    $nome = $_GET['nome']; 
}
if (isset($_GET['preco'])){
    $preco = $_GET['preco']; 
}

if ($nome == "" && $preco == ""){ //Se faltar informacao em algum campo, nao prosseguir
?>
    Algum dos campos não foi enviado ou está vazio
<?    
} else {
    $conexao = mysqli_connect('localhost','root','', 'loja');
    if (insereProduto($conexao, $nome, $preco)) { 
?>
        O Produto <?= $nome ?> adicionado com sucesso com preço de R$ <?= $preco ?>.
<?php 
    } else { 
?>
        Produto <?= $nome ?> não foi adicionado.
<?php 
    } 
}
?>

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