Ewerton Mendona
EXPEDIENTE
Professor Autor
Ewerton Mendona
Design Instrucional
Deyvid Souza Nascimento
Maria de Ftima Duarte Angeiras
Renata Marques de Otero
Terezinha Mnica Sincio Beltro
Reviso de Lngua Portuguesa
Letcia Garcia
Diagramao
Izabela Cavalcanti
Coordenao
Anderson Elias
Coordenao Executiva
George Bento Catunda
Coordenao Geral
Paulo Fernando de Vasconcelos Dutra
M539l
Mendona, Ewerton.
Linguagem e Programao para Web: Curso Tcnico em
Informtica: Educao a distncia / Ewerton Mendona.
Recife: Secretaria Executiva de Educao Profissional de
Pernambuco, 2016.
89 p.: il.
Inclui referncias bibliogrficas.
1. Educao a distncia. 2. Programao computacional.
3. Linguagem de programao. I. Mendona, Ewerton. II.
Ttulo. III. Rede e-Tec Brasil.
CDU 004.43
Sumrio
Introduo ........................................................................................................................................ 6
1.Competncia 01 | Introduo Programao para Web e Construo do Ambiente de
Desenvolvimento .............................................................................................................................. 7
1.1 Programao para Web ........................................................................................................................ 7
1.2 PHP: Histrico e Definio .................................................................................................................... 9
1.3 Servidor de Teste .................................................................................................................................10
1.4 IDE.......................................................................................................................................................17
1.5 Testando o Ambiente ..........................................................................................................................20
1.6 Projeto ................................................................................................................................................23
Introduo
Neste caderno vamos aprender uma linguagem de programao chamada PHP. Esta foi a linguagem
escolhida para a disciplina de Desenvolvimento para Web por ser a base para vrios sistemas
profissionais e muito popular entre os desenvolvedores, possuindo vrios tutorias que podem ser
encontrados na internet com uma simples busca.
Chamamos o PHP de uma linguagem porque ela uma forma de comunicao com o computador.
Ela possui regras de gramtica e ortografia muito rgidas, ou seja, o computador s entende da
maneira correta. Um errinho de grafia ou uma troca de lugar e o interpretador no vai entender o
que voc quer que ele faa. Por isso, tenha muita ateno e cuidado ao escrever os cdigos. Se algo
der errado, verifique letra a letra, palavra a palavra e linha a linha, para ver se voc no escreveu
algo errado. A maior parte dos erros no comeo do aprendizado acontece devido a problemas de
digitao.
Programao uma arte na resoluo de problemas e, muitas vezes, vamos ter que usar a
criatividade para resolver algo com os comandos que temos, porque nem tudo pode ser copiado de
algum lugar. Quando terminar os exemplos e atividades disponibilizados, procure outros exemplos
na internet e se dedique para entender como o problema resolvido. O ser humano aprende por
repetio. A cada exemplo visto e atividade realizada voc entende melhor um conceito. Repita os
exemplos e atividades at se sentir confortvel com a ideia apresentada. Assim, logo voc estar
criando suas prprias solues.
Vamos comear com um pouquinho de histria sobre o PHP e criando um ambiente de
desenvolvimento para podermos trabalhar confortavelmente e testar as aplicaes em nosso
prprio computador, sem a necessidade de hospedar em um servidor externo.
Ento? Vamos comear a nos divertir?
Competncia 01
Competncia 01
No existe uma forma melhor. Dependendo da finalidade do seu programa, voc pode precisar das
vantagens da interpretao ou da compilao. Atualmente, as novas tecnologias em linguagem de
programao utilizam as duas tcnicas, primeiro o programa compilado em uma linguagem
intermediria, depois essa linguagem interpretada para a linguagem de baixo nvel. Como
exemplo desta abordagem temos a linguagem Java.
A forma como a internet construda privilegia as linguagens interpretativas. Observe a Figura 1. No
passo 1, o usurio solicita uma pgina para um servidor web. O servidor percebe que a pgina
solicitada uma aplicao em PHP e solicita sua interpretao no passo 2. Como resultado, o
interpretador pode criar uma pgina web com o resultado da computao e envia como resposta
para o usurio no passo 3.
No importa quantas vezes o usurio faa isso, ou quantos usurios diferentes solicitem a mesma
pgina, toda vez o aplicativo (programa) vai ter que interpretar e executar.
A velocidade de traduo depende de vrios fatores, mas geralmente a interpretao mais lenta
que a compilao.
Para saber mais sobre os tipos de traduo de linguagens de programao, acesse as pginas
abaixo:
http://pt.wikipedia.org/wiki/Compilador
http://pt.wikipedia.org/wiki/Interpretador
Competncia 01
dessa forma que vamos pensar de agora em diante. O usurio solicita algo ao programa, ele faz a
computao e devolve uma pgina como resposta. O computador onde o usurio v as pginas
chamado lado do cliente e onde fica o computador servidor chamado de lado do servidor. Por
isso, chamamos de arquitetura cliente/servidor.
Ento, em 1994, um programador chamado Rasmus Lerdorf, criou uma srie de programas do tipo
CGI que faziam computao em pginas web. Esse conjunto de ferramentas foi chamado de
Personal Home Page Tools. O PHP comeou desta forma. E a ideia era muito boa.
Com o tempo, Rasmus foi melhorando suas aplicaes e em 1997 ele lanou o PHP/FI, o FI de
Forms Interpreter, que era um interpretador de comandos SQL. O que possibilitou o uso de bancos
de dados. Outros programadores entraram para o time de desenvolvimento do PHP, at que Zeev
Suraski lanou o PHP 3.
Competncia 01
Pouco tempo depois, Zeev e Andi Gutmans escreveram o PHP 4, que substituiu totalmente o PHP 3
e deu muito mais recursos e poder ao PHP, alm de implantar um novo paradigma de programao:
a orientao a objeto. Nesta competncia, utilizaremos o paradigma procedural, que mais fcil de
ser entendido. Na prxima, aprenderemos a programar em PHP em orientao a objetos, que o
paradigma dominante atualmente.
10
Competncia 01
Portable o tipo de programa que pode ser executado em uma mquina sem que precise ser
instalado. timo para ser transportado utilizando um pen drive.
11
Competncia 01
12
Competncia 01
Figura 4 Captura de tela com as caixas de dilogo do sistema operacional Windows 10, solicitando permisso
para que os servidores acessem a rede.
Fonte: prprio autor (2016).
Descrio: Execute o arquivo setup_xampp.bat. Mensagens de alerta podem aparecer. Permita o acesso. Automaticamente o script ir atualizar a localizao dos servidores.
Uma vez configurado vamos executar o arquivo xampp-control.exe. Ele um programa que
gerencia os servidores. Na primeira execuo ele pergunta a linguagem que ser utilizada, escolha a
bandeira americana e pressione Save. A Figura 5 mostra sua tela, ela nos ajuda a ligar os outros
programas. Pressione os botes Start para ligar o Apache e o MySQL. Vai aparecer a tela de
permisso do Windows, permita o acesso. S necessrio fazer isso na primeira vez.
13
Competncia 01
14
Competncia 01
Espere algum tempo para os servidores comearem e voc ver a tela da Figura 7, com os nomes
dos aplicativos destacados em verde.
Para desligar tudo voc primeiro deve clicar nos botes Stop e esperar para desligar os servidores,
depois pressionar o boto Quit apontado na Figura 7. Se no fizer isso, o painel de controle pode
desligar e deixar os servidores funcionando. Tenha ateno!
Agora que tudo est instalado, configurado e funcionando vamos testar nosso ambiente de teste.
Abra seu navegador preferido e digite o endereo http://localhost. A pgina da Figura 8 deve abrir.
A pgina est em ingls, mas o PHPMyAdmim est em portugus. Esta pgina no est na internet,
foi servida pelo seu servidor local.
Algumas coisas mudaram nos ltimos tempos. O MySQL pertence a uma empresa privada que no
cobrava pelo seu uso, mas agora resolveu cobrar. A Google criou um projeto aberto para criar um
substituto para o MySQL totalmente livre, este projeto o MariaDB. Ele igual ao MySQL e voc
no ir precisar mudar quase nada para utilizar o MariaDB ao invs do MySQL.
15
Competncia 01
16
Competncia 01
1.4 IDE
Uma IDE um ambiente integrado de desenvolvimento, ou seja, um ambiente que rene vrios
aplicativos que so necessrios e teis para o desenvolvimento. Existem diversas IDEs para
desenvolvimento em PHP, algumas pagas, outras gratuitas.
Entre elas est o Aptana Studio 3. Ele foi desenvolvido com base em outra IDE muito famosa no
mundo dos programadores chamada Eclipse. Ela gratuita, completa e portvel para vrios
sistemas operacionais. Alm disso, muitos desenvolvedores profissionais a utilizam, Figura 10.
Outra IDE bastante utilizada no mundo Linux o Notepad++. Tambm gratuita, bem mais leve que
o Aptana e possui uma coleo de plug-ins que aumentam a capacidade do programa bsico, Figura
11.
17
Competncia 01
Figura 11 Notepad++.
Fonte: prprio autor (2016).
Descrio: Tela inicial do Notepad++.
Existem diversas outras com capacidades desenvolvidas para agilizar e melhorar ao mximo o
tempo de produo, porm todas elas apresentam um problema quando se est aprendendo. A
concentrao e o processo de procura de erros fundamental no aprendizado. atravs da
repetio que aprendemos e vrias pesquisas em neurocognio mostram que atravs da repetio
aprendemos mais e melhor. Assim, o uso de uma destas ferramentas durante o aprendizado vai
prejudicar e muito a absoro do conhecimento. Ento, indicamos o uso do Bloco de Notas no
Windows (Figura 12), gEdit no Linux (Figura 13) e text-edit no Mac (Figura 14).
18
Competncia 01
19
Competncia 01
Esses programas vo servir muito bem para escrever os cdigos. No futuro, quando voc j
conhecer a linguagem, utilize algumas IDEs e escolha aquela que melhor lhe agradar para ser sua
ferramenta de trabalho. Assim, no permitido o envio de atividades que utilizem IDEs
profissionais.
20
Competncia 01
Na janela que se abre selecione a pasta do XAMPP que voc descompactou, procure a pasta htdocs.
nesta pasta que ficam os arquivos disponibilizados para a internet pelo servidor. Nela vamos criar
uma pasta com um nome simples e todo em minsculo, no utilize caracteres especiais como
cedilha, til ou palavras compostas. Vamos colocar apenas helloworld como nome da pasta. Entre
nesta pasta e salve o arquivo como index.html. Este nome de arquivo o principal em uma pgina
web. A primeira pgina.
Tenha cuidado quando escrever os nomes. Qualquer erro e no funcionar da forma esperada. Caso
isto acontea, procure algum erro ou modificao da maneira que foi solicitada para fazer.
21
Competncia 01
Para finalizar vamos editar o arquivo. Escreva echo Oi mundo!;. Por enquanto, irei explicar
apenas que esta linha escreve o que est escrito entre aspas. Selecione Arquivo > Salvar para salvar
o arquivo. Na janela que abre salve o arquivo na pasta helloworld com o nome index.php e
modifique o tipo do arquivo para Todos os arquivo (*.*)de acordo com a Figura 17.
Existe uma configurao em todo servidor web que configura a primeira pgina a ser lida de um
site como index.html ou index.htm ou default.html ou default.htm, mas tambm aceito
index.php quando o PHP est instalado no servidor.
22
Competncia 01
Para finalizar, vamos para o navegador onde digitaremos o endereo de nosso projeto:
http://localhost/helloworld/index.php. Observe que uma pgina foi criada pelo PHP e seu
contedo o texto que colocamos.
1.6 Projeto
Apenas aprender a nos comunicar com o computador para transmitir ordens no suficiente. Ns
temos que saber o que pedir. Para isso, uma aplicao web foi desenvolvida como exemplo de
utilizao da tecnologia. Nela foram utilizados um CSS personalizado. Voc no precisa saber HTML
23
Competncia 01
e CSS para aprender PHP, mas como o PHP gera pgina HTML muito importante que voc tenha
algum conhecimento em HTML e o CSS.
Para faz-lo essencial que se dedique nas prximas competncias para entender todas as palavras
chaves e estruturas da linguagem PHP. No fique com dvidas. Caso o caderno de estudos ou os
vdeos disponibilizados no sejam suficientes, procure ajuda no frum do AVA. Se mesmo assim
ainda no resolver, dedique-se mais um pouco e procure tutoriais na internet ou vdeo tutoriais no
YouTube. Tem muita gente legal disposta a ajudar sem receber nada em troca e, s vezes, uma
forma diferente de explicar pode ajudar bastante, mas tudo depende de seu esforo.
Este vdeo demonstra o nosso passo a passo de teste e contm mais algumas informaes sobre
a administrao de projetos no Aptana Studio 3. Seria muito bom que voc assistisse.
www.youtube.com/watch?v=MD69zTMobSM
24
Competncia 02
Atente que a maior parte dos erros, quando se est aprendendo programao so erros de
digitao. Quando alguma mensagem de erro aparecer, veja o nmero da linha que deu erro e
procure por algo digitado errado nela e nas anteriores.
25
Competncia 02
26
Competncia 02
Voc pode abrir e fechar vrias sesses de cdigos PHP misturados na mesma pgina HTML.
Lembre-se de sempre comear com <?php e terminar com ?> antes de comear outra sesso.
Na sesso 2.5 vimos como testar o ambiente. Teste esta pgina para ver o resultado exibido na
Figura 22. Tenha certeza de ter ligado o XAMPP adequadamente como explicado na sesso 2.3.
Faa uma pgina PHP como no exemplo, mas coloque duas ou mais sesses PHP misturadas
pgina HTML. Veja como foi que o PHP gerou a pgina HTML para o usurio, exibindo o cdigo
HTML.
Quando escrevemos sistemas, podemos chegar a um nmero grande de linhas de cdigo e esquecer
porque fizemos determinado pedao, pode acontecer tambm de outros programadores
precisarem ler nossa codificao. Para ajudar o entendimento, podemos documentar com
27
Competncia 02
2.3 Variveis
Variveis so como gavetas ou caixas na memria do computador onde guardamos algo. Para
trabalhar com dados, precisamos guardar seus valores em um lugar que seja fcil de encontrar mais
tarde. Por isso, cada gaveta da memria deve ser etiquetada. Estas gavetas chamam-se variveis.
O nome das variveis pode ser composto de mais de uma letra. Coloque nomes que relacionem
com o contedo da varivel. Outro ponto: podemos guardar no s valores nas variveis, mas
tambm outras coisas.
28
Competncia 02
Faa uma pgina PHP que some 2 * 34 ( 40 / 2 ) e escreva o resultado dentro de uma tag <h1>.
No se esquea do restante das tags HTML de uma pgina.
Uma varivel deve comear com o sinal de cifro $, seguido pelo nome da varivel;
O nome de uma varivel deve comear com uma letra ou com os caracteres de sublinhado;
O nome de uma varivel s pode conter caracteres alfanumricos e sublinhados (Az, 0-9 e _
);
PHP distingue maisculas de minsculas, dessa forma $nome, $Nome, $NOME e $nOmE so
variveis diferentes.
Quando guardamos uma sequncia de caracteres utilizamos as aspas duplas para marcar seu
comeo e seu fim, como no exemplo anterior.
29
Competncia 02
Local;
Global;
Esttico;
Parmetro.
O PHP no consegue escrever o contedo da varivel $x porque ela no existe no escopo global do
PHP, s dentro da funo, ou seja, seu escopo local.
Como as variveis locais esto separadas do resto do cdigo, voc pode ter variveis locais com o
mesmo nome em funes diferentes.
Quando o interpretador executa a ltima linha da funo, as variveis locais dela so apagadas.
30
Competncia 02
Esta aplicao escreve 012, mostrado que o valor persistiu depois que a funo foi encerrada.
31
Competncia 02
Alm dos exerccios e atividades, sempre faa os exemplos para um melhor aprendizado. S
aprendemos programao fazendo e refazendo.
Crie algumas variveis de escopo global, local, esttica e parmetro e teste utilizando o comando
echo nelas para entender melhor o escopo de cada uma.
2.4 String
Como vimos em exemplos anteriores, podemos guardar em uma varivel uma sequncia de
caracteres, por exemplo, que formem o nome Fulano de Tal. A essa sequncia de caracteres
damos o nome de string. O PHP tem diversas funes que manipulam strings. Vamos ver algumas
delas mais adiante.
Atente para a utilizao de aspas duplas para marcar o incio e o fim da sequncia de caracteres.
Podemos utilizar strings diretamente ou guardar em uma varivel. Veja o exemplo abaixo na Figura
28.
32
Competncia 02
O PHP disponibiliza vrias funes para a manipulao de strings. Fazendo uma busca na internet
voc poder encontrar vrios tutoriais e exemplos destas funes. Aqui vamos abordar algumas.
Ser escrito Oi! Fulano de Tal. Neste caso concatenamos um espao em branco no meio de duas
variveis.
Faa uma aplicao em PHP que tenha uma varivel para cada parte de seu nome, concatene
todas e coloque na tag <title> de uma pgina HTML.
33
Competncia 02
Faa uma aplicao em PHP que conte as letras de seu nome e d o resultado em uma pgina
HTML.
escrito 10.
Faa um algoritmo (programa) que guarda seu nome completo em uma varivel string, exibindoo concatenado com a quantidade de letras e a posio de incio de seu ltimo nome.
34
Competncia 02
2.5 Operadores
Os operadores servem para executar uma operao em uma expresso, como as operaes de
soma, subtrao, multiplicao e diviso. muito parecido como a matemtica, mas em linguagens
de programao temos vrios outros.
Em PHP temos os seguintes operadores:
Operadores Aritmticos;
Operadores de Atribuio;
Operadores de Incremento e Decremento;
Operadores de Comparao;
Operadores Lgicos.
NOME
DESCRIO
EXEMPLO
RESULTADO
x+y
Adio
Soma de x e y
2+2
4
x-y
Subtrao
Subtrao de x e y
7-2
5
x*y
Multiplicao
Produto de x por y
3*2
6
x/y
Diviso
Quociente de x por y
4/2
2
x%y
Mdulo
Resto da diviso de x por y
5%2
1
-x
Negativo
Inverte o sinal de x
-2
2
Tabela 01 Operadores aritmticos.
Fonte: Prprio autor.
Descrio: Tabela com a primeira coluna de operadores aritmticos, posteriormente colunas com o nome da operao,
sua descrio, um exemplo e o resultado da operao de exemplo.
x=y
COMO SE FOSSE...
x=y
DESCRIO
x += y
x=x+y
x -= y
x=xy
x *= y
x=x*y
x /= y
x=x/y
x %= y
x=x%y
x .= y
x=x.y
Tabela 02 Operadores de atribuio.
Fonte: Prprio autor (2016).
Descrio: Tabela com a primeira coluna do operador de atribuio, posteriormente com uma coluna do equivalente
em operadores aritmticos e coluna de sua descrio.
35
Competncia 02
NOME
DESCRIO
++x
pr-incremento
Soma um ao valor de x e depois retorna x
x++
ps-incremento
Retorna x e depois soma um ao valor de x
--x
pr-decremento
Subtrai um do valor de x e depois retorna x
x- ps-decremento
Retorna x e depois subtrai um do valor de x
Tabela 03 Operadores unrios.
Fonte: Prprio autor.
Descrio: Tabela com a primeira coluna do operador unrio, seguido por colunas com seu nome e descrio.
NOME
DESCRIO
EX.
RES.
x == y
Igual
Retorna verdadeiro se for igual.
2 == 3
false
x != y
No igual
Retorna verdadeiro se for diferente.
2 != 3
true
x <> y
Diferente
Retorna verdadeiro se for diferente.
2 <> 3
true
x>y
Maior que
Retorna verdadeiro se x for maior que y
3>2
true
x<y
Menor que
Retorna verdadeiro se x for menor que y
2<3
true
x >= y
Maior que ou igual
Retorna verdadeiro se x for maior que ou igual a y
3 >= 3
true
x <= y
Menor que ou igual Retorna verdadeiro se x for menor que ou igual a y
2 <= 3
true
Tabela 04 Operadores comparativos.
Fonte: Prprio autor (2016).
Descrio: Tabela com a primeira coluna do operador comparativo, seguido por colunas com o nome, a descrio, um
exemplo e o resultado do exemplo dos operadores.
NOME
DESCRIO
x and y
x or y
ou
x && y
x || y
ou
!x
no
EXEMPLO
x=1; y=9
(x < 3 and y > 5)
x=1; y=9
(x == 1 or y == 2)
x=1; y=9
(x < 3 && y > 5)
x=1; y=9
(x == 1 || y == 2)
x = 1, y = 9
!(x == y)
RESULTADO
true
true
true
true
true
36
Competncia 02
2.6 Echo
J utilizamos algumas vezes o echo para escrever os resultados da computao, mas o que est
sendo exibido texto sem as tags HTML. Podemos melhorar esta sada colocando qualquer tag
HTML na string.
No s podemos escrever tags, como tambm podemos colocar as variveis na string e o
interpretador PHP vai substituir seus nomes pelos respectivos valores. Observe o exemplo da Figura
33 e veja o resultado na Figura 34.
37
Competncia 02
E se precisarmos escrever um cifro ou aspas duplas? Podemos utilizar como alternativa para o
echo uma string limitada por aspas simples. Dessa forma, nada tratado e o que estiver na string
vai ser impresso. Vamos tentar com o mesmo exemplo. Observe na Figura 35 o cdigo e o resultado
na Figura 36.
Utilizamos apenas a tag <h1> devido ao espao deste caderno, mas uma pgina web tem diversas
outras tags. Faa um algoritmo que escreva uma pgina web simples, mas completa.
2.7 If...Else
Linguagens de programao tm duas estruturas em comum: estruturas de repetio e estruturas
de condicionais. O if...else uma estrutura condicional. Ela verifica uma condio, se for verdadeira
faz uma coisa. Caso contrrio, faz outra. Vamos ver sua sintaxe.
38
Competncia 02
if (condio) comando;
if (condio) {
// Bloco de cdigo. Aqui pode ter vrias linhas.
}
Nos casos acima o if verifica a condio, se for verdade ela executa um comando. Caso queira mais
de um comando voc deve criar um bloco de comando utilizando { e }.
Caso a condio seja falsa, o comando ou bloco ser ignorado.
O else significa seno. Utilize-o para colocar um comando ou bloco de comandos, caso a condio
seja falsa.
A Figura 37 mostra um exemplo.
O exemplo acima escreve x menor do que y, passa prxima linha e escreve y maior do que
x, o valor de y 100.
Chegou a hora de exercitar. Faa um algoritmo que tenha uma varivel com do momento em que
voc est fazendo este exerccio, por exemplo, 3hs da tarde. Utilize if...else para dar Bom dia!
se for menor que 12 e Boa tarde! se no for. Veja se consegue dar tambm Boa noite! se
passar das 18.
2.8 Switch
A estrutura if...else verifica se uma condio verdadeira ou falsa. No entanto, podemos ter
situaes onde o resultado da verificao pode ser de mais de duas possibilidades. A escolha de um
39
Competncia 02
menu um exemplo dessa situao, onde podemos ter vrias opes de escolha. Apesar de
podermos utilizar vrias estruturas de if...else para verificar o resultado da condio, sero
necessrias vrias linhas. Para encurtar e melhorar o entendimento que foi criada a estrutura
switch.
Switch uma estrutura de condio, assim como o if...else, que verifica uma condio com vrias
possibilidades de resposta. Sua sintaxe est abaixo:
switch (n) {
case x:
cdigo a ser executado se n igual a x;
break;
case y:
cdigo a ser executado se n igual a y;
break;
...
default:
cdigo a ser executado se n no for nenhuma das opes anteriores.
}
Utilize break para evitar que o cdigo do prximo case seja executado automaticamente.
A declarao default executada se no houver nenhuma correspondncia.
A Figura 38 mostra um exemplo.
40
Competncia 02
O exemplo acima retorna Rockn Roll, baby!. Voc pode mudar o valor da varivel $musica para
ver os outros resultados. Tambm pode colocar um valor que no existe nas opes para exibir a
opo default.
2.9 Array
Um array uma varivel que guarda variveis. Ela muito til para armazenar colees de um tipo,
por exemplo, uma lista de nomes, onde cada nome uma string. Se compararmos uma varivel a
uma gaveta onde colocamos coisas, um array um armrio com vrias gavetas ( Figura 39). Arrays
tambm so chamados de matrizes, como em matemtica.
Imagine que voc possui uma lista de nomes de clientes. Se voc quiser guardar cada um dos
nomes, vai precisar de uma varivel para cada nome. Mas se sua lista de clientes for enorme, a vai
ficar confuso ter tantas variveis assim. Um array pode guardar toda a lista em uma nica varivel e
podemos localizar cada uma das gavetas do array por um ndice. Este ndice como uma etiqueta
na gaveta.
41
Competncia 02
Matrizes indexadas;
Matrizes associativas.
Na segunda forma definido individualmente cada ndice. Veja na Figura 41. Voc pode definir
qualquer numerao, inclusive comear pelo 1 ao invs do 0.
42
Competncia 02
43
Competncia 02
while - repete o bloco de cdigo enquanto uma condio especificada for verdadeira;
do...while - repete o bloco de cdigo uma vez, e depois repete novamente enquanto a
condio especificada for verdadeira;
2.10.1 While
Repete o bloco de cdigo enquanto uma condio especificada for verdadeira. Veja a sintaxe
abaixo.
while (condio) {
bloco de comandos;
}
O exemplo da Figura 45 define a varivel $i inicialmente com o valor de 1 ($i = 1;). Em seguida, o
loop while continuar a ser executado enquanto i for menor ou igual a 5 ($i <= 5). A varivel i vai
aumentar em 1 a cada vez que o loop executado ($i++;).
44
Competncia 02
Eis um desafio. Uma tabela HTML pode possuir vrias linhas <TR> e vrias colunas <TD>. Utilize
uma estrutura WHILE dentro de outra para fazer uma tabela de 100 linhas por 10 colunas.
2.10.2 Do...While
Esta estrutura repete o bloco de cdigo uma vez, e depois repete novamente enquanto a condio
especificada for verdadeira. Veja a sintaxe abaixo.
do {
bloco de comandos;
} while (condio);
O exemplo da Figura 46 define a varivel $i inicialmente com o valor de 1 ($i = 1;). Ento, ele
comea o do...while. O ciclo ir somar a varivel i com 1, e em seguida, escrever alguma sada. Em
seguida, a condio verificada (i menor ou igual a 5), se for o bloco de cdigo repetido. Se no
for, a repetio interrompida e a prxima linha depois do do...while lida.
45
Competncia 02
O exerccio anterior foi difcil? Este agora deve ser mais fcil. Faa o exerccio anterior utilizando
do...while, ao invs de while.
2.10.3 For
Esta estrutura de repetio usada quando se sabe com antecedncia o nmero de repeties.
Veja a sintaxe abaixo.
for (inicial; condio; incremento/decremento) {
bloco de cdigo;
}
Na sintaxe acima, inicial define uma varivel que ser o nosso contador. Condio uma expresso
para interromper a repetio. E incremento/decremento usado para alterar o valor do contador.
O exemplo da Figura 47 define um ciclo que comea com $i = 1. A repetio continuar a funcionar
enquanto a varivel $i for menor que, ou igual a 5. A varivel $i vai aumentar em 1 a cada vez que o
loop executado.
46
Competncia 02
Modifique o exerccio anterior para utilizar for. Lembre-se de que voc vai precisar de um for
dentro de outro para conseguir.
2.10.4 Foreach
usado para percorrer arrays associativas. Veja a sintaxe abaixo.
foreach ($array as $valor) {
bloco de cdigo;
}
Para cada iterao do loop, o valor do elemento da matriz corrente atribudo a $valor (e o
ponteiro do array movido por um) - assim na prxima iterao do loop, voc estar olhando para
o prximo valor do array. Dessa forma, sempre passando adiante enquanto houver.
O exemplo da Figura 48 demonstra seu uso.
47
Competncia 02
48
Competncia 03
Voc pode encontrar toda a lista de funes PHP j construdas neste endereo:
http://php.net/manual/pt_BR/indexes.functions.php
3.1 Funes
J utilizamos funes na competncia passada. As funes de string strlen( ), que calculam o total
de caracteres da string, e strpos( ), que retornam posio de uma sequncia de caracteres, so
funes prontas do PHP. Nesta sesso vamos mostrar como criar suas prprias funes.
Funes so pequenos programas que ajudam sua aplicao em uma tarefa. Vamos supor que voc
tenha uma aplicao que calcula uma nota fiscal. Mas para dar o total da nota voc tem que fazer
outro clculo, o do frete. Este clculo do frete no faz parte do clculo da nota fiscal, porque ele
pode ter ou no. Alm disso, o usurio pode tentar outros lugares de entrega para baratear o frete.
Podemos criar uma funo que faa s este clculo.
Separar as responsabilidades muito importante. Se o clculo do frete em outro lugar, estando
separado da aplicao principal, isto simplifica para acharmos o cdigo se algum problema
acontecer. Outra vantagem de utilizarmos funes que podemos cham-la vrias vezes em nossa
pgina PHP. Assim, se precisarmos modificar o cdigo desta funo s ser necessrio fazer a
modificao em um lugar e no em vrios.
Usando funes, o cdigo fica mais simples e de fcil manuteno. Podemos at utilizar funes de
outras pessoas, sem nem mesmo saber como foi programado.
Mas como so criadas as funes e como podemos utiliz-las?
49
Competncia 03
Voc deve ter os seguintes cuidados quando for nomear uma funo:
Na Figura 49 temos um exemplo com uma funo e a chamada desta funo em dois lugares
diferente, na tag <title> e na tag <h1>. Esta funo escreve a frase Oi mundo! quando chamada.
Na mesma figura temos o resultado no navegador. Como o PHP interpretado linha aps linha, a
funo deve ser criada antes de ser chamada.
50
Competncia 03
Por exemplo, uma funo que soma dois nmeros. Para poder somar, ela vai precisar dos dois
nmeros que so os parmetros.
No exemplo da Figura 50, a funo recebe dois parmetros, $nome e $sobrenome, para poder ser
executado. Colocamos os valores na ordem, na chamada da funo. Observe que chamamos duas
vezes a funo com valores diferentes.
Pode parecer simples a utilizao de funes, mas antes de prosseguir, escreva e testes os
exemplos apresentados, para melhor fixao. A prxima competncia utilizar muito do que j
foi visto, principalmente funes.
51
Competncia 03
Agora, vamos exercitar o que vimos sobre funes. J temos a operao de soma, faa as
operaes restantes (subtrao, multiplicao e diviso). No se esquea de testar.
3.2 Formulrios
At agora no recebemos nenhuma informao do usurio nos exemplos anteriores. Utilizamos os
dados que colocamos em variveis. Para poder receber informaes do lado do cliente, ou seja, do
usurio, utilizamos hiperlinks ou formulrios.
Recebemos informao do usurio quando ele clica em um hiperlink, chamado de mtodo GET, ou
quando nos envia um formulrio, chamado de mtodo POST. Ento, vamos ver estas duas
abordagens, suas vantagens e desvantagens.
52
Competncia 03
Dessa forma, podemos passar em um link alguns dados, mas existe um limite de 2000 caracteres
neste mtodo.
Para receber o dado no aplicativo PHP pelo mtodo GET, temos uma varivel chamada $_GET. Tudo
que enviado por este mtodo se encontra nesta varivel. Seguindo o exemplo de envio acima,
podemos receber o nome da seguinte forma.
$_GET[nome]
Na Figura 52 temos uma pgina HTML que mostra um hiperlink para uma pgina PHP enviando
dados por GET. Na Figura 53 a pgina PHP recebe os dados e escreve uma pgina de resposta dando
um Oi! para o usurio.
Figura 52 Pgina HTML, enviar.html, que envia dados pelo mtodo GET.
Fonte: Prprio autor (2016).
Descrio: Cdigo HTML com um link que passa o valor Fulano na varivel nome e passa pelo mtodo
GET.
Na Figura 54 vemos o resultado do algoritmo e o endereo com o nome da varivel e o seu valor.
53
Competncia 03
54
Competncia 03
Figura 56 Exemplo de uma pgina PHP que recebe dados de um formulrio HTML pelo mtodo POST.
Fonte: Prprio autor (2016).
Descrio: Cdigo PHP de recepo dos dados do formulrio da Figura 53 atravs do mtodo POST
Observe na Figura 54 que na tag <form> temos a opo method. Esta opo seleciona se voc quer
utilizar o mtodo GET no envio dos dados do formulrio. No entanto, ser totalmente visvel o envio
e teremos a limitao de caracteres.
55
Competncia 03
Muito da comunicao entre o usurio e nossa aplicao ser realizada por variveis, por isso,
muito importante que voc refaa os exemplos dados com bastante ateno. Depois, para
exercitar, faa uma pgina HTML que envie sua cor preferida por um hiperlink utilizando o
mtodo GET. Quando terminar, construa uma pgina com um formulrio que pede para o
usurio digitar sua cor preferida enviando pelo mtodo POST, e exiba uma mensagem dizendo
qual foi a cor.
Voc pode fazer seu sistema em PHP sem utilizar includes, mas que eles ajudam muito, ajudam.
Como vamos utilizar includes em nosso sistema de locadora, vamos exercitar. Faa uma pgina
PHP que contenha um ttulo em <h1>. Faa outra pgina que inclua este cdigo utilizando
include. Caso tenha curiosidade, faa um erro proposital, colocando o nome do arquivo errado, e
veja como se comporta o interpretador PHP quando voc usa include e require. Veja o cdigo
HTML retornado para saber se ele terminou de ser escrito.
56
Competncia 03
Qual deles voc utilizar depende da importncia do que est sendo acrescentado. Se o arquivo
essencial para a aplicao, ento, utilizar o require pode impedir que sejam expostas partes
importantes do sistema. Mas caso o que ser includo no arquivo no seja to relevante, utilizar o
include garante que o restante do script ser executado normalmente.
A sintaxe para incluir os arquivos :
include nomedoarquivo.php;
require nomedoarquivo.php;
Includes so utilizados frequentemente. Uma das formas mais comuns para poupar tempo na
construo de pginas HTML. Normalmente, o cdigo HTML do cabealho e do rodap repete-se
muito nas diversas pginas do site. Ento, podemos colocar o cabealho em uma pgina PHP e o
rodap em outra, e fazer os includes desses arquivos sempre que precisarmos. Outra vantagem
desta metodologia que se precisarmos alterar algo nessas partes, s faremos uma vez. Outra
utilizao a colocao de funes genricas em um arquivo util.php. Assim, sempre que for
preciso, o inclumos no comeo do arquivo.
Na Figura 59 temos uma pgina PHP que escreve um menu. Na Figura 60 temos outra pgina que
faz o include do cdigo do menu.
57
Competncia 03
Sesses so importantes para autenticao do usurio. Ser que voc j consegue misturar o que
aprendeu? Vamos ver? Faa um formulrio que envie um login e uma senha e guarda essas
informaes em uma sesso. Ento, mostre um Bom dia, com o nome do usurio em uma
pgina, caso seja digitado corretamente. Assim, utilizaremos o mtodo POST, guardaremos em
uma sesso as informaes e podemos utilizar o include em toda pgina que quisermos manter
em segredo.
Por exemplo, quando voc vai fazer uma compra em uma loja virtual e digita seu login e sua senha.
O aplicativo da loja abre uma sesso para voc e registra algumas informaes nela como nome do
usurio e o seus produtos no carrinho, dessa forma, no importa o quanto voc navegue nas
pginas da loja, a aplicao vai continuar sabendo que voc at sair da loja, quando tudo na
sesso apagado.
Para utilizar uma sesso PHP, primeiramente temos que inici-la chamando a funo
session_start(). A Figura 61 mostra como fazer isto.
58
Competncia 03
Caso queira retirar uma varivel da sesso, utilize a funo unset() da seguinte forma:
unset($_SESSION[nomedavariavel])
Uma sesso destruda quando o usurio deixa o site. Mas caso voc queira destruir uma sesso
antes, por exemplo, por um boto de Sair, pode chamar a funo session_destroy() para isso.
Como nosso ltimo exerccio desta competncia faa um algoritmo em PHP que crie uma varivel
comum chamada nome e coloque seu nome nela. Verifique se ela existe. Caso exista, imprima
seu contedo.
59
Competncia 03
Figura 63 Utilizando a funo isset() para saber se uma varivel existe na memria.
Fonte: Prprio autor (2016).
Descrio: Cdigo que verifica se existe uma varivel na sesso, se no existir cria, se existir soma mais um.
Veja em seu navegador a pgina. Cada vez que voc atualiza o nmero de visualizaes
acrescentado um s visualizaes.
Voc deve ler e reler o contedo deste caderno para melhorar seu entendimento nos assuntos
abordados. Na internet existem tutoriais que explicam de outra forma esses assuntos. O AVA
disponibiliza o frum para voc postar suas dvidas. Fazer os exemplos e exerccios essencial
para o aprendizado. E s para lembrar que a maioria dos erros quando se est aprendendo so
de digitao, ento, preste bem ateno ao que est fazendo.
60
Competncia 04
61
Competncia 04
Crie uma pasta du na pasta htdocs de seu XAMPP, e descompacte os arquivos do projeto base,
Figura 65. Assim, voc acessar o modelo pela url localhost/du. Coloque no navegar e veja.
Pronto! Agora que tudo est no lugar podemos comear. Observe que o modelo no possui
nenhuma programao em PHP. Ns que vamos escrev-las. Vamos comear?
4.1 Templates
Nosso sistema ter vrias pginas PHP, cada uma ter uma responsabilidade, como incluir planetas,
incluir estrelas, listar sistemas, etc. Teremos, ento, que repetir muito cdigo HTML. Se vamos
repetir muito do mesmo cdigo, vamos utilizar include (sesso 4.3) para diminuir nosso trabalho e
nos ajudar.
Abra o arquivo index.php e recorte o contedo da primeira linha at a primeira tag <div
id="container">. Agora crie um novo arquivo PHP (sesso 2.5) com o nome de
template.cabecalho.php. Cole as marcaes HTML neste arquivo. No se preocupe que o arquivo
tenha a extenso php, mas dentro seja apenas HTML. O PHP esperto o suficiente para saber a
diferena. A Figura 66 mostra o que deve ser recortado.
62
Competncia 04
Figura 66 Pgina index.php, cdigo que deve ser retirado e colado na pgina template.cabecalho.php.
Fonte: Prprio autor (2016).
Descrio: Na imagem temos o cdigo destacada que deve ser copiado e colado. So as 10 primeiras linhas que
esto em destaque.
Agora crie a pgina template.rodape.php. Copie o final da pgina HTML de base em index.php para
este arquivo. Voc deve copiar as trs ltimas linhas. Comeando pela tag </div> que fecha a div
container. No se esquea de salvar todos os arquivos.
Temos agora o modelo de comeo e o final de todas nossas pginas. Vamos fazer uma pgina para
testar e servir de base para as prximas.
Na pgina index.php acrescente o cdigo PHP para incluir o contedo dos arquivos recm criados.
No comeo do arquivo apague o cdigo que voc copiou, faa um include (sesso 4.3) no incio com
o arquivo template.cabecalho.php e no final template.rodape.php. Agora toda vez que voc
precisar de uma nova pgina basta fazer o include inicial e final. O cdigo no meio ser o contedo
do site.
63
Competncia 04
Vamos melhorar esta index. Na index.php recorte todas as linhas da <div id=right>, deixaremos a
index.php apenas com o menu. Assim, a index apenas mostrar apenas a marca e o menu. Salve.
Agora vamos salvar este arquivo com outro nome. Salve como planetas.form.php e cole o texto
que voc havia recortado no lugar onde estava. Salve novamente.
Agora tempos uma index mais interessante e uma pgina planetas.form.php, que ser nosso
formulrio para incluir e alterar planetas. Se quiser fazer os exerccios propostos, crie a pgina
estrelas.form.php. Seria muito bom.
No link para planetas coloque o valor de href para planetas.form.php. Tanto na index.php
quanto no menu de planetas.form.php. Observe como ficou o cdigo da pgina na Figura 68. Nele
h um cdigo em destaque para ser acrescentado tambm. um submenu.
64
Competncia 04
65
Competncia 04
conectar a ele.
O PHP possui muitas funes teis e uma delas a mysqli_connect(). Esta funo uma atualizao
da mysql_connect(). Tenha cuidado para no confundir. Ela vai fazer o trabalho de se conectar ao
banco. Para isso, temos que passar algumas informaes como argumentos: o endereo de acesso
ao banco, a senha, o login e o nome do banco.
A conexo com o banco ser fechada automaticamente quando o script terminar, mas podemos
fechar quando quisermos com a funo mysqli_close(). Para isso, ele recebe como argumento a
conexo que ser fechada.
A funo mysqli_connect_errno() retorna verdadeiro se ocorrer algum erro. Nesse caso, mostramos
uma mensagem e encerramos a execuo da pgina.
Voc deve ter o cuidado de saber o endereo de seu banco, a senha, o login e o nome do banco.
Caso algum deles esteja errado, ir aparecer uma mensagem de erro informando o erro.
Verifique tambm se o XAMPP est ligado com o Apache e o MySQL (sesso 2.3).
Ento, vamos abrir uma conexo com nosso banco em um arquivo separado, j que vamos ter que
fazer isso em vrias pginas. Depois vamos verificar se conectou corretamente ou deu algum erro. A
Figura 70 mostra a pgina PHP conexao.php.
Na sesso anterior inclumos outros arquivos PHP no planetas.form.php, vamos incluir este
tambm, mas usando require. Observe na Figura 71. Teste a pgina para ver se aparece alguma
mensagem de erro. Se no aparecer, ento tudo ocorreu bem.
66
Competncia 04
67
Competncia 04
nome do campo. Assim, um campo id na tabela tem o array $linha[nome] para pegar seu valor da
coluna nome na tabela do banco. Quando termina a iterao no lao while a tabela HTML fechada
e colocado o cdigo do restante da pgina com um include.
Como existem diversas lnguas no planeta e nem todas elas utilizam os mesmos caracteres que
ns, como o e o ~, temos o CHARSET, que a codificao de caracteres para o documento.
Utilizamos a linha mysqli_query($conexao, "SET NAMES 'utf8';"); para dizer ao MySQL que nos
envie os dados em um formato que possui os caracteres especiais de nossa lngua.
Existe uma forma curta de imprimir o contedo das variveis. Ao invs de <?php echo
$linha['titulo'] ?> voc pode substituir por esta formatao que utiliza o smbolo de igual ( = ).
Assim,
<?= $linha[titulo] ?>
Faa a substituio para ver como funciona.
68
Competncia 04
69
Competncia 04
Sempre falamos da importncia da produo dos exemplos e das atividades para o aprendizado.
Copiar muito simples, mas ser que voc entendeu os conceitos apresentados? Para testar,
faa um exerccio que muito parecido com este. Faa a listagem dos dados da tabela estrelas.
Observe que os campos so diferentes da tabela planetas.
Este cdigo de exemplo exibiu apenas alguns valores para simplificar o exemplo, mas voc pode
pegar os outros valores das outras colunas do mesmo modo. claro que voc ir precisar alterar a
tabela HTML para possuir mais colunas e exibir mais valores.
Se aps uma consulta no banco voc colocar as linhas da Figura 74, caso haja alguma coisa de
errado, ser mostrada uma mensagem na tela que dir o que aconteceu.
70
Competncia 04
O comando or die() significa que se a funo retornar um erro, a execuo deve parar
imediatamente e o texto do argumento apresentado.
Figura 75 Pgina index.php com o formulrio HTML, preenchimento da action e do method na tag.
Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo como o formulrio para cadastro de planetas em HTML.
Observe que no final redirecionamos para outra pgina pela funo header(). Dessa forma,
depois de acrescentar no banco, listamos seu contedo para nos certificar de que est l da
forma correta.
Na ltima linha temos um exit para encerrar a execuo daquela pgina.
71
Competncia 04
Esta pgina se conecta ao banco e recebe os valores do formulrio pela varivel $_POST. Pegamos
com esta varivel os valores de cada campo do formulrio pelo seu name. Em seguida usamos
novamente a funo mysqli_query() para enviar para o MySQL o comando de gravao.
Chegamos a uma parte muito importante, o exerccio. Agora, voc deve usar o que foi visto e
implantar o algoritmo para inserir as estrelas. O cdigo muito parecido com este, mas o
formulrio e os campos so outros. Preste bastante ateno e pense bem para saber o que vai
mudar e o que vai ser igual.
72
Competncia 04
A tag <a> no HTML define um hiperlink. No campo href colocamos o nome da pgina e, atravs do
mtodo GET, completamos a URL com a varivel id e concatenamos seu valor com o nmero da
respectiva linha. Veja o resultado na Figura 78, e no canto inferior esquerdo da imagem tem um
retngulo azul com o link do primeiro campo, observe o ponteiro do mouse em cima do primeiro
link de excluso.
Figura 78 Exibio no navegador da nova pgina de listar com um link excluir ao lado de cada linha.
Fonte: Prprio autor (2016).
Descrio: A imagem mostra a listagem de dados no navegador. Resultado do cdigo anterior.
Agora vamos criar a pgina planetas.excluir.php. Ser muito parecido com o inserir que fizemos
antes. O algoritmo da pgina planetas.excluir.php est na Figura 79 com comentrio explicativo
com texto cinza.
73
Competncia 04
74
Competncia 04
Dessa forma, quando exibirmos cada item da listagem, ao lado teremos um boto para sua edio.
Esse boto envia pelo mtodo GET o id do registro.
Seria bom vermos os dados de um registro j preenchidos em um formulrio para facilitar a
alterao. Podemos fazer isto diretamente no formulrio, que inclui o que est na pgina
planetas.form.php. Ento, vamos aproveitar a pgina, enviando a ela o id.
Abra a pgina planetas.form.php e modifique para exibir os campos para edio j preenchidos. A
Figura 81 mostra a pgina com a nova codificao e comentrios em texto cinza. Preste bem
ateno, porque temos modificaes no comeo do arquivo e no meio do formulrio HTML.
75
Competncia 04
Como esta pgina vai servir tanto para inserir como para alterar os dados no formulrio, criamos
uma varivel $destino para guardar onde vo ser enviados os dados do formulrio. Inicialmente os
dados vo para planetas.inserir.php.
76
Competncia 04
Observe que o ttulo do formulrio no muda. Sempre permanece com Incluir. Voc conseguiria
modificar ele quando fosse para alterar? Tente.
Depois verificamos se recebemos pelo mtodo GET algum id. O uso da funo isset() verifica isto. Se
recebermos, a pgina servir para alterar e no incluir. Devemos, ento, pegar os dados que sero
alterados para mostrar para o usurio. Para isso, utilizamos a conexo com o banco e pegamos os
dados da linha que queremos alterar. Guardamos estes dados em $linhas, e depois pegamos a
primeira linha, pois s ela deve ter o registro, colocando em $linha.
Alteramos $destino para planetas.alterar.php e guardamos em $oculto um campo oculto em HTML
que contm o id. Dessa forma, a pgina planetas.alterar.php vai saber que registro deve alterar.
Acrescentamos no formulrio as variveis $destino e $oculto, assim como os valores dos campos
recuperados. Utilizamos a notao <?= para ser mais simples para voc ver todo o cdigo e
colocamos um @ na frente da varivel.
Este arroba @ faz com que o PHP ignore as mensagens de erro. Ele necessrio, caso no
recebamos nenhum id pelo mtodo GET. As variveis de valores de formulrio no existiro, o que
geraria um erro.
Ainda no terminou, mas como este cdigo mais complicado e junta muito do que j vimos
anteriormente, releia at entender tudo que foi modificado no cdigo para podermos prosseguir
com a pgina planeta.alterar.php.
A pgina planeta.alterar.php muito semelhante pgina planeta.inserir.php. Esta pgina a que
tem a responsabilidade de pedir ao MySQL para fazer a alterao no registro onde o id for igual ao
recebido. Veja a Figura 82 com o cdigo pronto e comentado em texto cinza.
77
Competncia 04
O que esta pgina tem de diferente de planeta.inserir.php que ela recebe nosso campo oculto, o
id, e a $sql muda para o comando SQL para alterar um registro j gravado, nesse caso, o registro
que corresponde ao cdigo enviado. O resto igual pgina planeta.inserir.php.
Vamos utilizar este sistema como base para sua avaliao, ento treine fazendo a parte das
estrelas.
Como sempre temos um exerccio muito importante para a fixao. Com o que voc aprendeu
faa o sistema de alterao de estrelas.
78
Competncia 05
Clique em Downloads e ir aparecer a pgina da Figura 84. A pgina oferece o manual em portugus
do Brasil e a verso mais atual da biblioteca. No momento em que este caderno foi escrito temos
disponvel a verso 1.8.1. A Figura 82 destaca em vermelho os links para baixar o manual e a
biblioteca.
79
Competncia 05
Faa o download da biblioteca e descompacte os arquivos na pasta onde voc est fazendo seu
projeto at agora. Veja como ficou na Figura 85. Os arquivos importantes so a biblioteca que o
arquivo fpdf.php e a pasta font, que contm as fontes necessrias para formatar o documento.
Agora que a biblioteca faz parte de nosso projeto, vamos construir dois botes para gerar um
relatrio cada. No primeiro teremos um relatrio textual para mostrar algumas propriedades
bsicas. No segundo vamos pegar as informaes do banco de dados, montar uma tabela e gerar o
arquivo PDF.
80
Competncia 05
Figura 86 Pgina planetas.listar.php e o cdigo HTML com botes para gerar um relatrio para cada planeta e
outro para gerar um relatrio completo em PDF. Modificao nas linhas 48, 61 e 68.
Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo para incluir os links para gerar o relatrio geral e o relatrio por cadastro.
Os botes, o que est na listagem e o que aparece no final da tabela, vo para a mesma pgina:
planetas.pdf.php. S que nos botes dentro da tabela passamos um id. Assim, caso a varivel id
seja enviada com um valor, vamos gerar um pdf com a ficha do planeta, seno, geramos um
relatrio completo com todos os planetas cadastrados no banco.
Antes disso, temos duas observaes importantes.
Primeiro a biblioteca FPDF utiliza a notao de orientao de objetos, que veremos no prximo
mdulo. Mas no precisa se preocupar, ela parecida com as funes. A segunda que o FPDF no
totalmente preparado para os caracteres especiais de nossa lngua, como os acentos, til e cedilha.
Teremos que utilizar uma funo bem pequena para fazer esta converso. Esta funo est logo no
incio do arquivo.
O cdigo completo e comentado est na Figura 87. Logo aps, temos a Figura 86 com o resultado
em PDF. Posteriormente, temos as instrues de cada mtodo utilizado para compor o documento
e suas possveis opes.
Tenha bastante ateno com a grafia correta de toda a codificao e, com a ajuda da explicao
abaixo, tente entender o que cada linha ordena.
81
Competncia 05
82
Competncia 05
Ento, para cada linha temos a configurao de fonte com $pdf->SetFont('arial', '', 12). O primeiro
argumento a fonte Arial. A string vazia para configurar o efeito, se quiser negrito utilize B, e o
12 o tamanho em pontos da fonte. Veja a pasta "/fpdf/font/" para verificar as fontes suportadas.
S se consegue escrever no PDF dentro de uma cell ou multicell. Uma cell como uma clula, um
espao para escrever uma linha. O primeiro parmetro a largura, o segundo a altura, o terceiro
argumento o contedo (o texto), o quarto argumento a borda (1 para sim e 0 para no), o
quinto o espaamento interno, o sexto para o alinhamento (L esquerda, R direita e C
centralizado). Quando o contedo possui caracteres especiais, chamaremos nossa funo
converte().
$pdf->Cell(0,20,"Rua Fulano de Tal, s/n, Bairro Industrial",0,1,'L');
Quando temos vrias linhas utilizamos multicell. Seus parmetros so iguais aos do cell com a opo
a mais de alinhamento J para justificado. Atente de que j tratamos deste texto anteriormente.
83
Competncia 05
Agora temos que definir o contedo, que pode ser de duas maneiras. Se a pgina receber um id, o
documento gera apenas a ficha do planeta. Se no possuir nada, o documento gerado conter uma
listagem de todos os planetas cadastrados. Para isso, definimos a string SQL que ser utilizada. Com
isso, ou selecionamos um planeta pelo id ou todos, igual ao que fizemos na planetas.listar.php.
if (isset($_GET['id']) && $_GET['id']<>"") {
$id = $_GET['id'];
$sql = "SELECT * FROM planetas WHERE id='$id';";
} else {
$sql = "SELECT * FROM planetas;";
}
Depois que conseguirmos a listagem do banco, iniciamos uma estrutura while para repetir o cdigo
para cada linha. Abaixo, temos o cdigo inicial. A cada iterao ele constri uma linha para a tabela,
com os dados do DVD.
while($linha = mysqli_fetch_array($listagem)) {
$pdf->SetFont('arial','B',12);
// Quando o texto tem ou pode ter acento utilizamos a funo converte
$pdf->Cell(70,20,converte("Cdigo: "),0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(0,20,$linha['id'],0,1,'L');
Os parmetros so dois: O nome do arquivo e o destino (I para a sada padro, D para download, F
para salvar localmente e S para retornar como string).
Observe o resultado na Figura 88 e 89.
84
Competncia 05
Figura 88 Arquivo de relatrio geral em PDF criado pelo FPDF do cdigo de exemplo.
Fonte: Prprio autor (2016).
Descrio: A imagem mostra o resultado no navegador Chrome. O Chrome abri os arquivos PDF que recebe
Esta codificao complexa. Voc precisa ler com ateno e reproduzir o exemplo para entender
bem todos eles. Utilize outras opes para ver como fica.
Voc pode ser criativo e tentar novas formas de relatrios e documentos. Quanto mais fizer, mais
85
Competncia 05
aprender.
Agora, para exercitar, faa da mesma forma como fizemos anteriormente, s que utilize a
entidade estrelas.
86
Concluso
Com isto terminamos esta disciplina, mas entenda que voc viu a ponta do iceberg, ou seja, apenas
o comecinho. Existe muito mais conhecimento que deve ser procurado e aprendido para se
aperfeioar. Mas apenas ler ou assistir uma aula no suficiente. Para aprender voc deve praticar,
mais e mais. A diferena de um iniciante para um profissional a experincia acumulada com horas
e horas de prtica.
Ento, pesquise mais sobre HTML, CSS, JavaScrip e PHP. Na internet voc encontrar muito material
interessante. E quanto mais cedo comear a praticar, mais rpido se tornar um profissional
competente.
Um grande abrao e at a prxima.
87
Referncias
NIEDERAUER, Juliano. Desenvolvendo websites com PHP. So Paulo: Novatec, 2004.
CONVERSE, Tim; PARK, Joyce. PHP: a bblia. 2003.
DALLOGLIO, Pablo. PHP: programando com orientao a objetos. So Paulo: Novatec, 2007.
88
Minicurrculo do Professor
Ewerton Mendona formado em Sistemas de Informao pela UPE e Design pela UFPE, com
mestrado em Cincia da Computao pela UFPE. Atualmente professor na Faculdade de Cincias e
Letras de Caruaru. Possui experincia na rea de desenvolvimento WEB e design grfico desde
1998.
89