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 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:
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/>"; }
print_r($_POST);
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):
É isso aí! Na próxima lição iremos estudar mais algumas funções muito úteis em PHP. Até lá!
Escreva um comentário