27
TUTORIAIS DE PHP Introdução ao PHP 1. O que é o PHP? O PHP é uma linguagem de Scripting. Tem este nome porque o código PHP é interpretado e não compilado. Isto quer dizer que, ao invés de outras < linguagens como o C, que o seu código é compilado, e depois executado como um programa normal, o PHP necessita sempre de um "parser" para interpretar o seu código. 2. Para que serve? A função principal do PHP (e a melhor, visto ter sido para esta função que esta linguagem foi implementada) é a de desenvolvimento de conteúdos web. Ou seja, utiliza-se PHP para criar páginas dinâmicas e automáticas. 3. Em que consiste uma página dinâmica? Entende-se por uma página dinâmica, toda a página que é gerada quando existe um pedido no servidor. Ou seja, a página que chega ao utilizador não existe "escrita" no servidor. Existem sim os conteúdos, que serão depois colocados nos respectivos locais, na página, consoante os pedidos. O melhor exemplo de um site dinâmico, é um motor de pesquisa. É impossível (e impensável) armazenar todas as combinações de páginas que surgem, quando fazemos diversas pesquisas. Quer isto dizer, que as paginas não existem e são "geradas" com informações que estão em bases de dados, quando fazemos um pedido sobre qualquer coisa. 4. Então como funciona o PHP para automatizar uma página? É muito simples se pensar-mos neste modo: Tudo o que sai do código PHP (output), é HTML. Logo é fundamental ter conhecimentos de HTML para se saber como fazer o que pretendemos. Num simples esquema, podemos ter qualquer coisa do tipo: PHP -> Servidor Web -> Interpretador -> HTML -> Utilizador <br><br> Basta entender este simples esquema e já se começa a perceber a filosofia do PHP!

Tutoriais de Php

Embed Size (px)

Citation preview

Page 1: Tutoriais de Php

TUTORIAIS DE PHP

Introdução ao PHP

1. O que é o PHP?O PHP é uma linguagem de Scripting. Tem este nome porque o código PHP é interpretado e não compilado. Isto quer dizer que, ao invés de outras < linguagens como o C, que o seu código é compilado, e depois executado como um programa normal, o PHP necessita sempre de um "parser" para interpretar o seu código.2. Para que serve?

A função principal do PHP (e a melhor, visto ter sido para esta função que esta linguagem foi implementada) é a de desenvolvimento de conteúdos web. Ou seja, utiliza-se PHP para criar páginas dinâmicas e automáticas.

3. Em que consiste uma página dinâmica?

Entende-se por uma página dinâmica, toda a página que é gerada quando existe um pedido no servidor. Ou seja, a página que chega ao utilizador não existe "escrita" no servidor. Existem sim os conteúdos, que serão depois colocados nos respectivos locais, na página, consoante os pedidos. O melhor exemplo de um site dinâmico, é um motor de pesquisa. É impossível (e impensável) armazenar todas as combinações de páginas que surgem, quando fazemos diversas pesquisas. Quer isto dizer, que as paginas não existem e são "geradas" com informações que estão em bases de dados, quando fazemos um pedido sobre qualquer coisa.

4. Então como funciona o PHP para automatizar uma página?

É muito simples se pensar-mos neste modo: Tudo o que sai do código PHP (output), é HTML. Logo é fundamental ter conhecimentos de HTML para se saber como fazer o que pretendemos. Num simples esquema, podemos ter qualquercoisa do tipo:PHP -> Servidor Web -> Interpretador -> HTML -> Utilizador <br><br>Basta entender este simples esquema e já se começa a perceber a filosofia do PHP!

Fusão PHP + Html

IntroduçãoPara começares a aprender PHP, tem de perceber primeiro como este se funde com o HTML. Ou seja, se temos uma página em HTML, e pretendemos uma simples funcionalidade desenvolvida em PHP, não precisamos de escrever apágina toda em PHP. Seria totalmente inútil fazer o output de uma página inteira de HTML, só para mostrar as horas, ou a data.Vamos então perceber como tudo funciona!<html><body><!-- Exemplo de um output em HTML -->Olá pessoal! Esta é uma área normal de <b>HTML</b>! <br><?// Exemplo de um simples output em PHP

Page 2: Tutoriais de Php

echo "Esta área já é dentro do <b>PHP</b>.";?></body></html>Este ficheiro chama-se "exemplo1.php".Neste exemplo temos uma página normal com o cabeçalho normal e algumas tags de HTML. Depois temos também a área que contem código PHP. Essa área é delimitada pelas tags <? (inicio) e ?> (fim). Neste exemplo, o código utiliza a função"echo" para enviar o output para a página final, sobe a forma de código HTML. Logo o resultado deste "echo" vai ser:Esta area já é dentro do PHP.Em que a palavra PHP é escrita a BOLD.Nota: TODAS AS INTRUçOS SÃO TERMIDADAS COM O CARACTER ; (ponto e virgula) Este caracter indica ao interpretador quando acaba uma instruçao, e quando ele deve de esperar outra intruçao. A excepção deste caso é quando um blocode código PHP só contem uma única instrução, podendo neste caso incluir ou não o ';' .

Assim como existem comentários em HTML delimitados por <!-- e -->, em PHP também é possível comentar partes de um código. Para tal, quando se quer comentar uma única linha, utilizamos os caracteres '//' para comentar alinha que não será processada. Para um bloco de linhas, utilizamos os separadores "/*" no inicio do bloco, e "*/" para fechar o comentário.

Exemplo:<? // Uma linha de comentario ../* Um Simplesbloco de comentario !!!*/?>

