2
respostas

Undefined index

Erro ao tentar cadastrar produto.

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

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

E já aparece ao entrar na página: "O produto não foi adicionado".

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

<?php
$nome = $_GET["nome"];
$preco = $_GET["preco"];

$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

$conexao = mysqli_connect('localhost', 'root', '', 'loja');

if(mysqli_query($conexao, $query)) {
?>
<p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php
} else {
?>
<p class="alert-danger">O produto <?= $nome; ?> não foi adicionado</p>
<?php
}
mysqli_close($conexao);

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

Como você chama essa pagina? parece que quando chama não está passando o parâmetro do produto.

Você precisaria verificar se o parâmetro definido no GET existe antes de atribuir a variável, se você abre direto a página vai dar este erro ("undefined index").

Uma forma de evitar a mensagem de erro seria fazer desta forma:

<?php
$nome = "";
$preco = "";
$inserir = false;
if (isset($_GET["nome"])){
    $nome = $_GET["nome"];
}
if (isset($_GET["preco"])){
    $preco = $_GET["preco"];
}

//Se as variáveis não estão vazias, pode gravar
if ($nome <> "" && $preco <> ""){
    $inserir = true;
} 


if ($inserir){
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
    $conexao = mysqli_connect('localhost', 'root', '', 'loja');

    if(mysqli_query($conexao, $query)) {
    ?>
    <p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
    <?php
    } else {
    ?>
    <p class="alert-danger">O produto <?= $nome; ?> não foi adicionado</p>
    <?php
    }
    mysqli_close($conexao);
}
?>