SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Manual 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!
Fusão PHP + Html
Para começares a aprender PHP, temos 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 a pá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
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 <? (ou <?php) (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ÇÕES 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 bloco de 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 a
linha 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 Simples
bloco de
comentario !!!
*/
?>
Exercicio:
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>ainda
mais</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...
("3ª mais complexa" a vermelho)
E logo a seguir, a 4ª ainda mais complicada!
("seguir" a verde e "ainda mais" a azul)
Resumo:
O PHP pode ser apenas um pedaço de código que fica no meio de tags
HTML e é delimitado pelas tags <? (ou <?php) 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, 2
String - "PHP É Fixe!"
Real/Flutuante - 15.5
Todas 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 da letra
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_premio
Tal com em qualquer outra linguagem a variáveis devem ter nomes S-U-G-E-
S-T-I-V-O-S !!!.
Exemplos de variáveis sugestivas:
$nome - Para o nome de uma pessoa
$idade - Para a idade de uma pessoa
$total_de_peras - Numero total de pêras
Exemplos de variáveis não sugestivas:
$xpto
$bla
$t1
$l
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]";
$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 entre
aspas. Quando uma variável é char, o seu valor é atribuído sempre entre
plicas.
Vamos a 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!
Resumo:
Podemos declarar variáveis do tipo caracter, inteiro, char 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 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 à parte, temos uma
"lista" de elementos. Exemplo da lista 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
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
dia a 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 determinado momento.
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 > 10) and !($calor)) echo "Vou para a piscina!!";
else {
echo "Vou para a praia. <br>";
}
Traduzindo: Se tiver mais de 10€ e se estiver calor, posso ir para a piscina.
Senão, vou á praia!
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,
porque quando se faz if ($a=$b) estamos a atribuir a $a o valor de $b, e não
a comparar se $a é igual a $b.
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 Switch é 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!!!";
}
?>
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 $dia
2- 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.
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.
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 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 a
simplicidade 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
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: 1
Número: 2
Número: 3
Número: 4
Número: 5
Número: 6
Número: 7
Número: 8
Número: 9
Número: 10
Enquanto a condição tiver o valor VERDADEIRO, o bloco de código do While
é executado.
FOR
O 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 essas
declaraçõ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;
na 3 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++)
{
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.
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é, sem
qualquer 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
valor enviado 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>
<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 texto apareç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 vermelho
function escreve_vermelho ($str)
{
echo "<font color=#FF0000>$str</font><br>";
}
//função que escreve a verde
function escreve_verde ($str)
{
echo "<font color=#00FF00>$str</font><br>";
}
//função que escreve a azul
function escreve_azul ($str)
{
echo "<font color=#0000FF>$str</font><br><br>";
}
//chamada das funções com o respectivo texto
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 podemos repetir a chamada às funções as vezes que quisermos
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");
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 para
aparecer em itálico, e o azul em sublinhado, basta apenas mudarmos as
nossas funções. Assim, as funções modificadas ficariam assim:
<?
//função que escreve a vermelho e a bold
function escreve_vermelho ($str)
{
echo "<font color=#FF0000><b>$str</b></font><br>";
}
//função que escreve a verde
function escreve_verde ($str)
{
echo "<font color=#00FF00><i>$str</i></font><br>";
}
//função que escreve a azul
function 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
resultado da 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)
{
$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 !
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 influencia em 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ódigo
escrito.
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 ser processada por alguma coisa. O PHP leva uma
grande vantagem neste aspecto, em 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
utilizador preenche 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 é ...... (nome introduzido)
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 valor
introduzido, 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>
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, vejamos o exemplo:
<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>
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 mais
personalizada, 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 serve 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 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;
?>
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.
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 – Lê 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 contador
if (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);
//incrementamos uma visita ao total de visitas
$visitas++;
//fechamos o ponteiro de leitura do ficheiro
fclose($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 visitas
fputs($ficheiro,$visitas);
//e fechamos o ficheiro
fclose($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 número, e escrevemos no ficheiro. Se o ficheiro não
existe, é porque é a primeira visita, e escrevemos o numero 1 no ficheiro. No
fim mostramos o número de visitas que a página teve.
Exercício a)
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.
<?
$ficheiro=fopen( "produtos.txt", "a");
fputs($ficheiro,$produto. "n");
fclose($ficheiro);
echo " O produto adicionado a lista de compras: ". $produto ;
?>
Exercício b):
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.
<?
$ficheiro=fopen( "lista.txt", "a");
fputs($ficheiro,$produto. "n");
fclose($ficheiro);
?>
<?
$ficheiro=fopen( "lista.txt", "r");
$item=1;
while (!feof($ficheiro))
{
$produto=fgets($ficheiro,100);
if (!feof($ficheiro)) echo "$item - $produto<br>";
$item++;
}
fclose($ficheiro);
?>
Exercício c) (dificuldade elevada!):
Para evitar adicionar produtos que já estavam na lista de compras, devemos
poder 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.
<html>
<title>compras.php</title>
<body>
<?
//introducao do produto na lista
if (isset($produto))
{
$ficheiro=fopen( "lista.txt", "a");
fputs($ficheiro,$produto. "n");
fclose($ficheiro);
}
//existencia ou nao de lista
if (!file_exists( "lista.txt"))
{
echo " Nao existem compras a fazer!<br><br><br>";
}
else
{
echo "Lista de compras:<br><br>";
//abre ficheiro e le informacao
$ficheiro=fopen( "lista.txt", "r");
$item=1;
while (!feof($ficheiro))
{
$produto=fgets($ficheiro,100);
if (!feof($ficheiro)) echo "$item - $produto<br>";
$item++;
}
fclose($ficheiro);
}
?>
<form action=compras.php method=get>
Produto a comprar:<input type=text name=produto><br>
<input type=submit value=Adicionar>
</form>
</body>
</html>
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ícios
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>
Primeiros Scripts
Tipos
Primeiro Exemplo
Neste exemplo, criaremos um script com uma saída simples, que servirá para
testar se a instalação foi feita correctamente:
<html>
<head><title>Aprender PHP</title></head>
<body>
<?php
echo "Primeiro Script";
?>
</body>
</html>
Copia este código para um documento do notepad e grava como
"primeiro.php3" no directório de documentos do Apache (ou o Web Server
escolhido). Abra uma janela do browser e digite o endereço
"http://localhost/primeiro.php3". Verifique se o HTML da página exibida é o
seguinte:
<html>
<head><title>Aprender PHP</title></head>
<body>
Primeiro Script
</body>
</html>
Isto mostra como o PHP funciona. O script é executado no servidor, ficando
disponível para o utilizador apenas o resultado. Agora vamos escrever um
script que produza exactamente o mesmo resultado utilizando uma variável:
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
$texto = "Primeiro Script";
echo $texto;
?>
</body>
</html>
Utilizar formulários HTML
Ao clicar num botão "Submit" num formulário HTML as informações dos
campos serão enviadas ao servidor especificado para que possa ser
produzida uma resposta. O PHP trata esses valores como variáveis, cujo
nome é o nome do campo definido no formulário. O exemplo a seguir mostra
isso, e mostra também como o código PHP pode ser inserido em qualquer
parte do código HTML:
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
if ($texto != "")
echo "Você digitou "$texto"<br><br>";
?>
<form method=post action="<? echo $PATH_INFO; ?>">
<input type="text" name="texto" value="" size=10>
<br>
<input type="submit" name="sub" value="Enviar!">
</form>
</body>
</html>
Ao gravar o ficheiro acima e carregá-lo no browser, o utilizador verá apenas
um formulário que contém um espaço para digitar o texto. Ao digitar um texto
qualquer e submeter o formulário, a resposta, será no mesmo ficheiro PHP
(indicado pela constante $PATH_INFO, que retorna o nome do ficheiro).
Isto acontece porque o código PHP testa o conteúdo da variável $texto.
Inicialmente o valor da variável é uma string vazia, e por isso nada é
impresso quando a página é carregada a primeira vez. Quando algum texto é
digitado no formulário e submetido, o PHP verifica novamente a variável,
como no formulário o campo possui o nome "texto", a variável com seu
conteúdo será $texto, assim o valor da variável será diferente de uma string
vazia, e o PHP imprime um texto antes do formulário.
Interagir com o browser
O PHP permite interagir com informações do browser automaticamente. Por
exemplo, o script a seguir mostra informações sobre o browser do utilizador.
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<? echo $HTTP_USER_AGENT; ?>
</body>
</html>
O resultado mostra características de cada browser, como a versão, e no
caso do Communicator até mostra o idioma ("en"). Com isto, podes criar uma
página com recursos disponíveis so para Internet Explorer, por exemplo,
podes esconder o código dos outros browsers, com um código semelhante
ao seguinte:
<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?
if (strpos($HTTP_USER_AGENT,"MSIE 5") != 0) {
echo "Você usa Internet Explorer";
} else {
echo "Você não usa Internet Explorer";
}
?>
</body>
</html>
Neste exemplo, será apenas exibido um texto informando se está sendo
utilizado o Microsoft Internet Explorer ou não, mas para outras funções
poderia ser utilizado algo semelhante.
É bom notar o surgimento de mais uma função no código anterior:
strpos(string1,string2). Essa função retorna a posição da primeira aparição de
string2 em string1, contando a partir de zero, e não retorna valor algum se
não ocorrer. Assim, para testar se a string $HTTP_USER_AGENT contém a
string "MSIE", basta testar se strpos devolve algum valor.
Aceder a Base de Dados
Neste documento todos os exemplos referentes a acesso de base de dados
utilizarão o gerenciador de base de dados MySQL, que pode ser copiado
gratuitamente no site http://www.mysql.org.
Para interagir com uma base de dados SQL existem três comandos básicos
que devem ser utilizados: um que faz a ligação com o servidor de base de
dados, um que seleciona a base de dados a ser utilizada e um terceiro que
executa uma "query" SQL.
Ligação com o servidor
A ligação com o servidor de base de dados mySQL em PHP é feita através
do comando mysql_connect, que tem a seguinte sintaxe:
int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string /*senha*/ );
Os parâmetros são bastante simples: o endereço do servidor(host), o nome
do utilizador (login) e a senha de ligação. A função retorna um valor inteiro,
que é o identificador da ligação estabelecida e deverá ser armazenado numa
variável para ser utilizado depois. No nosso exemplo, temos como servidor
de base de dados a mesma máquina que corre o servidor http, como login o
utilizador "root" e senha "phppwd":
$ligacao = mysql_connect("localhost", "root", "phppwd");
Assim, se a ligação for bem sucedida (existir um servidor no endereço
especificado que possua o utilizador com a senha fornecida), o identificador
da ligação fica armazenado na variável $ligação.
Seleção do base de dados
Uma vez ligado, é preciso selecionar o base de dados existente no servidor
com o qual desejamos trabalhar. Isso é feito através da função int
mysql_select_db, que possui a seguinte sintaxe:
int mysql_select_db(string /*nome_base*/, int /*ligacao*/ );
O valor de retorno é 0 se o comando falhar, e 1 no caso de sucesso. O nome
da base de dados a selecionar é o primeiro parâmetro fornecido, seguido
pelo identificador da ligação. Se este for omitido, o interpretador PHP tentará
utilizar a última ligação estabelecida, é recomendável inserir sempre este
valor, para facilitar a legibilidade do código. No nosso exemplo, a base de
dados a ser selecionada possui o nome "ged":
mysql_select_db("ged", $ligacao);
Após a execução deste comando qualquer consulta executada para aquela
ligação utilizará a base de dados selecionada.
Execução de queries SQL
Após estabelecida a ligação e selecionada a base de dados a ser utilizada,
quase toda a interacção com o servidor mySQL pode ser feita através de
consultas escritas em SQL (Structured Query Language), com o comando
mysql_query, que utiliza a seguinte sintaxe:
int mysql_query(string consulta, int [ligacao] );
O valor de retorno é 0 se falhar ou 1 em caso de sucesso. Sucesso aqui
significa que a consulta está sintaticamente correcta e foi executada no
servidor. Nenhuma informação sobre o resultado é devolvido deste comando,
ou até mesmo se o resultado é o esperado. No caso da consulta ser um
comando SELECT, o valor de retorno é um valor interno que identifica o
resultado, que poderá ser tratado com a função mysql_result() e outras. A
string query não deve conter ponto-e-vírgula no final do comando, e o
identificador da ligação é opcional. Vamos criar uma tabela como exemplo:
$cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT
PRIMARY KEY, nome CHAR(40), email CHAR(50))";
mysql_query($cria, $ligacao);
Agora vejamos como ficou o código completo para executar uma query SQL
numa base de dados mySQL, com um exemplo que cria uma tabela chamada
exemplo e adiciona alguns dados:
$ligacao = mysql_connect("localhost", "root", "phppwd");
mysql_select_db("ged", $ligacao);
$cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT
PRIMARY KEY, nome CHAR(40), email CHAR(50))";
$insere1 = "INSERT INTO exemplo (nome,email) VALUES ("Mauricio
Vivas","vivas@usa.net");
$insere2 = "INSERT INTO exemplo (nome,email) VALUES ("Jose da
Silva","jose@teste.com");
$insere3 = "INSERT INTO exemplo (nome,email) VALUES ("Fernando
Henrique Cardoso","fhc@planalto.gov.br");
$insere4 = "INSERT INTO exemplo (nome,email) VALUES ("Bill
Clinton","president@whitehouse.gov");
mysql_query($cria, $ligacao);
mysql_query($insere1, $ligacao);
mysql_query($insere2, $ligacao);
mysql_query($insere3, $ligacao);
mysql_query($insere4, $ligacao);
Tratamento de resultados de query SELECT
Ao executar uma query SQL SELECT através do comando mysql_query, o
identificador do resultado deve ser armazenado numa variável que pode ser
tratada de diversas formas. Duas maneiras interessantes de o fazer usam o
comando mysql_result e o comando mysql_fetch_row, respectivamente.
O comando mysql_result tem a seguinte sintaxe:
int mysql_result(int resultado, int linha, mixed [campo]);
Onde resultado é o identificador do resultado, obtido com o retorno da função
mysql_query, linha especifica o registo a ser exibido, já que uma query
SELECT pode retornar diversos registos, e campo é o identificador do campo
a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de
diversos tipos (neste caso, inteiro ou string). Vejamos um exemplo utilizando
a tabela criada anteriormente:
$consulta = "SELECT nome, email FROM exemplo WHERE email LIKE
'vivas'";
$resultado = mysql_query($consulta, $ligacao);
printf("Nome: ", mysql_result($resultado,0,"nome"), "<br>n");
printf("e-mail: ", mysql_result($resultado,0,"email"),"<br>");
Com o exemplo acima, o resultado será:
Nome: Mauricio Vivas<br>
e-mail: vivas@usa.net<br>
É importante notar que a utilização desta função é um pouco trabalhosa, já
que no caso de um resultado com várias linhas é preciso controlar o número
de linhas para tratá-las (pode-se utilizar a função mysql_num_rows(int
resultado), que retorna o número de linhas de um resultado), e no caso de
uma alteração no nome do campo é preciso alterar também a maneira de
tratá-lo. Por isso é mais aconselhável que se use uma outra função, como por
exemplo mysql_fetch_row, que possui a seguinte sintaxe:
array mysql_fetch_row(int result);
A variável resultado é o identificador da memória de resultados, obtido como
retorno da função mysql_query. O resultado produzido por esta função é de
retirar a primeira linha da memória de resultados, se houver, e colocá-la num
array. Assim torna-se mais fácil tratar um resultado com várias linhas, e sem
utilizar os nomes dos campos na rotina de tratamento do resultado:
$consulta = "SELECT nome, email FROM exemplo";
$resultado = mysql_query($consulta, $ligacao);
echo "<table border=1>n";
echo "<tr><td>Nome</td><td>e-mail</tr>n";
while ($linha = mysql_fetch_row($resultado)) {
printf("<tr><td>$linha[0]</td>");
printf("<td>$linha[1]</td></tr>");
}
echo "</table>n";
O código acima irá imprimir todos os registos da tabela exemplo numa tabela
html. Se o programador desejar "saltar" alguma(s) linha(s) do resultado,
poderá utilizar a função mysql_data_seek, que tem por objectivo definir qual
será a próxima linha da memória de resultados a ser impressa. A sua sintaxe
é:
int mysql_data_seek(int resultado, int linha);
Sendo resultado o identificador do resultado e linha o numero da linha.
Retorna 0 em caso de falha, e um valor diferente de zero em caso de
sucesso.
Existem diversas outras funções para o tratamento de resultados, que
armazenam as linhas em arrays e objectos, assim como outras funções para
administrar o base de dados, mas como este documento trata-se de uma
introdução, inicialmente não tratará tópicos mais avançados.
Sistema de votação online em PHP e MySQL
Este tutorial vai ensinar a fazer uma votação em PHP. Este votação será só
de apenas uma escolha.
1. Criando o arquivo para votar:
Cria um ficheiro html e escreve a tua pergunta e respostas como
no exemplo seguinte:
<HTML>
<HEAD>
<TITLE>votação</TITLE>
</HEAD>
<BODY>
<FONT SIZE="3">Qual a sua base de dados preferida?</FONT><BR>
<FORM NAME="votação" ACTION="votacao.php" METHOD="get">
<INPUT TYPE="radio" NAME="escolha" VALUE="1">MySQL<BR>
<INPUT TYPE="radio" NAME="escolha" VALUE="2">msSQL<BR>
<INPUT TYPE="radio" NAME="escolha" VALUE="3">PostgreSQL<BR>
<INPUT TYPE="radio" NAME="escolha" VALUE="4">ODBC<BR>
</FORM>
</BODY>
</HTML>
2. Criando a tabela no MySQL:
Na shell do MySQL digite após selecionar uma Base de Dados escreva o
seguinte código:
CREATE TABLE votacao (id INT(2) NOT NULL auto_increment primary key,
descricao CHAR(50), votos CHAR(4));
Muito bem, a tabela foi criada e está pronta a usar. Para continuar, da mesma
forma que criá-mos a tabela vamos agora inserir os seguintes códigos para
adicionar as opções na tabela:
INSERT INTO votacao (descricao,votos) VALUES ("MySQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("msSQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("PostgreSQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("ODBC","0");
Repara que só são adicionadas a descrição e os votos, mas não o ID,
justamente
porque quando a tabela foi criada foi designada a função de
AUTO_INCREMENT, o que fará com que ela automaticamente incremente o
valor.
3. Criar o PHP que fará todo o trabalho:
Cria um ficheiro chamado votação.php e dentro dele coloque o seguinte
código que será explicado detalhadamente:
<?
if ($escolha != "") { // Verifica se foi inserido um voto e prossegue em frente
no caso de verdade
// Variáveis a serem alteradas
$mysql_host = ""; // local do servidor MySQL
$mysql_user = "": // utilizador do MySQL
$mysql_pass = ""; // senha do utilizador do MySQL
$mysql_dtbs = ""; // base de dados onde a tabela foi criada
$num_resp = ""; // número de opções na tua votação
$pergunta = ""; // pergunta da votação
// Nada mais a ser alterado
$mysql_conx = mysql_connect($mysql_host,$mysql_user,$mysql_pass);
// ligação ao MySQL
$radio = $num_resp + 1;
// para uso posterior
mysql_select_db($mysql_dtbs);
// seleciona a base de dados
// aqui começa todo o trabalho do PHP para actualizar a base de dados
$query_upd = "SELECT * FROM votacao WHERE id=$escolha";
$resul_upd = mysql_query($query_upd);
// aqui o PHP selecciona apenas os registos que coincidem com a escolha,
neste
// caso so uma opção
$obj_upd = mysql_fetch_object($resul_upd);
// o comando mysql_fetch_object() separa os resultados de uma query por
colunas
// neste caso, $obj_upd -> descrição da opção que o utilizador votou
$vot_upd = $obj_upd->votos;
$vot_upd++;
// separa só os votos e adicinona mais um voto
$upd_upd = "UPDATE votacao SET votos=$vot_upd WHERE id=$escolha";
mysql_query($upd_upd);
// atualizou a base de dados
// Agora o PHP fará a pesquisa na base de dados e retornará as opções,
seus
// respectivos votos, total de votos e a sua escolha.
echo "<H3>" . $pergunta . "</H3>";
for($i=1;$i<$radio;$i++) {
$query[$i] = "SELECT * FROM votação WHERE id=$i";
$resul[$i] = mysql_query($query[$i]);
$objet[$i] = mysql_fetch_object($resul[$i]);
echo "<FONT FACE="Verdana" SIZE="1"><B>" . $objet[$i]->opcao . "</B>
" . $objet[$i]->descricao . "<B> " . $objet[$i]->votos . "</B><BR>";
$tot_vt += $objet[$i]->votos;
// tudo isto serve para requisitar o resultado de cada opção e exibir no écran
}
echo "<FONT SIZE="1"><B>Total de votos:</B>" . $tot_vt .
"&nbsp;&nbsp;&nbsp;<B>Sua Escolha</B>:" . $escolha .
"</FONT></FONT>";
}
?>
E aqui termina o tutorial de como fazer uma votação, claro, que podes e
deves modificar o layout da votação, adaptar para que seja permitido apenas
um voto por dia (usando cookies), etc, etc, etc....
Usar MySQL com PHP
A Base de Dados mais comum para a linguagem php é o mysql, podes fazer
o download no site mysql.com. No entanto podes utilizar outras bases de
dados como, oracle, Sybase, mSQL, PostgreSQL ou qualquer um com
ligação ODBC. Neste tutorial vamos utilizar como padrão o mysql.
Para o php interagir com uma base de dados SQL, independente da base de
dados, existem três comandos básicos que devem ser utilizados: um que faz
a ligação com o servidor da base de dados, um que seleciona a base de
dados a ser utilizada e um que executa uma "query" SQL.
Ligação com o servidor
A ligação com o servidor da base de dados mySQL em PHP é feita através
do comando mysql_connect, que tem a seguinte sintaxe:
int mysql_connect(string /* endereço do servidor */ , string /* nome do
utlizador */ , string /*password*/ );
Os parâmetros são bastante simples: o endereço do servidor, o nome do
utlizador e a password para a ligação. A função retorna um valor inteiro, que
é o identificador da ligação estabelecida e deverá ser armazenado numa
variável para ser utilizado depois. No nosso exemplo, temos como servidor
da base de dados a mesma máquina que corre o servidor http, como login do
utlizador "root" e password "teste":
$ligacao = mysql_connect("localhost", "root", "teste");
Assim, se a ligação for bem sucedida (existir um servidor no endereço
especificado que possua o utlizador com a password fornecida), o
identificador da ligação fica armazenado na variável $ligacao.
Os comandos para outras base de dados são diferentes, mas usam padrões
parecidos.
Seleção do base de dados
Uma vez ligadoo, é preciso selecionar abase de dados existente no servidor
com o qual desejamos trabalhar. Isso é feito através da função int
mysql_select_db, que tem a seguinte sintaxe:
int mysql_select_db(string /*nome da dase de dados*/, int /*ligacao*/ );
O valor de retorno é 0 se o comando falhar, e 1 no caso de sucesso. O nome
da base de dados a selecionar é o primeiro parâmetro fornecido, seguido
pelo identificador da ligação. Se este for omitido, o interpretador PHP tentará
utilizar a última ligação estabelecida. Recomenda-se sempre escrever esse
valor, para facilitar a legibilidade do código. No nosso exemplo, a base de
dados a ser selecionada possui o nome "ged":
$ok = mysql_select_db("ged", $ligacao);
Após a execução deste comando qualquer consulta executada para aquela
ligação utilizará a base de dados selecionada.
A variável $ok se for 0 deve lançar a informação não foi possível estabelecer
uma ligação.
Execução de queries SQL
Após estabelecida a ligação e selecionada a base de dados a ser utilizada,
quase toda a interação com o servidor mySQL pode ser feita através de
consultas escritas em ANSI SQL ( Padrão Structured Query Language), com
o comando mysql_query, que utiliza a seguinte sintaxe:
int mysql_query(string consulta, int [ligacao] );
O valor de retorno é 0 se falhar ou 1 no caso de sucesso. Sucesso aqui
significa que a consulta está sintaticamente correcta e foi executada no
servidor. Nenhuma informação sobre o resultado é retornado deste comando.
No caso da consulta ser um comando SELECT, o valor de retorno é um valor
interno que identifica o resultado, que poderá ser tratado com a função
mysql_result() ou outras. A string query não deve conter ponto-e-vírgula no
final do comando, e o identificador da ligação é opcional. Vamos criar uma
tabela como exemplo:
$cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT
PRIMARY KEY, nome VARCHAR(40), email VARCHAR(50))";
mysql_query($cria, $ligacao);
Ou
$insere = "INSERT INTO exemplo (nome,email) VALUES
("Fulano","teste@email.com.br");
mysql_query($insere, $insere);
Se o comando retornar uma consulta, seria necessário guardar essa consulta
numa variavel como vector. Ou mesmo que não retorne uma consulta, mas
se for necessário saber se realmente o comando foi executado, podes usar
uma variável para testar.
$consulta = "SELECT nome, email FROM exemplo WHERE nome = 'Teste'";
$resultado = mysql_query($consulta, $ligacao);
printf("Nome: ", mysql_result($resultado,0,"nome"), "<br>n");
printf("e-mail: ", mysql_result($resultado,0,"email"),"<br>");
Trabalhar com ficheiros - Leitura
Introdução
De vez em quando é necessário ler, alterar ou criar ficheiros no servidor de
Internet, como por exemplo, para criar contadores de acesso, estatísticas de
visitas ou guardar algumas informações para visualizações posteriores que
são demoradas para serem criadas pelo servidor, e que não seria muito bom
gerá-las sempre que um visitante as quisesse ver.
O PHP fornece um conjunto de funções muito boas para isto, e com alguns
cuidados, os scripts funcionarão tanto em Windows como em Linux sem
nenhuma alteração. Todas essas funções podem ser encontradas no manual
do php, em "Filesystem functions".
Abrir ficheiros
A primeira função que se deve conhecer para trabalhar com ficheiros é a que
cria uma ligação entre o script e o ficheiro propriamente dito:
int fopen( string ficheiro, string modo [, int usa_include_path] );
Esta função devolve um ponteiro para um ficheiro, que é utilizado noutras
funções para lidar com ficheiros. O primeiro parâmetro, ficheiro, é uma string
que indica o local do ficheiro a ser aberto, aqui vai a primeira dica: não utilize
o modo de referência do windows, como c:wwwficheiro.txt, pois não irá
funcionar num servidor linux! Evite também ler e gravar ficheiros fora do
directório onde o teu site está hospedado, às vezes torna-se difícil criar um
directório fora do directório do site, e, se um dia quiseres transferir o teu site
para uma outra máquina, pode acontecer que te esqueças daquele directório
isolado. Vamos supor que o site tem um subdirectório "tmp" e que tem dentro
um ficheiro novidades.txt. Para abrir o ficheiro usamos:
<?php
$fd = fopen( "tmp/novidades.txt", "r" );
...
?>
Note que mesmo que este script seja executado em windows ele irá
funcionar. Excelente! Nada melhor que programar com uma linguagem que
funciona em vários sistemas operativos sem alterações!
O segundo parâmetro informa o PHP que o ficheiro deve ser aberto so para
leitura, os modos possíveis podem ser:
r - so leitura, coloca o ponteiro no início do ficheiro
r+ - leitura e gravação, coloca o ponteiro no início do ficheiro
w - so gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro
no início do ficheiro. Se o ficheiro não existir, tenta criá-lo.
w+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o
ponteiro no início do ficheiro. Se o ficheiro não existir, tenta criá-lo
a - so gravação, coloca o ponteiro no final do ficheiro. Se o ficheiro não
existir, tenta criá-lo.
a+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o
ponteiro no final do ficheiro. Se o ficheiro não existir, tenta criá-lo
Existe ainda a opção "b" que pode ser utilizada com os modos (sozinha não
funciona!), esta opção indica que o ficheiro deve ser tratado como binário em
vez de texto, ou seja, se o programa for lidar com imagens em vez de um
ficheiro de texto comum. É de vital importância no windows para ler imagens,
ou caso contrário o programa não irá funcionar. Como o Linux e Unix não
fazem diferença entre um ficheiro de texto e um binário, essa opção não terá
nenhum efeito, portanto, se o seu programa for trabalhar com imagens, não
custa nada adicionar esta opção. (programas multiplataforma são
excelentes!)
AVISO: Como no windows (95/98/CE/ME) não existe permissão de acesso a
ficheiros os programas funcionarão como desejado, podemos criar ficheiros,
acede-los, excluí-los e muito mais. No Linux começam a surgir alguns
problemas, normalmente os ficheiros e directórios de um servidor de Internet
são de um utilizador e o servidor http (apache, por exemplo) corre como um
outro utilizador, o php corre com o mesmo utilizador do servidor http, portanto
se este utilizador não tiver permissão para gravar num directório, não será
possível criar os ficheiros pelo php, nem alterá-los.
O terceiro parâmetro é opcional, e se seu valor for 1, o php irá procurar nos
directórios informados na configuração "include_path" do php.ini.
Se a função fopen falhar ao abrir ou ao criar o ficheiro, ela retorna false. Note
que se for utilizado o parâmetro "r"(somente leitura) ou "r+" e o ficheiro não
existir, a função fopen não irá tentar criá-lo, simplesmente retornará um erro,
e mostrará um aviso no browser do utilizador.
Caso não seja muito bom mostrar esse tipo de erro para o utilizador (toda a
gente que vir essa mensagem vai querer ler esse ficheiro directamente no
browser), utilize o @ antes da função e confira o resultado:
<?php
$fd = @fopen( "tmp/novidades.txt", "r" ) or die( "ops, avise o webmaster, que
está a faltar um ficheiro no servidor");
...
?>
Mesmo que tenhas a certeza que este ficheiro está por lá, usa este método,
pois nem sempre as coisas são como esperamos.
Fechar ficheiros
Depois de aberto ou criado o ficheiro, é sempre bom deixar a mesa arrumada
após o serviço, portanto devemos fechar o ficheiro. É muito fácil:
int fclose( int fp );
O parâmetro fp é o ponteiro de ficheiro que foi retornado pela função fopen(),
no nosso caso $fd. Esta função retorna true se o ficheiro foi fechado e false
se não foi possível fechar o ficheiro. O ficheiro precisa ser fechado no mesmo
script que o abriu.
O que fazer com os ficheiros
Nem só de abrir e fechar ficheiros vive um script php, é necessário fazer
alguma coisa com eles. A "coisa" mais fácil é mostrar o conteúdo do ficheiro
no browser do utilizador, para isso utilizamos a função "int fpassthru( int fp )".
Então, para mostrar o ficheiro novidades.txt, que contém as últimas notícias
da semana directamente para o browser do utilizador, o script fica assim:
<?php
$fd = @fopen( "tmp/novidades.txt", "r" ) or die( "ops, avise o webmaster, tem
ficheiro faltando no servidor");
fpassthru( $fd );
?>
A função fpassthru lê a partir da posição actual do ponteiro até ao final do
ficheiro e fecha o ficheiro, portanto, neste caso não é necessário utilizar a
função fclose() (podes tentar, mas vai provocar um erro). Se estás a correr
este script, notarás que o ficheiro novidades.txt saiu com as linhas juntas,
para resolver isto coloca um <br> no final de cada linha do ficheiro ou deixa o
script entre as tags <pre>. Se tentares colocar alguns scripts php dentro do
ficheiro novidades.txt notarás que eles serão mostrados no browser do
utilizador e não serão processados pelo php. Se quiseres adicionar um script
php á página, utilza include ou require. Se só for necessário mostrar o ficheiro
novidades directamente no browser sem precisar de posicionar o ponteiro,
utiliza a função readfile, que abre o ficheiro, mostra e fecha o mesmo:
<?php
if( !@readfile( "tmp/novidades.txt") ) die ("ops, chame o webmaster!");
?>
Claro, existem muitas funções para ler o ficheiro: (todas elas dependem do
ponteiro do ficheiro, e não do facto de fechar o ficheiro)
- string fread( int fp, int tamanho )
Lê o ficheiro apartir da posição actual do ponteiro no ficheiro até ao tamanho
em bytes ou até o final do ficheiro, o que acontecer primeiro, e devolve como
uma string.
<?php
// este script faz a mesma coisa que o anterior
if( $fd = @fopen( "tmp/novidades.txt", "r" ) ) {
while( !feof( $fd ) ) {
$novidades = fread( $fd, 1024 );
print $novidades;
}
fclose($fd);
}
?>
Enquanto não chegar ao final do ficheiro ( feof() ), lê até 1024 bytes do
ficheiro para a variável $novidades e imprime seu conteúdo.
- string fgetc( int fp )
Lê so um caractére do ficheiro. Não utilize esta função para ler mais do que
um caractere de um mesmo ficheiro, não é eficiente, é mais eficiente ler o
ficheiro em blocos para a memória e fazer o processamento na memória, pois
o acesso ao disco é extremamente lento se comparado com o acesso à
memória, e aceder ao disco para ler um só caractere para processar é um
enorme disperdício de recursos do servidor. Tenta trocar a função fread pela
fgetc no script acima e usa um ficheiro novidades.txt com alguns kbytes para
perceberes a ideia. Imagina 10.000 hits/hora com um script desses!
- string fgets( int fp, int tamanho )
Se precisas de ler o ficheiro linha á linha, utiliza esta função. Ela lê até que 1
byte seja lido, que encontre o final de uma linha (que é incluída no resultado),
ou final do ficheiro e devolve como uma string. Para ler até 10 bytes de um
ficheiro, utilize:
$texto = fgets( $fd, 11 );
- string fgetss( int fp, int tamanho [, string tagspermitidas] )
Idêntica à função fgets, só que os tags html e php serão ignoradas. Se for
necessário deixar alguns tags passarem pela função, utiliza o parâmetro
opcional tagspermitidas, por exemplo, para ler um ficheiro novamente, mas
deixar so as tags <br>, <b></b> e <p></p> serem exibidas, use:
$texto = fgetss( $fd, 1024, "<br><b><p>" );
Mesmo podendo selecionar quais tags que podem passar pela função, se
este ficheiro vier de fora, ou seja, é um ficheiro que uma pessoa manda pela
internet para mostra no site, alguém pode mandar algum código javascript
malicioso dentro de uma tag, e executar comandos indevidos na máquina do
visitante do seu site. Cuidado!
array file( string ficheiro [, int usa_include_path ] )
Lê o ficheiro inteiro e coloca cada linha do ficheiro numa tabela. Esta função
utiliza como parâmetro o nome do ficheiro, portanto não é necessário abrir
nem fechar o ficheiro para usar esta função. Vamos ao exemplo:
Supondo que o ficheiro novidades.txt tem uma novidade por linha, similar a
este: novidade.txt
Queremos mostrar cada linha do ficheiro novidades com um fundo diferente,
e ainda por cima as linhas que contém um * no início devem ser exibidas em
negrito
<html>
<head><title>Novidades</title></head>
<body>
<?php
$txt = @file("tmp/novidades.txt");
if(!$txt) {
print "Sem novidades por hoje, só o webmaster é que vai receber um
responso";
exit;
}
// count retorna o número de índices da tabela
$tot = count($txt);
?>
<table width="500" align="center" bgcolor="white" cellpadding="1"
cellspacing="0">
<?php
for($i=0;$i<$tot;$i++) {
// ct vai ler o primeiro caractere da linha
$ct=$txt[$i][0];
// Chop elimina espaços do final da string e finais de linha também
$linha = Chop($txt[$i]);
// Seleciona a cor de fundo para a linha
if( $cor == "#DCDCDC" ) $cor = "#DCDCFF";
else $cor = "#DCDCDC";
print "<tr><td bgcolor='$cor'>";
// strip_tags elimina todas as tags html e php, como fgetss
// se a linha começa com um *, le a partir do próximo caractere
// o ponto serve para concatenar as strings
if( $ct == "*" ) print "<b>".strip_tags(substr($linha,1))."</b>";
else print strip_tags($linha);
print "</td></tr>";
}
?>
</table>
</body>
</html>
Por hoje aprendemos várias funções de leitura de dados apartir de ficheiros,
em breve falaremos de funções de escrita.

Mais conteúdo relacionado

Mais procurados

Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootávelFrancis Torres
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introduçãoAgrupamento de Escolas da Batalha
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Pepe Rocker
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresMauro Pereira
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10LucasMansueto
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileCloves da Rocha
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadoresJakson Silva
 

Mais procurados (20)

Informática Básica - Aula 04 - Software
Informática Básica - Aula 04 - SoftwareInformática Básica - Aula 04 - Software
Informática Básica - Aula 04 - Software
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Informática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - HardwareInformática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - Hardware
 
Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootável
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Aula 5 bios
Aula 5 biosAula 5 bios
Aula 5 bios
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Arquitetura de Redes de Computadores
 Arquitetura de Redes de Computadores Arquitetura de Redes de Computadores
Arquitetura de Redes de Computadores
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de Computadores
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao Mobile
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
 

Destaque

Ac m3 ficha de trabalho 4
Ac m3 ficha de trabalho 4Ac m3 ficha de trabalho 4
Ac m3 ficha de trabalho 4edlander
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismosdiogoa21
 
Ac m3 ficha de trabalho 7
Ac m3 ficha de trabalho 7Ac m3 ficha de trabalho 7
Ac m3 ficha de trabalho 7edlander
 
Ac mod 3 ficha de revisões 1
Ac   mod 3 ficha de revisões 1Ac   mod 3 ficha de revisões 1
Ac mod 3 ficha de revisões 1edlander
 
Como instalar uma motherboard 2º aula
Como instalar uma motherboard 2º aulaComo instalar uma motherboard 2º aula
Como instalar uma motherboard 2º aulaAlexandre Pereira
 
Ficha de trabalho 4 ferramentas e acessórios de redes
Ficha de trabalho 4  ferramentas e acessórios de redesFicha de trabalho 4  ferramentas e acessórios de redes
Ficha de trabalho 4 ferramentas e acessórios de redesedlander
 
Módulo-6-7-ip-com-sockets
Módulo-6-7-ip-com-socketsMódulo-6-7-ip-com-sockets
Módulo-6-7-ip-com-socketsdiogoa21
 
Software,hardware y placa madre
Software,hardware  y placa madreSoftware,hardware  y placa madre
Software,hardware y placa madreAde Sarà
 
Componentes de um Computador
Componentes de um ComputadorComponentes de um Computador
Componentes de um Computadorinescosta11
 
Psi-mod-op2
Psi-mod-op2Psi-mod-op2
Psi-mod-op2diogoa21
 
Trabalho processadores vanessa
Trabalho processadores vanessaTrabalho processadores vanessa
Trabalho processadores vanessaVanessa Costa
 
Motherboard.jpg
Motherboard.jpgMotherboard.jpg
Motherboard.jpgedlander
 
Ficha de trabalho 6 cablagem horizontal e backbone de edificio
Ficha de trabalho 6   cablagem horizontal e backbone de edificioFicha de trabalho 6   cablagem horizontal e backbone de edificio
Ficha de trabalho 6 cablagem horizontal e backbone de edificioedlander
 
Ac m3 ficha de trabalho 6
Ac m3 ficha de trabalho 6Ac m3 ficha de trabalho 6
Ac m3 ficha de trabalho 6edlander
 
3Montagem e configuração (3)
3Montagem e configuração (3)3Montagem e configuração (3)
3Montagem e configuração (3)Andre Santos
 
Módulo 2 Parte 2 (Arquitectura De Computadores)
Módulo 2  Parte 2 (Arquitectura De Computadores)Módulo 2  Parte 2 (Arquitectura De Computadores)
Módulo 2 Parte 2 (Arquitectura De Computadores)guest486e53
 
Imei módulo2 - ficha formativa nº4
Imei   módulo2 - ficha formativa nº4Imei   módulo2 - ficha formativa nº4
Imei módulo2 - ficha formativa nº4teacherpereira
 

Destaque (20)

Ac m3 ficha de trabalho 4
Ac m3 ficha de trabalho 4Ac m3 ficha de trabalho 4
Ac m3 ficha de trabalho 4
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismos
 
Tarefa
TarefaTarefa
Tarefa
 
Ac m3 ficha de trabalho 7
Ac m3 ficha de trabalho 7Ac m3 ficha de trabalho 7
Ac m3 ficha de trabalho 7
 
Ac mod 3 ficha de revisões 1
Ac   mod 3 ficha de revisões 1Ac   mod 3 ficha de revisões 1
Ac mod 3 ficha de revisões 1
 
Como instalar uma motherboard 2º aula
Como instalar uma motherboard 2º aulaComo instalar uma motherboard 2º aula
Como instalar uma motherboard 2º aula
 
312584 placas-mae
312584 placas-mae312584 placas-mae
312584 placas-mae
 
Ficha de trabalho 4 ferramentas e acessórios de redes
Ficha de trabalho 4  ferramentas e acessórios de redesFicha de trabalho 4  ferramentas e acessórios de redes
Ficha de trabalho 4 ferramentas e acessórios de redes
 
Módulo-6-7-ip-com-sockets
Módulo-6-7-ip-com-socketsMódulo-6-7-ip-com-sockets
Módulo-6-7-ip-com-sockets
 
Software,hardware y placa madre
Software,hardware  y placa madreSoftware,hardware  y placa madre
Software,hardware y placa madre
 
Componentes de um Computador
Componentes de um ComputadorComponentes de um Computador
Componentes de um Computador
 
Psi-mod-op2
Psi-mod-op2Psi-mod-op2
Psi-mod-op2
 
Trabalho processadores vanessa
Trabalho processadores vanessaTrabalho processadores vanessa
Trabalho processadores vanessa
 
Motherboard.jpg
Motherboard.jpgMotherboard.jpg
Motherboard.jpg
 
Ficha de trabalho 6 cablagem horizontal e backbone de edificio
Ficha de trabalho 6   cablagem horizontal e backbone de edificioFicha de trabalho 6   cablagem horizontal e backbone de edificio
Ficha de trabalho 6 cablagem horizontal e backbone de edificio
 
Ac m3 ficha de trabalho 6
Ac m3 ficha de trabalho 6Ac m3 ficha de trabalho 6
Ac m3 ficha de trabalho 6
 
3Montagem e configuração (3)
3Montagem e configuração (3)3Montagem e configuração (3)
3Montagem e configuração (3)
 
Módulo 2 Parte 2 (Arquitectura De Computadores)
Módulo 2  Parte 2 (Arquitectura De Computadores)Módulo 2  Parte 2 (Arquitectura De Computadores)
Módulo 2 Parte 2 (Arquitectura De Computadores)
 
Imei módulo2 - ficha formativa nº4
Imei   módulo2 - ficha formativa nº4Imei   módulo2 - ficha formativa nº4
Imei módulo2 - ficha formativa nº4
 
Montagem de computador
Montagem de computadorMontagem de computador
Montagem de computador
 

Semelhante a Manual-de-php

Curso completo php
Curso completo phpCurso completo php
Curso completo phpbreninho94
 
Aprendendo PHP.pdf
Aprendendo PHP.pdfAprendendo PHP.pdf
Aprendendo PHP.pdfssuserad6350
 
Introdução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPIntrodução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPClayton de Almeida Souza
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptRaphael Donaire Albino
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básicoCezar Souza
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpTiago Davi
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1lfernandomcj
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticaoRenato Lucena
 
Desenvolvimento de web sites com php
Desenvolvimento de web sites com phpDesenvolvimento de web sites com php
Desenvolvimento de web sites com phpbrenod123
 
Php women oficina iniciante de php
Php women   oficina iniciante de phpPhp women   oficina iniciante de php
Php women oficina iniciante de phpTais Reis
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 

Semelhante a Manual-de-php (20)

Curso completo php
Curso completo phpCurso completo php
Curso completo php
 
Aprendendo PHP.pdf
Aprendendo PHP.pdfAprendendo PHP.pdf
Aprendendo PHP.pdf
 
Aula3
Aula3Aula3
Aula3
 
LVI-Aula05
LVI-Aula05LVI-Aula05
LVI-Aula05
 
LVI_Aula05
LVI_Aula05LVI_Aula05
LVI_Aula05
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Guia php
Guia phpGuia php
Guia php
 
Introdução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPIntrodução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHP
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
M5 php rc
M5 php rcM5 php rc
M5 php rc
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticao
 
Desenvolvimento de web sites com php
Desenvolvimento de web sites com phpDesenvolvimento de web sites com php
Desenvolvimento de web sites com php
 
Php women oficina iniciante de php
Php women   oficina iniciante de phpPhp women   oficina iniciante de php
Php women oficina iniciante de php
 
Php m18
Php m18Php m18
Php m18
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 

Mais de diogoa21

Módulo 2.1-componentes de um computador
Módulo 2.1-componentes de um computadorMódulo 2.1-componentes de um computador
Módulo 2.1-componentes de um computadordiogoa21
 
Módulo-2.2-estudo das componentes internas
Módulo-2.2-estudo das componentes internasMódulo-2.2-estudo das componentes internas
Módulo-2.2-estudo das componentes internasdiogoa21
 
Módulo-2.3-estudo de periféricos e suas características e configuração
Módulo-2.3-estudo de periféricos e suas características e configuraçãoMódulo-2.3-estudo de periféricos e suas características e configuração
Módulo-2.3-estudo de periféricos e suas características e configuraçãodiogoa21
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
Modulo-4-css
Modulo-4-cssModulo-4-css
Modulo-4-cssdiogoa21
 
Modulo4- Html-Guia
Modulo4- Html-GuiaModulo4- Html-Guia
Modulo4- Html-Guiadiogoa21
 
Psi-mod-15
Psi-mod-15Psi-mod-15
Psi-mod-15diogoa21
 
Psi-mod-13
Psi-mod-13Psi-mod-13
Psi-mod-13diogoa21
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmiadiogoa21
 
Tic-excel-03
Tic-excel-03Tic-excel-03
Tic-excel-03diogoa21
 
Tic-excel-02
Tic-excel-02Tic-excel-02
Tic-excel-02diogoa21
 
Tic-excel-01
Tic-excel-01 Tic-excel-01
Tic-excel-01 diogoa21
 

Mais de diogoa21 (19)

Módulo 2.1-componentes de um computador
Módulo 2.1-componentes de um computadorMódulo 2.1-componentes de um computador
Módulo 2.1-componentes de um computador
 
Módulo-2.2-estudo das componentes internas
Módulo-2.2-estudo das componentes internasMódulo-2.2-estudo das componentes internas
Módulo-2.2-estudo das componentes internas
 
Módulo-2.3-estudo de periféricos e suas características e configuração
Módulo-2.3-estudo de periféricos e suas características e configuraçãoMódulo-2.3-estudo de periféricos e suas características e configuração
Módulo-2.3-estudo de periféricos e suas características e configuração
 
Modulo-3
Modulo-3 Modulo-3
Modulo-3
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Modulo-4-css
Modulo-4-cssModulo-4-css
Modulo-4-css
 
Modulo4- Html-Guia
Modulo4- Html-GuiaModulo4- Html-Guia
Modulo4- Html-Guia
 
Psi-mod-15
Psi-mod-15Psi-mod-15
Psi-mod-15
 
Psi-mod-13
Psi-mod-13Psi-mod-13
Psi-mod-13
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmia
 
So-mod-4
So-mod-4So-mod-4
So-mod-4
 
So-mod-2
So-mod-2So-mod-2
So-mod-2
 
So-mod-1
So-mod-1So-mod-1
So-mod-1
 
Tic-excel-03
Tic-excel-03Tic-excel-03
Tic-excel-03
 
Tic-excel-02
Tic-excel-02Tic-excel-02
Tic-excel-02
 
Tic-excel-01
Tic-excel-01 Tic-excel-01
Tic-excel-01
 

Último

Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 

Último (20)

Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 

Manual-de-php

  • 1. Manual 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!
  • 2. Fusão PHP + Html Para começares a aprender PHP, temos 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 a pá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 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 <? (ou <?php) (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ÇÕES 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 bloco de 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 a linha que não será processada. Para um bloco de linhas, utilizamos os separadores "/*" no inicio do bloco, e "*/" para fechar o comentário.
  • 3. Exemplo: <? // Uma linha de comentario .. /* Um Simples bloco de comentario !!! */ ?> Exercicio: 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>ainda mais</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... ("3ª mais complexa" a vermelho) E logo a seguir, a 4ª ainda mais complicada! ("seguir" a verde e "ainda mais" a azul)
  • 4. Resumo: O PHP pode ser apenas um pedaço de código que fica no meio de tags HTML e é delimitado pelas tags <? (ou <?php) 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, 2 String - "PHP É Fixe!" Real/Flutuante - 15.5 Todas 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 da letra 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_premio Tal com em qualquer outra linguagem a variáveis devem ter nomes S-U-G-E- S-T-I-V-O-S !!!. Exemplos de variáveis sugestivas: $nome - Para o nome de uma pessoa $idade - Para a idade de uma pessoa $total_de_peras - Numero total de pêras Exemplos de variáveis não sugestivas: $xpto $bla $t1 $l
  • 5. 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]"; $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 entre aspas. Quando uma variável é char, o seu valor é atribuído sempre entre plicas. Vamos a 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>
  • 6. 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! Resumo: Podemos declarar variáveis do tipo caracter, inteiro, char 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 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 à parte, temos uma "lista" de elementos. Exemplo da lista de produtos com array: $produto[0]="Batatas"; $produto[1]="Laranjas"; $produto[2]="Maçãs"; $produto[3]="Pêras";
  • 7. 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 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 dia a dia. Exemplo: if "tenho dinheiro" "Vou ao Cinema"
  • 8. 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 determinado momento. 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.
  • 9. $a || $b - Or - Verdadeiro se $a ou $b forem verdadeiros. Exemplo: if (($dinheiro > 10) and !($calor)) echo "Vou para a piscina!!"; else { echo "Vou para a praia. <br>"; } Traduzindo: Se tiver mais de 10€ e se estiver calor, posso ir para a piscina. Senão, vou á praia! 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, porque quando se faz if ($a=$b) estamos a atribuir a $a o valor de $b, e não a comparar se $a é igual a $b. 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 Switch é 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!!!"; } ?>
  • 10. 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 $dia 2- 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. 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. 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.
  • 11. 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 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 a simplicidade 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 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.
  • 12. O resultado da execução do script é a seguinte: Número: 1 Número: 2 Número: 3 Número: 4 Número: 5 Número: 6 Número: 7 Número: 8 Número: 9 Número: 10 Enquanto a condição tiver o valor VERDADEIRO, o bloco de código do While é executado. FOR O 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 essas declaraçõ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; na 3 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++) { 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.
  • 13. 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é, sem qualquer 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 valor enviado 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.
  • 14. Exemplo: Imaginemos que queremos escrever linhas a vermelho, azul e a verde. Um método que poderíamos usar, era escrever: <html> <body> <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 texto apareç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 vermelho function escreve_vermelho ($str) { echo "<font color=#FF0000>$str</font><br>"; } //função que escreve a verde function escreve_verde ($str) { echo "<font color=#00FF00>$str</font><br>"; } //função que escreve a azul function escreve_azul ($str) { echo "<font color=#0000FF>$str</font><br><br>";
  • 15. } //chamada das funções com o respectivo texto 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 podemos repetir a chamada às funções as vezes que quisermos 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"); 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 para aparecer em itálico, e o azul em sublinhado, basta apenas mudarmos as nossas funções. Assim, as funções modificadas ficariam assim: <? //função que escreve a vermelho e a bold function escreve_vermelho ($str) { echo "<font color=#FF0000><b>$str</b></font><br>"; } //função que escreve a verde function escreve_verde ($str) { echo "<font color=#00FF00><i>$str</i></font><br>"; } //função que escreve a azul function 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.
  • 16. 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 resultado da 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)
  • 17. { $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 ! 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 influencia em 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ódigo escrito. 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 ser processada por alguma coisa. O PHP leva uma grande vantagem neste aspecto, em 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 utilizador preenche 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.
  • 18. 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 é ...... (nome introduzido) 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 valor introduzido, 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.
  • 19. 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> 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, vejamos o exemplo: <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>
  • 20. 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>
  • 21. 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 mais personalizada, 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 serve 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
  • 22. todos os ponteiros de ficheiro 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; ?> 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. 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.
  • 23. 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 – Lê 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 contador if (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); //incrementamos uma visita ao total de visitas $visitas++; //fechamos o ponteiro de leitura do ficheiro fclose($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 visitas fputs($ficheiro,$visitas); //e fechamos o ficheiro fclose($ficheiro); echo "Número de visualizações da página: $visitas";
  • 24. ?> 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 número, e escrevemos no ficheiro. Se o ficheiro não existe, é porque é a primeira visita, e escrevemos o numero 1 no ficheiro. No fim mostramos o número de visitas que a página teve. Exercício a) 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. <? $ficheiro=fopen( "produtos.txt", "a"); fputs($ficheiro,$produto. "n"); fclose($ficheiro); echo " O produto adicionado a lista de compras: ". $produto ; ?>
  • 25. Exercício b): 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. <? $ficheiro=fopen( "lista.txt", "a"); fputs($ficheiro,$produto. "n"); fclose($ficheiro); ?> <? $ficheiro=fopen( "lista.txt", "r"); $item=1; while (!feof($ficheiro)) { $produto=fgets($ficheiro,100); if (!feof($ficheiro)) echo "$item - $produto<br>"; $item++; } fclose($ficheiro); ?> Exercício c) (dificuldade elevada!): Para evitar adicionar produtos que já estavam na lista de compras, devemos poder 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.
  • 26. <html> <title>compras.php</title> <body> <? //introducao do produto na lista if (isset($produto)) { $ficheiro=fopen( "lista.txt", "a"); fputs($ficheiro,$produto. "n"); fclose($ficheiro); } //existencia ou nao de lista if (!file_exists( "lista.txt")) { echo " Nao existem compras a fazer!<br><br><br>"; } else { echo "Lista de compras:<br><br>"; //abre ficheiro e le informacao $ficheiro=fopen( "lista.txt", "r"); $item=1; while (!feof($ficheiro)) { $produto=fgets($ficheiro,100); if (!feof($ficheiro)) echo "$item - $produto<br>"; $item++; } fclose($ficheiro); } ?> <form action=compras.php method=get> Produto a comprar:<input type=text name=produto><br> <input type=submit value=Adicionar> </form> </body> </html> 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.
  • 27. Exercícios 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> Primeiros Scripts Tipos Primeiro Exemplo Neste exemplo, criaremos um script com uma saída simples, que servirá para testar se a instalação foi feita correctamente: <html> <head><title>Aprender PHP</title></head> <body> <?php echo "Primeiro Script"; ?> </body> </html> Copia este código para um documento do notepad e grava como "primeiro.php3" no directório de documentos do Apache (ou o Web Server escolhido). Abra uma janela do browser e digite o endereço "http://localhost/primeiro.php3". Verifique se o HTML da página exibida é o seguinte: <html> <head><title>Aprender PHP</title></head> <body>
  • 28. Primeiro Script </body> </html> Isto mostra como o PHP funciona. O script é executado no servidor, ficando disponível para o utilizador apenas o resultado. Agora vamos escrever um script que produza exactamente o mesmo resultado utilizando uma variável: <html> <head><title>Aprendendo PHP</title></head> <body> <?php $texto = "Primeiro Script"; echo $texto; ?> </body> </html> Utilizar formulários HTML Ao clicar num botão "Submit" num formulário HTML as informações dos campos serão enviadas ao servidor especificado para que possa ser produzida uma resposta. O PHP trata esses valores como variáveis, cujo nome é o nome do campo definido no formulário. O exemplo a seguir mostra isso, e mostra também como o código PHP pode ser inserido em qualquer parte do código HTML: <html> <head><title>Aprendendo PHP</title></head> <body> <?php if ($texto != "") echo "Você digitou "$texto"<br><br>"; ?> <form method=post action="<? echo $PATH_INFO; ?>"> <input type="text" name="texto" value="" size=10> <br> <input type="submit" name="sub" value="Enviar!"> </form> </body> </html>
  • 29. Ao gravar o ficheiro acima e carregá-lo no browser, o utilizador verá apenas um formulário que contém um espaço para digitar o texto. Ao digitar um texto qualquer e submeter o formulário, a resposta, será no mesmo ficheiro PHP (indicado pela constante $PATH_INFO, que retorna o nome do ficheiro). Isto acontece porque o código PHP testa o conteúdo da variável $texto. Inicialmente o valor da variável é uma string vazia, e por isso nada é impresso quando a página é carregada a primeira vez. Quando algum texto é digitado no formulário e submetido, o PHP verifica novamente a variável, como no formulário o campo possui o nome "texto", a variável com seu conteúdo será $texto, assim o valor da variável será diferente de uma string vazia, e o PHP imprime um texto antes do formulário. Interagir com o browser O PHP permite interagir com informações do browser automaticamente. Por exemplo, o script a seguir mostra informações sobre o browser do utilizador. <html> <head><title>Aprendendo PHP</title></head> <body> <? echo $HTTP_USER_AGENT; ?> </body> </html> O resultado mostra características de cada browser, como a versão, e no caso do Communicator até mostra o idioma ("en"). Com isto, podes criar uma página com recursos disponíveis so para Internet Explorer, por exemplo, podes esconder o código dos outros browsers, com um código semelhante ao seguinte: <html> <head><title>Aprendendo PHP</title></head> <body> <? if (strpos($HTTP_USER_AGENT,"MSIE 5") != 0) { echo "Você usa Internet Explorer"; } else { echo "Você não usa Internet Explorer"; } ?> </body> </html>
  • 30. Neste exemplo, será apenas exibido um texto informando se está sendo utilizado o Microsoft Internet Explorer ou não, mas para outras funções poderia ser utilizado algo semelhante. É bom notar o surgimento de mais uma função no código anterior: strpos(string1,string2). Essa função retorna a posição da primeira aparição de string2 em string1, contando a partir de zero, e não retorna valor algum se não ocorrer. Assim, para testar se a string $HTTP_USER_AGENT contém a string "MSIE", basta testar se strpos devolve algum valor. Aceder a Base de Dados Neste documento todos os exemplos referentes a acesso de base de dados utilizarão o gerenciador de base de dados MySQL, que pode ser copiado gratuitamente no site http://www.mysql.org. Para interagir com uma base de dados SQL existem três comandos básicos que devem ser utilizados: um que faz a ligação com o servidor de base de dados, um que seleciona a base de dados a ser utilizada e um terceiro que executa uma "query" SQL. Ligação com o servidor A ligação com o servidor de base de dados mySQL em PHP é feita através do comando mysql_connect, que tem a seguinte sintaxe: int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string /*senha*/ ); Os parâmetros são bastante simples: o endereço do servidor(host), o nome do utilizador (login) e a senha de ligação. A função retorna um valor inteiro, que é o identificador da ligação estabelecida e deverá ser armazenado numa variável para ser utilizado depois. No nosso exemplo, temos como servidor de base de dados a mesma máquina que corre o servidor http, como login o utilizador "root" e senha "phppwd": $ligacao = mysql_connect("localhost", "root", "phppwd"); Assim, se a ligação for bem sucedida (existir um servidor no endereço especificado que possua o utilizador com a senha fornecida), o identificador da ligação fica armazenado na variável $ligação. Seleção do base de dados Uma vez ligado, é preciso selecionar o base de dados existente no servidor com o qual desejamos trabalhar. Isso é feito através da função int mysql_select_db, que possui a seguinte sintaxe: int mysql_select_db(string /*nome_base*/, int /*ligacao*/ ); O valor de retorno é 0 se o comando falhar, e 1 no caso de sucesso. O nome da base de dados a selecionar é o primeiro parâmetro fornecido, seguido pelo identificador da ligação. Se este for omitido, o interpretador PHP tentará
  • 31. utilizar a última ligação estabelecida, é recomendável inserir sempre este valor, para facilitar a legibilidade do código. No nosso exemplo, a base de dados a ser selecionada possui o nome "ged": mysql_select_db("ged", $ligacao); Após a execução deste comando qualquer consulta executada para aquela ligação utilizará a base de dados selecionada. Execução de queries SQL Após estabelecida a ligação e selecionada a base de dados a ser utilizada, quase toda a interacção com o servidor mySQL pode ser feita através de consultas escritas em SQL (Structured Query Language), com o comando mysql_query, que utiliza a seguinte sintaxe: int mysql_query(string consulta, int [ligacao] ); O valor de retorno é 0 se falhar ou 1 em caso de sucesso. Sucesso aqui significa que a consulta está sintaticamente correcta e foi executada no servidor. Nenhuma informação sobre o resultado é devolvido deste comando, ou até mesmo se o resultado é o esperado. No caso da consulta ser um comando SELECT, o valor de retorno é um valor interno que identifica o resultado, que poderá ser tratado com a função mysql_result() e outras. A string query não deve conter ponto-e-vírgula no final do comando, e o identificador da ligação é opcional. Vamos criar uma tabela como exemplo: $cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50))"; mysql_query($cria, $ligacao); Agora vejamos como ficou o código completo para executar uma query SQL numa base de dados mySQL, com um exemplo que cria uma tabela chamada exemplo e adiciona alguns dados: $ligacao = mysql_connect("localhost", "root", "phppwd"); mysql_select_db("ged", $ligacao); $cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50))"; $insere1 = "INSERT INTO exemplo (nome,email) VALUES ("Mauricio Vivas","vivas@usa.net"); $insere2 = "INSERT INTO exemplo (nome,email) VALUES ("Jose da Silva","jose@teste.com"); $insere3 = "INSERT INTO exemplo (nome,email) VALUES ("Fernando Henrique Cardoso","fhc@planalto.gov.br");
  • 32. $insere4 = "INSERT INTO exemplo (nome,email) VALUES ("Bill Clinton","president@whitehouse.gov"); mysql_query($cria, $ligacao); mysql_query($insere1, $ligacao); mysql_query($insere2, $ligacao); mysql_query($insere3, $ligacao); mysql_query($insere4, $ligacao); Tratamento de resultados de query SELECT Ao executar uma query SQL SELECT através do comando mysql_query, o identificador do resultado deve ser armazenado numa variável que pode ser tratada de diversas formas. Duas maneiras interessantes de o fazer usam o comando mysql_result e o comando mysql_fetch_row, respectivamente. O comando mysql_result tem a seguinte sintaxe: int mysql_result(int resultado, int linha, mixed [campo]); Onde resultado é o identificador do resultado, obtido com o retorno da função mysql_query, linha especifica o registo a ser exibido, já que uma query SELECT pode retornar diversos registos, e campo é o identificador do campo a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de diversos tipos (neste caso, inteiro ou string). Vejamos um exemplo utilizando a tabela criada anteriormente: $consulta = "SELECT nome, email FROM exemplo WHERE email LIKE 'vivas'"; $resultado = mysql_query($consulta, $ligacao); printf("Nome: ", mysql_result($resultado,0,"nome"), "<br>n"); printf("e-mail: ", mysql_result($resultado,0,"email"),"<br>"); Com o exemplo acima, o resultado será: Nome: Mauricio Vivas<br> e-mail: vivas@usa.net<br> É importante notar que a utilização desta função é um pouco trabalhosa, já que no caso de um resultado com várias linhas é preciso controlar o número de linhas para tratá-las (pode-se utilizar a função mysql_num_rows(int resultado), que retorna o número de linhas de um resultado), e no caso de uma alteração no nome do campo é preciso alterar também a maneira de tratá-lo. Por isso é mais aconselhável que se use uma outra função, como por exemplo mysql_fetch_row, que possui a seguinte sintaxe: array mysql_fetch_row(int result);
  • 33. A variável resultado é o identificador da memória de resultados, obtido como retorno da função mysql_query. O resultado produzido por esta função é de retirar a primeira linha da memória de resultados, se houver, e colocá-la num array. Assim torna-se mais fácil tratar um resultado com várias linhas, e sem utilizar os nomes dos campos na rotina de tratamento do resultado: $consulta = "SELECT nome, email FROM exemplo"; $resultado = mysql_query($consulta, $ligacao); echo "<table border=1>n"; echo "<tr><td>Nome</td><td>e-mail</tr>n"; while ($linha = mysql_fetch_row($resultado)) { printf("<tr><td>$linha[0]</td>"); printf("<td>$linha[1]</td></tr>"); } echo "</table>n"; O código acima irá imprimir todos os registos da tabela exemplo numa tabela html. Se o programador desejar "saltar" alguma(s) linha(s) do resultado, poderá utilizar a função mysql_data_seek, que tem por objectivo definir qual será a próxima linha da memória de resultados a ser impressa. A sua sintaxe é: int mysql_data_seek(int resultado, int linha); Sendo resultado o identificador do resultado e linha o numero da linha. Retorna 0 em caso de falha, e um valor diferente de zero em caso de sucesso. Existem diversas outras funções para o tratamento de resultados, que armazenam as linhas em arrays e objectos, assim como outras funções para administrar o base de dados, mas como este documento trata-se de uma introdução, inicialmente não tratará tópicos mais avançados. Sistema de votação online em PHP e MySQL Este tutorial vai ensinar a fazer uma votação em PHP. Este votação será só de apenas uma escolha.
  • 34. 1. Criando o arquivo para votar: Cria um ficheiro html e escreve a tua pergunta e respostas como no exemplo seguinte: <HTML> <HEAD> <TITLE>votação</TITLE> </HEAD> <BODY> <FONT SIZE="3">Qual a sua base de dados preferida?</FONT><BR> <FORM NAME="votação" ACTION="votacao.php" METHOD="get"> <INPUT TYPE="radio" NAME="escolha" VALUE="1">MySQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="2">msSQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="3">PostgreSQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="4">ODBC<BR> </FORM> </BODY> </HTML> 2. Criando a tabela no MySQL: Na shell do MySQL digite após selecionar uma Base de Dados escreva o seguinte código: CREATE TABLE votacao (id INT(2) NOT NULL auto_increment primary key, descricao CHAR(50), votos CHAR(4)); Muito bem, a tabela foi criada e está pronta a usar. Para continuar, da mesma forma que criá-mos a tabela vamos agora inserir os seguintes códigos para adicionar as opções na tabela: INSERT INTO votacao (descricao,votos) VALUES ("MySQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("msSQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("PostgreSQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("ODBC","0"); Repara que só são adicionadas a descrição e os votos, mas não o ID, justamente porque quando a tabela foi criada foi designada a função de AUTO_INCREMENT, o que fará com que ela automaticamente incremente o valor. 3. Criar o PHP que fará todo o trabalho: Cria um ficheiro chamado votação.php e dentro dele coloque o seguinte código que será explicado detalhadamente:
  • 35. <? if ($escolha != "") { // Verifica se foi inserido um voto e prossegue em frente no caso de verdade // Variáveis a serem alteradas $mysql_host = ""; // local do servidor MySQL $mysql_user = "": // utilizador do MySQL $mysql_pass = ""; // senha do utilizador do MySQL $mysql_dtbs = ""; // base de dados onde a tabela foi criada $num_resp = ""; // número de opções na tua votação $pergunta = ""; // pergunta da votação // Nada mais a ser alterado $mysql_conx = mysql_connect($mysql_host,$mysql_user,$mysql_pass); // ligação ao MySQL $radio = $num_resp + 1; // para uso posterior mysql_select_db($mysql_dtbs); // seleciona a base de dados // aqui começa todo o trabalho do PHP para actualizar a base de dados $query_upd = "SELECT * FROM votacao WHERE id=$escolha"; $resul_upd = mysql_query($query_upd); // aqui o PHP selecciona apenas os registos que coincidem com a escolha, neste // caso so uma opção $obj_upd = mysql_fetch_object($resul_upd); // o comando mysql_fetch_object() separa os resultados de uma query por colunas // neste caso, $obj_upd -> descrição da opção que o utilizador votou $vot_upd = $obj_upd->votos; $vot_upd++; // separa só os votos e adicinona mais um voto $upd_upd = "UPDATE votacao SET votos=$vot_upd WHERE id=$escolha"; mysql_query($upd_upd); // atualizou a base de dados // Agora o PHP fará a pesquisa na base de dados e retornará as opções, seus // respectivos votos, total de votos e a sua escolha.
  • 36. echo "<H3>" . $pergunta . "</H3>"; for($i=1;$i<$radio;$i++) { $query[$i] = "SELECT * FROM votação WHERE id=$i"; $resul[$i] = mysql_query($query[$i]); $objet[$i] = mysql_fetch_object($resul[$i]); echo "<FONT FACE="Verdana" SIZE="1"><B>" . $objet[$i]->opcao . "</B> " . $objet[$i]->descricao . "<B> " . $objet[$i]->votos . "</B><BR>"; $tot_vt += $objet[$i]->votos; // tudo isto serve para requisitar o resultado de cada opção e exibir no écran } echo "<FONT SIZE="1"><B>Total de votos:</B>" . $tot_vt . "&nbsp;&nbsp;&nbsp;<B>Sua Escolha</B>:" . $escolha . "</FONT></FONT>"; } ?> E aqui termina o tutorial de como fazer uma votação, claro, que podes e deves modificar o layout da votação, adaptar para que seja permitido apenas um voto por dia (usando cookies), etc, etc, etc.... Usar MySQL com PHP A Base de Dados mais comum para a linguagem php é o mysql, podes fazer o download no site mysql.com. No entanto podes utilizar outras bases de dados como, oracle, Sybase, mSQL, PostgreSQL ou qualquer um com ligação ODBC. Neste tutorial vamos utilizar como padrão o mysql. Para o php interagir com uma base de dados SQL, independente da base de dados, existem três comandos básicos que devem ser utilizados: um que faz a ligação com o servidor da base de dados, um que seleciona a base de dados a ser utilizada e um que executa uma "query" SQL. Ligação com o servidor A ligação com o servidor da base de dados mySQL em PHP é feita através do comando mysql_connect, que tem a seguinte sintaxe: int mysql_connect(string /* endereço do servidor */ , string /* nome do utlizador */ , string /*password*/ ); Os parâmetros são bastante simples: o endereço do servidor, o nome do utlizador e a password para a ligação. A função retorna um valor inteiro, que
  • 37. é o identificador da ligação estabelecida e deverá ser armazenado numa variável para ser utilizado depois. No nosso exemplo, temos como servidor da base de dados a mesma máquina que corre o servidor http, como login do utlizador "root" e password "teste": $ligacao = mysql_connect("localhost", "root", "teste"); Assim, se a ligação for bem sucedida (existir um servidor no endereço especificado que possua o utlizador com a password fornecida), o identificador da ligação fica armazenado na variável $ligacao. Os comandos para outras base de dados são diferentes, mas usam padrões parecidos. Seleção do base de dados Uma vez ligadoo, é preciso selecionar abase de dados existente no servidor com o qual desejamos trabalhar. Isso é feito através da função int mysql_select_db, que tem a seguinte sintaxe: int mysql_select_db(string /*nome da dase de dados*/, int /*ligacao*/ ); O valor de retorno é 0 se o comando falhar, e 1 no caso de sucesso. O nome da base de dados a selecionar é o primeiro parâmetro fornecido, seguido pelo identificador da ligação. Se este for omitido, o interpretador PHP tentará utilizar a última ligação estabelecida. Recomenda-se sempre escrever esse valor, para facilitar a legibilidade do código. No nosso exemplo, a base de dados a ser selecionada possui o nome "ged": $ok = mysql_select_db("ged", $ligacao); Após a execução deste comando qualquer consulta executada para aquela ligação utilizará a base de dados selecionada. A variável $ok se for 0 deve lançar a informação não foi possível estabelecer uma ligação. Execução de queries SQL Após estabelecida a ligação e selecionada a base de dados a ser utilizada, quase toda a interação com o servidor mySQL pode ser feita através de consultas escritas em ANSI SQL ( Padrão Structured Query Language), com o comando mysql_query, que utiliza a seguinte sintaxe: int mysql_query(string consulta, int [ligacao] ); O valor de retorno é 0 se falhar ou 1 no caso de sucesso. Sucesso aqui significa que a consulta está sintaticamente correcta e foi executada no servidor. Nenhuma informação sobre o resultado é retornado deste comando. No caso da consulta ser um comando SELECT, o valor de retorno é um valor interno que identifica o resultado, que poderá ser tratado com a função
  • 38. mysql_result() ou outras. A string query não deve conter ponto-e-vírgula no final do comando, e o identificador da ligação é opcional. Vamos criar uma tabela como exemplo: $cria = "CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(40), email VARCHAR(50))"; mysql_query($cria, $ligacao); Ou $insere = "INSERT INTO exemplo (nome,email) VALUES ("Fulano","teste@email.com.br"); mysql_query($insere, $insere); Se o comando retornar uma consulta, seria necessário guardar essa consulta numa variavel como vector. Ou mesmo que não retorne uma consulta, mas se for necessário saber se realmente o comando foi executado, podes usar uma variável para testar. $consulta = "SELECT nome, email FROM exemplo WHERE nome = 'Teste'"; $resultado = mysql_query($consulta, $ligacao); printf("Nome: ", mysql_result($resultado,0,"nome"), "<br>n"); printf("e-mail: ", mysql_result($resultado,0,"email"),"<br>"); Trabalhar com ficheiros - Leitura Introdução De vez em quando é necessário ler, alterar ou criar ficheiros no servidor de Internet, como por exemplo, para criar contadores de acesso, estatísticas de visitas ou guardar algumas informações para visualizações posteriores que são demoradas para serem criadas pelo servidor, e que não seria muito bom gerá-las sempre que um visitante as quisesse ver. O PHP fornece um conjunto de funções muito boas para isto, e com alguns cuidados, os scripts funcionarão tanto em Windows como em Linux sem nenhuma alteração. Todas essas funções podem ser encontradas no manual do php, em "Filesystem functions". Abrir ficheiros A primeira função que se deve conhecer para trabalhar com ficheiros é a que cria uma ligação entre o script e o ficheiro propriamente dito:
  • 39. int fopen( string ficheiro, string modo [, int usa_include_path] ); Esta função devolve um ponteiro para um ficheiro, que é utilizado noutras funções para lidar com ficheiros. O primeiro parâmetro, ficheiro, é uma string que indica o local do ficheiro a ser aberto, aqui vai a primeira dica: não utilize o modo de referência do windows, como c:wwwficheiro.txt, pois não irá funcionar num servidor linux! Evite também ler e gravar ficheiros fora do directório onde o teu site está hospedado, às vezes torna-se difícil criar um directório fora do directório do site, e, se um dia quiseres transferir o teu site para uma outra máquina, pode acontecer que te esqueças daquele directório isolado. Vamos supor que o site tem um subdirectório "tmp" e que tem dentro um ficheiro novidades.txt. Para abrir o ficheiro usamos: <?php $fd = fopen( "tmp/novidades.txt", "r" ); ... ?> Note que mesmo que este script seja executado em windows ele irá funcionar. Excelente! Nada melhor que programar com uma linguagem que funciona em vários sistemas operativos sem alterações! O segundo parâmetro informa o PHP que o ficheiro deve ser aberto so para leitura, os modos possíveis podem ser: r - so leitura, coloca o ponteiro no início do ficheiro r+ - leitura e gravação, coloca o ponteiro no início do ficheiro w - so gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no início do ficheiro. Se o ficheiro não existir, tenta criá-lo. w+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no início do ficheiro. Se o ficheiro não existir, tenta criá-lo a - so gravação, coloca o ponteiro no final do ficheiro. Se o ficheiro não existir, tenta criá-lo. a+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no final do ficheiro. Se o ficheiro não existir, tenta criá-lo Existe ainda a opção "b" que pode ser utilizada com os modos (sozinha não funciona!), esta opção indica que o ficheiro deve ser tratado como binário em vez de texto, ou seja, se o programa for lidar com imagens em vez de um ficheiro de texto comum. É de vital importância no windows para ler imagens, ou caso contrário o programa não irá funcionar. Como o Linux e Unix não fazem diferença entre um ficheiro de texto e um binário, essa opção não terá nenhum efeito, portanto, se o seu programa for trabalhar com imagens, não custa nada adicionar esta opção. (programas multiplataforma são excelentes!) AVISO: Como no windows (95/98/CE/ME) não existe permissão de acesso a ficheiros os programas funcionarão como desejado, podemos criar ficheiros, acede-los, excluí-los e muito mais. No Linux começam a surgir alguns problemas, normalmente os ficheiros e directórios de um servidor de Internet são de um utilizador e o servidor http (apache, por exemplo) corre como um
  • 40. outro utilizador, o php corre com o mesmo utilizador do servidor http, portanto se este utilizador não tiver permissão para gravar num directório, não será possível criar os ficheiros pelo php, nem alterá-los. O terceiro parâmetro é opcional, e se seu valor for 1, o php irá procurar nos directórios informados na configuração "include_path" do php.ini. Se a função fopen falhar ao abrir ou ao criar o ficheiro, ela retorna false. Note que se for utilizado o parâmetro "r"(somente leitura) ou "r+" e o ficheiro não existir, a função fopen não irá tentar criá-lo, simplesmente retornará um erro, e mostrará um aviso no browser do utilizador. Caso não seja muito bom mostrar esse tipo de erro para o utilizador (toda a gente que vir essa mensagem vai querer ler esse ficheiro directamente no browser), utilize o @ antes da função e confira o resultado: <?php $fd = @fopen( "tmp/novidades.txt", "r" ) or die( "ops, avise o webmaster, que está a faltar um ficheiro no servidor"); ... ?> Mesmo que tenhas a certeza que este ficheiro está por lá, usa este método, pois nem sempre as coisas são como esperamos. Fechar ficheiros Depois de aberto ou criado o ficheiro, é sempre bom deixar a mesa arrumada após o serviço, portanto devemos fechar o ficheiro. É muito fácil: int fclose( int fp ); O parâmetro fp é o ponteiro de ficheiro que foi retornado pela função fopen(), no nosso caso $fd. Esta função retorna true se o ficheiro foi fechado e false se não foi possível fechar o ficheiro. O ficheiro precisa ser fechado no mesmo script que o abriu. O que fazer com os ficheiros Nem só de abrir e fechar ficheiros vive um script php, é necessário fazer alguma coisa com eles. A "coisa" mais fácil é mostrar o conteúdo do ficheiro no browser do utilizador, para isso utilizamos a função "int fpassthru( int fp )". Então, para mostrar o ficheiro novidades.txt, que contém as últimas notícias da semana directamente para o browser do utilizador, o script fica assim: <?php $fd = @fopen( "tmp/novidades.txt", "r" ) or die( "ops, avise o webmaster, tem ficheiro faltando no servidor"); fpassthru( $fd ); ?>
  • 41. A função fpassthru lê a partir da posição actual do ponteiro até ao final do ficheiro e fecha o ficheiro, portanto, neste caso não é necessário utilizar a função fclose() (podes tentar, mas vai provocar um erro). Se estás a correr este script, notarás que o ficheiro novidades.txt saiu com as linhas juntas, para resolver isto coloca um <br> no final de cada linha do ficheiro ou deixa o script entre as tags <pre>. Se tentares colocar alguns scripts php dentro do ficheiro novidades.txt notarás que eles serão mostrados no browser do utilizador e não serão processados pelo php. Se quiseres adicionar um script php á página, utilza include ou require. Se só for necessário mostrar o ficheiro novidades directamente no browser sem precisar de posicionar o ponteiro, utiliza a função readfile, que abre o ficheiro, mostra e fecha o mesmo: <?php if( !@readfile( "tmp/novidades.txt") ) die ("ops, chame o webmaster!"); ?> Claro, existem muitas funções para ler o ficheiro: (todas elas dependem do ponteiro do ficheiro, e não do facto de fechar o ficheiro) - string fread( int fp, int tamanho ) Lê o ficheiro apartir da posição actual do ponteiro no ficheiro até ao tamanho em bytes ou até o final do ficheiro, o que acontecer primeiro, e devolve como uma string. <?php // este script faz a mesma coisa que o anterior if( $fd = @fopen( "tmp/novidades.txt", "r" ) ) { while( !feof( $fd ) ) { $novidades = fread( $fd, 1024 ); print $novidades; } fclose($fd); } ?> Enquanto não chegar ao final do ficheiro ( feof() ), lê até 1024 bytes do ficheiro para a variável $novidades e imprime seu conteúdo. - string fgetc( int fp ) Lê so um caractére do ficheiro. Não utilize esta função para ler mais do que um caractere de um mesmo ficheiro, não é eficiente, é mais eficiente ler o ficheiro em blocos para a memória e fazer o processamento na memória, pois o acesso ao disco é extremamente lento se comparado com o acesso à memória, e aceder ao disco para ler um só caractere para processar é um enorme disperdício de recursos do servidor. Tenta trocar a função fread pela fgetc no script acima e usa um ficheiro novidades.txt com alguns kbytes para perceberes a ideia. Imagina 10.000 hits/hora com um script desses!
  • 42. - string fgets( int fp, int tamanho ) Se precisas de ler o ficheiro linha á linha, utiliza esta função. Ela lê até que 1 byte seja lido, que encontre o final de uma linha (que é incluída no resultado), ou final do ficheiro e devolve como uma string. Para ler até 10 bytes de um ficheiro, utilize: $texto = fgets( $fd, 11 ); - string fgetss( int fp, int tamanho [, string tagspermitidas] ) Idêntica à função fgets, só que os tags html e php serão ignoradas. Se for necessário deixar alguns tags passarem pela função, utiliza o parâmetro opcional tagspermitidas, por exemplo, para ler um ficheiro novamente, mas deixar so as tags <br>, <b></b> e <p></p> serem exibidas, use: $texto = fgetss( $fd, 1024, "<br><b><p>" ); Mesmo podendo selecionar quais tags que podem passar pela função, se este ficheiro vier de fora, ou seja, é um ficheiro que uma pessoa manda pela internet para mostra no site, alguém pode mandar algum código javascript malicioso dentro de uma tag, e executar comandos indevidos na máquina do visitante do seu site. Cuidado! array file( string ficheiro [, int usa_include_path ] ) Lê o ficheiro inteiro e coloca cada linha do ficheiro numa tabela. Esta função utiliza como parâmetro o nome do ficheiro, portanto não é necessário abrir nem fechar o ficheiro para usar esta função. Vamos ao exemplo: Supondo que o ficheiro novidades.txt tem uma novidade por linha, similar a este: novidade.txt Queremos mostrar cada linha do ficheiro novidades com um fundo diferente, e ainda por cima as linhas que contém um * no início devem ser exibidas em negrito <html> <head><title>Novidades</title></head> <body> <?php $txt = @file("tmp/novidades.txt"); if(!$txt) { print "Sem novidades por hoje, só o webmaster é que vai receber um responso"; exit; } // count retorna o número de índices da tabela $tot = count($txt); ?>
  • 43. <table width="500" align="center" bgcolor="white" cellpadding="1" cellspacing="0"> <?php for($i=0;$i<$tot;$i++) { // ct vai ler o primeiro caractere da linha $ct=$txt[$i][0]; // Chop elimina espaços do final da string e finais de linha também $linha = Chop($txt[$i]); // Seleciona a cor de fundo para a linha if( $cor == "#DCDCDC" ) $cor = "#DCDCFF"; else $cor = "#DCDCDC"; print "<tr><td bgcolor='$cor'>"; // strip_tags elimina todas as tags html e php, como fgetss // se a linha começa com um *, le a partir do próximo caractere // o ponto serve para concatenar as strings if( $ct == "*" ) print "<b>".strip_tags(substr($linha,1))."</b>"; else print strip_tags($linha); print "</td></tr>"; } ?> </table> </body> </html> Por hoje aprendemos várias funções de leitura de dados apartir de ficheiros, em breve falaremos de funções de escrita.