Exercicio 1:Utiliza alternadamente a função Echo do PHP e o texto normal em html para efectuar o output das seguintes frases:Html:A Primeira linha é <u>normal</u>.<br>PHP: A segunda, linha já é escrita pelo <b>PHP</b>.<br>Html:Nisto, vem uma <font color=#FF0000>3ª mais complexa</font>...<br>PHP:E logo a <font color=#00FF00>seguir</font>, a 4ª <font color=#0000FF>aindamais</font> complicada!<br>Se tudo correr bem, o resultado é o seguinte:A primeira linha é normal.(com o "normal" sublinhado)A segunda linha, já é escrita pelo PHP.(o "PHP" a bold)Nisto, vem uma 3ª mais complicada...

Page 3: Tutoriais de Php

("3ª mais complexa" a vermelho)E logo a seguir, a 4ª ainda mais complicada!("seguir" a verde e "ainda mais" a azul)Se conseguiste fazer isto, estas no bom caminho! :-)

Resumo:O PHP pode ser apenas um pedaço de código que fica no meio de tags HTML e édelimitado pelas tags <? e ?>.

Variáveis

As variáveis são bocados de memória que armazenam informação. Esta informação pode variar ao longo de um script PHP, de modo a servir as nossas necessidades.Tipos de variáveis mais utilizadas:Caractere 'a', 'b', 'Z'Inteiro 0, 1, 2String "PHP É Fixe!"Real/Flutuante 15.5Todas as variáveis em PHP começam pelo caracter $ (dolar) seguido de um nome. Esse nome tem de começar _sempre_ por uma letra, e nunca por um numero, ou "_" , embora estes possam estar após o primeiro caracter daletra do nome.Nota: todos os caracteres a excepção do "_" não podem ser utilizados como nome de variável.Exemplos de nomes de variáveis:$nome$top10$valor_do_premio$valor_do_2_premioRecomendo que utilizes sempre variáveis S-U-G-E-S-T-I-V-A-S !!! Quero dizer com isto que o nome da variável deve corresponder ao seu conteúdo, e quando se lê o nome da variável, saiba-se do que se esta a falar. Exemplos devariáveis sugestivas:$nomePara o nome de uma pessoa$idadePara a idade de uma pessoa$total_de_perasNumero total de pêrasExemplos de variáveis não sugestivas:$xpto$bla$t1$letc..Para se dar um valor a uma variável., escreve-se o nome da variável., seguido de '=' (o igual é o símbolo de atribuição) seguido do valor pretendido.

Exemplos:$numero=10; //Atribui à variável $numero o valor 10; $nick="[Dragon]"; //Atribui à variável $nick a string "[Dragon]";

Page 4: Tutoriais de Php

$símbolo='!'; //Atribui à variável. $símbolo o valor '!';$soma=$numero+20;//soma 20 a variável. $numero e guarda o valor em $soma//$soma passa a ter o valor 30$soma++; // Igual a $soma=$soma+1; (o inverso se passa com $soma--)// $soma fica com 31$soma+=30; // Igual a $soma=$soma+30;// $soma passa a ter o valor 61$assinatura="Vasco Pinheiro aka " . $nick; // concatena as duas strings na string $assinarura// $assinatura passa a ter a string "Vasco Pinheiro aka [Dragon]"$assinatura.=$Símbolo; //igual a $assinatura=$assinatura . $símbolo;// $assinatura passa a ter a string "Vasco Pinheiro aka [Dragon]!"Nota: Quando uma variável.é string, o seu valor é atribuída sempre entreaspas. Quando uma variável é achar, o seu valor é atribuído sempre entreplicas.Vamos ao nosso 2 exemplo:<html><body>Exemplo de utilização de variáveis: <br><br><? $inteiro=10;$real=20.0; /* O "." aqui é usado para separa a parte inteira da decimal.Não confundir com o "." de concatenação de strings */

$caracter='V';?>A variável. $inteiro tem o valor <? echo $inteiro ?>. <br>A variável. $real tem o valor <? echo $real ?>. <br>O caracter escolhido é o <? echo $caracter ?>. <br></body></html>Acedemos a página e temos o seguinte resultado:Exemplo de utilização de variáveis:A variável. $inteiro tem o valor 10. A variável. $real tem o valor 20.0. O caracter escolhido é o V.Nota que o primeiro conjunto de instruções PHP não enviam qualquer output para a página, logo no código HTML que vai para o cliente, nem se dá por ele existir!

Exercício 2:

Pega no exemplo em cima e adiciona duas variáveis, $cor1 e $cor2, no sitio onde estão declaradas as variáveis $inteiro, $real e $caracter. Estas variáveis devem ser strings e conter os seguintes valores: "#FF0000" e"#0000FF". Utiliza estas variáveis para mudar a cor de cada linha, devendo a primeira linha aparecer a vermelho, a segunda a azul e a terceira novamente vermelha. Quando o exercício for efectuado com sucesso, alterar os valoresdas variáveis $cor1 e $cor2, e vê o resultado.

Resumo:Podemos declarar variáveis do tipo caracter, inteiro, achar ou real. Estas variáveis podem ser declaradas em qualquer altura do script, estando o seu valor sempre disponível ao longo deste. Pode-se utilizar uma variável

Page 5: Tutoriais de Php

para definir o código de uma cor, e utilizar esta variável na opção"color" da tag <font,> para que quando mudemos o valor da variável., todo o texto seja afectado automaticamente.

Os Arrays

