Curso de PHP – Processar dados recebidos do formulário HTML

Processando os dados recebidos de um formulário HTML

Na lição anterior revisamos a criação de um formulário HTML simples para envio de dados ao servidor, contendo diversos elementos como caixas de texto, botões, caixa de seleção e de listagem. Após os dados terem sido recebidos pelo servidor, eles devem ser processados, o que significa que podem ser realizados cálculos, exibidos resultados no navegador, armazenados em bancos de dados ou então outras ações podem ser disparadas.

Quem irá realizar tais ações é o script PHP que foi referenciado no parâmetro ACTION do formulário, contido na tag <form>. Esse script deve estar presente no servidor e irá conter a codificação PHP necessária para realizar as tarefas desejadas.

Agora iremos mostrar como criar esse script. O primeiro passo é criar um arquivo no servidor de nome processa.php, e salvá-lo no mesmo diretório onde está o arquivo html do formulário (pode ser em outro diretório, basta referenciar o caminho corretamente na tag <form>, e o nome pode ser diferente também, caso queira). Vamos codificar esse arquivo.

Arrays $_POST e $_GET

Quando os dados são enviados ao servidor, são transformados pelo PHP em elementos de um array associativo de nome $_POST ou $_GET, de acordo com o método de envio utilizado. As chaves do array são os nomes escolhidos para os campos no formulário, e seus valores, os dados que os usuários inseriram nesses campos. Ou seja, quando o usuário submete o formulário, os dados que foram inseridos nos campos são armazenados no array ($_POST ou $_GET), o qual repassará esses dados ao script PHP para processamento.

Esses arrays são variáveis superglobais, o que significa que estão disponíveis em todos os escopos pelo script, sendo acessíveis dentro de todas as funções e métodos.

Cada elemento dentro do array usado corresponde a uma informação de um campo no formulário. Assim, para acessar o conteúdo de um campo específico, basta usar o nome do array com a chave correspondente. O nome da chave é o mesmo valor do parâmetro “name” usado no formulário para cada campo.

Dessa forma, caso queiramos acessar o conteúdo do campo “Nome” do formulário, cujo parâmetro name=”nome”, basta então acessar a chave correspondente no $_POST, da forma a seguir:

$_POST[‘nome’];

Com o nome do campo entre aspas simples, e dentro dos colchetes. Assim, podemos atribuir esse valor (que contém o dado digitado pelo usuário) a uma variável, a uma função, ou ainda imprimir na tela ou gravar em um banco de dados. Por exemplo, para atribuir esse valor a uma variável chamada “nome” no script:

$nome = $_POST[‘nome’];

Cuidado para não se confundir: $nome é uma variável criada no script de processamento, e ‘nome’ é o nome do campo criado no formulário, que contém a informação transmitida ao servidor, via superglobal $_POST.

No caso dos checkboxes e caixas de seleção, que nos dão a opção de selecionar mais de um item ao mesmo tempo, precisamos utilizar um loop para varrer seu conteúdo e resgatar os dados presentes. O exemplo abaixo mostra como obter os dados das linguagens de programação selecionadas pelo usuário ao clicar nos checkboxes correspondentes:

// Verificar se os checkboxes foram selecionados 
if(isset($_POST[‘linguagens’])) {

echo “As linguagens de programação escolhidas foram:<br/>”;
// Efetuar loop pelo array de linguagens:
foreach($_POST[‘linguagens’] as $linguagem) {
echo $linguagem . “<br/>”;
}
}
else {
echo “Nenhuma linguagem de programação escolhida!<br/>”;
}

Usamos a função isset() para verificar se a variável em questão foi definida – isto é, se linguagens[] foi criada quando o formulário foi enviado, retornando o valor verdadeiro caso essa variável exista. Caso o usuário não tenha clicado em nenhum checkbox, linguagens[] não será definida e a função isset() retornará falso. Note que não precisamos incluir os colchetes [] ao avaliar a variável com isset().

Se a variável foi definida, então podemos utilizar um laço foreach() para varrer seu conteúdo (pois linguagens[] é um array também) e retornar cada item individualmente. Desta forma:

foreach($_POST[‘linguagens’] as $linguagem) {
echo $linguagem . “<br/>”;
}
 
Assim, retornamos os elementos individuais presentes em linguagens[], que são as linguagens selecionadas pelo usuário ao clicar nos checkboxes. Usamos a mesma técnica para retornar os dados enviados a partir do campo SELECT do formulário:
if(isset($_POST['tecnologias'])) {
    echo "Você selecionou as seguintes tecnologias:<br/>";
    // Loop foreach para retornar as tecnologias selecionadas:
    foreach($_POST['tecnologias'] as $tecnologia) {
        echo $tecnologia . "<br/>";
    }
}
else {
    echo "Nenhuma tecnologia selecionada. Que pena! <br/>";
}
Se você quiser visualizar os dados presentes no array (por exemplo, para debugar o script), pode usar a função print_r()
print_r($_POST);
Veja o resultado retornado após preencher o formulário e enviá-lo:
Função print_r() retornando dados do array $_POST
Entre colchetes estão os nomes dos campos do formulário, e associados a eles seus respectivos valores (informados pelo usuário no formulário). Note que os campos linguagens e tecnologias também são arrays, podendo carregar mais de uma informação em cada um.

Na caixa a seguir você pode ver a listagem completa do código do script processa.php, usado em nossos exemplos:

<?php
$nome = $_POST['nome'];
$sobrenome = $_POST['sobrenome'];
$sexo = $_POST['sexo'];
$comentarios = $_POST['comentarios'];
$senha = $_POST['senha'];
echo "Seu nome é " . $nome . " " . $sobrenome . "<br>";
echo "O sexo informado foi " . $sexo . "<br>";
echo "A senha digitada é " . $senha . "<br>";
echo "Você comentou o seguinte: <br>" . $comentarios . "<br>";

// Verificar os checkboxes
if(isset($_POST['linguagens'])) {
    echo "As linguagens de programação escolhidas foram:<br/>";
    // Efetuar loop pelo array de linguagens:
    foreach($_POST['linguagens'] as $linguagem) {
        echo $linguagem . "<br>";
    }
}
else {
    echo "Nenhuma linguagem de programação escolhida!<br/>";
}

// Verificar as tecnologias do campo SELECT:
if(isset($_POST['tecnologias'])) {
    echo "Você selecionou as seguintes tecnologias:<br/>";
    // Loop foreach para retornar as tecnologias selecionadas:
    foreach($_POST['tecnologias'] as $tecnologia) {
        echo $tecnologia . "<br>";
    }
}
else {
    echo "Nenhuma tecnologia selecionada. Que pena! <br/>";
}

// Mostrar todos os itens do array associativo $_POST:
print_r($_POST);
?>

Após entrar com dados no formulário e clicar em Enviar, os dados são enviados ao servidor e então processados, e o resultado pode ser visto abaixo (nenhum arquivo foi selecionado):

Formulário PHP processadoÉ isso aí! Na próxima lição iremos estudar mais algumas funções muito úteis em PHP. Até lá!

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*