Tutorial
com 22 lições, caso já saiba alguma pode pular, basta digitar
control +F e localizar o que deseja, Vale lembrar que o PHP é uma
linguagem que exige muita dedicação pra quem quer aprender, vale
muito a pena, mas não é fácil, portanto dedique-se
Introdução
PHP possibilita a você inserir funcionalidades avançadas no seu site.
A finalidade deste tutorial é fazer uma introdução clara e precisa
do PHP. Iniciaremos do zero, mas é necessário que você possua um bom
conhecimento da linguagem HTML. Caso você não conheça HTML recomendamos
começar com a leitura do nosso
tutorial HTML.
PHP pode ser usado em vários contextos. - fóruns de discussão,
enquetes, lojas on-line, pontes SMS, listas de discussão, etc. A única
limitação para o uso do PHP é a sua imaginação. Não é difícil aprender
PHP, mas esteja ciente de que PHP é mais sofisticado e exige mais do que
o aprendizado da HTML. Assim, lembre-se que a paciência no processo de
aprendizado é uma virtude.
Obviamente este tutorial não vai lhe ensinar tudo sobre PHP. Será
necessário seu engajamento efetivo e realização de experimentos com os
códigos mostrados. Se você necessitar de ajuda durante o processo de
aprendizado recomendamos usar nossos
fóruns. Lá você encontrará pessoas especializadas prontas para dar dicas, sugestões e conselhos.
O que é necessário?
Supõe-se que você tem acesso a um editor de texto é sabe como usá-lo.
Você precisa ter acesso a um computador ou a um servidor capaz de
processar PHP. Ao contrário do que ocorre com a HTML e as CSS, para
PHP não faz a menor diferença o navegador que o
usuário está usando, mas o importante é o tipo de servidor na qual sua
página está hospedada. Isto porque PHP é uma tecnologia processada no lado do servidor.
Nas lições seguintes você aprenderá como o PHP funciona e como
configurar seu computador para processar PHP. Em seguida você aprenderá
sobre funções e métodos do PHP.
Ao término deste tutorial você estará em condições de desenvolver
scripts PHP e em consequência poderá usar as ilimitadas funcionalidades
da linguagem para adicionar interatividade às suas páginas web.
Divirta-se!
Lição 1: O que é PHP
Quando se começa o estudo de PHP as primeiras perguntas são: O que é PHP? Como ele funciona?
Nesta lição daremos a resposta a estas duas perguntas. É essencial
que você conheça as respostas antes de começar a desenvolver com PHP. O
exato conhecimento do que é e de como funciona o PHP servirá de base
para acelerar de forma significativa o seu processo de aprendizado.
Bem, vamos começar!
O que é PHP?
Inicialmente PHP foi um acrônimo para
Personal
Home
Pages, mas posteriormente assumiu o significado de
PHP:
Hypertext
Preprocessor.
PHP foi criado por Rasmus Lerdorf nascido na Groelândia - Dinamarca e
posteriormente começou a ser desenvolvido como código livre. PHP não é
um Padrão Web - é uma tecnologia de código aberto. PHP não é uma
linguagem de programação no sentido estrito da palavra, mas sim uma
tecnologia que permite a inserção de scripts nos seus documentos.
A descrição sumária do que seja uma página PHP é que trata-se de um arquivo gravado com a extensão
.php contendo tags HTML e scripts que são executados em um servidor web.
Como funciona o PHP?
A melhor maneira de explicar como o PHP funciona é comparando-o com a
HTML. Suponha que você digite o endereço de um documento HTML (por
exemplo:
http://www.meusite.com/page.htm) na barra de endereços do navegador. Esta ação desencadeia a
requisição de uma página HTML. A requisição é ilustrada conforme a figura a seguir:
Como você pode observar, o servidor simplesmente envia uma página HTML ao cliente. Suponha agora que você digita
http://www.meusite.com/page.php - requisitando uma
página PHP - o servidor inicia seu trabalho de processamento:
O servidor lê cuidadosamente o arquivo PHP procurando por tarefas a
serem por ele executadas. Somente depois de executar eventuais tarefas o
resultado é enviado ao cliente. É importante ressaltar que o cliente
recebe e vê somente o
resultado do trabalho do servidor e não as instruções para executar o trabalho.
Se você clicar a funcionalidade do navegador para inspecionar o
código fonte de uma página PHP você não verá código PHP - verá somente
as tags HTML e seus conteúdos. Assim, não é possível visualizar os
scripts PHP inseridos em uma página inspecionando o código fonte da
página. Você terá que aprender PHP de outras maneiras, por exemplo:
lendo nosso tutorial.
Neste tutorial você aprenderá como escrever comandos para serem executados pelo servidor!
Então, a primeira coisa que você precisa é... um servidor! Mas, não
se apavore - você não precisará comprar um novo computador. Você precisa
simplesmente instalar um software no seu computador que fará com que
ele funcione como um servidor. Outra opção é ter um site hospedado em um
servidor que suporte PHP. Neste caso você precisa estar on-line
enquanto codifica.
Na próxima lição mostraremos como proceder para que seu computador funcione como um servidor.
Lição 2: Servidores
PHP é uma tecnologia que funciona no
lado do servidor.
Então, você precisa de um servidor para processar PHP. Você não
desembolsará um tostão para dispor de um servidor e existem várias
opções para obter um.
Esta lição mostra três opções para você dispor de um servidor. Nela
faremos uma breve introdução às três opções (escolha a opção que melhor
atenda às suas necessidades). Depois que o seu servidor estiver
instalado e funcionando poderemos passar para a lição 3 na qual você
criará sua primeira página PHP.
Opção 1: Servidor remoto de hospedagem
A primeira escolha é hospedar seu site em um servidor de hospedagem que suporte PHP.
Opção 2: Instalação de PHP no seu computador
Não existe uma receita de bolo para instalar PHP em um computador.
Esta opção é recomendada para usuários com experiência, mas usuário
comum não está impedido de escolhê-la. Basta seguir as instruções para
download e instalação (em inglês) contidas nos links a seguir:
Opção 3: XAMPP
XAMPP é um programa que habilita PHP no computador sem necessidade
de instalação complicada pelo usuário. É indicado para usuários comuns.
Lição 3: Sua primeira página PHP
Nas lições 1 e 2 aprendemos o que é PHP e instalamos um servidor ou
vamos usar um servidor remoto para seguir nossas lições. Assim, estamos
em condições de criar nossa primeira página PHP. Seguiremos um caminho
simples e fácil, contudo ao chegar ao final da lição você entenderá
muito mais de PHP e saberá o que pode fazer com ele.
Basicamente um arquivo PHP é um arquivo de texto com a extensão
.php consistindo de:
- Texto
- Tags HTML
- Scripts PHP
Você já sabe o que são textos e tags HTML. Então vamos examinar os scripts PHP.
Scripts PHP
O Grupo de documentação do PHP detalha e desenvolve
a documentação para o PHP.
Neste nosso tutorial nós, frequentemente, faremos referência e
apontaremos para links naquela documentação. O objetivo é que você
consulte e se familiarize com a documentação e fique em condições de
encontrar respostas para suas dúvidas na documentação. PHP envolve
tantas funcionalidades que é impossível aprender tudo em um tutorial. Em
compensação PHP não é difícil. Ao contrário, PHP é uma linguagem
parecida com o inglês.
Vamos começar com sua primeira página.
Exemplo: Hello World!
Comece gerando um documento HTML e grave-o na raiz do site com o nome
page.php. Se você usa XAMPP, (ver
lição 2), o caminho no seu computador é: "c:\xampp\htdocs\page.php" (ali seu computador é um servidor).
O código HTML deve ser como mostrado a seguir:
<html>
<head>
<title>Minha primeira página PHP</title>
</head>
<body>
</body>
</html>
Na lição 1 ensinamos que PHP destina-se a
escrever comandos para o servidor.. Vamos escrever um comando para o servidor.
Primeiramente devemos dizer ao servidor onde PHP
começa e onde
termina. Para isso usamos as tags
<?php e
?>
respectivamente, para marcar o início e o fim do código a ser executado
pelo servidor (na maioria dos servidores é suficiente escrever
<? para tag de início, contudo
<?php á a maneira mais correta e recomendada de se escrever a tag de início do PHP).
Acrescente o seguinte código na sua marcação HTML:
<html>
<head>
<title>Minha primeira página PHP</title>
</head>
<body>
<?php
echo "<h1>Hello World!</h1>";
?>
</body>
</html>
Se você abrir o documento em um navegador deverá ver algo parecido com o seguinte:
Observe o que acontece quando você examina o código fonte do documento (selecione "view source"):
O código PHP sumiu! Como foi dito na lição 1, apenas o servidor "vê" o código PHP -
o cliente (no caso o navegador) "vê" somente o resultado!
Vamos examinar o que acontece. Pedimos ao servidor para escrever
<h1> Hello World!</h1>. Em linguagem técnica podemos dizer
que usamos a função
echo
para instruir o servidor a escrever uma string para o cliente. O ponto e
vírgula termina o comando. Não se apavore! Tentaremos manter o uso de
linguagem técnica a um mínimo possível.
Este primeiro exemplo, sem dúvida, não é nada empolgante. Espere um
pouco! Daqui para frente as coisas se tornarão cada vez mais
empolgantes. Vejamos outro exemplo.
Exemplo: Agora!
Vamos fazer o servidor escrever mais. Podemos, por exemplo, pedir ao servidor para escrever a data e hora atual:
<html>
<head>
<title>Minha primeira página PHP</title>
</head>
<body>
<?php
echo date("r");
?>
</body>
</html>
O resultado em um navegador é algo como mostrado a seguir:
E o código HTML correspondente é:
Está ficando empolgante. Certo?
Fizemos o servidor mostrar a data e hora na página renderizada.
Notar que se você recarregar a página uma nova data e hora será
mostrada. O servidor escreve a data e hora toda vez que a página é
enviada ao cliente.
É importante notar que o código HTML renderizado contém apenas a
data - não é mostrado o script PHP. Assim, não importa o navegador que o
usuário está usando o resultado é sempre o mesmo. Atualmente, todas as
funcionalidades que são executadas no
lado do servidor sempre
funcionam em todos os navegadores!
Chamamos a atenção novamente para o ponto e vírgula no final de uma
linha de código PHP. Este ponto e vírgula é obrigatório ao final de um
comando. Se você esquecer o script não funcionará.
No exemplo nós usamos
date, que é uma função destinada a retornar a data e hora atuais no servidor.
Vamos ampliar o exemplo escrevendo uma
string e uma
function - separadas por um "
." (ponto) - observe a seguir:
<html>
<head>
<title>Minha primeira página PHP</title>
</head>
<body>
<?php
echo "<p>O grupo data/hora atual é: " . date("r") . "</p>";
?>
</body>
</html>
O resultado em um navegador é algo como mostrado a seguir:
E o código HTML correspondente é:
Na próxima lição estudaremos com detalhes a função
date e os diferentes formatos do grupo data/hora.
Lição 4: Trabalhando com datas e horas
Nesta lição você aprenderá as diferentes maneiras de trabalhar com
datas e horas usando o PHP. Começaremos mostrando exemplos bem simples
com a finalidade de mostrar o que PHP é capaz de fazer. Nesta lição
estudaremos com detalhes a função
date do PHP.
Funções para data e hora
PHP nos fornece uma série de
funções relacionadas a data e hora. Nesta lição veremos a mais importante destas funções; a função
date.
Usando-se os diferentes parâmetros previstos para a função
date ela retornará o grupo data/hora em diferentes formatos. Os parâmetros mais usuais são:
- date("y")
- Retorna o ano atual - para o dia de hoje o valor retornado é: 13
- date("m")
- Retorna o mês atual - para o dia de hoje o valor retornado é: 03
- date("F")
- Retorna o nome do mês atual - para o dia de hoje o valor retornado é: March
- date("d")
- Retorna o dia do mês atual - para o dia de hoje o valor retornado é: 08
- date("l")
- Retorna o nome do dia da semana atual - para o dia de hoje o valor retornado é: Friday
- date("w")
- Retorna o número correspondente ao dia da semana atual - para o dia de hoje o valor retornado é: 5
- date("H")
- Retorna a hora atual - para o dia de hoje o valor retornado é: 14
- date("i")
- Retorna o minuto atual - para o dia de hoje o valor retornado é: 02
- date("s")
- Retorna o segundo atual - para o dia de hoje o valor retornado é: 47
O exemplo a seguir ilustra o uso da função
date
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>
<?php
echo "<p>Hoje é " . date("l") . "</p>";
?>
</body>
</html>
A hora é: 1362747767
Ops... aqui parece coisa para nerds. A função
time() retorna a hora atual em número de segundos contados desde 1 de janeiro de 1970 às 12:00 PM, GMT.
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>
<?php
echo "<p>São decorridos exatamente " . time() . " segundos desde 1 de janeiro de 1970, 12:00 PM, GMT </ p> ";
?>
</body>
</html>
A representação da hora em segundos, contados desde 1 de janeiro de
1970 às 12:00 PM, GMT é chamada "timestamp" (UNIX timestamp) que é uma
representação muito útil quando se trabalha com datas/horas passadas e
futuras.
Por padrão, a função
date usa o timestamp atual (isto é, o valor corrente de
time()).
Mas, usando um parâmetro você pode especificar o retorno da função em
um diferente time stamp e assim trabalhar com datas passadas e futuras.
No exemplo a seguir nós definimos o timestamp para 0 segundos a partir
de 1 de janeiro de 1970 às 12:00 PM, GMT. Fazendo assim podemos
verificar qual foi o dia da semana de 1 de janeiro de 1970.
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>
<?php
echo "<p>O dia da semana em 1 de janeiro de 1970 foi " . date("l",0) . "</p>";
?>
</body>
</html>
A menos que você seja um gênio da matemática é muito complicado
calcular o número de segundos passados desde de 1 de janeiro de 1970
para uma determinada data. Felizmente existe uma função chamada
mktime que realiza o cálculo.
A sintaxe para a função
mktime é
(hora, minuto, segundo, mês, dia, ano). O exemplo a seguir faz a conversão para a data da chegada do homem à lua (21 de julho de 1969 às 02:56):
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>
<?php
echo mktime (2,56,0,7,21,1969);
?>
</body>
</html>
Notar que o retorno foi um número negativo. Isto indica que a data é anterior a 1 de janeiro de 1970.
Agora já podemos no valer do que até aqui aprendemos e usar a função
date para saber qual foi o dia da semana em que ocorreu o evento histórico da chegada do homem à lua.
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>
<?php
echo date("l", mktime(2,56,0,7,21,1969));
?>
</body>
</html>
Mas afinal qual a utilidade prática?
Até agora tudo parece muito teórico. Afinal de que maneira posso usar uma do tipo
time() de uma forma prática? Ao aprender algo novo é importante saber se você poderá usar o que aprendeu em uma página web.
Considere que o que você aprende neste tutorial é a construção de
blocos de códigos - o que você pode fazer com eles depende somente da
sua criatividade e está limitado apenas pela sua imaginação! Eu ousaria
afirmar que você já aprendeu muito mais do que está pensando. Por
exemplo: você acha que é capaz de criar um background para uma página
que mude a cada dia da semana e funcione em todos os navegadores?
Claro que você é capaz! Observe o exemplo a seguir:
<html>
<head>
<title>Grupo data/hora</title>
</head>
<body background="background_<?php echo date("w"); ?>.png">
</body>
</html>
O exemplo mostrado, que usa uma imagem de fundo dinâmica, requer que
você construa apenas sete imagens e as nomeie como background_1.png,
background_2.png, background_3.png, etc.
Se o usuário entra no seu site na terça feira a imagem de fundo será
background_2.png e no dia seguinte será background_3.png. Fácil e
simples!
Na próxima lição estudaremos os blocos de código destinados a construção de loops e aqueles destinados a repetição de código.
PHP é legal. Você não acha?
Lição 5: Loops
Na linguagem PHP existem diferentes estruturas de controle
destinadas a gerenciar a execução de scripts. Nesta lição nós
estudaremos os loops. Loops são usados para executar repetidamente uma
parte de um script em um determinado número de vezes ou até que seja
encontrada uma determinada condição.
Loop "while"
A sintaxe para um loop
while é conforme mostrada a seguir:
while (condição) {
Comandos PHP de execução
}
Esta sintaxe pode ser traduzida para linguagem corrente como:
execute comandos PHP enquanto (while) a condição for satisfeita.
Vejamos um exemplo bem simples:
<html>
<head>
<title>Loops</title>
</head>
<body>
<?php
$x = 1;
while ($x <= 50) {
echo "<p>Este texto se repete 50 vezes</p>";
$x = $x + 1;
}
?>
</body>
</html>
No exemplo mostrado usamos uma
variável denominada "$x".
Como você pode notar, nomes de variáveis em PHP sempre começam com o
caractere "$". No início é fácil esquecer esta sintaxe, contudo é
absolutamente necessário o símbolo "$" para iniciar o nome de variáveis,
pois do contrário o script não funciona.
Além disto o restante do script é auto-explicável. No começo a
variável $x recebe o valor 1. A seguir o loop pede para o servidor
executar o comando de escrever um texto enquanto a variável for menor do
que 50. A cada execução a variável é incrementada de 1 unidade.
Loop "for"
Outra maneira de executar um loop é com uso de
for conforme mostrado a seguir:
for (Inicialização; Condição; passo) {
Comandos PHP de execução
}
Os comandos PHP de execução se repetem com a 'Inicialização' +
'passo' enquanto a 'Condição é satisfeita'. Se isso não faz sentido para
você o exemplo a seguir esclarece melhor:
<html>
<head>
<title>Loops</title>
</head>
<body>
<?php
for ($x=0; $x<=50; $x=$x+5) {
echo '<p>A variável $x agora tem o valor igual a ' . $x . '</p>';
}
?>
</body>
</html>
No exemplo mostrado $x é incrementado de 5 unidades em cada loop. O
loop continua sua execução enquanto $x for menor ou igual a 50. Notar
que o valor de $x é usado como parte do texto a ser escrito pelo script.
Observe outro exemplo:
<html>
<head>
<title>Loops</title>
</head>
<body>
<?php
for ($x=1; $x<=6; $x=$x+1) {
echo "<h" . $x . "> Cabeçalho nível</h" . $x . ">";
}
?>
</body>
</html>
Você entendeu? começamos definindo o valor de $x igual a 1. A seguir
em cada loop escrevemos um cabeçalho nível $x (h1, h2, h3, etc.) até $x
alcançar o valor seis.
Loops dentro de loops
A princípio não existe limite para a quantidade de loops a usar. Você pode facilmente aninhar loops e criar
muitas repetições.
Mas, cuidado! A execução de PHP torna-se lenta quando desenvolvemos
scripts extensos e complicados. Por exemplo: observe a seguir o script
com três loops capaz de escrever 16 milhões de cores!
Com a finalidade de não tornar a página de carregamento muito lento
nós reduzimos drasticamente o número de repetições para passos de 30
limitando o número de cores escritas para 512.
<html>
<head>
<title>Loops </title>
</head>
<body>
<?php
for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {
for ($intGreen=0; $intGreen<=255; $intGreen=$intGreen+30) {
for ($intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
$StrColor = "rgb(" . $intRed . "," . $intGreen . "," . $intBlue . ")";
echo "<span style='color:" . $StrColor . "'>" . $StrColor . "</span>";
}
}
}
?>
</body>
</html>
No exemplo mostrado cada uma das três cores primárias (red, green e
blue) pode ter um valor entre 0 e 255. Qualquer combinação de três
valores resulta em uma cor do tipo rgb(255,255,255). O código da cor é
escrito em um elemento <span> que por sua vez é estilizado com a
respectiva cor.
Loops tornam-se mais interessantes é práticos depois que você
aprende mais algumas funcionalidades do PHP. Assim que você entender o
princípio de funcionamento do loop passe para a lição seguinte na qual
estudaremos as condicionais.
Lição 6: Condicionais
Condicionais são usadas para executar um bloco de script sempre que
determinada condição seja satisfeita. Por exemplo: uma condição pode
estabelecer que uma data seja posterior a 1 de janeiro de 2012 ou que
uma variável seja maior do que 7.
If...
A primeira condicional que estudaremos é o
if cuja sintaxe é mostrada a seguir:
if (condition) {
Comandos PHP
}
Mais uma vez a sintaxe se parece com a linguagem corrente:
If (Se) se a condição é satisfeita, execute alguma coisa. Vejamos um exemplo simples:
<html>
<head>
<title>Loops </title>
</head>
<body>
<?php
$x = 2;
if ($x > 1) {
echo "<p>A variável $x é maior que 1 </p>";
}
?>
</body>
</html>
if ... else ...
Vejamos agora a condicional
else cuja sintaxe é mostrada a seguir:
if (condição) {
comandos PHP
}
else {
Comandos PHP
}
Mais uma vez a sintaxe se parece com a linguagem corrente:
if (se) a condição é satisfeita, execute alguma coisa else (se não) execute outra coisa.
Na
Lição 4 mostramos como encontrar o número representativo do mês. No exemplo a seguir usaremos este número em uma condicional
if else para encontrar em qual das estações do ano estamos:
<html>
<head>
<title>Condicionais</title>
</head>
<body>
<?php
if (date ("m") == 3) {
echo "<p>Estamos no outono!</p> ";
}
else {
echo "<p>Eu não sei em que estação estamos!</p> ";
}
?>
</body>
</html>
Notar que se trata de uma condicional não muito inteligente - ela só funciona para o Mês de Março!
Contudo, existem várias maneiras de aperfeiçoar a condicional
tornando-a mais precisa. Observe a seguir alguns operadores de
comparação que podemos usar na condicional mostrada:
== Igual
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
!= Diferente
Existem também operadores lógicos:
&& e
|| ou
! não
Operadores se destinam a criar condicionais mais precisas e com seu
uso podemos melhorar o exemplo mostrado anteriormente fazendo com que o
retorno do script seja a estação primavera em todos os meses que ela
ocorre e não somente em março:
<html>
<head>
<title>Condicionais</title>
</head>
<body>
<?php
if (date("m") >= 3 && date("m") <= 5) {
echo "<p> Estamos no outono!</p> ";
}
else {
echo "<p> A estação atual é primavera, verão ou inverno!</p> ";
}
?>
</body>
</html>
Vamos examinar estas novas condicionais:
date("m") >= 3 && date("m") <= 5
Pode ser traduzida como:
Se o número que representa o mês for maior ou igual a 3 e menor ou igual a 5
Legal não é? Operadores são largamente usados em diferentes blocos de script do PHP.
Contudo nosso exemplo só funciona para os meses de março, abril e
maio, Os demais meses não são contemplados pela condicional. Assim,
vamos aperfeiçoá-lo mais:
if ... elseIf ... else...
Usando
elseif podemos expandir a condicional e fazer com que nosso script funcione para todos os meses do ano:
<html>
<head>
<title>Condicionais</title>
</head>
<body>
<?php
if (date("m") >= 3 && date("m") <= 5) {
echo "<p>Estamos no outono!</p>";
}
elseif (date("m") >= 6 && date("m") <= 8) {
echo "<p>Estamos no inverno!</p>";
}
elseif (date("m") >= 9 && date("m") <= 11) {
echo "<p>Estamos na primavera!</p>";
}
else {
echo "<p>Estamos no verão!</p>";
}
?>
</body>
</html>
Escrever condicionais é uma questão de lógica e método. O exemplo
mostrado é bem esclarecedor, porém o uso de condicionais pode tornar-se
bem mais complexo.
switch ... case
Outra maneira de se escrever condicionais é com uso do método
switch:
switch (expressão) {
case 1:
comandos PHP
break;
case 2:
comandos PHP
break;
default:
comandos PHP
break;
}
Este método toma por base uma
expressão e a seguir relaciona uma série de "respostas" ou "valores" e respectivos
comandos PHP. A maneira mais fácil de entender esta condicional é observando um exemplo.
Na lição 4 nós vimos que a função
date("w")
retorna um número representando dia da semana. Vamos mostrar um exemplo
para escrever o nome do dia da semana em lugar do número que o
representa:
<html>
<head>
<title>Condicionais</title>
</head>
<body>
<?php
switch(date("w")) {
case 1:
echo "Hoje é segunda-feira";
break;
case 2:
echo "Hoje é terça-feira";
break;
case 3:
echo "Hoje é quarta-feira";
break;
case 4:
echo "Hoje é quinta-feira";
break;
case 5:
echo "Hoje é sexta-feira";
break;
case 6:
echo "Hoje é sábado";
break;
default:
echo "Hoje é domingo";
break;
}
?>
</body>
</html>
Em geral
switch é uma boa alternativa para a condicional
if else.
Qual delas usar em uma determinada situação depende somente de você.
Use aquela que você considera mais fácil e lhe pareça mais lógica. Criar
scripts lógicos e claros pode se constituir em um grande desafio para o
desenvolvedor.
Na próxima lição mostraremos como inserir comentários em seus
scripts com a finalidade de facilitar o entendimento de como eles
funcionam. Um script bem comentado oferece a você ou a outra pessoa
dicas que serão valiosas por ocasião de mudanças ou manutenção futura.
Lição 7: Comentando seus scripts
Como você já deve ter concluído, um script PHP pode se tornar
bastante confuso de entender. Nesta lição falaremos sobre comentários,
sua importância e a maneira correta de inserí-los nos seus scripts.
Por que é importante comentar os scripts?
Quando codificamos, estamos escrevendo comandos para um
servidor/computador usando uma linguagem estritamente formal que pode
não refletir claramente o que você estava pensando quando criou o
script.
Ora, isso pode criar dificuldades para terceiros (ou mesmo para
você) quando se tratar de entender como o script foi estruturado e como
consequência tornar extremamente árdua a tarefa de identificação e
correção de erros.
Comentários são usados para se escrever pequenos textos
explanatórios no script. O servidor ignora qualquer comentário no script
e eles não afetam ou interferem com a funcionalidade do script.
No mundo dos negócios é comum as Companhias exigirem que os scripts e
programas sejam comentados, pois é considerado um alto risco aceitar um
sistema no qual a identificação e correção de erros se torna uma tarefa
difícil pela falta de comentários.
Como inserir comentários?
É fácil inserir um comentário. Você simplesmente começa um texto de comentário escrevendo duas barras: "//".
Observe um exemplo mostrado na lição 5 no qual inserimos comentários:
<html>
<head>
<title>Loops</title>
</head>
<body>
<?php
for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {
for ($intGreen=0; $ intGreen<=255; $intGreen=$intGreen+30) {
for ($ intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
$strColor = "rgb(" . $intRed . "," . $intGreen . "," . $intBlue . ")"
echo "<span style='color:" . $strColor . "'> " . $strColor . " </span>";
}
}
}
?>
Para clareza do exemplo incluímos muitos comentários extras
mostrando inequivocamente que os comentários auxiliam, e muito, a tarefa
de debugar o script.
Então! Não se esqueça de comentar seus scripts.
Lição 8: Arrays
Nesta lição veremos o que array, como usá-los e o que podemos fazer com eles.
Entender arrays pode ser um pouco difícil no início. Mas, não
desanime, vamos tentar... nós iremos tornar o processo de aprendizado o
mais fácil possível.
O que é array?
Array é uma coleção (ou conjunto) de elementos indexados na qual cada um dos elementos tem um número identificador único.
Parece confuso? Creia, não é tão complicado.
Imagine uma lista de palavras separadas por vírgula como a mostrada a seguir:
maçãs, peras, bananas, laranjas, limões
Agora imagine dividir a lista tomando como separador cada vírgula.
Em seguite atribua a cada divisão um número identificador único:
O que você acabou de ver é um array. Podemos dar um nome para o
array como, por exemplo, "frutas". A idéa é que possamos acessar o array
usando um número identificador e com ele consultar o valor
correspondente usando uma sintaxe como mostrada a seguir:
frutas(0) = maças
frutas(1) = peras
frutas(2) = bananas
frutas(3) = laranjas
frutas(4) = limões
esta é a idéia por trás de arrays. Vamos ver um exemplo prático.
Como usar um array?
Continuaremos com o array de frutas. Passo a passo mostraremos como
fazer para a lista funcionar como um array. Primeiro vamos criar uma
variável para conter a lista como mostrado a seguir:
<?php
$listadefrutas = "maçãs, peras, bananas, laranjas, limões";
?>
A seguir vamos usar a função
explode para dividir a lista pelas vírgulas:
<?php
$listadefrutas = "maçãs, peras, bananas, laranjas, limões";
$arrFrutas = explode(",", $listadefrutas);
?>
Viva! "$arrFrutas" agora é um array!
Observe que chamamos a função
explode com dois argumentos:
- a lista a ser dividida
- e o delimitador - isto é, o caractere usado para separar os itens
da lista (no caso do exemplo a vírgula) colocado entre aspas ",".
Usamos a vírgula como delimitador, mas podemos usar qualquer caractere e até mesmo uma palavra.
Vamos comentar o script e colocá-lo em uma página PHP:
<html>
<head>
<title>Array</title>
</head>
<body>
<?php
$listadefrutas = "maçãs, peras, bananas, laranjas, limões";
$arrFrutas = explode(",", $listadefrutas);
echo "<p>Lista de frutas:</p>";
echo "<ul>";
echo "<li>" . $arrFrutas[0] . "</li>";
echo "<li>" . $arrFrutas[1] . "</li>";
echo "<li>" . $arrFrutas[2] . "</li>";
echo "<li>" . $arrFrutas[3] . "</li>";
echo "<li>" . $arrFrutas[4] . "</li>";
echo "</ul>";
?>
</body>
</html>
este exemplo é muito simples e na verdade não há vantagem alguma em
usar um array para realizar este tipo de tarefa. Mas, um momento...
arrays podem ser usadas de maneira muito mais vantajosa.
Loop por um array
Na
lição 5 estudamos loops. A seguir veremos como realizar um loop por um array.
Quando você conhece o número de itens de um array não encontra
problemas para definir um loop por ele. Você começa em 0 e desenvolve o
loop até atingir o número de itens do array. No exemplo das frutas um
loop pelo array seria como mostrado a seguir:
<html>
<head>
<title>Array</title>
</head>
<body>
<?php
$listadefrutas = "maçãs, peras, bananas, laranjas, limões";
$arrFrutas = explode (",", $listadefrutas);
echo "<p>Lista de frutas:</p>";
echo "<ul>";
for ($x=0; $x<=4; $x++) {
echo "<li>" . $arrFrutas[$x] . "</li>";
}
echo "</ul>";
?>
</body>
</html>
Como você pode notar a variável
$x (que cresce de 0 a 4 no loop) foi usada para chamar o array.
Como encontrar o tamanho de um array
Mas, o que acontecerá se uma outra fruta for adicionada à lista?
Nosso array passará a ter mais um item cujo número identificador será
5.
Já deu para ver o problema? Precisamos alterar o loop para que ele
funcione de 0 a 5, caso contrário não serão incluídos todos os elementos
do array.
Não seria maravilhoso se pudéssemos saber automaticamente quantos itens um array tem?
É isso exatamente o que faremos a seguir com uso da função
foreach. Agora podemos criar um loop que funciona em todo array independentemente do número de itens nele contido:
<?php
foreach ($arrFrutas as $x) {
echo $x;
}
?>
este loop funciona independentemente do número de itens contido no array.
Outro exemplo
A seguir mostramos um exemplo, usando array, para escrever os nomes dos meses:
<html>
<head>
<title>Array</title>
</head>
<body>
<?php
$arrMes = array("","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
echo $arrMes[date("n")];
?>
</body>
</html>
Notar que usamos a função
array e não
explode para criar o array.
Ok. Isto é tudo sobre arrays! Na próxima lição veremos como escrever nossas próprias funções
Lição 9: Funções
Nas lições anteriores você aprendeu a usar funções, tais como,
date() e
array(). Nesta lição você aprenderá a criar suas próprias funções usando a funcionalidade do PHP chamada
function.
O que é função?
Uma função se destina a processar
inputs (entradas) e retornar um
output (saída).
Isto pode ser muito útil se, por exemplo, você tiver que processar uma
grande quantidade de dados ou se tiver que realizar cálculos ou rotinas
que devam ser executadas muitas vezes.
A sintaxe geral para uma função é mostrada a seguir:
Nome da função(lista de parâmetros) {
Comandos PHP
}
O exemplo a seguir esclarece a sintaxe para uma função bem simples destinada a adicionar 1 unidade a um número:
function AddOne($x) {
$x = $x + 1;
echo $x;
}
O nome escolhido para nossa função foi
AddOne e deve ser chamada com um parâmetro que é o numero a somar - por exemplo: 34....
... o retorno da função será (pasmem!) 35.
No exemplo mostrado processou-se um número, contudo as funções podem
processar textos, datas e qualquer outro tipo de dado. Você pode, até
mesmo, criar funções para serem chamadas por parâmetros. Nesta lição
estudaremos diferentes tipos de funções.
Exemplo 1: Função com vários parâmetros
Como dito anteriomente é possível criar funções com vários
parâmetros. No exemplo a seguir criaremos uma função que é chamada com 3
números como parâmetros e retorna a soma deles:
<html>
<head>
<title>Funções</title>
</head>
<body>
<?php
function AddAll($number1,$number2,$number3) {
$plus = $number1 + $number2 + $number3;
return $plus;
}
echo "123 + 654 + 9 é igual a " . AddAll(123,654,9);
?>
</body>
</html>
Ok. Isto foi bastante simples! Mas, o objetivo foi apenas mostrar que uma função pode ser chamada com vários parâmetros.
Exemplo 2: Data e hora em inglês
Vamos criar uma função um pouquinho mais complexa. Uma função a ser
chamada com date() e time() e retornar a data e hora no formato:
Wednesday, 15 February, 2012, 10:00:00 AM
<html>
<head>
<title>Funções</title>
</head>
<body>
<?php
function EnglishDateTime($date) {
$arrDay = array("segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado","domingo");
$arrMonth = array("","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro");
$EnglishDateTime = $arrDay[(date("w",$date))] . ", " . date("d",$date);
$EnglishDateTime = $EnglishDateTime . " " . $arrMonth[date("n",$date)] . " " . date("Y",$date);
$EnglishDateTime = $EnglishDateTime . ", " . date("H",$date) . ":" . date("i",$date);
return $EnglishDateTime;
}
echo EnglishDateTime(time());
?>
</body>
</html>
Notar que a definição de '$arrMonth' e '$EnglishDateTime' constam de
diversas linhas do script. Fizemos assim para que usuários com baixa
resolução de tela tenham uma melhor visão do exemplo. Isto não tem
nenhum efeito no funcionamento do código.
A função mostrada funciona em qualquer servidor independentemente do
idioma. Isto significa que você pode usar esta função no seu site mesmo
que ele esteja hospedado em um servidor na França e você quiser mostrar
suas datas no formato inglês.
Por ora ficaremos por aqui sem nos aprofundar mais, pois agora você já sabe alguma coisa sobre como as funções trabalham.
Lição 10: Passando variáveis no URL
Quando se trabalha com PHP é comum a necessidade de se passar
variáveis de uma página para outra. Nesta lição veremos como passar
variáveis em um URL.
Como isto funciona?
Talvez você já tenha visto e ficado intrigado com URLs no formato parecido com o mostrado a seguir:
http://html.net/page.php?id=1254
O que significa aquele sinal de interrogação depois do nome da página?
A resposta é: os caracteres depois do sinal de interrogação são uma HTTP query string.
Uma HTTP query string contém variáveis e seus valores. No exemplo
mostrado a HTTP query string contém uma variável chamada "id", e seu
respectivo valor igual a "1254".
Observe outro exemplo:
http://html.net/page.php?name=Joe
Aqui você tem uma variável ("name") com o valor ("Joe").
Como recuperar o valor de uma variável com PHP?
Suponha uma página PHP chamada people.php. Suponha, também, que você "chame" esta página usando o seguinte URL:
A sintaxe PHP para recuperar o valor da variável 'name' passada no URL é mostrada a seguir:
Use
$_GET para recuperar o valor de uma variável. Vejamos outro exemplo:
<html>
<head>
<title>Query string</title>
</head>
<body>
<?php
echo "<h1>Olá " . $_GET["name"] . "</h1>";
?>
</body>
</html>
Ao abrir a página que demonstra este exemplo faça a seguinte
experiência: substitua na barra de endereços do navegador o nome "Joe"
pelo seu nome e recarregue a página! Legal, não é?
Várias variáveis no mesmo URL
Você não está limitado a passar uma só variável no URL. Para passar mais de uma variável use o sinal & ( e comercial) para separar as variáveis, como mostrado a seguir:
people.php?name=Joe&age=24
Este URL contém duas variáveis: name (nome) e age (idade). Tal como
foi explicado anteriomente para recuperar as duas variáveis a sintaxe é
mostrada a seguir:
$ _GET["name"]
$ _GET["age"]
Vamos usar mais uma variável no nosso exemplo:
<html>
<head>
<title>Query string </title>
</head>
<body>
<?php
echo "<h1>Olá " . $ _GET["name"] . "</h1>";
echo "<h1>Você tem ". $ _GET["age"] . " anos de idade</h1>";
?>
</body>
</html>
Bem, agora você já sabe como passar variáveis em um URL. Na próxima
lição veremos mais um método de passagem de variáveis: o método usando
formulários.
Lição 11: Passando variáveis com uso de formulários
Sites interativos se baseiam em entrada de dados pelos usuários. Uma
das formas mais comuns de coletar dados e com uso de formulários
Nesta lição estudaremos como construir formulários e processar seus dados no servidor.
<form>
Para o elemento form destinado a marcar um formulário estão
previstos, entre outros, dois atributos de suma importância, são eles: action e method.
- action
- Destina-se a definir o URL para o qual os dados do formulário serão
enviados para processamento. Neste URL encontra-se o arquivo com o
script de processamento dos dados.
- method
- Este atributo admite os valores "post" e "get" que são dois métodos
deferentes de passagem de dados. Por enquanto você não precisa saber as
diferenças entre estes métodos, basta saber que com "get" os dados são
passados pelo URL e com post "post" são enviados em forma de um bloco de
dados via um mecanismo denominado STDIN. Na lição anterior estudamos
como recuperar dados passados no URL com uso de $_GET. Nesta lição veremos como recuperar dados passados com uso do método "post".
Formulário em uma página HTML
A página contendo o formulário não precisa, necessariamente, ser uma
página PHP. Não precisa nem mesmo estar no mesmo site que recebe seus
dados para processamento.
O nosso primeiro exemplo mostra uma página contendo um formulário bem simples contendo apenas um campo de entrada de dados:
<html>
<head>
<title>Formulário</title>
</head>
<body>
<h1>Informe seu nome</h1>
<form method="post" action="handler.php">
<input type="text" name="username">
<input type="submit">
</form>
</body>
</html>
A renderização no navegador é conforme mostrada a seguir:
Agora vem a parte divertida: receber e manipular dados com PHP
Para requisitar dados enviados por um formulário usamos
$_POST:
Retorna o valor de um campo do formulário. Vejamos um exemplo.
Crie uma página contendo o formulário mostrado anteriormente. Crie
outra página chamada "handler.php" (notar que este nome é o mesmo
daquele constante como valor do atributo action da tag <form> no
nosso formulário).
O arquivo "handler.php" é como mostrado a seguir:
<html>
<head>
<title>Formulário</title>
</head>
<body>
<?php
echo "<h1>Olá " . $_POST["username"] . "</h1>";
?>
</body>
</html>
Dados do usuário e condicionais
No exemplo a seguir manipularemos os dados do usuário com condicionais. Nosso formulário será com mostrado a seguir:
<html>
<head>
<title>Formulário</title>
</head>
<body>
<form method="post" action="handler.php">
<p>Qual é o seu nome:</p>
<input type="text" name="username"></p>
<p>Qual é a sua cor favorita:
<input type="radio" name="favoritecolor" value="r" /> Vermelha
<input type="radio" name="favoritecolor" value="g" /> Verde
<input type="radio" name="favoritecolor" value="b" /> Azul </p>
<input type="submit" value="Enviar" />
</form>
</body>
</html>
A renderização no navegador é conforme mostrada a seguir:
A seguir mostraremos um script que usa o dado relativo a preferência
de cor do usuário para mudar a cor do fundo da página conforme sua
preferência. Faremos isso criando uma condicional (ver
lição 6) que usa a cor escolhida pelo usuário no formulário.
<?php
$strHeading = "<h1>Olá " . $_POST["username"] . "</h1>";
switch ($_POST["favoritecolor"]) {
case "r":
$strBackgroundColor = "rgb(255,0,0)";
break;
case "g";
$strBackgroundColor = "rgb(0,255,0)";
break;
case "b":
$strBackgroundColor = "rgb(0,0,255)";
break;
default:
$strBackgroundColor = "rgb(255,255,255)";
break;
}
?>
<html>
<head>
<title>Formulário</title>
</head>
<body style="background: <? echo $strBackgroundColor; ?>;">
<? echo $strHeading; ?>
</body>
</html>
O fundo será branco se o usuário não escolher uma cor. Isto é feito com o uso da declaração default que define a ação a tomar se nenhuma das condições for satisfeita.
Mas, o que acontece se o usuário não fornece seu nome? O resultado
será somente "Hello". Vamos usar mais uma condicional para resolver esta
questão.
<?php
$strUsername = $_POST["username"];
If ($strUsername != "") {
$strHeading = "<h1>Olá " . $_POST["username"] . "</h1>";
}
else {
$strHeading = "<h1>Olá visitante!</h1> ";
}
switch ($_POST["favorite color"]) {
case "r":
$strBackgroundColor = "rgb(255,0,0)";
break;
case "g";
$strBackgroundColor = "rgb(0,255,0)";
break;
case "b":
$strBackgroundColor = "rgb(0,0,255)";
break;
default:
$strBackgroundColor = "rgb(255,255,255)";
break;
}
?>
<html>
<head>
<title>Formulário</title>
</head>
<body style="background: <? echo $strBackgroundColor; ?>;">
<? echo $strHeading; ?>
</body>
</html>
No exemplo anterior usamos uma condicional para validar
o dado entrado pelo usuário. Neste caso particular, se o usuário não
fornecer seu nome, não haverá grande prejuízo. Contudo em scripts mais
avançados é essencial que se considere a possibilidade do usuário não
entrar o dado solicitado ou mesmo entrar um dado do tipo totalmente
diferente daquele que imaginamos quando criamos o formulário.
Exemplo: Formulário de contato
Com os conhecimentos que você já adquiriu sobre PHP você já está em condições de criar um formulário de contato usando a função
mail, que tem a seguinte sintaxe:
mail(to, subject, message);
Começamos com nosso formulário:
<html>
<head>
<title>Formulário de contato</title>
</head>
<body>
<h1>Formulário de contato</h1>
<form method="post" action="handler.php">
<p>Assunto:<br /><input type="text" name="subject" /></p>
<p>Menssagem:<br /><textarea name="message"></textarea></p>
<input type="submit">
</form>
</body>
</html>
A seguir temos o script PHP para processar os dados:
<html>
<head>
<title>Functions</title>
</head>
<body>
<?php
$strEmail = "name@mydomain.com";
$strSubject = $_POST["subject"];
$strMessage = $_POST["message"];
mail($strEmail,$strSubject,$strMessage);
echo "E-mail enviado.";
?>
</body>
</html>
Convém notar que o exemplo só funcionará se você tiver acesso a um
serviço de email. Por padrão este não é o caso em XAMPP e na maioria dos
serviços de hospedagem gratuitos. Alguns serviços de hospedagem
requerem que você inclua um header "from" conforme mostrado a seguir:
mail("you@yourdomain.com", "Teste", "Isto é um teste de email", "From: me@mydomain.com");
Lição 12: Sessão
Quando você visita um site você realiza uma série de ações. Navega
de uma página a outra. Talvez você preencha um formulário ou compre um
produto.
Como desenvolvedor essas informações são de grande valia para criação de um site de sucesso.
Suponha que você necessita criar um site no qual algumas páginas
serão de acesso restrito requerendo login e senha. Para que a proteção
ao acesso seja efetiva as páginas restritas devem possuir mecanismos
capazes de detectar se o usuário está logado. Em outras palavras, quando
o usuário requisita uma nova página do site é preciso "lembrar" o que
ele fez anteriormente.
É exatamente para isto que as sessões se prestam - como usar a
funcionalidade sessions do PHP para armazenar e recuperar informações
sobre um usuário em visita ao site.
Session
As session
do PHP permitem gerenciar informações colhidas durante uma sessão
(estada no site) do usuário. Você pode escrever aplicações inteligentes
com uso de armazenagem e recuperação de informações sobre o usuário.
Uma sessão pode começar de diferentes maneiras. Não iremos nos ater a
detalhes técnicos e focaremos no caso em que uma sessão começa com o
armazenamento de um valor. Uma sessão ends/dies (termina/morre) se o
usuário não requisitar nenhuma página após decorridos um determinado
tempo (por padrão 20 minutos). Obviamente, no seu script, você pode
terminar uma sessão a qualquer momento.
Suponha que 50 pessoas estão visitando o site ao mesmo tempo, por
exemplo, em um site de vendas. As informações sobre quais itens cada uma
delas incluiu na sua cesta de compras são um bom exemplo de
armazenamento com uso de session. Para identificar cada um dos usuário o
servidor usa um ID único armazenado em um cookie. Cookie é um pequeno
arquivo de texto armazenado no computador do usuário (saiba mais sobre
cookies na lição 13). Assim, sessions requerem suporte a cookies no navegador do usuário.
Exemplo de uso de sessions
Quando você requisitou esta página eu armazenei a hora em uma
session. Eu fiz isto para mostrar a você como funciona uma sessão.
Eu criei um item de nome "StartTime" e armazenei ele usando o seguinte trecho de script PHP:
<?php
session_start();
$_SESSION["StartTime"] = date("r");
?>
Desta forma uma sessão foi iniciada. Como foi dito anteriormente um ID é criado pelo servidor para cada sessão.
A sua sessão tem o seguinte ID: 0973bd63e5e280eef62e7ef198fabf2e
A qualquer momento eu posso chamar "StartTime" da sessão escrevendo o seguinte:
<?php
session_start();
echo $_SESSION["StartTime"];
?>
Isto vai me mostrar que a página foi por você requisitada em Fri, 08 Mar 2013 14:14:02 +0100 (de acordo com o relógio do meu servidor).
O mais interessante é que esta informação permanece armazenada e
disponível em session até mesmo depois que você sai desta página. A
informação permanece até que a seesão termine.
por pdrão, uma sessão permanece ativa até que o usuário feche o
navegador. Nesta ocasião ela termina. Se você quiser terminar uma sessão
antes disto a sintaxe é como mostrada a seguir:
<?php
session_destroy();
?>
Vamos examinar outro exemplo de aplicação para sessão: uso de senha.
Sistema de login com uso de sessão
No exemplo a seguir iremos criar um sistema simples de login. Usaremos muitos dos conceitos que aprendemos até aqui.
Precisamos de um formulário para coletar login e senha do usuário. Observe a seguir:
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="login.php">
<p>Usuário: <input type="text" name="username" /></p>
<p>Senha: <input type="text" name="password" /></p>
<p><input type="submit" value="Login" /></p>
</form>
</body>
</html>
A seguir criamos um arquivo denominado: login.php.
Neste arquivo o script verifica se o login e senha fornecidos no
formulário estão corretos. Se estiverem, iniciamos uma sessão informando
que o usuário está logado com um login e senha correta.
<html>
<head>
<title>Login</title>
</head>
<body>
<?php
if ($_POST["username"] == "php" && $_POST["password"] == "php") {
session_start();
$_SESSION["Login"] = "YES";
echo "<h1>Você está logado</h1>";
echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
}
else {
session_start();
$_SESSION["Login"] = "NO";
echo "<h1>Você NÃO está logdo</h1>";
echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
}
?>
</body>
</html>
Nas páginas de acesso restrito precisamos verificar se o usuário que
as requisitou está logado corretamente. Se não estiver ele é enviado
para a página de login. Observe como é feito o script de proteção das
páginas:
<?php
session_start();
if ($_SESSION["Login"] != "YES") {
header("Location: form.php");
}
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Este é um documento de acesso restrito</h1>
<p>Acesso permitido somente para usuários logados.</p>
</body>
</html>
Agora você já conhece o objeto Session do PHP. Na próxima lição nós continuaremos nesta área estudando os cookies.
Lição 13: Cookies
Quais são as informações sobre seus visitantes, como elas são
coletadas por um site e que uso o site faz das informações são questões
que podem intrigar o usuário. Cookies são normalmente citados quando se
quer exemplificar uma forma de coletar informações e de invasão de
privacidade. Mas, afinal devemos nos preocupar com isso? Tire suas
próprias conclusões. Ao terminar esta lição você saberá o que pode ser
feito com cookies.
O que é cookie?
Cookie é um pequeno arquivo de texto no qual um site pode armazenar
informações. Cookies são gravados no disco rígido do usuário e não no
servidor.
A maioria dos cookies expira (se auto apagam) depois de transcorrido
um determinado tempo de pode variar de 1 minuto a vários anos. Contudo o
usuário pode identificar e apagar cookies do seu computador a qualquer
momento.
A maioria dos navegadores, tais como, Microsoft Internet Explorer,
Mozilla Firefox e Google Chrome, podem ser configurados de modo a que o
usuário seja previamente avisado da gravação de cookie e dar-lhe a opção
de aceitar ou não a gravação. Mas, por que simplesmente não permitir a
gravação de cookies? Bem, isto é possível, contudo muitos sites não
funcionarão sem uso dos cookies. Isto porque eles dependem de cookies
para melhorar a usabilidade e viabilizar a funcionalidade do site.
Como a informação é armazenada no cookie?
É fácil configurar ou modificar um cookie com uso da função PHP setcookie. No exemplo a seguir criaremos um cookie e a ele daremos um valor.
Primeiro devemos escolher um nome para o cookie. No nosso exemplo
escolhemos o nome "HTMLTest". A seguir definimos um valor para o cookie
como mostrado a seguir:
<?php
setcookie("HTMLTest", "Este é um cookie para teste");
?>
Por padrão, um cookie expira quando o navegador é fechado, mas isto
pode ser facilmente alterado adicionando-se um parâmetro a mais na
função definindo o tempo de vida do cookie:
<?php
setcookie("Name", "C. Wing, time()+3600);
setcookie("Interests", "plane spotting", time()+3600);
?>
"Time()+3600" define que o cookie expira em 3600 segundos (60 minutos) a partir de agora.
No exemplo mostrado armazenamos informações sobre o nome do usuário e
seus interesses. Estas informações podem ser úteis, por exemplo, para
direcionar o usuário para uma seção específica do site.
Como se recupera o valor de um cookie?
Para recuperar o valor de um cookie usamos $_COOKIE. Por exemplo; para recuperar o valor do cookie mostrado no exemplo anterior a sintaxe é conforme mostrada a seguir:
<?php
$strName = $_COOKIE["Name"];
strInterest = $_COOKIE["Interest"];
echo "<p>" . strName . "</p>"
echo "<p>Você é interessado em: . " strInterest . "</p>"
?>
Quem pode ler um cookie?
Por padrão, um cookie pode ser lido por documentos de até segundo
nível hospedados no mesmo domínio (por exemplo: html.net) no qual ele
foi criado. Contudo, com uso dos parâmetros domain e path você pode restringir mais este comportamento usando a sintaxe mostrada a seguir:
setcookie(name, value, expiration time, path, domain);
Vejamos um exemplo:
<?php
setcookie("Name", "C. Wing", time()+60*60*24*365, "/tutorials/php/", "www.html.net");
?>
No exemplo mostrado criamos um cookie chamado "Name" com o valor "C.
Wing." O cookie expira em 1 ano (60 segundos * 60 minutos * 24 horas *
365 dias) e pode ser lido apenas por arquivos no diretório
"/tutorials/php/" no (sub-)domínio "www.html.net".
Exemplo de cookie
Vamos gravar um cookie no seu computador e observar o que acontece.
O código mostrado a seguir cria o cookie:
<?php
setcookie("HTMLTest", "Este é um cookie para teste!", time()+60*60*24, "/tutorials/php/", "www.html.net");
echo $_COOKIE ["HTMLTest"];
?>
O cookie foi gravado no seu disco rígido. O cookie e gravado em um
local do disco rígido que varia com o sistema operacional usado pelo
usuário. Uma vez que você consiga localizá-lo o seu formato parecido com
o seguinte:
Como você pode ver um cookie é um arquivo de texto que pode ser
aberto no Notepad, por exemplo. O conteúdo do cookie que acabamos de
criar se parece com o seguinte:
HTMLTest TEXT=Este+é+um+cookie+para+teste%21 www.html.net/tutorials/php 0 80973619229399148 4216577264 29399141 *
Não iremos nos aprofundar mais em cookies, contudo note que o
usuário detém o controle sobre a gravação de cookies no seu computador.
Nesta lição estudamos os cookies e suas finalidades. É sabido que
alguns sites usam cookies com propósitos excusos. Mas, na maioria dos
casos cookies são usados para tornar a interação com o site mais
amigágel ou para individualizar o uso do site.
Pode ser uma boa ideia usar cookies no seu site, mas neste caso é de
boa prática informar o usuário sobre seu uso. Você pode passar esta
informação na política de privacidade do site ou durante o processo de
registro do usuário no site.
Lição 14: Sistema de arquivos
Usando PHP você pode acessar o sistema de arquivos no servidor. Esta
funcionalidade permite que você manipule diretórios e arquivos de texto
com scripts PHP.
Você pode usar PHP para ler um arquivo de texto ou mesmo nele
escrever. Ou ainda, você pode inspecionar quais são os arquivos
existentes em um determinado diretório no servidor. As posiibilidades
são muitas e o PHP pode facilitar bastante o seu trabalho.
Nesta lição estudaremos como usar PHP para trabalhar com arquivos e
diretórios. O objetivo é fornecer uma visão geral deste assunto. Nas
lições que se seguem apronfudaremos o assunto. Nós não cobriremos todas
as funcionalidades. Se você precisar de mais informações consulte a
documentação do PHP.
- filemtime
- Retorna a hora em que o conteúdo de um arquivo foi editado pela última vez (no formato UNIX timestamp - ver lição 4)).
- fileatime
- Retorna a hora em que o conteúdo de um arquivo foi acessado (aberto) pela última vez (no formato UNIX timestamp - ver lição 4)).
- filesize
- Retorna o tamanho do arquivo em bytes.
Vamos verificar as três propriedades descritas para o arquivo que você está lendo agora: "/tutorials/php/lesson14.php"
<html>
<head>
<title>Sistema de arquivos</title>
</head>
<body>
<?php
echo "<h1>Arquivo: lesson14.php</h1>";
echo "<p>Editado pela última vez em: " . date("r", filemtime("lesson14.php"));
echo "<p>Aberto pela última vez em: " . date("r", fileatime("lesson14.php"));
echo "<p>Tamanho do arquivo: " . filesize("lesson14.php") . " bytes";
?>
</body>
</html>
Diretórios
PHP permite que se trabalhe com diretórios do servidor. Nós não
aprofundaremos o assunto, apenas mostraremos um exemplo. Para maiores
informações consulte a documentação do PHP.
- opendir
- Abre um diretório.
- readdir
- Retorna o nome do próximo arquivo do diretório aberto (com uso de opendir)
- closedir
- Fecha um diretório.
O exemplo a seguir mostra os arquivos contidos no diretório "tutorials/php/".
<html>
<head>
<title>Objeto Sistema de Arquivos</title>
</head>
<body>
<?php
$folder = opendir("../../tutorials/php/");
while (($entry = readdir($folder)) != "") {
echo $entry . "<br />";
}
$folder = closedir($folder);
?>
</body>
</html>
No exemplo mostrado começamos abrindo o diretório
"../../tutorials/php/". A seguir um loop é criado para escrever o nome
do próximo arquivo, até atingir o último. Chegando ao fim o diretório é
fechado.
Nas próximas lições estudaremos como ler e escrever em um arquivo de texto.
Lição 15: Ler arquivos de texto
Na lição anterior estudamos como acessar o sistema e arquivos do
servidor. Nesta lição aplicaremos o conhecimento adquirido para fazer a
leitura de um arquivo de texto no servidor.
Arquivos de texto são uma maneira poderosa de armazenar vários tipos
de dados. Eles não são tão flexíveis quanto um Banco de Dados, mas têm a
vantagem de não requerer muita memória. Além disso por ser em formato
de texto puro funcionam na grande maioria dos sistemas.
Abrir um arquivo de texto
Usamos a função fopen para abrir um arquivo de texto. A sintaxe é mostrada a seguir:
- filename
- Nome do arquivo a abrir.
- mode
- Define o modo, que pode ser: "r" (reading - ler), "w" (writing -
escrever) ou "a" (appending - adicionar). Nesta lição nós usaremos o
modo de leitura "r". Nas próximas lições estudaremos como escrever e
adicionar texto em um arquivo de texto.
Nos exemplos a seguir usaremso um arquivo de texto denominado unitednations.txt.
trata-se de uma lista dos Programas e Fundações das Nações Unidas e
seus respectivos domínios. Você fazer o download do arquivo ou criar seu
próprio arquivo para testar os exemplos com ele.
Vamso começar abrindo o arquivo unitednations.txt:
<?php
$f = fopen("unitednations.txt", "r");
fclose($f);
?>
Exemplo 1: Ler uma linha de um arquivo de texto
Usamos a função fgets para ler uma linha do arquivo. Este método lê até o primeiro "break" de linha no arquivo (não inclui a linha do "break").
<html>
<head>
<title>Ler um arquivo de texto</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
echo fgets($f);
fclose($f);
?>
</body>
</html>
Exemplo 2: Ler todas as linhas de um arquivo de texto
<html>
<head>
<title>Ler um arquivo de texto</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
while(!feof($f)) {
echo fgets($f) . "<br />";
}
fclose($f);
?>
</body>
</html>
No exemplo anterior percorremos as linhas com uso de um loop e usamos a função feof (for end-of-file) para verificar se chegamos ao fim do arquivo. Se não ("!" - ver lição 6), ta linha é escrita.
Em lugar de construir um loop poderíamos ter obtido o mesmo resultado com uso da função fread. Se você trabalhar com arquivos extensos leve em consideração que a função fread usa mais recursos que a função fgets. Para arquivos pequenos, praticamente, não faz diferença usar uma ou outra.
Exemplo 3: Diretório de links
Conforme vimos no início desta lição, arquivos de texto podem ser
excelentes para armazenagem de dados. Isto pode ser demonstrado no
exemplo a seguir no qual criamos um diretório de links a partir dos
conteúdos do arquivo de texto unitednations.txt.
O arquivo contém o nome do Programa ou Fundação seguindo-se uma
vírgula e depois o domínio. É fácil de concluir que se quissésemos
poderíamos armazenar mais informações nesta lista separada por vírgula.
Para recuperar a informação em cada linha usaremos um array. Ver lição 8 para mais informações sobre arrays.
<html>
<head>
<title>Ler um arquivo de texto</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
while (!feof($f)) {
$arrM = explode(",",fgets($f));
echo "<li><a href='http://" . $arrM[1] . "'>" . $arrM[0]. "</a></li>";
}
fclose($f);
?>
</body>
</html>
Legal não é? A princípio você pode expandir o arquivo de texto para
conter mais linhas ou mesmo incluir outras informações como, por
exemplo, um endereço.
Na próxima lição veremos como escrever em um arquivo de texto.
Lição 16: Escrever em arquivos de texto
Na lição anterior aprendemos a ler um arquivo de texto com PHP.
Nesta lição veremos como escrever em um arquivo de texto com PHP.
Os dois métodos são bem semelhantes, mas existe uma diferença
importante: Você tem que ter permissão para escrever no arquivo. Isto
significa que o arquivo tem que estar localizado em um diretório ao qual
você tenha permissão de acesso para escrever.
Se você está trabalhando localmente em seu computador, poderá você
mesmo configurar as permissões: dê um clique com o botão direito do
mouse na pasta do diretório e escolha "Properties". Na maioria dos
servidores de hospedagem existe por padrão um diretório com permissão de
escrita. Em geral tais diretórios são nomeados como "cgi-bin", "log",
"databases" oo algo similar. Se o seu servidor de hospedagem permitir
você também poderá configurar permissões. Geralmente basta que, no seu
cliente FTP, você clique com o botão do mouse na pasta e escolha
"properties" ou "permissions" ou algo similar. Na figura a seguir
mostramos como configurar permissões no FileZilla.
Se precisar de mais informações leia a documentação de suporte do seu servidor de hospedagem.
Convém notar que é arquivo de texto no qual se pretende escrever que
deve estar localizado no diretório com permissão de escrita e não o
arquivo PHP.
Abrir um arquivo de texto para escrever
Tal como fizemos para ler um arquivo de texto usaremos a função fopen para escrever, mas agora configurada para o modo "w" (writing - escrever) ou "a" (appending - adicionar).
A diferença entre os modos writing e appending é a posição do 'cursor' para escrever - se no começo ou no fim do arquivo respectivamente.
Nos exemplos desta lição usaremos um arquivo vazio denominado textfile.txt, mas se você preferir pode usar seu próprio arquivo.
Vamos começar abrindo o arquivo de texto:
<?php
$f = fopen("textfile.txt", "w");
fclose($f);
?>
Exemplo 1: Escrever uma linha no arquivo de texto
Para escrever uma linha usamos a função fwrite como mostrado a seguir:
<html>
<head>
<title>Escrever em um arquivo de texto</title>
</head>
<body>
<?php
$f = fopen("textfile.txt", "w");
fwrite($f, "PHP is fun!");
fclose($f);
$f = fopen("textfile.txt", "r");
echo fgets($f);
fclose($f);
?>
</body>
</html>
Uma vez aberto o arquivo no modo writing a nova linha é escrita na parte superior do arquivo é sobrescreve a primeira linha do arquivo. Se abrirmos o arquivo no modo appending a nova linha é escrita na parte inferior do arquivo acresentando mais uma linha no arquivo.
Exemplo 2: Escrever um bloco de texto em um arquivo de texto
É possível escrever um bloco de texto inteiro em vez de uma só linha como mostrado a seguir:
<html>
<head>
<title>Escrever em um arquivo de texto</title>
</head>
<body>
<?php
$f = fopen("textfile.txt", "w");
fwrite($f, $_POST["textblock"]);
fclose($f);
$f = fopen("textfile.txt", "r");
echo fgets($f);
fclose($f);
?>
</body>
</html>
Na próxima lição veremos outra forma de armazenagem de dados: Banco de Dados.
Lição 17: Banco de Dados
Um Banco de Dados é um conjunto de informações / dados organizados
de uma maneira a facilitar as tarefas de extração, manutenção e
atualização dos dados. Banco de Dados possibilitam a criação de sites
dinâmicos com grande quantidade de informações. Por exemplo:os dados
sobre todos os membros do site HTML.net bem como todos os posts dos
forums do site estão guardados em um Banco de Dados.
Um Banco de dados, em geral é constituído de uma ou mais tabelas. Se
você já trabalhou com planilhas ou mesmo com banco de dados, você deve
estar familiarizado com tabelas, suas colunas e linhas:
Existem vários tipos de Banco de Dados: MySQL, MS Access, MS SQL
Server, Oracle SQL Server e muitos outros. No nosso tutorial usaremos o
Banco de Dados MySQL. MySQL é o tipo de Banco de Dados mais indicado e
natural para se usar com PHP.
Para acompanhar esta e as próximas lições você precisa ter acesso a um Banco de Dados:
- Se você tem um site PHP hospedado remotamente é quase certo que
MySQL esteja disponível no servidor. Informe-se com o suporte do seu
servidor de hospedagem.
- Se você instalou PHP no seu computador e quiser instalar MySQL
faça o download de um a versão gratuita (MySQL Community Edition) no site do MySQL.
- Se você está usando XAMPP (ver liçaõ 2) MySQL já foi instalado e está pronto para ser usado. Certifique-se, no Painel de Controle, que MySQL está sendo executado:
A seguir, nesta lição, veremos como conectar a um Banco de Dados e
nas lições seguintes aprenderemos a criar um Banco de Dados e dele
extrair e atualizar dados.
Conexão com o Banco de Dados
Primeiro você precisa ter acesso ao servidor no qual está instalado o Banco de Dados. O acesso é feito com uso da função mysql_connect que admite a seguinte sintaxe:
mysql_connect(servidor, usuário, senha)
Simples e direto: O parâmetro (servidor) indica o local onde se encontra o Banco de Dados, usuário e senha indicam o nome do usuário e a senha de acesso ao Banco de Dados.
Se você possui um site, leia a documentação de suporte do seu
servidor para saber o local do servidor MySQL. Nome de usuário e senha
em geral é o mesmo que você usa para acessr o site via FTP. Se não for
contacte o suporte para seu servidor.
Exemplo de conexão MySQL para um site em servidor remoto:
mysql_connect("mysql.myhost.com", "user001", "sesame") or die(mysql_error());
Exemplo de conexão MySQL com servidor local XAMPP (configuração padrão):
mysql_connect("localhost", "root", "") or die (mysql_error());
Notar nos exemplos a inclusão de or die(mysql_error())
que, resumo, destina-se a interromper o script e retornar uma mensagem de erro caso não seja possível estabelecer a conexão.
É assim que se faz a conexão com o servidor MySQL. Agora você já
está em condições de criar Banco de Dados, extrair e inserir dados. É
exatamente isso que aprenderemos nas próximas lições.
Ah sim! não se esqueça que é de boa prática encerrar a conexão tão
logo você tenha terminado de usar o Banco de Dados. Para isso use a
função mysql_close.
Lição 18: Criando Banco de Dados e suas Tabelas
Na lição anterior aprendemos como se conectar com um Banco de Dados.
O próximo passo é aprender como criar Banco de Dados e Tabelas.
Veremos duas maneiras de se criar Bancos de Dados e Tabelas.
Primeiro com uso de PHP e depois de uma maneira mais amigável usando a
ferramenta PhpMyAdmin que existe por padrão na maioria dos servidores
remotos e também no XAMPP.
Se você tem um servidor remoto com PHP e MySQL e já criou um Banco
de Dados pule esta parte da lição e vá para criação de Tabelas. Para
mais informações consulte o suporte do seu servidor.
Criar Banco de Dados e Tabelas com PHP
A função mysql_query é usada para enviar umna consulta (query) para o Banco de Dados MySQL. Consultas são escritas n linguagem Structured Query Language
(SQL) (ou Linguagem estruturada de consulta). SQL é a linguagem mais
usada para consultas a um Banco de Dados - não só para MySQL - e é
lógica e muito fácil de aprender. Nesta e na próxima lição você
aprenderá a sinbtaxe para realizar as mais usadas consultas SQL.
Para criar um Banco de Dados a query SQL usada é CREATE DATABASE que admite a seguinte sintaxe:
CREATE DATABASE nome do Banco
Bem lógico não é!? Vamos criar um script PHP:
mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());
mysql_query("CREATE DATABASE mydatabase") or die(mysql_error());
mysql_close();
Primeiro a conexão com o Banco de Dados. A seguir criamos o Banco de
Dados denominado "mydatabase". Finalmente encerramos a conexão.
Até aqui tudo bem... mas as tarefas se complecam um pouco quando se
trata de criar Tabelas com PHP. Para isso usamos a query SQL CREATE TABLE com a seguinte sintaxe:
CREATE TABLE nome da Tabela
(
nome_coluna1 DATA_TYPE,
nome_coluna3 DATA_TYPE,
nome_coluna4 DATA_TYPE,
...
)
nome da Tabela e nome_coluna são, sem dúvida, o nome da Tabela e da coluna respectivamente. DATA_TYPE é usado para especificar o tipo de dado a ser inserido na coluna. Os tipos de dados mais usados são:
- INT
- Para números inteiros
- DECIMAL
- Pra números decimais
- CHAR
- Textos com menos de 255 caracteres
- TEXT
- Para texto com menos de 65.535 caracteres
- LONGTEXT
- Para texto com menos 4.294.967.295 caracteres
- Date
- Para datas no formato YYYY-MM-DD
- Time
- Para hora no formto HH:MM:SS
- DATETIME
- Para data/hora no formato YYYY-MM-DD HH:MM:SS
Lógico e fácil. Vejamos um exemplo:
mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());
mysql_select_db("people") or die(mysql_error());
mysql_query("CREATE TABLE MyTable (
id INT AUTO_INCREMENT,
FirstName CHAR,
LastName CHAR,
Phone INT,
BirthDate DATE
PRIMARY KEY(id)
)") Or die(mysql_error());
mysql_close ();
Começamos com a conexão com o servidor MySQL. A seguir usamos a função mysql_select_db para selecionar o Banco de Dados denominado "people". Depois criamos a Tabela denominada "persons" contendo 5 colunas.
Notar que para a coluna "id" usamos INT para especificar que a coluna conterá números inteiros e a seguir usamos AUTO_INCREMENT
para definir que os números serão incrementados automaticamente,
garantindo que cada linha da coluna tenha um ID único (exclusivo, ou
seja, que não se repete)
Finalmente usamos PRIMARY KEY
para definir a coluna "id" como chave primária. A chave primária é o
identificador exclusivo da cada registro (linha) da Tabela. Este
identificador será de grande utilidade para manipulação dos registros.
Criar Banco de Dados e Tabelas com phpMyAdmin
Pode ser bastante útil criar Banco de Dados e Tabelas com PHP.
Porém, em geral, será bem mais fácil usar phpMyAdmin (ou qualquer outra
ferramenta administrativa para MySQL) que existe por padrão na maioria
dos servidores remotos e em XAMPP. As figuras mostradas a seguir
esclarecem como criar Banco de Dados e Tabelas no phpMyAdmin.
Comece fazendo login no phpMyAdmin. Em geral o endereço é o mesmo do
servidor MySQL (por exemplo: "http://mysql.myhost.com") bem como o nome
de usuário e senha. No XAMPP o endereço é:
http://localhost/phpmyadmin/.
Uma vez logado, digite um nome para o Banco de Dados e clique o botão "Create":
Em alguns servidores remotos já existe um Banco de Dados padrão e
não é permitida a criação de outros Banco de Dados. Se este for o seu
caso, use o Banco de Dados padrão.
Para criar uma Tabela clique na aba "Databases" e escolha o Banco de Dados na qual a Tabela será criada:
Procure a caixa denominada "Create new table in database" e nela
digite o nome da Tabela e o número de colunas. Clique o botão "Go":
A seguir define o nome das colunas, o tipo de dado em cada uma delas, etc. tal como mostramos anteriormente.
Assim, criamos nosso Banco de Dados e sua Tabela. Nas próximas
lições aprenderemos como inserir, extrair e apagar dados de um Banco de
Dados.
Lição 19: Inserindo dados em um Banco de Dados
Nesta lição veremos como inserir dados em um Banco de Dados com uso de scripts PHP.
Inserir dados com SQL
Para inserir dados em um Banco de Dados com SQL a sintaxe é
idêntica a usada para criar Banco de Dados. A sintaxe é mostrada a
seguir:
INSERT INTO nome_da_Tabela(coluna1, coluna2, ...) VALUES(valor1, valor2, ...)
Notar que podemos manipular dados em várias colunas ao mesmo tempo
usando uma lista separada por vírgula no comando SQL. Mas, é óbvio,
podemos manipular uma coluna somente. Colunas que não constam do comando
SQL permanecem vazias.
Exemplo: Inserir dados de uma pessoa na Tabela
Neste exemplo usaremos o Banco de Dados criado na lição 18. Vamos inserir os dados de uma pessoa. Seja a pessoa Gus Goose cujo telefone é 99887766 e nasceu em 1964-04-20
O comando SQL para inserção é conforme mostrado a seguir:
$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES('Gus','Goose','99887766 ','1964-04-20')";
mysql_query($strSQL) or die(mysql_error());
Notar que um comando SQL pode tornar-se extenso dificultando seu
entendimento. Para esclarecer melhor e facilitar o entendimento existe
uma sintaxe alternativa conforme mostrada a seguir:
strSQL = "INSERT INTO people(";
strSQL = strSQL . "FirstName, ";
strSQL = strSQL . "LastName, "
strSQL = strSQL . "Phone, ";
strSQL = strSQL . "birth) ";
strSQL = strSQL . "VALUES (";
strSQL = strSQL . "'Gus', ";
strSQL = strSQL . "'Goose', ";
strSQL = strSQL . "'99887766', ";
strSQL = strSQL . "'1964-04-20')";
mysql_query($strSQL) or die(mysql_error());
Segundo esta sintaxe, dividimos o comando em parte e usamos uma variável - no nosso caso $strSQL - para concatenar as partes em um comando único.
Na prática não importa a sintaxe que você usa. Dependendo do seu
projeto escolha aquela que for mais conveniente para o claro
entendimento dos comandos SQL.
Tente executar o seguinte código para inserir Gus Goose no Banco de Dados:
<html>
<head>
<title>Inserindo dados em um Banco de Dados</title>
</head>
<body>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "INSERT INTO people(";
$strSQL = $strSQL . "FirstName, ";
$strSQL = $strSQL . "LastName, ";
$strSQL = $strSQL . "Phone, ";
$strSQL = $strSQL . "BirthDate) ";
$strSQL = $strSQL . "VALUES(";
$strSQL = $strSQL . "'Gus', ";
$strSQL = $strSQL . "'Goose', ";
$strSQL = $strSQL . "'99887766', ";
$strSQL = $strSQL . "'1964-04-20')";
mysql_query($strSQL) or die (mysql_error());
mysql_close();
?>
<h1>Banco de Dados atualizado!</h1>
</body>
</html>
Inserir uma entrada de usuário no Banco de Dados
Em certos casos há necessidade de inserir uma entrada de usuário no Banco de Dados.
Como você já deve ter concluído isto será feito com uso de um formulário como descrito na lição 11 - pois podemos inserir o valor passado pelo formulário em um comando SQL. Suponha o formulário conforme mostrado a seguir:
<form action="insert.php" method="post">
<input type="text" name="FirstName" />
<input type="submit" value="Save" />
</form>
O formulário será enviado para insert.php no qual,
conforme mostrado na lição 11, extrairemos o valor entrado no formulário
pelo usuário. Para este nosso exemplo o comando SQL é conforme mostrado
a seguir:
strSQL = "INSERT INTO people(FirstName) values('" . $_POST["FirstName"] . "')"
De maneira semelhante é possível extrair dados de cookies, sessions, query strings, etc.
Erros mais comuns
No início, você provavelmente será brindado com uma bateria de
mensagens de erros quando tentar atualizar dados em um Banco de Dados.
Não há lugar para o menor erro que seja, quando trabalhamos com Banco de
Dados. O simples esquecimento ou má colocação de uma vírgula põe tudo a
perder e lá vem uma mensagem de erro. Observe a seguir os erros mais
comuns cometidos quando se está iniciando.
Tipo de dado incorreto
É importante manter consistência de tipo de dado na coluna. Cada
coluna deve conter um determinado tipo de dado. A figura a seguir mostra
os tipos de dados para a Tabela "people" do nosso exemplo.
Se você tentar inserir textos ou números em um mesmo campo que
admite somente textos, vai ocorrer erro. Ou bem texto ou bem número. É
importante definir o tipo de dados da forma mais precisa possível.
Observe, a seguir, uma lista dos tipos de dados:
Tipo de dado |
Definição |
Tamanho |
CHR |
Texto ou combinação de texto e número. Pode-se
também ser empregado para números não usados em cálculos (por exemplo:
número de telefone). |
Até 255 caracteres - ou o comprimento definido em "Length" |
TEXT |
Textos longos ou combinação de textos e números. |
Até 65.535 caracteres. |
INT |
Dados numéricos para cálculos matemáticos. |
4 bytes. |
DATE |
Datas no formato YYYY-MM-DD |
3 bytes. |
TIME |
Horas no formato hh:mm:ss |
3 bytes. |
DATETIME |
Data/hora no formato YYYY-MM-DD hh:mm:ss |
8 bytes. |
Comandos SQL com aspas e barras
Se, em um comando SQL, você tentar inserir texto contendo aspas
simples ('), aspas duplas (") ou barra invertida (\), o registro não
será inserido. A solução é usar barra invertida (\) antes destes
caracteres nos comandos SQL.
Isto pode ser feito com uso da função addslashes como mostrado a seguir:
<?php
$strText = "Seu nome é O'Reilly?";
$strText = addslashes($strText);
?>
Então, usando esta função todo caractere ('), (") e (\) será
acrescido automaticamente de uma barra invertida (\) no seu início. Esta
barra extra é necessária apenas para possibilitar a inserção do dado no
Banco de Dados. É importante ressaltar que o PHP realiza por padrão o addslashes em todos os dados obtidos via $_GET, $_POST e $_COOKIE. Assim, não há necessidade de usar addslashes em strings que já tenham sido "escapadas" (com barra invertida).
Na próxima lição estudaremos como extrair dados de um Banco de
Dados. Mas, antes de seguir tente inserir mis pessoas no Banco de Dados
(tal como mostramos no exemplo para a pessoa Gus Goose).
Lição 20: Extraindo dados de um Banco de Dados
Chegou a hora de extrairmos dados de um Extraindo dados de um Banco de Dados.
Esta é, sem duvida, uma das mais importantes lições deste tutorial.
Uma vez que você tenha entendido esta lição você saberá por que um site
baseado em Banco de Dados pode tornar-se tão poderoso e sua visão de
desenvolvedor certamente vai se expandir-se drasticamente.
Consultas SQL
Para extrair dados de um Banco de Dados usamos queries (consultas)
SQL. Um exemplo de query é: "extraia todos os dados da tabela 'people'
ordenados alfabeticamente" ou "extraia os nomes contidos na tabela
'people'".
Repetimos: Structured Query Language (SQL) é usada para estabelecer comunicação com o Banco de Dados. Observe o exemplo a seguir:
Extrair todos os dados da tabela 'people'
O comando SQL é assim:
A sintaxe é auto explicativa. Leia e conclua sobre os comandos mostrados a seguir.
Exemplo 1: Extrair dados de uma tabela
Este exemplo usa o Banco de Dados e Tabela mostrados na lições 19 e na lição 18. Portanto, leia aquelas lições antes de prosseguir.
O exemplo mostra como extrair dadis da tabela "people" com uso de consulta SQL.
SQL query retorna o resultado em forma de uma série de registros. Estes registros são armazenados em um conjunto de registros denominado recordset.
Um recordset pode ser definido como uma esécie de tabela na memória do
servidor contendo linhas de dados (registros) no qual cada registro é
subdividido em campos individuais (ou colunas).
Um recordset pode ser comparado a uma tabela na qual cada registro
pode ser comparado a uma linha de tabela. Usando PHP podemos percorrer
um recordset com um loop usando a função mysql_fetch_array que retorna um array de linhas.
O código a seguir mostra o uso de mysql_fetch_array para construir um loop pelo recordset:
<html>
<head>
<title>Extraindo dados de um Banco de Dados</title>
</head>
<body>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "SELECT * FROM people";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo $row['FirstName'] . "<br />";
}
mysql_close();
?>
</body>
</html>
Notar que para cada registro extraimos o conteúdo da coluna
"FirstName" com $row['FirstName']. De modo semelhante podemos extrair o
conteúdo da coluna "Phone" bcom $row['Phone'], por exemplo.
A ordem de saída dos recordset é a mesma que ele ocupa na tabela do
Banco de Dados. No exemplo a seguir veremos como controlar a ordem de
saída dos recordset.
Exemplo 2: Ordem de saída alfabética, cronológica ou númerica
Não raro é interessante colocar a saída dos registros em uma ordem
alfabética, cronológica ou númerica. Isto é fácil de se fazer com SQL no
qual a sintaxe Order By ColumnName é usada para realizar o ordenamento.
Observe o comandos SQL do exemplo anterior:
strSQL = "SELECT * FROM people"
Os registros podem, por exemplo, serem ordenados em ordem alfabética pelo primeiro nome das pessoas, como mostrado a seguir:
strSQL = "SELECT * FROM people ORDER BY FirstName"
Ou cronologicamente pela data de aniversário:
strSQL = "SELECT * FROM people ORDER BY BirthDate"
A ordenação pode ser alterada de ascending (ordem ascendente) para descending (ordem descendente) com uso de DESC:
strSQL = "SELECT * FROM people ORDER BY BirthDate DESC"
No exemplo a seguir as pessoas são ordenadas por idade:
<html>
<head>
<title>Extraindo dados de um Banco de Dados</title>
</head>
<body>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "SELECT * FROM people ORDER BY BirthDate DESC";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo $row['FirstName'] . " " . $row['BirthDate'] . "<br />";
}
mysql_close();
?>
</body>
</html>
Como exercício construa a query SQL para ordenação pelo primeiro nome, último nome, número de telefone.
Extrair dados segundo uma condição
Até aqui nossas consultas SQL extraíram todas as
linhas de uma tabela. Mas, é comum a necessidade de extração de certas
linhas da tabela que atendam a uma determinada condição como, por
exemplo, a linha contendo um determinado telefone ou nome.
Suponha que se deseje extrair informações sobre a pessoa cujo telefone é "66554433". Isto se faz conforme mostrado a seguir:
strSQL = "SELECT * FROM people WHERE Phone = '66554433 '"
Existem seis operadores relacionais na linguagem SQL:
= Igual
< Menor que
> Maior que
<= Menos que ou igual
> = Maior que ou igual
!= Diferente
Há também, na linguagem, alguns operadores lógicos:
AND (E)
OR (OU)
NOT (NÃO)
Ver lição 6 para mais informações sobre operadores lógicos.
No exemplo a seguir usaremos condicionais para criar um catálogo de endereços.
Exemplo 3: Catálogo de endereços
Neste exemplo usaremos muitos dos conceitos que você já aprendeu
neste tutorial. Construiremos uma lista de nomes de pessoas extraídos do
Banco de Dados na qual cada nome é um link cujo destino é um documento
com maiores informações sobre a pessoa.
Vamos precisar de dois arquivos - list.php e person.php - com o seguinte código:
Código para o arquivo list.php
<html>
<head>
<title>Extraindo dados de um Banco de Dados</title>
</head>
<body>
<ul>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "SELECT * FROM people ORDER BY FirstName DESC";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
$strName = $row['FirstName'] . " " . $row['LastName'];
$strLink = "<a href = 'person.php?id = " . $row['id'] . "'>" . $strNavn . "</a>";
echo "<li>" . $strLink . "</li>";
}
mysql_close();
?>
</ul>
</body>
</html>
Código para o arquivo person.php
<html>
<head>
<title>Extraindo dados de um Banco de Dados</title>
</head>
<body>
<dl>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "SELECT * FROM people WHERE id=" . $_GET["id"];
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo "<dt>Nome:</dt><dd>" . $row["FirstName"] . " " . $row["LastName"] . "</dd>";
echo "<dt>Telefone:</dt><dd>" . $row["Phone"] . "</dd>";
echo "<dt>Data de nascimento:</dt><dd>" . $row["BirthDate"] . "</dd>";
}
mysql_close();
?>
</dl>
<p><a href="list.php">Voltar à lista de nomes</a></p>
</body>
</html>
O catálogo de endereços é bem simples, mas bem demonstra o potencial de desenvolvimento com PHP e Banco de Dados.
Imagine um Banco de Dados com 10.000 produtos e respectivas
informações devidamente cadastradas. Fazendo algumas simples adaptações
nos arquivos do exemplo mostrado você poderá montar, com facilidade, um
catálogo de produtos com mais de 10.000 páginas usando apenas um Banco de Dados e dois arquivos PHP.
Bem-vindo ao maravilhoso mundo dos sites extensíveis, fáceis de
construir e manutenir! Depois que você aprende a trabalhar com Banco de
Dados suas soluções web nunca mais serão as mesmas.
Lição 21: Apagando dados de um Banco de Dados
Nas duas lições anteriores você aprendeu a inserir e extrair dados
de um Banco de Dados. Nesta lição estudaremos como apagar dados de Um
Banco de Dados, tarefa que é bem mais simples do que inserir dados.
Apagando dados com SQL
A sintaxe SQL para apagar dados é:
DELETE FROM TableName WHERE condition
Exemplo: Apagar um dado
Para apagar um dado você pode usar o campo identificador único
(AutoNumber) da tabela correspondente. Na tabela do nosso Banco de Dados
é a coluna denominada id. Usar o identificador único
garante que apenas uma linha de dados será apagada. No exemplo a seguir
apagamos a linha com o identificador cujo valor é 24:
<html>
<head>
<title>Apaga dado em um Banco de Dados</title>
</head>
<body>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "DELETE FROM people WHERE id = 24";
mysql_query($strSQL);
mysql_close();
?>
<h1>Registro apagado!</h1>
</body>
</html>
Lembre-se que não existe uma pasta "Lixeira" quando se trabalha com
PHP e Banco de Dados. Se você apagar um dado não terá como recuperá-lo
posteriormente.
Lição 22: Atualizando dados em um Banco de Dados
Em lições anteriores você aprendeu a inserir, requisitar e apagar
dados de um Banco de Dados. Nesta lição estudaremos como atualizar os
dados de um Banco de Dados, ou seja, editar os valores dos campos de uma
tabela do Banco de Dados.
Atualizando dados com SQL
A sintaxe SQL para atualizar dados em um campo de uma tabela é mostrada as seguir:
UPDATE TableName SET TableColumn='value' WHERE condition
É possível atualizar vários campos ds tabela de uma só vez como mostrado a seguir:
UPDATE TableName SET TableColumn1='value1', TableColumn2='value2' WHERE condition
Com os conhecimentos adquiridos nas lições 19, 20 e 21 ficou bem
mais fácil entender como funciona a sintaxe mostrada. Vejamos um
exemplo.
Exemplo: Atualizando campos da tabela "people"
O código a seguir faz a atualização do campo "FirstName" (primeiro nome) de Donald Duck's para D. e altera o campo "Phone" (número do telefone) para 44444444.
As outras informações (last name (último nome) e birthdate (data de
aniversário)) não serão alteradas. Você pode tentar alterar os dados das
outras pessoas escrevendo seus próprios comandos SQL.
<html>
<head>
<title>Update data in database</title>
</head>
<body>
<?php
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
mysql_select_db("mydatabase") or die(mysql_error());
$strSQL = "Update people set ";
$strSQL = $strSQL . "FirstName= 'D.', ";
$strSQL = $strSQL . "Phone= '44444444' ";
$strSQL = $strSQL . "Where id = 22";
mysql_query($strSQL);
mysql_close();
?>
<h1>O Banco de Dados foi atualizado!</h1>
</body>
</html>
Este exemplo completa as lições sobre Banco de Dados. Você aprendeu a
usar PHP para inserir, requisitar, apagar e atualizar dados em um Banco
de Dados. Assim, você está habilitado a criar soluções web dinâmicas e
avançadas nas quais o usuário será capaz de manutenir e atualizar dados
em um Banco de Dados, usando formulários.
Se você quiser visitar uma aplicação sofisticada demonstrando o que pode ser feito com PHP e Banco de Dados torne-se nosso parceiro.
É gratuito e tomará apenas 1 minuto do seu tempo para a realização do
seu registro. Você poderá entre outras coisas gerenciar seu perfil
usando formulários. Talvez você até colha algumas ideias para empregar
no seu site.
Aqui terminamos nosso tutorial. PHP nos fornece muitas
funcionalidades para adicionar interatividade em um site. O único limite
é a sua imaginação. Divirta-se!
Fonte : http://pt-br.html.net/tutorials/php/ .
2 comentários:
Postar um comentário
comente e dê sua opinião! curta