Os arrays podem ser vistos como uma forma de lista indexada de variáveis (array unidimensional), ou como uma tabela (array bidimensional), e podem conter qualquer tipo de dados (caractere, inteiro, decimal, string). Este tipo de estrutura de dados, é bastante funcional, quando estamos a tratar informação relacionada. Por exemplo: imaginemos que estamos a fazer uma lista de compras, e nessa lista queremos produtos tal com couves, batatas, laranjas, maçãs, e pêras. Sem usar arrays, teríamos de ter qualquer coisa do tipo:$produto1="Batatas";$produto2="Laranjas";$produto3="Maças";$produto4="Pêras";Se quisemos saber quantos produtos temos, teríamos de verificar se a variável $produtoX tem, ou não, um valor. Com arrays é diferente!. Ao invés de ter as variáveis a parte, temos uma "lista" de elementos. Exemplo dalista de produtos com array:$produto[0]="Batatas";$produto[1]="Laranjas";$produto[2]="Maçãs";$produto[3]="Pêras";Outra forma de criar um array, é usado a função"array()" do php:$produto=array("Batatas","Laranjas","Maçãs","Pêras");

Pode parecer que não mudou muito, ou até que é mais complicado por levar os parênteses rectos, mas na verdade, este tipo de estrutura de dados, é muito mais vantajosa. Ao invés de termos varias variáveis, temos uma lista de elementos, dentro do array $produto: Assim, o elemento 0 ($produto[0]) do array $produto tem o mesmo valor que tinha a variável $produto1; o elemento 1 ($produto[1]) tem o mesmo valor que tinha a variável $produto2; e assim sucessivamente.Isto é bastante útil, porque a qualquer momento, eu posso perguntar:"Quantos elementos tem o array $produto?" e automaticamente obtenho o numero de produtos da minha lista de compras.Os arrays podem ser indexados por um numero inteiro, ou uma palavra associada:$numero[0]=1;$idade["Dragon"]=22;Se utilizarmos arrays bi-dimensionais, podemos construir uma tabela. Exemplo:Construir uma lista de compras para o Ze e para a Maria:$produto["Ze"][0]="Batatas";$produto["Ze"][1]="Laranjas";$produto["Ze"][2]="Maças";$produto["Ze"][3]="Pêras";$produto["Maria"][0]="Chocolates";$produto["Maria"][1]="Doces";

Condição If... else

Page 6: Tutoriais de Php

A condição "if expressão instrução" serve para validar uma condição, e mediante o resultado, executar o código correspondente. Esta condiçãoé utilizada nas mais diversas situações na programação, bem como no nosso diaa dia. Exemplo:if "tenho dinheiro" "Vou ao Cinema"A instrução Else serve para executar um pedaço de código, caso a condição seja Falsa:if "não está a chover" "vou a praia" else "Fico em casa"Para delimitar um bloco de instruções em PHP, utilizamos as chavetas. "{"marca o inicio do bloco, e o "}" o fim do mesmo. Utilizamos blocos de instruções para indicar o código que queremos correr, num determinadomomento. Exemplo:if "for ao hiper-mercado" {"Compra pão";"Compra bebidas";"Compra frutas";}else{"Vou ao cinema";"Vou ver as montras";}Múltiplos IFs podem ser encadeados. Exemplo:If "Dia=Sábado" "Fico em casa";else if "Dia=Domingo" "Vou passear";else "É dia da semana, vai trabalhar!!!";Exemplos de expressões para validar as condições:$a == $b Verdadeiro se $a é igual a $b.$a != $b Verdadeiro se $a diferente de $b.$a < $b Verdadeiro se $a menor que $b.$a > $b Verdadeiro se $a maior que $b.$a <= $b Verdadeiro se $a menor ou igual a $b.$a >= $b Verdadeiro se $a maior ou igual a $b.Podemos ainda utilizar operadores lógicos para optimizar as condições, consoante as nossas necessidades:$a and $b - And - Verdadeiro se ambos $a e $b forem verdadeiros.$a or $b - Or - Verdadeiro se $a ou $b forem verdadeiros.$a xor $b - Or - Verdadeiro se $a ou $b forem verdadeiros, mas não os dois.! $a - Not - Verdadeiro se $a for falso.$a && $b - And - Verdadeiro se $a e $b forem verdadeiros.$a || $b - Or - Verdadeiro se $a ou $b forem verdadeiros.Exemplo:if (($dinheiro > 5000) and !($pais_em_casa)) echo "Vou para a Borga!!";else {echo "Tenho de ficar em casa.. <br>";echo "Mas vou para a Net!!!";}Traduzindo: Se tivermos mais de 5000$ e se os pais não estiverem em casa, podemos ir para a borga. Senão, temos de ficar em casa, e claro está, ir para a net!Exercício 4:Utilizando o exercício 3 (p4.txt), cria uma variável de nome $estafeta e o seu valor

Page 7: Tutoriais de Php

vai ser "Ze" ou "Maria". Dependendo do valor do $estafeta, mostra apenas a lista de compras do Ze, ou da Maria. Testa primeiro com o "Ze" comoestafeta, e depois experimenta com a "Maria".Nota: NUNCA ESQUECER que o sinal de comparação é "==" (dois iguais) e que o de atribuição é so "=" (um igual). É frequente as pessoas distraírem-se e colocar apenas um "=" dentro de um if e terem resultados inesperados, porquequando se faz if ($a=$b) estamos a atribuir a $a o valor de $b, e não a comparar se $a é igual a $b.Conclusão:Podemos utilizar condições para decidir que blocos de código queremos executar. Podemos encadear varias condições para refinar diversas soluções.

O Switch

