4
respostas

Dados não são inclusos no BD

Olá pessoal,

Estou realizando a parte do curso em que o usuário insere informações no BD através da pagina PHP de formulário, porém ao clicar no botão cadastrar, as informações digitadas não são incluídas no BD.

Já conferi as informações de autenticação e estão OK, pois estou logando no PHPMyAdmin pelo navegador.

O nome do banco atual é: 'lddmstore'

Estou utilizando o WampServer V3.1.0 64bit

Tentei identificar o problema através dos erros porém não encontrei nenhum problema nas linhas 3 e 4.

Após clicar no botão cadastrar são exibidos os erros:


( ! ) Notice: Undefined index: nome in C:\wamp64\www\loja\adiciona-produto.php on line 3
Call Stack
#    Time    Memory    Function    Location
1    0.0012    241792    {main}( )    ...\adiciona-produto.php:0

( ! ) Notice: Undefined index: preco in C:\wamp64\www\loja\adiciona-produto.php on line 4
Call Stack
#    Time    Memory    Function    Location
1    0.0012    241792    {main}( )    ...\adiciona-produto.php:0

Código da adiciona-produto.php:

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

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

$conecta_bd = mysqli_connect('localhost', 'root', '', 'lddmstore');
$cadastrar_produto = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

mysqli_query($conecta_bd, $cadastrar_produto);
mysqli_close($conecta_bd);

?>
   <p class="alert-success">
            Produto <?=$nome; ?>  com preço de <?=$preco; ?> adicionado com sucesso!
   </p>

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

Código do formulário:

<?php include("cabecalho.php"); ?>
        <h1>Formulário para adição de produtos</h1>
<form action="adiciona-produto.php" >
    Nome:
    <input type="text" name="nome" /><br/>
    Preço:
    <input type="text" name="preco" /><br/>

    <input type="submit" value="Cadastrar" />
</form>
<?php include("rodape.php"); ?>

Agradeço desde já!

4 respostas
Undefined index: nome

Quando isso acontece, ele não está recebendo o valor do input.

Coloque o tipo do method no Form para saber se o Notice irá continuar.

  • Por padrão se não informar o method no Form ele é implicitamente GET. Mesmo sabendo disso, coloque apenas para testar.

Adicionei o method no form porém o erro continua. Form:

<?php include("cabecalho.php"); ?>
        <h1>Formulário para adição de produtos</h1>
<form action="adiciona-produto.php" method="get" >
    Nome:
    <input type="text" name="nome" /><br/>
    Preço:
    <input type="text" name="preco" /><br/>

    <input type="submit" value="Cadastrar" />
</form>
<?php include("rodape.php"); ?>

Hum... Faça o seguinte, crie um novo arquivo apenas de teste e faça o action para esta nova página.

Exemplo

form.html ou form.php

<form action="teste.php">
   <label>Nome</label>
   <input type="text" name="nome">

    <br>

   <label>Preco</label>
   <input type="text" name="preco">

   <button type="submit">Enviar</button>
</form>

teste.php

<?php

$nome = $_GET['nome']

var_dump($nome);

Veja se irá aparecer o valor que está na variável $nome.

Deu certo:

C:\wamp64\www\loja\teste.php:5:string 'mousepad' (length=8)