Notice: undefined index. Como resolver este erro do PHP.

Notice: Undefined index é um erro bastante comum do PHP. Ele está relacionado aos métodos POST e GET, no recebimento de formulários. A mensagem de erro, normalmente, é:

Notice Undefined index PHP

O erro é causado quando tentamos chamar uma variável $_POST ou $_GET que não foi enviada através do formulário. Para cada campo <input> no HTML, é necessário haver um parametro name, identificando o nome do campo, que irá virar a variável dentro do PHP.

Por exemplo, para que este campo seja enviado pelo formulário:

Dessa forma, ele será recebido no PHP:

A mensagem de erro Undefined index pode ser causada por alguns motivos:

 

Em suma, explicaremos cada um deles a seguir, incluíndo a solução necessária.

Motivo 1: Falta do parametro “name” no form do html

Primeiramente, todo campo input no formulário HTML precisa ter o parametro name especificado. Assim, este é o nome da variável que o PHP irá identificar.

Exemplo:   <input type=”text” name=”cliente”>

Solução: certifique-se de que todos os input’s do seu formulário possuem o parametro name, e de que os valores são exatamente os que você está tentando chamar no PHP.

Modo errado:

E no PHP:

 

Modo correto:

E no PHP:

 

Motivo 2: Campos com nome diferente no formulário html e no PHP

Você pode estar chamando no PHP um nome diferente do parametro name no formulário.

Modo errado:

E no PHP:

Em suma, a simples diferença no nome dos campos (“cliente” no formulário, e “clientes no PHP)  já é suficiente para gerar o erro.

Solução: altere o formulário no html, e use sempre o mesmo nome.

Modo correto:

E no PHP:

 

Motivo 3: Diferença ou falta dos métodos POST x GET no formulário

Quando estamos desenvolvendo, é muito comum errarmos o método do formulário e do PHP. Dessa forma, se o método do formulário html <form method=”___”> for POST, devemos chamar a variável no PHP sempre como $_POST[‘nome’], e sempre que for GET, chamamos por $_GET[‘nome’].  Por isso, o método correto do formulário precisa sempre ser especificado. Por padrão, quando o formulário não possui o method=”GET” ou method=”POST” especificado, ele é enviado como GET.

Modo errado:

E no PHP:

Em resumo, apesar dos nomes dos campos serem os mesmos, no formulário e no PHP, a forma de se chamar a variável precisa ser a mesma em relação ao método (method) no formulário.

Modo correto usando POST:

E no PHP:

Modo correto usando GET:

E no PHP:

4 thoughts on “Notice: undefined index. Como resolver este erro do PHP.”

  1. Ola, meu problema também é com essa mensagem, porem eu não estou passando de um HTML para um PHP e sim de um PHP para outro. Segrue o código abaixo:

    Arquivo PHP 1
    <?php
    include("conecta.php");
    $sqllista = "select * from tb_arquivos";
    $retorno = mysqli_query($conexao,$sqllista) or die(mysql_error());

    echo "”;

    echo “”;
    echo “”.””.”NOME DO ARQUIVO”.””;
    echo “”.””.”DATA DO ARQUIVO”.””;
    echo “”.””.”EXCLUSÃO”.””;
    echo “”.””.”VISUALIZAÇÃO”.””;

    while ($lista = mysqli_fetch_array($retorno)) {
    echo “”;
    //echo “”.$lista[“cod_arq”].””;
    echo “”.$lista[“nom_arq”].””;
    echo “”.””.$lista[“data_arq”].””;
    echo “”.”“.”“;
    echo “”.”“.”“;
    echo $lista[“nom_arq”];
    echo “”;
    }
    “”;
    }

    Arquivo PHP 2

    Mas não imprime nada e ja vi no Banco de dados que o mesmo esta alimentado.
    Se alguém puder ajudar agradeço muito. Obrigado.

  2. Simples, claro e excelente.
    Falou a minha língua.
    Parabéns pelo post.
    Atingiu na mosca o objetivo.
    Sucesso e Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

hhchat