Já vimos como podemos usar o IF..else para criar-mos escolhas entre blocos de códigos a executar. E vimos também, como múltiplos IF's podem ser encadeados, para podermos atingir diversas situações. Um dos exemplos utilizados foi:If ($dia=="Sábado") echo "Fico em casa";else if ($dia=="Domingo") echo "Vou passear";else echo "É dia da semana, vai trabalhar!!!";è um exemplo simples, onde o IF..else resolve bem o problema. Mas, o caso muda de figura, se tivermos de considerar enumeras hipóteses. Utilizar muitos "If..else if.. else if... else" torna-se impraticável, e muito confuso de ser perceber. è nesta altura que entra o Switch. O swich é uma função que valida uma variável do tipo caracter, inteira, real ou string. Consoante determinada validação (ou opção considerada válida) é-nos permitido executar determinado bloco de código para esse "caso/estado" da variável. Pegando no exemplo anterior, e utilizando o Switch, temos o seguinte exemplo:<?switch($dia){case "Sábado": echo "Fico em casa"; break; case "Domingo": echo "Vou passear"; break;default: echo "É dia da semana, vai trabalhar!!!";}?>Vou explicar passo a passo. Primeiro, indicamos à função switch() qual a variável estamos a testar: neste caso a variável $dia. Depois abrimos um bloco de código desta função, onde declaramos os casos ou estados da variável Cada caso é indicado com a sigla "case" seguido do seu valor Os ":" indicam que o código que se segue é pertencente ao caso anteriormente declarado. E no fim de cada case, terminamos o bloco com um "break" para que mais nada seja executado do Switch. Por fim, podemos especificar um caso "default", para a ocasião de nenhum dos "cases" anteriores, seja o estado pretendido.Seguindo a lógica do script temos a seguinte interpretação:1- Indicação de que vamos validar a variável $dia2- Caso $dia="Sábado", escreve "Fico em casa"; Termina o switch;3- Caso $dia="Domingo", escreve "Vou passear"; Termina o switch;4- Caso default, escreve "É dia da semana, vai trabalhar!!!";NOTA: O Default é sempre executado, sempre que nenhum dos "case" anteriormente declarados, seja o estado da variável que estamos a testar.

Page 8: Tutoriais de Php

Uma forma de facilitar múltiplas opções que utilizam o mesmo código, em vez de estar a repetir o código para cada opção comum utilizamos a seguinte implementação do switch:<?switch($dia){case "Sábado":case "Domingo": echo "Estamos no Fim de Semana"; break;

default: echo "Estamos num dos dias da semana!";}?>Assim, caso o $dia seja "Sábado" ou "Domingo", ambos executarão o mesmo código. Caso $dia seja outro valor qualquer, utiliza a opção default.Exercício 5:Dada a variável $mes com um valor entre 1 e 12, constrói 2 switch, onde o primeiro indicara o mês do ano, e o segundo indicará a estação do ano. Ambos os switch devem de ter uma condição "default": o primeiro deverá dizer "Mes inválido"; e o segundo "Estação invalida"; para um numero inferior a 1 ou superior a 12.

Exemplo1:$mês=1;Output do script: "Mês Janeiro, estação Inverno";

Exemplo2:$mês=4;Output do script: "Mês Abril, estação Primavera";

Exemplo3:$mês=7;Output do script: "Mês Julho, estação Verão";

Resumo:Podemos utilizar o switch para validar múltiplos estados de uma variável, evitando assim sucessivos If..else. Podemos ainda agrupar diversos casos de uma variável, para que qualquer um desses casos executem o mesmo código. A instrução break, termina a execução do Switch.

Ciclos: While e FOR

Até agora temos visto como utilizamos alguns comandos simples. Mas, diversas vezes, ao logo da programação de uma aplicação web, temos de repetir as mesmas funções diversas vezes. Por exemplo, quando dei o exemplo da lista de compras do Ze e da Maria, essa lista tinha 4 produtos. Esses 4 produtos fora escritos utilizando 4 linhas com o comando "echo". Agora imaginamos uma lista de compras com 100 produtos, e temos uma dor de cabeça! ;)Nestes casos, não se pensa duas vezes, e pegamos num dos ciclos que podemos implementar: o While ou o FOR.Estes dois ciclos são muito idênticos, visto que se pode sempre converter um ciclo

Page 9: Tutoriais de Php

WHILE, num ciclo FOR, e vice versa. A decisão de utilizar um ou outro, é apenas tomada pela pessoa que os implementa, e tem a ver com asimplicidade com que depois consegue interpretar um ou outro. Existem situações onde um WHILE aplica-se com mais facilidade, outras em que um FOR arrasa com tudo. =) Ambos serão explicados separadamente.While!Quer dizer "Enquanto". A sua sintaxe é a seguinte:while(condição){//bloco de código}Ou seja, enquanto a condição se verificar, executa determinado código.Exemplo de um ciclo WHILE:<?$numero=1;while ($numero<=10){echo "Número: $numero <br>";$numero++;}?>Este código inicia a variável $numero com o valor 1. Seguidamente entra dentro de um ciclo WHILE, que executa um bloco de código, enquanto a variável $numero for inferior ou igual a 10. No bloco, temos um output que nos vai indicar qual o valor da variável, e logo a seguir, temos o incremento de uma unidade da variável $numero. O resultado da execução do script é a seguinte:Número: 1Número: 2Número: 3Número: 4Número: 5Número: 6Número: 7Número: 8Número: 9Número: 10Enquanto a condição tiver o valor VERDADEIRO, o bloco de código do While é executado.FORO ciclo for, tem uma particularidade em relação ao WHILE. Enquanto um While a variável de contagem, e a instrução de incremento, quando existem, são declaradas em pontos diferentes do código, o ciclo FOR junta essasdeclarações no mesmo local onde define a condição. Sintaxe de um FOR:for (declaração de variáveis; condição de execução; incrementos de variáveis){//bloco de código a executar}Na primeira zona declaramos as variáveis (normalmente os contadores ou índices); na segunda zona indicamos as condições de execução do ciclo for: enquanto essas condições tiverem o valor VERDADEIRO, o ciclo é realizado; na3 zona, é onde vamos indicar os incrementos das variáveis/contadores.Utilizando o exemplo do WHILE, vamos construir um FOR:<?for ($numero=1; $numero<=10; $numero++)

Page 10: Tutoriais de Php

{echo "Número: $numero <br>";}?>O resultado deste ciclo é exactamente igual ao do WHILE. Neste tipo de ciclo, onde iniciamos uma variável, e incrementamos essa mesma variável para control do ciclo, o FOR tem vantagem na sua implementação.Exercício 6.1: Cria um array $meses (usando a função"array()") com os nomes dos meses do ano. Utiliza ambos os ciclos While e FOR (separadamente) para escrever os 12 meses.Exercício 6.2:Com base no Exercício 3 (p4.txt) usa um ciclo While para escrever os produtos do Ze, e um FOR para escrever os produtos da Maria. Nota: Deves respeitar o código de cores dos produtos de ambos os estafetas.Nota: Este exercícioé de alguma dificuldade. É possível que requeira de algum tempo e prática, para conseguires implementa-lo correctamente. Se conseguires completar o exercício sem qualquer ajuda.. é porque estas adominar bem isto! :)Resumo:Utilizamos ciclos sempre que temos linhas de código repetidas. Usar um ciclo WHILE ou FOR depende da situação de implementação, e da forma como achamos ser mais simples a sua compreensão.

