Certo, agora temos um formulário sendo exibido, mas, como será que o PHP con-
segue pegar os dados que são informados nos formulários? Vamos fazer um expe-
rimento: no nome da tarefa, digite Estudar PHP e clique no botão Cadastrar. O
que aconteceu? Aparentemente, nada, mas o texto sumiu da caixa de texto. E ou-
tra coisa muito interessante também aconteceu, o endereço do nosso script mudou!
Sim, repare que agora existe uma interrogação no endereço, seguida por um texto
que tem muito a nos dizer. Veja como ficou o endereço:
http://localhost/tarefas/tarefas.php?nome=Estudar+PHP
Dá para tirarmos algumas conclusões aqui, certo? O nome do input no for-
mulário é nome e neste endereço temos um trecho nome=, ou seja, o que digitamos
no campo foi enviado através do endereço, através da URL (vou chamar o endereço
de URL daqui para frente).
Na primeira vez que chamamos a página, seu endereço não tinha o trecho com
o nome da tarefa, mas quando digitamos o nome e enviamos, este trecho
passou a
aparecer depois do símbolo de interrogação ( ?). Ou seja, um formulário serve para
enviarmos os dados para algum lugar.
33
4.4. Pegando os dados da URL
Casa do Código
Entrada de dados na web
Se você já programou algum software para desktop ou scripts para a
linha de comando, já deve ter lidado com entrada de dados do usuário.
Neste tipo de software, em geral basta parar o processamento e pedir
para o usuário informar um valor, e então seguir em frente usando o valor
fornecido.
Na web, as coisas são um pouco diferentes. O PHP não pode ser pa-
rado para perguntar algo para o usuário, então os dados já devem existir
para o PHP quando o script começar a rodar. Confuso? Na verdade é
só uma maneira diferente de encarar a entrada de dados. Veja a nossa
URL, por exemplo, ela tem o trecho nome=Estudar+PHP. Este trecho
serve para inserir uma informação para o PHP, no caso, o nome da ta-
refa. Sendo assim, quando o script tarefa.php começar a executar, ele
já terá esta informação.
Por isso, na web devemos sempre pensar na entrada de dados usando
os formulários que irão enviar os dados para a próxima página.
Por enquanto, a nossa próxima página é a mesma página, mas vere-
mos como mudar isso mais adiante.
Legal, já sabemos que o nome da tarefa foi enviado através da URL. Agora a
questão é: Como pegar esse dado dentro do PHP?
4.4
Pegando os dados da URL
PHP nasceu para a web e se dá muito bem com ela. Por isso, em PHP é super simples
pegar os dados fornecidos pelo usuário através de formulários e URLs. Em PHP exis-
tem algumas variáveis chamadas de super globais, isso significa que estas variáveis
existem em todos os escopos de seus programas PHP. Ou seja, você pode acessá-las
dentro de funções, dentro de laços, dentro de classes... Enfim, em qualquer lugar do
seu código elas estarão disponíveis.
No nosso caso, vamos usar a super global $_GET. Lembra dos arrays que foram
usados para fazer o calendário? $_GET também é um array e o mais interessante é
que o PHP pega o que está na URL e coloca em $_GET para usarmos! Vamos fazer
um teste exibindo o nome digitado logo após o nosso formulário. Para isso, após
34
Casa do Código
Capítulo 4. Entrada de dados com formulário
o fechamento do formulário, ou seja, depois da tag </form>, adicione o seguinte
código:
...
</form>
<?php
if (isset($_GET['nome'])) {
echo "Nome informado: " . $_GET['nome'];
}
?>
...
As reticências são apenas ilustrativas, claro! Alias, de agora em diante vou colo-
car reticências várias vezes para ilustrar trechos que deverão ser incluídos dentro de
códigos já existentes.
Neste trecho estamos usando a função isset() que verifica se uma variável
existe, ou, neste caso, se o índice nome existe no array $_GET. Caso o índice exista,
vamos exibi-lo usando o echo.
Em PHP, assim como em outras linguagens, é necessário definir uma variável
antes de tentar usá-la. A função isset() é interessante para nos ajudar a verificar
se uma variável existe, ou neste caso, um índice em um array, pois isset() não irá
gerar um erro, dizendo que a variável não existe.
Atualize sua página, em http://localhost/tarefas/tarefas.php, mantendo a URL
com o nome, ou digite no formulário novamente e envie os dados. Sua página deverá
ficar assim:
Figura 4.2: Exibindo os dados usando $_GET
35
4.4. Pegando os dados da URL
Casa do Código
Legal, agora que sabemos pegar o valor que foi passado através da URL usando
$_GET, podemos guardar este valor em um array que será a nossa lista de tarefas.
Para isso, troque o código que acabamos de fazer para exibir o nome infor-
mado por um que pegue o valor em $_GET e guarde em um array chamado
$lista_tarefas:
...
</form>
<?php
$lista_tarefas = array();
if (isset($_GET['nome'])) {
$lista_tarefas[] = $_GET['nome'];
}
?>
...
Este código é bem simples, apenas verificamos se existe o índice nome dentro
de
$_GET e caso exista, criamos um novo índice em $lista_tarefas usando a
sintaxe de colchetes vazios.