Undefined index PHP [RESOLVIDO]

Olá,

Estou com um problema, sempre fica dando essa mensagem Undefined index e não sei como resolver, já pesquisei muita coisa e não conseguir entender e nem faze funcionar.

form-tarefa.php

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


    <form class="criar-tarefa" enctype="multipart/form-data" action="adiciona-tarefa.php" method="POST">
        <h1>Cadastro de tarefa</h1>
        <table class="table table-striped table-bordered">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"/></td>
            </tr>
            <tr>
                <td>Descriçao</td>
                <td><textarea class="form-control" name="descricao"/></textarea></td>
            </tr>
            <tr>
                <td>Codigo</td>
                <td><input class="form-control" type="number" name="codigo"/></td>  
            </tr>
        </table>
    <input class="btn btn-primary btn-lg" type="submit" value="Cadastrar" id="cadastrar" name="cadastrar"><br><br>
    </form>

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

adiciona-tarefa.php

<?php   include("cabecalho.php");
        include("conecta.php");
        include("banco-tarefa.php");

$nome = $_POST['nome'];
$descricao = $_POST['descricao'];
$codigo = $_POST['codigo'];


if(insereTarefa($conexao,$nome,$descricao,$codigo)){
    echo"<script language='javascript' type='text/javascript'>alert('Documento inserido com sucesso!');window.location.href='home.php';</script>";
     die();
} else {
    echo"<script language='javascript' type='text/javascript'>alert('Não foi possível inserir o documento');window.location.href='';</script>";
    die();
}
?>

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

Se voce debugar, em que linha dá o erro?

Desculpe, não coloquei os erros.

Ele aparece nessas linhas abaixo:

Notice: Undefined index: nome in C:\wamp64\www\tarefa\adiciona-tarefa.php on line 9
Notice: Undefined index: descricao in C:\wamp64\www\tarefa\adiciona-tarefa.php on line 10
Notice: Undefined index: codigo in C:\wamp64\www\tarefa\adiciona-tarefa.php on line 11

Problema nessa parte do código:

$nome = $_POST[‘nome’];
$descricao = $_POST[‘descricao’];
$codigo = $_POST[‘codigo’];

Seu html não precisa de barra no fim do input (exceto arquivos xhtml o que não é seu caso)…

<input .../>

Para…

<input...>

Seu textarea também, afinal ele já possui o fechamento

<textarea/></textarea>

Para

<textarea></textarea>

Apenas por precaução, coloque isso no começo do código em adiciona-tarefa.php

echo $_SERVER['REQUEST_METHOD'];

Se isso trouxer GET, troque o POST do method no form de maiúsculo para minúsculo (nunca tive problemas com isso porque sempre declaro minúsculo, mas vai saber)…

Isso trouxe GET.

e agora? troco tudo que está post para get? não posso usar post?

Como disse antes mude o POST maiusculo para minusculo e veja o que acontece…

Aproveito para indicar boas práticas, não use $_POST diretamente, prefira filtrar primeiro…

$nome = filter_input(INPUT_POST, 'nome');
$descricao = ...

OBS: Quando se usa formulários o comum para envio é POST mesmo, GET é usado em links e na URL do navegador, logo, se você possui muitos campos no formulário, GET acaba sendo inviável o uso…

@rodevops cara muito obrigado.

Só para ver se eu entendi, estava acontecendo o erro porque eu tinha colocado o metodo maiusculo?

Outra coisa, estou querendo anexar um documento qualquer no formulário para salvar no banco ( salvar em uma pasta e só o caminho ficar salvo no banco).

você conseguiria me ajudar ou dar um luz?

Provavelmente, como disse antes eu sempre declaro em caixa baixa (termo técnico para minúsculo :joy:) e nunca tive problemas, mas como eu sou fução, uma vez declarei em caixa alta e deu zica :joy:

Quanto ao arquivo, primeiro no form você precisa ter um input do tipo file…

<input type="file" name="anexo">

E no php usar o array $_FILES, pesquise a respeito…

Depois para salvar o arquivo no servidor pode usar a função move_uploaded_file, no site oficial há exemplos de código, bons estudos!

Segue uma noção de uso…

$anexo = $_FILES['anexo']; // name do input...

echo $anexo['error']; // 0 tudo ok, != 0 contém erro
echo $anexo['size']; // tamanho em bytes
echo $anexo['name']; // nome do arquivo
echo $anexo['tmp_name']; // nome temporário no servidor

Lembrando que sempre que usar arquivos em formulários, o enctype=“multipart/form-data” como você fez é necessário!