Funções

Uma função é um bloco de código que se declara, para que possa ser utilizado sempre que necessário. Este processo, permite-nos simplificar a construção de um website, porque não temos de estar sempre a repetir as mesmas instruções, podendo declarar funções para tal. Uma função pode trabalhar com diversos parâmetros que lhe são enviados, ou até, semqualquer parâmetro. Normalmente devolve um valor, resultado do processamento do código da função. Exemplo de uma função:<?function escreve($str){echo "A string enviada para a função diz: $str .<br>";}escreve ("String de Teste");?>

Neste exemplo, declarei uma função de nome "escreve" que aceita um parâmetro. do tipo String. Quando a função for chamada, vai enviar um output para o ecrã que diz "A string enviada para a função diz: " seguido do valorenviado para a função Neste caso, chamamos a função escreve() e como parâmetro. a string "String de Teste". Quando executamos este script, o resultadoé o seguinte:A string enviada para a função diz: String de Teste .Neste exemplo, a função não nos devolve nada. Serve apenas para poder-mos usufruir da reutilização do código. Exemplo:Imaginemos que queremos escrever linhas a vermelho, azul e a verde. Um método que poderíamos usar, era escrever:<html><body>

Page 11: Tutoriais de Php

<font color=#FF0000>O texto que eu quero a vermelho</font><br><font color=#00FF00>O texto que eu quero a verde</font><br><font color=#0000FF>O texto que eu quero a azul</font><br><br><font color=#FF0000>O texto que eu quero a vermelho</font><br><font color=#00FF00>O texto que eu quero a verde</font><br><font color=#0000FF>O texto que eu quero a azul</font><br><br><font color=#FF0000>O texto que eu quero a vermelho</font><br><font color=#00FF00>O texto que eu quero a verde</font><br><font color=#0000FF>O texto que eu quero a azul</font><br><br></body></html>Até aqui tudo bem, a coisa funciona correctamente, e temos um belo trabalho sempre que queremos escrever uma linha da cor pretendida, ao longo do site. Agora imaginemos que, cada vez que eu quero escrever a cor vermelha, o textoapareça a BOLD ("<b>"), o texto a verde em Itálico ("<i>"), e o azul a sublinhado ("<u>"). No mínimo, era fugir para outro planeta e desistir do projecto! Mais uma vez, o PHP vem ao nosso socorro, e podemos implementar Funções! O nosso exemplo então seria muito simples.Inicialmente implementamos as funções das cores:<?//função que escreve a vermelhofunction escreve_vermelho ($str){echo "<font color=#FF0000>$str</font><br>";}//função que escreve a verdefunction escreve_verde ($str){echo "<font color=#00FF00>$str</font><br>";}//função que escreve a azulfunction escreve_azul ($str){echo "<font color=#0000FF>$str</font><br><br>";}

//chamada das funções com o respectivo textoescreve_vermelho("O texto que eu quero a vermelho");escreve_verde("O texto que eu quero a verde");escreve_azul("O texto que eu quero a azul");//e podemos repetir a chamada às funções as vezes que quisermosescreve_vermelho("O texto que eu quero a vermelho");escreve_verde("O texto que eu quero a verde");escreve_azul("O texto que eu quero a azul");escreve_vermelho("O texto que eu quero a vermelho");escreve_verde("O texto que eu quero a verde");escreve_azul("O texto que eu quero a azul");?>E já temos as funções, que podemos utilizar no nosso site, para quando precisarmos escrever texto a vermelho, verde ou azul. Agora, se por ventura, tivermos de mudar o texto a vermelho, para aparecer a bold; o verde paraaparecer em itálico, e o azul em sublinhado, basta apenas mudarmos as nossas funções. Assim, as funções modificadas ficariam assim:<?

Page 12: Tutoriais de Php

