Desenvolvimento - PHP
Manipulando dados de formulários com PHP – Parte 1
Uma das dúvidas mais freqüentes entre programadores PHP iniciantes é como manipular os dados de formulário enviados para os scripts PHP, principalmente dados de “checkbox” e upload de arquivos. Nessa primeira parte desse artigo, estarei mostrando como receber e manipular dados de campos comuns de formulários.
por Alfred Reinold BaudischNa próxima semana estarei mostrando como manipular o upload de arquivos através dos formulários.
Para facilitar, esta primeira parte está divida nos seguintes tópicos:
1 - Introdução
2 - Campos Hidden
3 - Campos Text e Textarea
4 - Campos Radio
5 - Campos Checkbox
6 - Campos Select
1 - Introdução
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?
Assuma o seguinte formulário:
<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":
<?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.
Observações:
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");
?>
O que acontece?
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.
2 - 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:
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>
hidden.php
<?php echo "Campo Hidden: " . $_POST["escondido"]; echo "<br>Oi, seu ID é: " . $_POST["id"]; ?>
3 - 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:
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>
texts.php
<?php echo "Olá " . $_POST["nome"] . " (email: " . $_POST["email"] . ")<br><br>"; echo "Sua mensagem: " . $_POST["mensagem"]; ?>
4 - 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:
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>radio.php
<?php echo "Seu sistema operacional é: " . $_POST["sistema"]; echo "<br>Seu monitor é: " . $_POST["monitor"]; ?>5 - 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:
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>
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...";
}
?>
6 - 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:
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>
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!";
}
?>
Clique aqui para baixar os códigos desse artigo
Quaisquer dúvidas que tiver, não hesite em contatar-me!
Até a próxima semana, onde estarei mostrando como manipular o upload de arquivos de formulários e algumas boas técnicas para com formulários => PHP.
Alfred Reinold Baudisch
Desenvolvedor de Sistemas Web
alfred@auriumsoft.com.br
www.estacaonet.com






