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: nome in /home/meusitemodelo/public_html/teste.php on line 3

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:

<input type="text" name="cliente">

Dessa forma, ele será recebido no PHP:

$_POST['cliente'];

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:

<input type="text">

E no PHP:

$_POST['clientes'];

 

Modo correto:

<input type="text" name="cliente">

E no PHP:

$_POST['clientes'];

 

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:

<input type="text" name="cliente">

E no PHP:

$_POST['clientes'];

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:

<input type="text" name="cliente">

E no PHP:

$_POST['cliente'];

 

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:

<form action="teste.php" method="GET">
<input type="text" name="cliente">
<input type=submit>
</form>

E no PHP:

$_POST['cliente'];

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:

<form action="teste.php" method="POST">
<input type="text" name="cliente">
<input type=submit>
</form>

E no PHP:

$_POST['cliente'];

Modo correto usando GET:

<form action="teste.php" method="GET">
<input type="text" name="cliente">
<input type=submit>
</form>

E no PHP:

$_GET['cliente'];

Este artigo foi útil?

Obrigado pela resposta!
Picture of Gustavo Carvalho

Gustavo Carvalho

Analista de sistemas, formado pela PUC-Rio. Programador, gestor de redes e diretor da empresa Homehost. Pai do Bóris, seu pet de estimação. Gosta de rock'n'roll, cerveja artesanal e de escrever sobre assuntos técnicos.

Contato: gustavo.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!