//função que escreve a vermelho e a boldfunction escreve_vermelho ($str){echo "<font color=#FF0000><b>$str</b></font><br>";}//função que escreve a verdefunction escreve_verde ($str){echo "<font color=#00FF00><i>$str</i></font><br>";}//função que escreve a azulfunction escreve_azul ($str){echo "<font color=#0000FF><u>$str</u></font><br><br>";}?>Executamos o script, e onde anteriormente aparecia as frases com o texto normal, vai aparecer agora com as formatações de bold, itálico e sublinhado, atribuídas nas funções.-*-Estas funções que utilizamos, utilizam apenas parte das capacidades de uma função. Vamos ver agora, como podemos retornar valores de uma função.Imaginemos que queremos utilizar uma função que nos calcule o quadrado de um numero:<?function quadrado($num){$total=$num*$num;return ($total);}$num=2;$quad=quadrado($num);echo "O quadrado de $num é $quad !";?>Declaramos a função quadrado, que aceita um numero como parâmetro. Calcula o resultado do seu quadrado (numero a multiplicar por ele próprio) e guardamos o resultado na variável $total. Retornamos a variável total como resultadoda função. Quando utilizamos a seguinte instrução:$quad=quadrado($num)Estamos a dizer que vamos atribuir à variável $quad o valor retornado pela função quadrado(), tendo esta como parâmetro. a variável $num. O resultado deste script é o seguinte:O quadrado de 2 é 4 !Podemos também ter funções que chamam outras funções Vamos fazer agora a função Cubo!

<?function quadrado($num){$total=$num*$num;return ($total);}function cubo($num){

Page 13: Tutoriais de Php

$total=quadrado($num)*$num;return ($total);}$num=2;$quad=quadrado($num);$cubo=cubo($num);echo "O quadrado de $num é $quad ! <br>";echo "O cubo de $num é $cubo ! <br>";?>O resultado, como não poderia deixar de ser é:O quadrado de 2 é 4 !O Cubo de 2 é 8 !

Exercício 7.1:Recorrendo às funções, implementa as 4 operações básicas: soma, subtracção, multiplicação e divisao. Cada uma destas funções deverá aceitar 2 parâmetros: $a e $b, e devolver o resultado de cada operação. Dado um valor para estas variáveis, pretendo obter o seguinte resultado:1- a+b2- a-b3- a*b4- a/b5- a+(b*a)6- b/(a-b)7- a*((b/a)-b)+bExercício 7.2:A proveitando o exemplo anterior, construir uma função que sirva de calculadora.Esta função aceita 3 parâmetros: $a, $b e $operação. Dados as 3 variáveis, para a função, valida a $operação. através de um Switch, e mediante os diversos casos, a função devera calcular a soma, subtracção, divisão, emultiplicação.Esquema:$a=2;$b=3;$operação.="*";A função deverá calcular o valor de $a*$b.

Resumo:Podemos construir funções simplesmente para reutilizarmos determinado código ao longo do site. Este método permite-nos que em certa altura, possamos alterar algumas propriedades do código, e esta modificação tenha influenciaem todo o site. As funções permitem também aceitar parâmetros e devolver o resultado do processamento do código da função. Podemos ainda encadear funções para obter o resultado pretendido, e assim simplificar o códigoescrito.

Forms

Uma das principais utilizações do PHP, é de validar e armazenar a informação introduzida em formulários. Ou seja, um utilizador chega a uma certa página, preenche um formulário, e quando faz o "submit" essa informação tem de serprocessada por alguma coisa. O PHP leva uma grande vantagem neste aspecto, em

Page 14: Tutoriais de Php

relação a CGI's em C e Perl standarts, que não trabalham de uma forma tão transparente como o PHP.Quando é feito um submit de um formulário para um script PHP, o PHP é capaz de entender o que lhe é enviado, e transformar um formulário num conjunto de variáveis com a informação introduzida. Por exemplo, se um utilizadorpreenche uma caixa de texto com o seu nome, após a submição do formulário, passa a existir uma variável com o nome da caixa, que contem a informação introduzida pelo utilizador. Exemplo de um script "form.php":<form action="verifica.php">Introduza o seu nome: <input type=txt name=nome><br><input type=submit></form>Quando o formulário do "form.php" é submetido para o verifica.php, passa a estar disponível uma variável $nome, com a informação introduzida pelo utilizador.Vamos testar:<?echo "O nome do utilizador é $nome <br>";?>Gravamos o script com o nome "verifica.php", e corremos o nosso form.php.Introduzimos lá o nome, e quando fazemos o submit, o verifica.php manda o output:O nome do utilizador é [Dragon]-*-Tipos de variáveis criadas pelos formulários:Dependendo do tipo de input que temos no nosso formulário, a variável que armazena a informação tem formatos diferentes. Por exemplo, enquanto que uma caixa de texto, origina uma string com o nome da caixa, e o valorintroduzido, para outros tipos de input, o resultado é diferente. Passo a listar as diversas situações.text - Origina uma variável com o nome da caixa. Essa variável é uma string e contem a informação introduzida na caixa.checkbox - Origina uma variável com o nome da checkbox. Esta variável contem os valores "on" ou "" (vazio) consoante a checkbox está ou não activa.radio - Origina uma variável com o nome do radio. Esta variável contem o valor do radio seleccionado.select - Origina uma variável com o nome do select. Contem o valor do OPTION seleccionado.textarea - Origina uma variável com o nome da textarea. Contem o valor introduzido na mesma.Exemplo dos tipos de input:<form action=verifica.php>Caixa de texto: <input type=text name=text_name><br><br>Check Box<input type=checkbox name=checkbox_name><br><br>Radio:<br>Valor 1<input type=radio name=radio_name value=valor1><br>Valor 2<input type=radio name=radio_name value=valor2><br><br>Select:<br><select name=select_name><option value=opcao1>Opção 1</option><option value=opcao2>Opção 2</option></select><br><br>Area de texto:<br><textarea name=textarea_name></textarea><br><input type=submit></form>

Page 15: Tutoriais de Php

