PHP e MySQL

 
 
Parte III - Funções, includes e formulários do HTML
Sumário:
  • Funções
  • Passagem de parâmetros
    • Por valor
    • Por referência
  • Includes
  • Formulário do HTML
  • Campos de entrada de dados
  • Criação de um formulário
  • Recuperação e verificação de dados

 

Funções

Uma função é um segmento de programa que executa uma tarefa específica. Um recurso valioso que permite a modularização ou a divisão do programa em pequenas tarefas que simplifica a programação como um todo, além de evitar de reescrever determinado código quando precisar realizar a mesma tarefa em outro ponto do programa.

A sintaxe para a definição de uma função é a seguinte:

function nome_da_função (parâmetros) {
comandos;
[ return <expressão> ]
}

O nome_da_função deve ser substituido por um identificador de acordo com as regras definidas para nomear variáveis e constantes, exceto o símbolo $ (cifrão) que não pode ser usado para formar o identificador da função. Os valores transmitidos para uma função são chamados de parâmetros. A função receptora deve declarar essas informações entre parênteses as quais podem ser utilizadas no corpo da função. Os parâmetros são opcionais, no entanto os parênteses devem estar presentes na definição da função como segue: function nome_da_função().

A chamada à função termina com a instrução return que transfere o controle para a instrução seguinte a da chamadora. Esta instrução tem duas finalidades: determina o fim lógico e o valor de retorno da função. Cada função pode receber vários argumentos ou valores e pode retornar à função chamadora um único valor. A instrução return é opcional, podendo a função executar uma tarefa e não retornar nenhum valor.

No exemplo a seguir a função recebe os valores das variáveis como argumentos, calcula a média aritmética das duas notas e retorna o resultado, seguindo o fluxo de execução a partir do ponto da instrução chamadora:

<?php
function media($n1, $n2) {
$media = $n1 + $n2) / 2;
return $media;
}
$nota1 = 7.5;
$nota2 = 9.0;
$nota_media = media($nota1, $nota2);
echo "Média: $nota_media.";
?>

Observe que as variáveis passadas como parâmetros ($nota1, $nota2) não precisam ter o mesmo nome dos argumentos especificados na função ($n1, $n2). O resultado é retornado à variavel $nota_media cujo valor é exibido na tela como segue: Média: 8.25.

 

Passagem de parâmetros

Os parâmetros são dados que as funções recebem para fazer algum tipo de operação. Uma função pode receber qualquer número de parâmetros, ou mesmo nenhum. Isto é definido no cabeçalho da função. Por padrão, a passagem de parâmetros para a função é realizada por valor.

Por valor

No exemplo anterior a função media declara as variáveis $n1 e $n2 para receber os valores passados. Este tipo de passagem de argumentos é chamado de passagem por valor, pois os valores das variáveis do programa chamador são copiados para as correspondentes variáveis da função chamada.

Por referência

Na passagem por referência a função chamada pode acessar e modificar o conteúdo das variáveis da função chamadora, não ocorrendo, sob esse aspecto, nenhuma cópia dos valores. Esta opção é indicada pelo símbolo & colocado antes do nome da variável definida como parâmetro da função. Veja o exemplo anterior modificado para passagem por referência:

<?php
function media(&$media) {
$media = $media / 2;
}
$nota1 = 7.5;
$nota2 = 9.0;
$soma = $nota1 + $nota2;
media($soma);
echo "Média: $soma.";
?>

Neste exemplo, o PHP estabelece uma referência para a variável original ($soma) de modo que as modificações feitas no âmbito da função ocorram na variável de origem.

 
 

Includes

A função include é usada para reaproveitar funções, cabeçalhos, rodapés ou elementos que serão reutilizados em várias páginas. Significa que se pode criar um padrão de cabeçalho, rodapé ou arquivo de menu para todas as páginas do site. Quando o cabeçalho, por exemplo, precisa ser atualizado, basta atualizar o arquivo de inclusão ou quando se adicionar uma nova página pode-se simplesmente modificar o arquivo de menu que será acessado por todas as páginas, em vez de atualizar os links em todas as páginas do site. A função include insere ou introduz um arquivo na pagina cuja sintaxe é a seguinte:

include "nome_do_arquivo";

Pode-se, por exemplo, criar um arquivo para mostrar a data atual e inseri-lo em todas as páginas através de uma include. O script do arquivo da data pode ser codificado como segue:

<?php
$meses = array("janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro");
$dia = date ("d", time());
$mes = date ("m", time());
$ano = date ("Y", time());
echo $dia." de ".$meses[$mes-1]." de ".$ano;
?>

Salvar este arquivo como data.inc e usá-lo via include nas páginas que convier. Para tanto, basta chamar o arquivo, inserindo o seguinte comando no ponto em que deva aparecer a data:

<?php
include "data.inc";
?>

A data atual no formato especificado no comando echo contido no arquivo data.inc surge na tela.

 
 

Formulários do HTML

Um formulário é composto por um ou mais campos para entrada de dados a serem preenchidos pelo usuário e enviados ao servidor web para serem processados. O formulário é criado por meio das tags <form> e </form> do HTML. O atributo action da tag form indica o tipo de ação a ser realizado com os dados do formulário. Para o conteúdo do formulário ser tratado por um programa de script deve-se informar o nome do programa na opção action da tag form. Exemplo:

<form action="recebe_dados.php">

A forma de como os dados do formulário são passados ao programa PHP é determinada pelo atributo method da tag form. Existem dois métodos para envio dos dados do navegador para o servidor: GET e POST.

No método GET os dados são enviados através da URL juntamente com o nome do programa que irá processar os dados. Este método limita a quantidade de caracteres a serem enviados e deixa os dados a mostra na barra de endereço do browser.

O método POST envia os dados do formulário para o servidor no corpo da mensagem, não podendo ser visualizados na barra de endereço do navegador, e não há limites quanto à quantidade de dados a ser encaminhada. Recomenda-se o uso do método POST para enviar grande quantidade de dados, além de permitir o envio de imagens e de outros arquivos que não são suportados pelo método GET. Exemplo do atributo méthod da tag form:

<form action="recebe_dados.php" method="POST">

 
 

Campos de entrada de dados

Campos de entrada de dados definidos por meio da tag <input> e seus atributos. Exemplo:

<input type="text" name="nome" value="" size="40">

Prinpais atributos da tag <input>:

type (obrigatório) tipo do campo de entrada de dados
name (obrigatório) nome do campo
value (opcional) valor pré-definido
size (opcional) define a largura em caracteres
maxlength (opcional) número máximo de caracteres que pode ser digitado.

Principais opções do atributo type da tag <input>:

text campo de entrada de texto de uma linha
password campo de entrada de senhas
checkbox exibe uma caixa de seleção
radio botões de seleção. O usuário escolhe um dentre os disponíveis
select exibe uma lista de seleção (caixa drop-down)
file permite a transmissão de arquivos
submit botão para envio dos dados do formulário
reset limpa os campos, preservando os pré-definidos
hidden campo não visualizado pelo usuário (passagem de dado)

Considere-se ainda a entrada de dados oferecida pela tags <textarea> e </textarea> que define um campo de formulário para digitação de texto que se estende por várias linhas. Exemplo:

<textarea name="comentario" cols="70" rows="15"></textarea>

name nome da caixa de texto
cols número de colunas (caracteres). Largura da caixa de texto
rows número de linhas. Altura da caixa de texto
 
 

Criação de um formulário

A seguir um exemplo de formulário que encerra alguns tipos de campos mais utilizados:

Segue a codificação em HTML desse formulário:

<html>
<head>
<title>Exemplo de formulário</title>
</head>
<body>
<form name="form1" method="post" action="recebe_dados.php">
<label for="nome">Nome:</label>
<input type="text" name="nome" id="nome" size="40" />
&nbsp;
Sexo:
<input type="radio" name="sexo" id="m" value="M" /><label for="m">M</label>
<input type="radio" name="sexo" id="f" value="F" /><label for="f">F</label>
<br /><br />
<label for="email">E-mail:</label>
<input type="text" name="email" id="email" size="40" />
<br /><br />
<label for="nav">Navegador preferido:</label>
<select name="browser" id="nav">
<option selected>Browser</option>
<option> Google Chrome</option>
<option> Internet Explorer</option>
<option> Mozilla Firefox</option>
<option> Opera</option>
<option> Apple Safari</option>
</select>
<br /><br />
Esportes que aprecia:<br />
<input type="checkbox" name="box[]" id="fut" value="Futebol"/>
<label for="fut">futebol</label>
<input type="checkbox" name="box[]" id="bas" value="Basquete" />
<label for="bas">basquete</label>
<input type="checkbox" name="box[]" id="ten" value="Tênis" />
<label for="ten">tênis</label>
<input type="checkbox" name="box[]" id="vol" value="Volei" />
<label for="vol">volei</label>
<input type="checkbox" name="box[]" id="han" value="Handebol" />
<label for="han">handebol</label>
<input type="checkbox" name="box[]" id="nen" value="Nenhum deles" />
<label for="nen">nenhum deles</label><br /><br>
<label for="com">Comentário sobre o esporte preferido:</label><br />
<textarea name="comentario" id="com" cols="50" rows="5"></textarea>
<br />
<input type="submit" name="enviar" value="Enviar" />&nbsp;&nbsp;
<input type="reset" name="limpar" value="Limpar" />
</form>
</body>
</html>

