PHP Forms: Manipulando dados de formulários

Saber manipular formulários é tão importante quanto saber como enviá-los a um banco de dados. Nesse artigo aprenderemos a manipular dados de formulários em PHP.

Uma das dúvidas mais frequentes entre desenvolvedores iniciantes em PHP é como manipular os dados de formulário enviados para os scripts PHP, principalmente dados de "checkbox" e upload de arquivos.

Nesse artigo estaremos vendo como receber e manipular dados de campos comuns de formulários.

Para facilitar, este artigo está divido nos seguintes tópicos:

  1. Introdução
  2. Campos Hidden
  3. Campos Text e Textarea
  4. Campos Radio
  5. Campos Checkbox
  6. Campos Select

Introdução ao Formulário PHP

Um formulário HTML é apenas um "rosto bonito" para onde os usuários poderão inserir informações que serão interpretados de alguma maneira por algum script do lado do servidor. E no nosso caso, esse script é um script PHP.

Primeiro: antes para poder enviar as informações, seu formulário deve conter um botão "submit", isso se consegue através do comando:

<input type=submit value="Texto do Botão">

Segundo: todos os campos que serão tratados no script PHP devem conter o parâmetro "NAME", caso contrário, os dados não serão passados para o script PHP. Ex:

<input type=text name=nome_do_campo>

Como as informações do formulário são passadas para esse script PHP e como as informações do formulário enviado são tratadas, dependem de você.

Existem 2 métodos como as informações podem ser passadas: GET e POST. O recomendável sempre, para todos os formulários é usar o método POST, onde os dados enviados não são visíveis nas URLs, ocultando possíveis importantes informações e permitindo o envio de longas informações. O GET é totalmente o contrário disso.

Como as informações chegam para o script PHP?

Listagem 1: Formulário HTML

<form action="script.php" method="post"> Campo 1: <input type=text name=campo1><br> Campo 2: <input type=text name=campo2><br> <input type=submit value="OK"> </form>

Esse formulário usa o método POST para envio das informações, então em "script.php":

Listagem 2: Uso de método POST para envio de formulário

<?php echo "O valor de CAMPO 1 é: " . $_POST["campo1"]; echo "<br>O valor de CAMPO 2 é: " . $_POST["campo2"]; ?>

Se o formulário tivesse sido enviado usando o método GET, você simplesmente usaria $_GET no lugar de $_POST.

Nota: Em vez de usar $_GET ou $_POST você pode escrever a variável com o mesmo nome do campo do formulário (no exemplo, $campo1 e $campo2). Mas, esse uso não é recomendado, pois se a diretiva "register_globals" na configuração do seu PHP estiver desativada, as variáveis com nome dos campos dos formulários, terão um valor vazio.

Uma solução para isso é usar a função import_request_variables no começo dos seus scripts que interpretam formulários. Essa função aceita 3 letras como argumentos: P, G e C, referentes a $_POST, $_GET e $_COOKIE respectivamente. Exemplo de uso:

<?php import_request_variables("gP"); ?>

Exemplo: Você possui formulário com os campos "nome", "endereço" e "idade". Assuma que a diretiva "register_globals" do seu PHP esteja desligada, mas, você já havia programado o script usando as variáveis no escopo global, no lugar de $_POST.

Adicionando aquela função no começo do script, as variáveis do seu formulário postado:

$_POST["nome"], $_POST["endereco"] e $_POST["idade"] serão extraídas cada para uma variável diferente: $nome, $endereco e $idade.

Campos Hidden

Os campos hidden são usados para passar informações que não podem ser alteradas pelo usuário que estará inserindo informações no formulário. Por exemplo: você tem um site com sistema de login e o usuário quer alterar as informações de login dele. O script que irá manipular esse formulário, precisa saber o ID do usuário para poder alterar as informações no banco de dados, então esse ID é um campo hidden.

Códigos Exemplos:

Listagem 3: hidden.html

<form action="hidden.php" method="post"> <input type=hidden name=escondido value="valor do escondido"> <input type=hidden name=id value="111"> <input type=submit> </form>

Listagem 4: hidden.php

<?php echo "Campo Hidden: " . $_POST["escondido"]; echo "<br>Oi, seu ID é: " . $_POST["id"]; ?>

Campos Text e Textarea

Os campos text e textarea são os tipos mais simples, onde há somente um possível valor por campo. Dispensam maiores explicações.

Códigos Exemplos:

Listagem 5: texts.html

<form action="texts.php" method="post"> Nome: <input type=text name=nome><br> Email: <input type=text name=email><br><br> Mensagem: <textarea name=mensagem cols=8 rows=3></textarea><br> <input type=submit> </form>

Listagem 6: texts.php

<?php echo "Olá " . $_POST["nome"] . " (email: " . $_POST["email"] . ")<br><br>"; echo "Sua mensagem: " . $_POST["mensagem"]; ?>

Campos Radio