E agora o nosso verifica.php:<?echo "Text: $text_name <br>";echo "CheckBox: $checkbox_name <br>";echo "Radio: $radio_name <br>";echo "Select: $select_name <br>";echo "Textarea: $textarea_name <br>";?>Após verificares as múltiplas opções de escolha, dos diversos tipos deinputs para um form, vamos ao exercício:Exercício 8:-----------------------------------------------------------------------------<html><body><form action=verifica.php>Texto: <input type=text name=texto><br><br>Tipo de <Hx>: <select name=tamanho_hx><option value="1">H1</option><option value="2">H2</option><option value="3">H3</option> <option value="4">H4</option></select><br><br>Texto fica em Italico? <input type=checkbox name=italico checked><br><br>Tipo de alinhamento:<br>Esquerda<input type=radio name=alinhamento value="esquerda"><br>Centro<input type=radio name=alinhamento value="centro"><br>Direita<input type=radio name=alinhamento value="direita"><br><br>Cor:<br><select name=cor><option value="#FF0000">Vermelho</option><option value="#00FF00">Verde</option><option value="#0000FF">Azul</option></select><br><br>Numero de vezes: <input type=text name=vezes maxlength=2 size=3><br><br><input type=submit></form></body></html>-----------------------------------------------------------------------------Dado este formulário, e após analisares cuidadosamente o HTML, elabora um script PHP que processe o formulário e a apresente os devidos resultados:Escrever o texto introduzido na caixa "Texto" com o tipo H1, H2, H3, ou H4. O texto poderá ou não ficar em itálico, e o alinhamento deverá ser a esquerda, centro ou à direita, com a cor que nós escolhemos. Por fim, deverá ser escrito consoante o número de vezes introduzidas pelo utilizador. O número de vezes não podera ser inferior a 1 nem superior a 30, e em cada linha deverá constar o número da linha que está a ser escrita.Resultados Possíveis:Exemplo1:<h1 align=center><font color=#FF000><i>1- Exemplo 1!!</i></font></h1>Exemplo 2:<h4 align=right><font color=#000FF>1- Exemplo 2!!</font></h4><h4 align=right><font color=#000FF>2- Exemplo 2!!</font></h4><h4 align=right><font color=#000FF>3- Exemplo 2!!</font></h4>

Page 16: Tutoriais de Php

Resumo: O PHP utiliza os dados de um formulário de forma transparente. Os campos de um formulário introduzido, fica disponíveis no script PHP sobe a forma de variáveis com os respectivos valores.

Ficheiros

Os ficheiros permitem-nos armazenar facilmente pequenos pedaços de informação. O método de utilização é idêntico ao utilizado em C, o que é bastante simples. Vou apenas fazer uma abordagem aos ficheiros, visto que é muito mais simples utilizar uma base de dados (como o MySQL) para armazenar informação do que com os ficheiros. Em todo o caso, para os que não tem disponível uma base de dados para trabalhar, ou pretendem apenas armazenar pouca informação, a utilização de ficheiros pode ser o suficiente.Criar um ficheiro, implica guardar informação no servidor. Logo, para que tal aconteça, a directoria onde vamos guardar o ficheiro, deve ter permissões de leitura e escrita (muito importante!). Em Linux, por default, quando criamos uma directoria, ela fica apenas com permissão de escrita para o utilizador. Frequentemente existem problemas de permissões, porque os scripts PHP (com o user id do webserver) não estão autorizados a escrever nesses locais. Uma maneira simples de resolver o problema é dar modo de leitura/escrita para todos: chmod a+wr directoria (para uma solução maispersonalizada, consultar o manual do chmod).Supondo que o problema das permissões está resolvido, vamos ver como podemos armazenar informação num ficheiro:<?$str="Isto é um teste";$ficheiro=fopen("teste.txt","w");fputs($ficheiro, $str);fclose($ficheiro);?>Basicamente, o que este script faz, é abrir um ficheiro de nome "teste.txt" e armazena lá dentro a string $str. Para tal, inicialmente utilizamos o fopen para abrir um ponteiro de escrita ("w") para o ficheiro "teste.txt", que fica armazenado em $ficheiro. Este ponteiro server para podermos trabalhar com o conteúdo do ficheiro, ou seja, podemos escrever no ponteiro, e esta operação terá efeito no ficheiro em si. Para escrever no ficheiro utilizamos a função fputs (File PUT String). No fim fechamos o ponteiro do ficheiro, e termina o script. Quando esta operação acontece, conteúdo do ficheiro é gravado. Por default, o PHP fecha todos os ponteiros de ficheiro no fim no fim do script, mas é bom habito sermos nós a fechar.

Podemos agora fazer a leitura da string que colocamos anteriormente:<?$ficheiro=fopen("teste.txt","r");$str=fgets($ficheiro,100);fclose($ficheiro);echo $str;?>

Page 17: Tutoriais de Php

Mais uma vez, abrimos um ponteiro $ficheiro, desta vez de leitura ("r"), para o ficheiro"teste.txt". Seguidamente, utilizamos a função fgets (File GET String) para ler o conteúdo (neste caso indicamos para ler 100 bytes) do $ficheiro. Depois fechamos o ponteiro, e escrevemos a string no fim.-*-Modos de abertura de um ficheiro, permitido pelo fopen:'r' - Abre o ficheiro apenas para leitura. Posiciona o ponteiro no inicio do ficheiro.'r+' - Abre o ficheiro para leitura e escrita. Posiciona o ponteiro no inicio do ficheiro.'w' - Abre o ficheiro apenas para escrita. Posiciona o ponteiro no inicio do ficheiro, e trunca o seu tamanho para 0. Se o ficheiro não existe, tenta cria-lo.'w+' - Abre o ficheiro para leitura/escrita. Posiciona o ponteiro no inicio do ficheiro, e trunca o seu tamanho para 0. Se o ficheiro não existe, tenta cria-lo.'a' - Abre o ficheiro apenas para escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.'a+' - Abre o ficheiro para leitura/escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.-*-Existe muitas funções que nos ajudam a trabalhar sobre ficheiros. Algumas dessas são usadas muito frequentemente, para verificar se o ficheiro existe, antes de o tentarmos ler, ou então para nos indicar se, quando estamos a ler informação de um ficheiro, já chegamos ou não ao fim do ficheiro. Vou dar uma pequena lista e explicar ligeiramente algumas delas. A lista completa das funções de ficheiros que podemos utilizar, está disponível no manual em:http://www.cidadela.org/php/manual/ref.filesystem.html

