Processamento de formulário em um único arquivo PHP
Na lição anterior, nosso formulário estava localizado
em uma página, mas era enviado para outra.
Na verdade, isso não é necessário. Se você deixar
o atributo action vazio ou removê-lo
completamente, o formulário será enviado para
a mesma página.
Como isso vai funcionar: na primeira vez que acessarmos a página, preencheremos o formulário com dados e clicaremos no botão. Depois disso, a página será atualizada e seu código será executado novamente, mas agora com os dados do formulário.
Vamos ver um exemplo. Suponha que temos um arquivo com um formulário e seu processamento:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Na primeira vez que acessar a página, a função var_dump
exibirá um array vazio. E após o envio do formulário,
ela exibirá os dados do formulário. Ou seja, na primeira
vez $_GET estará vazio, e na segunda vez
- conterá os dados do formulário.
Isso pode levar a problemas. Suponha, por exemplo, que vamos inserir números no formulário e queremos exibir a soma desses números na tela:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Neste caso, na primeira vez que acessar a página,
veremos erros PHP, relacionados ao fato de que
o array $_GET está vazio, e estamos tentando acessar
seus elementos.
Vale mencionar que os erros podem não aparecer no seu navegador. Nesse caso, verifique se a exibição de erros do PHP está ativada, e também certifique-se de que é o primeiro acesso à página e que não há dados de formulário na barra de endereços.
Vamos corrigir o problema. Para isso, adicionaremos uma condição na qual verificaremos se o formulário foi enviado.
Por exemplo, podemos verificar se $_GET
não está vazio. Se $_GET não estiver vazio -
então o formulário foi enviado e podemos executar
a soma. Caso contrário, ainda estamos no
primeiro acesso à página e a soma não será executada.
Então, aqui está o código corrigido:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Pergunte ao usuário o sobrenome, nome e patronímico. Após o envio do formulário, exiba na tela os dados inseridos.