4
respostas

NÃO VEJO O ERRO NO CÓDIGO ADICIONA-PRODUTO

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

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

Produto <?php echo $nome ?>, valor <?php echo $preco ?> adicionado com sucesso!

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

A RESPOSTA QUE TENHO É ESSA ABAIXO, ERRO NAS LINHAS 4 E 5, MAS NÃO SEI O QUE TEM DE ERRADO.

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

Notice: Undefined index: preco in C:\xampp\htdocs\Alura\Loja\adiciona-produto.php on line 5 Produto , valor adicionado com sucesso!

4 respostas

O erro ocorre porque não existe no $_GET nenhum campo chamado nome ou preco.

Você utiliza o $_GET quando quer recuperar algum valor enviado numa URL. Exemplo:

minha_pagina.php?nome=bola&preco=20

Caso os dados estejam vindo de um formulário, você recupera via $_POST. Exemplo:

<form method="POST" action="">
Nome: <input type="text" name="nome">
Preço: <input type="text" name="preco">
<input type="submit" value="Gravar">
</form>

Para evitar esse erro, você deve verificar se o campo existe antes de atribuir o valor, utilize a função isset(). Exemplo:

$nome = "";
if (isset($_GET["nome"])){
    $nome = $_GET["nome"];
}

Uma forma mais simples seria assim

<?php

include ("cabecalho.php");

$produto=$_GET["nome"];
$preco=$_GET["preco"];

echo "Produto $produto custa R$ $preco foi adicionado com sucesso!";

include ("rodape.php");

?>

O formulário ficaria assim

<form method="get" action="adiciona-produto.php">
Nome: <input type="text" name="nome">
Preço: <input type="text" name="preco">
<input type="submit" value="Gravar">
</form>

Aqui seria a conexao e o insert na tb_produtos

<?php

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

  $conexao= mysqli_connect('localhost', 'root', '', 'loja');
  $query ="insert into tb_produtos(Nm_Produto,Vl_Produto) values ('{$nome}',{$preco})";
  mysqli_query($conexao,$query);
  mysqli_close($conexao);




  ?>

E aqui os dados passados pelo form eu vi o video da primeira e segunda aula e fiz tudo igual mas alem de não gravar no banco o wampserver ainda me apresena um erro na linha 15

Notice: Undefined index: nome in C:\wamp\www\cursophp\conexao.php on line 15 Call Stack

Time Memory Function Location

1 0.0017 369040 {main}( ) ..\conexao.php:0


  <form  action="conexao.php" method="post">
    <form method="get" action="adiciona-produto.php">
      Nome: <input type="text" name="nome">
      Preço: <input type="text" name="preco">
      <input type="submit" value="Gravar">
    </form>
  </form>