Pequena lista de funções que são frequentes de utilizar em ficheiros:fopen - Abre um ficheiro, e devolve um ponteiro para este, para que se possa executar operações relacionadas com o ficheiro em causa.fclose - Fecha o ficheiro (guarda a informação modificada) e destroi o ponteiro de referência. Após um fclose de um ponteiro, só podemos voltar a aceder a informação do ficheiro, voltando a abri-lo com o fopen.fgets - Le um determinado numero de bytes de um ficheiro.fputs - Escreve informação num ficheiro.file_exists - Verifica se um ficheiro existe. É recomendado fazer esta verificação para não tentar-mos abrir (para leitura) um ficheiro que não existe originando assim a um erro, por parte do PHP.feof - Verifica se o ponteiro se encontra no fim do ficheiro. Útil para quando temos um ciclo while para ler a informação de um ficheiro. A lógica normalmente utilizada é: "Enquanto não estamos no fim do ficheiro, lêinformação." while (!feof($ficheiro)) {...}

Estas funções já nos permitem fazer pequenos scripts que armazenem informação num ficheiro.Vamos então utilizar algumas funções e construir um contador, para nos dizer quantas vezes uma página foi vista:<?//verificar existência do contadorif (file_exists("contador.txt")){//ficheiro existe, vamos abrir para leitura$ficheiro=fopen("contador.txt","r");

//Já temos o ponteiro, retiramos o numero de visitas:$visitas=fgets($ficheiro,100);

Page 18: Tutoriais de Php

//incrementamos uma visita ao total de visitas$visitas++;

//fechamos o ponteiro de leitura do ficheirofclose($ficheiro);}else{//caso não exista ficheiro, esta é a primeira visita$visitas=1;}

//agora actualizamos/criamos o ficheiro para o numero das visitas$ficheiro=fopen("contador.txt","w");//escrevemos o total das visitasfputs($ficheiro,$visitas);//e fechamos o ficheirofclose($ficheiro);echo "Número de visualizações da página: $visitas";?>Este é um exemplo simples de como se pode ler e escrever num ficheiro. Primeiro verificamos se o ficheiro já existe, e se sim, lê-mos o numero de visitas. Actualizamos o numero, e escrevemos no ficheiro. Se o ficheiro nãoexiste, é porque é a primeira visita, e escrevemos o numero 1 no ficheiro. No fim mostramos o numero de visitas que a página teve.

Exercício 9.1:Vamos construir a nossa lista de compras! Para tal, utiliza o seguinte formulário, para adicionares o produto:<html><body><form action=adiciona.php>Produto a comprar: <input type=text name=produto><br><input type=submit value=Adicionar></form></body></html>Deves criar um script PHP de nome "adiciona.php" que adiciona ao ficheiro o produto que pretendemos.AVISO!!!! Para que exista um produto por linha, deve ser concatenado ao nome do produto, os caracteres "\n" . Estes caracteres indicam o fim de linha, logo quando estamos a escrever no ficheiro, mandamos o nome do produto e o caracter de fim de linha, para que o ponteiro passe para a linha seguinte do ficheiro. Deves escolher com cuidado o tipo de abertura do ficheiro que pretendes fazer.Após a introdução do produto no ficheiro, deverá aparecer uma mensagem a dizer qual o produto que foi adicionado à lista de compras.

Exercício 9.2:Após o produto ser adicionado, o script "adiciona.php" deve de mostrar a lista completa dos produtos que se prende comprar, um por linha, e devidamente numerados.

Exercício 9.3 (dificuldade elevada!):Para evitar adicionar produtos que já estavam na lista de compras, devemos poder

Page 19: Tutoriais de Php

consultar a lista, antes de introduzirmos um novo produto. Para tal, cria um novo script independente. Este deverá ser chamado de "compras.php" e deve respeitar os seguintes critérios:Se não existe lista de compras, escreve uma mensagem a dizer "Não existem compras a fazer", e mostra o formulário para se adicionar um novo produto.Se a lista de compras existe, escreve os produtos (numerados) já adicionados, que pretendemos comprar, seguido do formulário para se adicionar um novo produto.O formulário faz a submissão para o próprio "compras.php", e deve adicionar um produto a lista de compras, sempre que se este seja introduzido.

NOTA:Relembro que APÓS se faz um submit, o PHP cria uma variável com o nome da caixa de texto (neste caso $produto) com o conteúdo introduzido pelo utilizador. Para verificares se essa variável existe ou não, deves utilizar a função "isset()" q devolve VERDADEIRO, caso a variável tenha sido declarada, ou FALSO, caso não tenha.Resumo:Podemos utilizar ficheiros para guardar pequenas informações, sempre que não possamos ter acesso a uma base de dados. Trabalhamos nos ficheiros através de ponteiros, que vão indicando a posição do ficheiro onde nos encontramos. E temos diversas funções que nos permitem trabalhar com estes.

Exercício 1

<html> <title>Exercicio 1</title><body> A primeira linha e <u>normal</u>. <br><? echo " A segunda linha ja e escrita pelo <b>PHP</b>." ; ?> <br>Nisto, vem uma <font color=#FF0000>terceira mais complexa</font>... <br><? echo " E logo a <font color=#00FF00>seguir</font>, a quarta <font color=#0000FF>ainda mais</font> complicada!" ; ?><br>

</body> </html>Ver Resultado >