Campos Radio permitem um relacionamento de um para muitos entre identificador e valor, ou seja, eles têm múltiplos possíveis valores, mas somente um pode ser pré-exibido ou selecionado. Por exemplo: você tem um sistema de "quiz".

Cada pergunta possui 5 possíveis respostas. Cada resposta é um radio, onde os 5 radios dessa pergunta possuem o mesmo identificador, mas cada com valores diferentes.

Códigos Exemplos:

Listagem 7: radio.html

<form action="radio.php" method="post"> <B>Qual seu sistema operacional?</B><br> <input type=radio name=sistema value="Windows 98"> Win 98 <input type=radio name=sistema value="Windows XP"> Win XP <input type=radio name=sistema value="Linux"> Linux <input type=radio name=sistema value="Mac"> Mac <br><br> <B>Qual a marca de seu monitor?</B><br> <input type=radio name=monitor value="Samsung"> Samsung <input type=radio name=monitor value="LG"> LG <input type=radio name=monitor value="Desconhecido"> Desconhecido <br><br> <input type=submit> </form>

Listagem 8: radio.php

<?php echo "Seu sistema operacional é: " . $_POST["sistema"]; echo "<br>Seu monitor é: " . $_POST["monitor"]; ?>

Campos Checkbox

O tipo Checkbox tem somente um possível valor por entrada: on value (marcado) ou no value (desmarcado). No script você deve fazer a verificação para saber se o campo foi marcado ou não.

Se é possível também utilizar grupos de checkbox com o mesmo nome. Para você deve adicionar "[]" no final do nome, para o PHP interpretar como array, veja o código exemplo.

Códigos Exemplos:

Listagem 9: checkbox.html

<form action="checkbox.php" method="post"> <B>Escolha os numeros de sua preferência:</B><br> <input type=checkbox name="numeros[]" value=10> 10<br> <input type=checkbox name="numeros[]" value=100> 100<br> <input type=checkbox name="numeros[]" value=1000> 1000<br> <input type=checkbox name="numeros[]" value=10000> 10000<br> <input type=checkbox name="numeros[]" value=90> 90<br> <input type=checkbox name="numeros[]" value=50> 50<br> <input type=checkbox name="numeros[]" value=30> 30<br> <input type=checkbox name="numeros[]" value=15> 15<br><BR> <input type=checkbox name="news" value=1> <B>Receber Newsletter?</B><br><BR> <input type=submit> </form>

Listagem 10: checkbox.php

<?php // Verifica se usuário escolheu algum número if(isset($_POST["numeros"])) { echo "Os números de sua preferência são:<BR>"; // Faz loop pelo array dos numeros foreach($_POST["numeros"] as $numero) { echo "- " . $numero . "<BR>"; } } else { echo "Você não escolheu número preferido!<br>"; } // Verifica se usuário quer receber newsletter if(isset($_POST["news"])) { echo "Você deseja receber as novidades por email!"; } else { echo "Você não quer receber novidades por email..."; } ?>

Campos Select

Os campos select permitem tratar uma variedade de opções, onde o usuário pode selecionar apenas uma opção ou múltiplas opções. Quando você permite múltiplas seleções, deve adicionar "[]" no final do nome, para o PHP interpretar como array.

Nos exemplos, mostro o funcionamento e tratamento de ambas.

Códigos Exemplos:

Listagem 11: select.html

<form action="select.php" method="post"> <B>Qual seu processador?</B><br> <select name=processador> <option value=Pentium>Pentium</option> <option value=AMD>AMD</option> <option value=Celeron>Celeron</option> </select><BR><BR> <B>Livros que deseja comprar?</B><br> Obs: segure "CTRL" para selecionar mais de um.<BR> <select name="livros[]" multiple> <option value="Biblia do PHP 4">Biblia do PHP 4</option> <option value="PHP Professional">PHP Professional</option> <option value="Iniciando em PHP">Iniciando em PHP</option> <option value="Novidades do PHP 5">Novidades do PHP 5</option> <option value="Biblia do MySQL">Biblia do MySQL</option> </select><BR><BR> <input type=submit> </form>

Listagem 12: select.php

<?php echo "Seu processador é: " . $_POST["processador"] . "<BR>"; // Verifica se usuário escolheu algum livro if(isset($_POST["livros"])) { echo "O(s) livro(s) que você deseja comprar:<br>"; // Faz loop para os livros foreach($_POST["livros"] as $livro) { echo "- " . $livro . "<br>"; } } else { echo "Você não escolheu nenhum livro!"; } ?>

A manipulação de dados de formulários é uma das coisas mais importantes que todo desenvolvedor deve saber, pois normalmente é por meio dela que existe a comunicação de aplicação x banco de dados.

Espero que tenham entendido a fazer essa manipulação na linguagem PHP, qualquer dúvida, fiquem a vontade em usar os comentários abaixo, até o próximo.

Relacionados

Artigos relacionados