Preenchimento e envio do formulário:

 
 

Recuperação e verificação de dados

O usuário preenche o formulário e clica no botão Enviar. Os dados são submetidos ao programa recebe_dados.php especificado no atributo action da tag form. Para recuperar os dados do formulário que utiliza o método POST deve-se usar o array superglobal $_POST. Depois de coletados, ao menos os dados relevantes devem ser validados para garantir sua integridade antes de serem utilizados ou armazenados em um banco de dados. Segue o código do programa recebe_dados.php:

<html>
<head>
<title>Recebe dados</title>
</head>
<body>
<?php
$nome = $_POST['nome'];
$email = $_POST['email'];
$browser = $_POST['browser'];
$comentario = $_POST['comentario'];
if (isset($_POST['sexo']))
$sexo = $_POST['sexo'];
else
$sexo=false;
if(isset($_POST['box']))
$box = $_POST['box'];
else
$box=false;
$erro=0;
$mens_erro="";
if ($nome==""){
$erro=+1;
$mens_erro="$erro - Digite o nome.<br />";
}
if ($sexo==false){
$erro+=1;
$mens_erro=$mens_erro."$erro - Informe o sexo<br />";
}
if ($email==""){
$erro+=1;
$mens_erro=$mens_erro."$erro - Digite seu E-mail<br />";
}
if ($browser=="Browser"){
$erro+=1;
$mens_erro=$mens_erro."$erro - Selecione um browser<br />";
}
if($erro>0){
print "<em>Formulário não preenchido corretamente</em>.
<br /><br />";
print $mens_erro;
print "<br /><input type='button' value='Corrigir'
onclick='javascript:history.go(-1)'>";
}
else{
print "Nome: <strong> $nome </strong> &#8211; ";
print "Sexo: <strong> $sexo </strong><br /><br />";
print "E-mail: <strong> $email </strong><br /><br />";
print "Browser: <strong> $browser </strong><br /><br />";
$total = count($box); // total de registros do vetor $box
print "Esportes:<br />";
for($i=0; $i<$total; $i++){
print("<strong> $box[$i] </strong> ");//checkboxes selecionados
if($i<($total-1))
print ", ";
else
print ". ";
}
print"<br><br>Comentario:<br /><strong>$comentario</strong><br />";
}
?>
</body>
</html>

Visualização do resultado após a execução do programa recebe_dados.php:

O usuário preencheu o fomulário corretamente, o que se pode deduzir em vista do resultado apresentado. Havendo incorreções no preenchimento dos campos do formulário, o programa acusa as inconsistências em uma tela específica para que o usuário faça as devidas correções.

Inicialmente o programa recebe o conteúdo do formulário por meio do array superglobal $_POST. As variáveis receptoras podem ser definidas com qualquer nome válido. Por conveniência, foram usados os mesmos nomes dados aos campos do formulário.

A função isset testa a existência de conteúdo na variável para evitar ocorrência de erro de programa caso o campo não tenha sido devidamente marcado pelo usuário. O programa ainda faz os seguintes testes de verificação: examina se os campos nome, sexo, email e browser foram informados pelo usuário. Se algum desses campos estiver vazio, isto é, se a variável $erro for maior que 0 (zero), o programa emite mensagem para correção. Caso contrário ou na inexistência de erro, os dados do formulário são impressos.

Supondo que os campos nome, sexo, email e browser não tenham sido informados pelo usuário, o programa recebe_dados.php apresentaria a seguinte tela:

O usuário toma conhecimento dos erros discriminados na tela acima e clica no botão corrigir para voltar ao formulário inicial e proceder o preenchimento correto.
Esse programa não tem grande utilidade, porquanto ele apenas efetua a verificação de validade dos dados enviados, sem proporcionar nenhuma finalidade ou uso posterior dos mesmos. O objetivo foi mostrar o envio e recepção de informações seguidas de uma simples crítica de validade de dados.