Anda di halaman 1dari 92

Linguagem e Programao para Web

Ewerton Mendona

Curso Tcnico em Informtica


Educao a Distncia
2016

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

Contedo produzido para os Cursos Tcnicos da Secretaria Executiva de Educao


Profissional de Pernambuco, em convnio com o Ministrio da Educao
(Rede e-Tec Brasil).
Maio, 2016

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

2.Competncia 02 | Fundamentos da Linguagem Php ..................................................................... 25


2.1 Pginas PHP .........................................................................................................................................25
2.2 Sintaxe Bsica ......................................................................................................................................26
2.3 Variveis..............................................................................................................................................28
2.3.1 Nome de Variveis ............................................................................................................................29
2.3.2 Declarao de Variveis ....................................................................................................................29
2.3.3 Escopo de uma Varivel ....................................................................................................................30
2.3.3.1 Escopo Local ..................................................................................................................................30
2.3.3.2 Escopo Global ................................................................................................................................30
2.3.3.3 Escopo Esttico ..............................................................................................................................31
2.3.3.4 Escopo de Parmetro .....................................................................................................................31
2.4 String ...................................................................................................................................................32
2.4.1 Operao de Concatenao ..............................................................................................................33
2.4.2 Funo strlen( ) .................................................................................................................................34
2.4.3 Funo strpos( ) ................................................................................................................................34
2.5 Operadores.........................................................................................................................................35
2.5.1 Operadores Aritmticos ....................................................................................................................35

2.5.2 Operadores de Atribuio .................................................................................................................35


2.5.3 Operadores de Unrios .....................................................................................................................36
2.5.4 Operadores de Comparao .............................................................................................................36
2.5.5 Operadores Lgicos ..........................................................................................................................36
2.6 Echo ....................................................................................................................................................37
2.7 If...Else.................................................................................................................................................38
2.8 Switch .................................................................................................................................................39
2.9 Array ...................................................................................................................................................41
2.9.1 Arrays Indexados ..............................................................................................................................42
2.9.1.1 Contando os Elementos de um Array .............................................................................................42
2.9.2 Arrays Associativos ...........................................................................................................................43
2.9.2.1 Loops em Arrays Associativos ........................................................................................................43
2.10 Estruturas de Repetio .....................................................................................................................44
2.10.1 While ..............................................................................................................................................44
2.10.2 Do...While.......................................................................................................................................45
2.10.3 For ..................................................................................................................................................46
2.10.4 Foreach ..........................................................................................................................................47

3.Competncia 03 | Fundamentos Avanados da Linguagem PHP ................................................... 49


3.1 Funes ...............................................................................................................................................49
3.1.1 Criando Funes PHP ........................................................................................................................49
3.1.2 Adicionando Parmetros...................................................................................................................50
3.1.3 Retornando Valores ..........................................................................................................................51
3.2 Formulrios .........................................................................................................................................52
3.2.1 Mtodo GET .....................................................................................................................................52
3.2.2 Mtodo POST ...................................................................................................................................54
3.2.3 Varivel $_REQUEST .........................................................................................................................55
3.3 Include e Require .................................................................................................................................56

3.4 Sesses PHP ........................................................................................................................................58


3.5 Funo ISSET() .....................................................................................................................................59

4.Competncia 04 | Projeto: Incluindo, Alterando, Exibindo e Excluindo Informaes .................... 61


4.1 Templates............................................................................................................................................62
4.2 Conectando ao MySQL.........................................................................................................................65
4.3 Listando Dados ....................................................................................................................................67
4.4 Incluindo Dados ...................................................................................................................................71
4.5 Excluindo Dados ..................................................................................................................................72
4.6 Alterando Dados ..................................................................................................................................74

5.Competncia 05 | Projeto: Emisso de Relatrios ........................................................................ 79


Concluso ........................................................................................................................................ 87
Referncias ..................................................................................................................................... 88
Minicurrculo do Professor .............................................................................................................. 89

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

1.Competncia 01 | Introduo Programao para Web e Construo


do Ambiente de Desenvolvimento
Antes de contarmos um pouquinho a histria do PHP, vamos falar um pouco sobre linguagem de
programao, os diferentes tipos de linguagens e onde o PHP est nesta classificao.
Depois vamos construir um ambiente de desenvolvimento para web passo a passo. Precisaremos
baixar e instalar alguns programas gratuitos, faremos um teste construindo nossa primeira
aplicao, o famoso Hello world! do mundo da programao.
Por fim, veremos como ficar a aplicao que iremos desenvolver nas prximas competncias.
E ento, prontos para comear?

1.1 Programao para Web


O computador ainda no entende exatamente o que o ser humano fala. O que o computador
entende so zeros e uns. Graas velocidade que possui, ele pode ler uma gigantesca quantidade
de zeros e uns e fazer coisas incrveis, mas, para os seres humanos impossvel instruir o
computador desta forma. Por isso, foram criados cdigos que do ordens bsicas. A organizao
dessas ordens uma gramtica e seu conjunto de palavras chaves sua ortografia, e assim temos
uma linguagem. Uma forma de comunicao com um computador que diz a ele o que para ele
fazer e quando.
Dessa forma podemos escrever mais facilmente, utilizando palavras ao invs de zeros e uns, e pedir
para uma aplicao traduzir esta linguagem para que o computador entenda, ou seja, dizemos que
uma linguagem mais prxima dos seres humanos de alto nvel, j a linguagem de zeros e uns de
baixo nvel.
Essa traduo pode possuir duas abordagens: compilativa e interpretativa.
Na compilao a traduo feita de uma vez. Todo o programa traduzido para a linguagem de
baixo nvel e pode ser executado indefinidamente sem precisar ser compilado novamente. como
se um tradutor profissional de ingls pegasse um livro e traduzisse ele para o portugus. O livro
traduzido pode ser impresso vrias vezes sem precisar ser traduzido novamente. Como exemplos de
linguagem compilativas temos Pascal e C.
Na interpretao a traduo realizada enquanto as linhas so lidas. Toda vez que a linha lida, ela
traduzida e executada. como se um tradutor estivesse em uma palestra e enquanto o
palestrante fala ele vai traduzindo para o pblico. Se o palestrante repetir alguma coisa que j tenha
dito, o tradutor ter que traduzir novamente. Ento, se uma linha for lida mil vezes em um cdigo,
ser interpretada e executada mil vezes. Como exemplo de linguagens interpretativas temos o PHP,
Python e JavaScript.

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.

Figura 1 - Passo a passo da solicitao de recursos na internet.


Fonte: prprio autor (2016).
Descrio: A ilustrao mostra os passos simplificados da solicitao de uma pgina web
para uma aplicao. Passo 1, o usurio envia solicita um DNS para o servidor. Passo 2, o
servidor processa a solicitao. Passo 3, o servidor envia para o usurio o recursos.

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.

1.2 PHP: Histrico e Definio


PHP uma linguagem de script executada do lado do servidor e uma poderosa ferramenta para a
criao de pginas Web dinmicas e interativas. PHP significa PHP: Hypertext Preprocessor. Ele
aberto para quem se interessar em melhor-lo e gratuito para uso.
A verso atual do PHP a 7, que possui diversas mudanas para se adaptar melhor s tecnologias
atuais em linguagem de programao. Muitas destas mudanas so voltadas para o paradigma
Orientado a Objetos, que uma outra forma de se modelar um software. No entanto, vamos utilizar
a verso 5, que podemos baixar no site www.php.net. L, voc tambm pode encontrar novidades
sobre o desenvolvimento, documentao, links para a comunidade de desenvolvedores e o cdigofonte do PHP. Escolhemos a verso mais antiga por ela ser mais fcil e ter menos detalhes em
relao nova. Uma vez aprendida, ampliar os conhecimentos para a verso 7 ser bem mais fcil.
Por ser uma linguagem de programao que executada do lado do servidor, ela deve ser instalada
junto a um servidor de pginas web. Se voc for contratar um servio de hospedagem de websites
deve verificar se no servidor est instalado o PHP e qual a verso.
Agora vamos pegar mais intimidade com o PHP conhecendo um pouco de sua histria de vida.
No incio da dcada de 90, as pginas web pouco faziam. Naquela poca as pessoas escreviam uma
pgina e depositavam em um servidor web para serem acessadas. Apenas isso. Se o autor quisesse
que ela mudasse algo, ele teria que editar a pgina e reenviar. No existiam aplicativos web, ecommerce, nem blogs, como conhecemos hoje.

O link abaixo exibe um vdeo sobre a evoluo da web e seus objetivos.


www.youtube.com/watch?v=V5kabPVohGY

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

Para saber mais sobre o PHP acesse o link abaixo:


http://pt.wikipedia.org/wiki/PHP

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.

1.3 Servidor de Teste


Um servidor um programa de computador que serve algo. Podemos ter um servidor de e-mail que
serve e-mails, um servidor de stream de vdeos que quem envia o vdeo, como no YouTube, e
tambm temos um servidor que serve as pginas web.
A instalao do PHP deve ser feita em um servidor web j instalado. Ento, para testarmos nossas
pginas PHP precisamos de uma empresa que fornea isso? No.
Podemos instalar um servidor em nosso computador junto com o PHP e testarmos nosso cdigo
PHP localmente. A isso, damos o nome de servidor local. Atente para o fato de que nosso servidor
local, ou seja, as pginas apenas sero vistas em nosso computador.
Quando nossa programao estiver pronta, podemos envi-las para um servidor que contratarmos
para que seja disponibilizada mundialmente. Existem algumas empresas que disponibilizam
pequenas aplicaes PHP de forma gratuita, algumas colocam propaganda nas pginas como forma
de rendimento.
Parece muito complicado? O pessoal do Apache Friends, Figura 2, tambm achou e desenvolveu
um pacote j com tudo de que precisamos para testar as pginas PHP, e o melhor, sem precisar
instalar nada. Voc pode levar todo o seu projeto, junto com servidor, banco de dados, etc.,
prontinho no pen drive. E ainda mostrar no computador do cliente ou continuar o desenvolvimento
em outros computadores sem se preocupar em instalar o servidor de teste. Legal, n?
Ento, vamos baixar esse pacote mgico, seu nome XAMPP. Ele todo em portugus e voc
no precisa instalar. O arquivo do XAMPP Portable tem 150 Mb e est compactado em ZIP, o link
para baixar :https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.19/xamppporta ble-win32-5.6.19-0-VC11.zip/download

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.

Figura 2 O site da Apache Friends possui verses para Linux e Mac OS X.


Fonte: www.apachefriends.org/pt_br/index.html. (2016).
Descrio: Captura de tela do endereo www.apachefriends.org/pt_br/index.html. Voc pode baixar a verso para
seu sistema operacional por aqui.

11

Competncia 01

Figura 3 - Link para baixar a verso portable do XAMPP.


Fonte: prprio autor(2016).
Descrio: Captura de tela do site para donwload. Uma seta aponta o link correto para baixar a verso portable
para Windows. O link direto o https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.19/.

Descompacte o arquivo em um bom lugar, preferencialmente na raiz de seu sistema operacional, e


memorize sua localizao. Dentro h vrios programas, entre eles o Apache, que um servidor de
pginas web com o PHP j instalado e o banco de dados web MySQL. Alm disso, o pessoal ainda
colocou o phpMyAdmin, um aplicativo web feito com PHP para gerenciar os bancos do MySQL. Com
ele voc pode criar as tabelas, campos, visualizar e gerenciar, tudo no MySQL.
Antes de podermos testar o servidor, temos que configurar sua localizao. No se preocupe que
tudo ser muito fcil. Dentro da pasta que voc descompactou procure o arquivo setup_xampp.bat
e execute-o. O que ele faz descobrir onde esto os servidores. Isso s preciso porque voc pode
levar esta pasta no pen drive para outros lugares, assim a localizao pode mudar muito. Sempre
que voc mudar a pasta de lugar, vai ter que executar este arquivo para configurar a localizao,
mas se no mudar de lugar no precisa repetir o processo.
Ir aparecer a janela da Figura 4. Caso aparea mensagens de alerta do Firewall, permita o acesso.
Aguarde at aparecer uma mensagem dizendo que a atualizao foi realizada. Pressione, ento,
qualquer tecla para que a janela desaparea.

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

Figura 5 Painel de Controle do XAMPP. Pressione os dois botes Start apontados.


Fonte: prprio autor.
Descrio: Captura de tela Controle do XAMPP.

Figura 6 Caixa de dilogo da tela de permisso do Windows 10.


Fonte: prprio autor (2016).
Descrio: Captura de tela da caixa de dilogo da tela de permisso do Windows.

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.

Figura 7 Painel de Controle do XAMPP.


Fonte: prprio autor (2016).
Descrio: Captura de tela do painel de controle do XAMPP, mostrando, com setas, os botes para
parar a aplicao e o boto de sair.

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

Figura 8 Pgina inicial do XAMPP.


Fonte: prprio autor (2016).
Descrio: Exibio da pgina inicial do XAMPP da verso 5.6.19.

Figura 9 Pgina do PHPMyAdmin.


Fonte: prprio autor (2016).
Descrio: Pgina inicial do aplicativo em PHP para gerenciar o banco de dados.

16

Competncia 01

Pronto! Tudo est ok.

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.

Figura 10 Site do Aptana Studio 3.


Fonte: prprio autor (2016).
Descrio: Tela inicial do Aptana Studio 3.

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

Figura 12 Bloco de Notas do Windows 10.


Fonte: www.dicasparacomputador.com/files/u5/windows8-codigo-bloco-notas.jpg (2016).
Descrio: Tela do Bloco de Notas do Windows 10.

Figura 13 gEdit do Linux.


Fonte: https://community.linuxmint.com/img/screenshots/gedit.png (2016).
Descrio: Tela do gEdit do Linux.

19

Competncia 01

Figura 14 Text-edit do Mac.


Fonte: www.guidebookgallery.org/pics/gui/applications/office/texteditor/macosx102.png (2016).
Descrio: Tela do Text-edit do Mac.

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.

1.5 Testando o Ambiente


Agora que temos tudo pronto, vamos testar o nosso ambiente de desenvolvimento. Para isso,
vamos fazer uma pgina simples em PHP, o nosso Hello world!.
Abra o Bloco de Notas, ou equivalente, e selecione Arquivo > Salvar como..., de acordo com a
Figura 15. Os passos nos outros aplicativos so semelhantes.

20

Competncia 01

Figura 15 Menu do Bloco de Notas.


Fonte: prprio autor (2016).
Descrio: A figura mostra o item Salvar como... no menu Arquivo no Bloco de Notas.

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

Figura 16 Menu do Bloco de Notas.


Fonte: prprio autor (2016).
Descrio: A figura mostra o item Salvar como... no menu Arquivo no Bloco de Notas.

Como o projeto destinado web, no utilize espaamentos para nomes compostos ou


caracteres. Voc tambm deve ter este cuidado para os nomes dos arquivos das pginas. No so
em todos os casos que podemos utilizar qualquer nome de arquivo, ento, evite.

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

Figura 17 Caixa de dilogo Salvar como do Bloco de Notas.


Fonte: prprio autor(2016).
Descrio: Alerta para no se esquea de modificar o tipo de arquivo para Todos os arquivos (*.*).

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.

Figura 18 Exibio de nosso teste no navegador.


Fonte: prprio autor (2016).
Descrio: Navegador apresenta a pgina resultante do teste, exibindo o texto Oi mundo!.

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.

Figura 19 Pgina inicial do projeto Universo Binrio.


Fonte: Prprio autor (2016).
Descrio: Pgina inicial da aplicao de exemplo, Universo Binrio, um cadastro de corpos celestes.

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

2.Competncia 02 | Fundamentos da Linguagem Php


Esta competncia muito importante. Ela a base para todo o resto. Seu comprometimento no
estudo deve ser total, pois a fundao para as prximas competncias at finalizarmos o sistema
Universo Digital. Assim, faa todos os exemplos e atividades e os repita para a melhor
compreenso.
Aqui, aprenderemos as palavras-chaves bsicas e a forma de orden-las. Assim, as ordens passadas
para o computador faro sentido e ele poder cumpri-las.

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.

2.1 Pginas PHP


Como dito anteriormente, o PHP uma linguagem de programao que executada do lado do
servidor. Ela diferente, por exemplo, do JavaScript, que tambm uma linguagem interpretada,
mas executada ao lado do cliente, ou seja, no navegador do usurio e no no servidor.
Vamos ver o que acontece quando se usa pginas PHP em um site.
Acompanhe o fluxo na Figura 19. Primeiramente o usurio faz um pedido de uma pgina pelo
endereo DNS, ou clicando em um link que possui um endereo DNS (1). Quando a solicitao chega
ao servidor, ele verifica se o que foi pedido uma pgina PHP e entrega para o interpretador (2). O
interpretador l a pgina e quando encontra um cdigo PHP o executa (3). Quando termina de ler, o
interpretador constri uma pgina HTML como resultado da computao realizada e entrega ao
servidor (4). Finalmente o servidor envia a pgina HTML resultante para o usurio.
Todas as vezes que so feitas requisies de pgina PHP, esse processo repetido.
Mais adiante, observe que as pginas PHP so pginas HTML com cdigo PHP misturado. Para que o
servidor saiba que so pginas PHP, ao invs de colocarmos a extenso .html, colocamos .php.
Podemos enviar para o servidor uma pgina PHP contendo apenas cdigo HTML. O servidor vai ter
todo o trabalho descrito na Figura 20 e ir retornar mesma pgina, sem realizar qualquer
computao. Quando formos fazer nosso sistema de locadora teremos casos como este.

25

Competncia 02

Figura 20 Ilustrao do passo a passo de uma solicitao de uma pgina PHP.


Fonte: Prprio autor (2016).
Descrio: Ilustrao que mostra o fluxo de execuo de pginas PHP.

2.2 Sintaxe Bsica


Para que uma pgina seja interpretada pelo PHP, ela deve ter a extenso .php, mas no s isso,
todo cdigo PHP deve estar entre dois sinais que indicam o incio e o fim de um pedao de
computao. Assim, o interpretador vai saber que o que est dentro comando PHP.
Ento, para marcar o incio utilizamos <?php e para marcar o final utilizamos ?>.
Vamos ver um exemplo.
O comando echo escreve o que est logo aps, entre aspas duplas. Vamos escrever Oi mundo!,
utilizando PHP. Veja a Figura 21 que exibe o contedo de oi.php.

26

Competncia 02

Figura 21 Cdigo de exemplo Oi mundo!.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de sintaxe bsica em PHP.

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.

Figura 22 Navegador exibindo o resultado da pgina oi.php.


Fonte: Prprio autor (2016).
Descrio: Exibio no navegador do resultado do cdigo de exemplo.

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

comentrios o cdigo PHP.


Para fazer um comentrio de uma linha colocamos //.
Para fazer um comentrio de vrias linhas colocamos no comeo /* e no final das linhas */. As
linhas comentadas so ignoradas pelo interpretador na hora da computao. Veja o exemplo na
Figura 23.

Figura 23 Comentrios no cdigo.


Fonte: Prprio autor (2016).
Descrio: Exibio do cdigo de comentrios.

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.

muito parecido com matemtica. Veja o exemplo:


x=2
y=5
z=x+y
Na matemtica ns utilizamos as letras para representar um valor. Dessa forma podemos entender
que z representa o valor de 7 em nosso exemplo. Em PHP estas letras so as variveis.
Da mesma forma que na matemtica, as variveis em PHP podem ser utilizadas para guardar
valores (x=2) e expresses (z=x+y).

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.

2.3.1 Nome de Variveis


O nome da varivel no precisa ter apenas uma letra, como x e y. Seria muito melhor que
descrevessem o que ela guarda, por exemplo, idade, nome, volume, etc.
Voc pode colocar qualquer um desses, desde que respeite as regras abaixo:

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 _
);

O nome de uma varivel no deve conter espaos;

PHP distingue maisculas de minsculas, dessa forma $nome, $Nome, $NOME e $nOmE so
variveis diferentes.

2.3.2 Declarao de Variveis


Para criar uma varivel em PHP temos apenas que atribuir um valor a ela. Utilizamos o sinal de igual
( = ) para isso. Por exemplo:
$nome = Fulano de Tal;
$idade = 37;

Quando guardamos uma sequncia de caracteres utilizamos as aspas duplas para marcar seu
comeo e seu fim, como no exemplo anterior.

Quando executarmos o programa, o computador guarda na memria o nome Fulano de Tal e o


nmero 37 para usarmos em outro momento.
No entanto, as variveis no vivem para sempre. Em certo momento elas sero apagadas,
normalmente ao final de seu escopo, mas o que escopo de uma varivel?

29

Competncia 02

2.3.3 Escopo de uma Varivel


No podemos acessar nossas variveis em qualquer lugar do cdigo. Elas pertencem a um
determinado local, a este local chamamos de escopo.
Temos quatro tipos de escopo:

Local;
Global;
Esttico;
Parmetro.

2.3.3.1 Escopo Local


Uma varivel declarada dentro de uma funo local e s pode ser acessada dentro desta funo.
Veremos o que uma funo na prxima competncia. Mas entenda, de antemo, que uma funo
como um pequeno programa parte. Vamos ver um exemplo na Figura 24:

Figura 24 Cdigo exemplo de varivel local.


Fonte: Prprio autor (2016).
Descrio: cdigo que soma 2 + 2 e mostra o resultado.

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.

2.3.3.2 Escopo Global


Uma varivel que declarada na raiz do cdigo, como as variveis $x e $y na Figura 25, no so
visveis dentro da funo. Possuem escopos diferentes. Caso precisemos delas dentro de uma
funo, declaramos elas como global, de acordo como mostrado na Figura 24. Assim, o
interpretador sabe que no para criar novas e sim utilizar as que foram criadas na raiz do cdigo.
O modificador global dentro de uma funo amplia o escopo da varivel. Quando a funo encerrar,
estas variveis no so apagadas porque elas foram criadas fora da funo.

30

Competncia 02

Figura 25 Exemplo de variveis com escopo global


Fonte: Prprio autor (2016).
Descrio: Cdigo de uma funo com configurao de variveis de escopo glogal em uma funo.

2.3.3.3 Escopo Esttico


Quando o escopo de uma varivel local ou global termina, ela excluda, mas voc pode querer que
ela continue a existir por mais tempo. Sendo assim, utilize a palavra-chave static quando declarar a
varivel. Vamos ver um exemplo na Figura 26:

Figura 26 Exemplo de variveis com escopo esttico.


Fonte: Prprio autor (2016).
Descrio: Cdigo configurando uma varivel para escopo esttico.

Esta aplicao escreve 012, mostrado que o valor persistiu depois que a funo foi encerrada.

2.3.3.4 Escopo de Parmetro


Podemos passar valores para as funes atravs dos parmetros. Veremos melhor funes e
parmetros na prxima competncia, mas por agora entenda que variveis de parmetro possuem
escopo local. Vamos ver um exemplo na Figura 27.

31

Competncia 02

Figura 27 Exemplo de varivel de parmetro.


Fonte: Prprio autor (2016).
Descrio: Cdigo mostrando uma varivel de parmetro de uma funo.

Parmetros tambm so chamados de argumentos. Veremos este assunto melhor quando


estudarmos funes em PHP na prxima competncia.

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

Figura 28 Exemplo de utilizao de strings.


Fonte: prprio autor (2016).
Descrio: Cdigo mostrando a utilizao de varivel string.

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.

Para saber todas as funes manipuladoras de strings, acesse:


http://php.net/manual/pt_BR/ref.strings.php

2.4.1 Operao de Concatenao


Concatenar unir, juntar. O operador de concatenao realiza uma operao de unir duas strings.
Seu smbolo o ponto e podemos unir duas ou mais strings em uma mesma expresso. Veja o
exemplo da Figura 29.

Figura 29 Exemplo de concatenao.


Fonte: Prprio autor (2016).
Descrio: Cdigo mostrando a concatenao de strings.

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

2.4.2 Funo strlen( )


Entregamos como parmetro desta funo uma string e ela conta a quantidade de caracteres. A
Figura 30 mostra um exemplo.

Figura 30 Exemplo da funo strlen( ).


Fonte: Prprio autor (2016).
Descrio: Cdigo que exibe em uma pgina o resultado da quantidade de letras de uma string.

escrito 9 como sada.

Faa uma aplicao em PHP que conte as letras de seu nome e d o resultado em uma pgina
HTML.

2.4.3 Funo strpos( )


Esta funo usada para procurar uma string dentro de uma string. Caso ache a funo, retorna ao
nmero da posio do primeiro caractere da string procurada, caso no ache, retorna falso. Veja o
exemplo da Figura 31.

Figura 31 Exemplo de uso da funo strpos( ).


Fonte: Prprio autor (2016).
Descrio: Cdigo que exibe a posio de onde comea a string Tal dentro da string Fulando de Tal.

escrito 10.

A resposta do exemplo 10 e no 11 porque em PHP comeamos a contar de zero e no de um.

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.

2.5.1 Operadores Aritmticos


OPERADOR

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.

2.5.2 Operadores de Atribuio


OPERADOR

x=y

COMO SE FOSSE...

x=y

DESCRIO

Coloca no operando da esquerda o resultado ou valor da


direita
Adiciona y a x
Subtrai y de x
Multiplica x por y
Divide x por y
Coloca em x o resto da diviso de x por y
Concatena duas strings

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

2.5.3 Operadores de Unrios


OPERADOR

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.

Os operadores de incremento e decremento so os mais difceis de entender. Estude o exemplo


por mais tempo at compreender porque foi exibido para x 9, 9 e depois 10.

2.5.4 Operadores de Comparao


OP.

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.

2.5.5 Operadores Lgicos


OPERADOR

NOME

DESCRIO

x and y

Retorna verdadeiro se x e y forem verdadeiro

x or y

ou

Retorna verdadeiro se houver um verdadeiro

x && y

Retorna verdadeiro se x e y forem verdadeiro

x || y

ou

Retorna verdadeiro se houver um verdadeiro

!x

no

Retorna verdadeiro se x for falso

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

Tabela 05 Operadores lgicos.


Fonte: Prprio autor (2016).
Descrio: Tabela com os operadores lgicos na primeira coluna, seguida de colunas de seu nome, descrio, exemplo e
resultado do exemplo.

36

Competncia 02

O exemplo da Figura 32 mostra a utilizao de operadores matemticos, de atribuio e


incremento. Os operadores comparativos e lgicos podero ser demonstrados na prxima sesso,
utilizando uma estrutura de deciso if...else.

Figura 32 Exemplo com operadores.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo utilizando alguns dos operadores.

Para fixar o que foi lido, pratique o seguinte exerccio.


Faa um programa em PHP que calcule e exiba os dias aproximados que voc viveu at hoje.
Sabendo que cada ano tem 365 dias, um ms 30 e uma semana 7.

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.

Figura 33 Exemplo de echo com sada em HTML.


Fonte: Prprio autor (2016).
Descrio: Cdigo que cria uma pgina com um ttulo HTML com Ola e o valor de uma varivel.

37

Competncia 02

Figura 34 Exibio no navegador do resultado.


Fonte: Prprio autor (2016).
Descrio: Exibio do resultado do exemplo de cdigo da Figura 31.

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.

Figura 35 Utilizando aspas simples no echo.


Fonte: Prprio autor (2016).
Descrio: Cdigo demonstrando a utilizao de aspas simples.

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.

Figura 36 Exibio com aspas simples.


Fonte: Prprio autor (2016).
Descrio: Exibio do resultado no navegador do cdigo da Figura 33.

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.

Figura 37 Exemplo da estrutura condicional if...else.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo da estrutura de deciso if...else que compara o valor de duas variveis para
saber se maior ou menor.

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.
}

Como que funciona?


O switch verifica a expresso n, que normalmente uma varivel. Ela avaliada uma vez e, ento,
comparada com os valores de cada um dos case na estrutura, o x e o y. Se houver uma
correspondncia, o bloco de cdigos depois dos dois pontos executado.

Vamos fazer um exerccio utilizando switch.


Faa o mesmo algoritmo da sesso anterior, dessa vez utilizando switch ao invs do if...else.
Utilize as opes de manh, tarde e noite para os cases. E exiba um Bom dia!, Boa
tarde! e Boa noite! correspondente ao valor da varivel condicional. Caso no seja nenhuma
das opes, escreva um Ol!.

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

Figura 38 Exemplo da estrutura Switch.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de uma estrutura de deciso switch.

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.

Figura 39 Ilustrao de uma varivel array. direita.


Fonte: prprio autor (2016).
Descrio: Uma ilustrao que mostra o contedo de uma varivel array. A varivel $nomes
guarda a lista de nomes direita.

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

Em PHP podemos ter dois tipos de matrizes:

Matrizes indexadas;
Matrizes associativas.

2.9.1 Arrays Indexados


H duas maneiras de criar matrizes indexadas:
Na primeira no se coloca o ndice e ele atribudo automaticamente comeando pelo 0. Veja a
Figura 40.

Figura 40 Exemplo de array com ndice automtico.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de criao e utilizao de uma varivel array.

Na segunda forma definido individualmente cada ndice. Veja na Figura 41. Voc pode definir
qualquer numerao, inclusive comear pelo 1 ao invs do 0.

Figura 41 Exemplo de array com definio de ndice.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de criao e utilizao de uma varivel array.

2.9.1.1 Contando os Elementos de um Array


A funo count( ) nos d o total de elementos de um array. A Figura 42 nos traz um exemplo. Essa
funo de muita importncia, por isso decore-a bem. Ela usada em estruturas de repetio para
listas, de forma mais prtica do que no exemplo da Figura 41. Estudaremos a estrutura de repetio
mais adiante.

42

Competncia 02

Figura 42 Utilizao da funo count( ).


Fonte: Prprio autor (2016).
Descrio: Cdigo que utiliza a funo count() para contar os item de um array, junto com um lao de
repetio que exibe o contedo do array.

2.9.2 Arrays Associativos


Arrays associativos so arrays que voc associa com algum nome ao invs de um ndice numrico. A
Figura 43 mostra um exemplo. Tenha a ateno de observar que colocamos o nome da associao
Lus com aspas simples, e retornamos o seu valor 5555-3765.

Figura 43 Exemplo de array associativo.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de criao exibio de um array associativo.

Vamos fazer um exerccio utilizando switch.


Faa o mesmo algoritmo da sesso anterior, dessa vez utilizando switch ao invs do if...else.
Utilize as opes de manh, tarde e noite para os cases. E exiba um Bom dia!, Boa
tarde! e Boa noite! correspondente ao valor da varivel condicional. Caso no seja nenhuma
das opes, escreva um Ol!.

2.9.2.1 Loops em Arrays Associativos


Os loops em arrays associativos so diferentes de arrays indexados, j que estes no possuem o
ndice numrico. Observe no exemplo que usamos uma estrutura foreach que significa para cada.
Dessa forma, percorremos o array e pegamos seu nome de associao para poder exibir seu
contedo. Observe na Figura 44 um exemplo. Estudaremos a estrutura foreach mais adiante.

43

Competncia 02

Figura 44 Exemplo de loop para arrays associativos.


Fonte: Prprio autor (2016).
Descrio: Cdigo que mostra a utilizao de uma estrutura de repetio foreach para exibio de um array
associativo.

Este um dos exemplos mais importantes. Reproduza at entend-lo perfeitamente.

2.10 Estruturas de Repetio


Quando programamos em PHP precisamos repetir o mesmo cdigo para que ele seja executado
vrias vezes. As estruturas de repetio foram criadas para fazer este servio para ns, sem que
precisemos repetir o cdigo. Em PHP temos quatro estruturas de repetio:

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;

for - repete o bloco de cdigo um determinado nmero de vezes;

foreach - repete o bloco de cdigo para cada elemento de um array.

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

Figura 45 Exemplo de um loop while.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de utilizao da estrutura de repetio while

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

Figura 46 Exemplo de repetio de cdigo com a estrutura do...while.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de utilizao da estrutura de repetio do...while.

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

Figura 47 Exemplo da estrutura de repetio for.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de utilizao da estrutura de repetio for.

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

Figura 48 Exemplo de repetio com a estrutura foreach.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de utilizao da estrutura de repetio foreach.

Repita este exemplo no seu computador para entend-lo melhor.

48

Competncia 03

3.Competncia 03 | Fundamentos Avanados da Linguagem PHP


Aprendemos os fundamentos bsicos da linguagem. Caso voc tenha dvida em alguma parte da
competncia passada, releia o caderno de estudos, faa alguns testes e pratique mais. Voc
tambm pode encontrar mais informaes buscando na internet. de vital importncia que voc
entenda bem todos os pontos apresentados anteriormente para poder continuar.
Ento, vamos comear com as Funes em PHP. O verdadeiro poder do PHP est em suas funes.
Existem mais de 700 funes j construdas e podemos fazer as nossas prprias funes
personalizadas.

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?

3.1.1 Criando Funes PHP


Uma funo precisa de um nome e de um bloco de cdigo que ser executado quando chamamos a

49

Competncia 03

funo pelo seu nome. Observe sua sintaxe bsica:


function nomeDaFuncao() {
bloco de cdigo;
}

Voc deve ter os seguintes cuidados quando for nomear uma funo:

Coloque um nome que reflete o que ela faz;


Nomes de funes podem comear com letras ou sublinhados, nunca por nmeros.
Evite utilizar caracteres especiais como cedilhas e letras acentuadas.

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.

Figura 49 Exemplo de uma funo e chamada de funo.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de criao e utilizao de uma funo e exibio de seu resultado no
navegador.

3.1.2 Adicionando Parmetros


Quando utilizamos funes para automatizar alguma tarefa, podemos precisar de parmetros.
Parmetros so como variveis que recebem um valor quando a funo executada. Normalmente,
esses parmetros so necessrios para a realizao da tarefa.

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.

Figura 50 Exemplo de passagem de parmetros para funes.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de criao e utilizao de mais de uma vez de uma funo com valores diferentes sendo passados nos parmetros.

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.

3.1.3 Retornando Valores


Utilizamos exemplos anteriormente em que a tarefa no d um resultado. Mas no exemplo da soma
de dois algarismos temos um resultado.
Podemos retornar um valor computado pela funo utilizando a palavra-chave return. Este
comando retorna o que estiver direita e encerra a funo.
A Figura 51 mostra um exemplo de retorno de funo. A funo calcula a soma de dois nmeros, $x
e $y. Ela deve escrever uma pgina com 2 + 2 = 4.

51

Competncia 03

Figura 51 Exemplo de retorno de uma funo.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de uma funo que recebe dois valores, soma e retorna o resultado.

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.

3.2.1 Mtodo GET


Este mtodo foi uma das primeiras formas de comunicao cliente/servidor via web. Ele utiliza a
URL do site para enviar dados.
Como vantagem, no precisa de um formulrio HTML, pode ser digitado diretamente no hiperlink.
No entanto, visvel para todos. Digitar senhas utilizando o mtodo GET invivel.
Como realizado o envio de dados por GET: www.meusite.com.br/index. php? nome=
fulano&idade=30
Depois da interrogao, so enviadas duas variveis com seus respectivos valores: nome = fulano,
idade = 30. O & separa uma varivel da outra.

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.

Figura 53 Pgina get.php que recebe os dados enviados e processa.


Fonte: Prprio autor (2016).
Descrio: Cdigo de exemplo de recepo da varivel nome pelo mtodo GET no PHP.

Na Figura 54 vemos o resultado do algoritmo e o endereo com o nome da varivel e o seu valor.

53

Competncia 03

Figura 54 Resultado no navegador. O endereo da pgina contm o nome.


Fonte: Prprio autor (2016).
Descrio: Captura de tela do navegador com o resultado do cdigo da Figura 51.

3.2.2 Mtodo POST


O mtodo POST utiliza um formulrio HTML para enviar a informao. A maioria dos formulrios
que voc utiliza na web, incluindo aqueles do AVA, utiliza este mtodo. As informaes passadas
por ele so invisveis ao usurio e ele tem uma capacidade virtualmente infinita de envio. Seu limite
definido pela configurao do PHP no servidor, que por padro de 8Mb. No entanto, pode ser
mais ou menos.
A forma de receber os dados muito parecida com o mtodo anterior, s que utilizamos
$_POST[varivel] para receber os dados.
Veja o exemplo na Figura 55. Nela temos um formulrio HTML comum, que envia os dados pelo
mtodo POST para uma pgina PHP, Figura 56. O resultado definido na Figura 57. Observe na URL
que os dados so enviados de forma invisvel.

Figura 55 Exemplo de um formulrio utilizando o mtodo POST.


Fonte: Prprio autor (2016).
Descrio: Cdigo HTML com um formulrio configurado para envido de dados pelo mtodo
POST.

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

Figura 57 Sada da pgina PHP. Observe a URL, no h dados.


Fonte: Prprio autor (2016).
Descrio: Captura de tela do navegador exibindo o resultado do cdigo da Figura 54.

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.

3.2.3 Varivel $_REQUEST


Os desenvolvedores do PHP implantaram a varivel $_REQUEST para os casos onde no se sabe o
mtodo de envio utilizado. Esta varivel d acesso s variveis dos dois formulrios, tanto GET
quanto POST.
Ela usada da mesma forma que $_GET e $_POST s que escrevemos $_REQUEST no lugar. Veja o
exemplo anterior utilizando $_REQUEST na Figura 58.

55

Competncia 03

Figura 58 Utilizao da varivel predefinida $_REQUEST.


Fonte: Prprio autor (2016).
Descrio: Cdigo PHP de recepo de dados sem diferenciao de mtodo.

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.

3.3 Include e Require


PHP nos d duas formas de inserir o contedo de outros arquivos PHP antes que o interpretador
execute nosso cdigo.
As duas formas de incluso so feitas atravs das palavras-chaves include e require. A nica
diferena entre eles est na forma como lidam com erros quando o arquivo que ser acrescido no
encontrado.
No caso do require o erro ser letal e a interpretao do compilador ir parar a execuo no ponto
do erro, enviando o cdigo e mensagem de erro.
No caso do include, a interpretao no para e emitido o aviso de erro no local em que acontece.

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.

Figura 59 Pgina menu.php.


Fonte: Prprio autor (2016).
Descrio: Cdigo que gera links de um menu.

Figura 60 Pgina que faz o include do contedo do arquivo menu.php.


Fonte: Prprio autor (2016).
Descrio: Cdigo que insere o cdigo de menu da figura 57 em outra pgina.

57

Competncia 03

3.4 Sesses PHP


Uma sesso PHP uma rea da memria que todas as pginas de sua aplicao compartilham. Ela
til para armazenar informaes do usurio e/ou estado da aplicao. J que todas as variveis so
apagadas com o fim do algoritmo, na sesso temos um lugar seguro para guardar variveis quando
o usurio pula de uma pgina para outra do nosso site.

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.

Figura 61 Inicializando uma sesso PHP.


Fonte: Prprio autor (2016).
Descrio: Cdigo que inicializa uma sesso PHP atravs da funo sessionn_start().

No exemplo da Figura 62 salvamos um valor na sesso atravs da varivel predefinida


$_SESSION[nomedavariavel] e a usamos da mesma forma como uma varivel comum.

58

Competncia 03

Figura 62 Salvando variveis na sesso e as usando.


Fonte: Prprio autor (2016).
Descrio: Cdigo de acrescenta uma varivel a sesso com um valor e recupera o valor desta varivel.

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.

3.5 Funo ISSET()


Perceba que nosso contador de pginas do exemplo anterior s conta uma pgina, o que no
muito bom. Vamos melhorar aprendendo uma funo muito til.
A funo isset() verifica se a varivel consta na memria. Se existir, retorna verdadeiro, se no,
falso.
Vamos melhorar nosso contador de pginas utilizando esta funo da forma como est na Figura
63. Se a varivel estiver na sesso, ela soma um, caso no estiver, coloca na sesso com o valor de
um.

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

4.Competncia 04 | Projeto: Incluindo, Alterando, Exibindo e Excluindo


Informaes
Se voc leu com ateno o caderno de estudo, fez tanto os exemplos quanto os exerccios e no
ficou com dvida, ento est preparado para iniciar esta nova competncia. Vamos usar o que
aprendemos at agora para construir um sistema da Universo Digital, para catalogar os corpos
celestes do Universo visvel. Mas no s utilizar o que foi visto, nosso sistema necessita da
persistncia dos dados em um banco de dados. Para isso, aprendemos em outra disciplina como
construir e manusear um banco de dados. Dessa forma, no iremos abordar esse assunto nesta
competncia. Outro assunto que no abordaremos tambm a marcao HTML e o estilismo em
CSS. Voc tambm precisa j ter algum conhecimento sobre isto. Para que no tenhamos que
perder tempo ser fornecido o HTML e CSS prontos. O que aprenderemos, ento, ser focado em
como o PHP se comunica com o banco de dados MySQL para incluir, alterar, excluir e recuperar
dados.
Primeiramente voc deve baixar no AVA o projeto base j iniciado, com o HTML e CSS j
construdos. A partir dele que montaremos nosso sistema.
Crie um banco de dados chamado universo, que deve possuir uma tabela chamada planetas,
com um campo "id", int(6) com auto incremento; um campo "nome", varchar(255); um campo
"tipo", varchar(10); um campo "tamanho" do tipo float; e, por fim, um campo "descricao" do tipo
text. Respeite os nomes dados e seus tipos para no aparecer erros desnecessrios. Veja a Figura
64.

Figura 64 phpMyAdmin exibindo os campos com seus tipos da tabela planetas.


Fonte: Prprio autor (2016).
Descrio: Exibio pelo phpMyAdmin do banco de dados planetas, com seus cinco campos: id, nome, tipo, tamanho e descrio.

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.

Figura 65 Arquivos do projeto base.


Fonte: Prprio autor (2016).
Descrio: rvore de arquivos e pastas do projeto base: pasta imagens com
as imagens, arquivo estilo.css com o estilo de apresentao e index.php
com o cdigo HTML inicial do projeto.

O projeto composto pelas seguintes pastas e arquivos, Figura 65:

images: pasta que guarda as imagens do modelo;


estilo.css: configuraes de exibio em CSS do modelo;
index.php: pgina inicial do sistema Universo Digital.

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

Figura 67 Pgina index.php.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra como deve ficar a pgina index.php depois que o cdigo inicial e final do arquivo for
removido para seus devidos arquivos.

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

Figura 68 Pgina planetas.form.php.


Fonte: Prprio autor (2016).
Descrio: Em destaque na imagem o cdigo a ser inserido, correspondendo as linhas de 14 at a 17.

Teste a pgina index.php e veja se o resultado foi igual ao da Figura 69.

Figura 69 Visualizao da pgina index.php no navegador.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra como deve ficar a pgina inicial do site Universo Binrio depois das modificaes.

4.2 Conectando ao MySQL


Para podermos incluir, excluir, alterar e listar dados de um banco de dados MySQL devemos nos

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.

Figura 70 Pgina conexo.php.


Fonte: Prprio autor (2016).
Descrio: A imagem exibe o cdigo necessrio para fazer a conexo com o banco de dados.

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

Figura 71 Pgina index.php, require do arquivo conexao.php.


Fonte: Prprio autor (2016).
Descrio: A imagem exibe o cdigo index.php com o require do arquivo conexao.php

4.3 Listando Dados


Fazemos ao MySQL pedidos. O pedido uma string comum que possui comandos MySQL. A funo
mysqli_query() recebe como argumento nossa string com o comando e envia pela conexo aberta.
Seu retorno o resultado da solicitao.
Vamos utilizar esta funo para pedir ao MySQL que nos envie uma listagem dos produtos que
esto em nosso banco. Como j passamos pelas competncias que mostram os comandos SQL, no
vamos nos focar nelas. Caso no se lembre, pegue seu caderno de estudos daquela competncia e
revise para poder continuar.
A pgina que vamos construir ir exibir o contedo da tabela planetas. Temos algumas informaes
fictcias para podermos testar nossa aplicao. Se voc no as tem, invente algumas.
Ento, abra nossa pgina planetas.form.php e salve ela com o nome de planetas.listar.php. Apague
o formulrio, vamos apenas listar os dados. A Figura 72 mostra o cdigo para listar os dados. O
cdigo est comentado para voc saber o que ordenado em cada passo.
Primeiramente utilizamos mysqli_query() para receber a listagem e guardamos na varivel
$listagem. Ento, exibimos algumas divs e o incio de uma tabela em HTML. Na parte das linhas da
tabela utilizamos um while para pegar cada linha da listagem, que armazenada, uma de cada vez,
na varivel $linha como um array associativo (sesso 3.9). A chave para cada valor da linha o

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

Figura 72 Pgina index.php com o cdigo para listar.


Fonte: Prprio autor (2016).
Descrio: A imagem foi montada para mostrar o incio do cdigo e seu final.

69

Competncia 04

A Figura 73 mostra o resultado no navegador.

Figura 73 Exibio do resultado no navegador.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o resultado no navegador depois das modificaes para recuperao no banco de
dados.

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.

Figura 74 Cdigo para exibio de mensagem de erro.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo para listagem e controle de erros.

70

Competncia 04

4.4 Incluindo Dados


Agora que podemos ver os dados no banco, vamos adicionar dados.
O processo muito parecido, mas antes teremos que receber dados do usurio. Precisaremos de
um formulrio que receber os valores dados pelo usurio.
O modelo j contm um formulrio em HTML que vamos modific-lo para nossas necessidades. Ele
vai servir tanto para incluir como para alterar os dados. O formulrio em HTML ir enviar os dados
pelo mtodo post para a pgina planetas.inserir.php que faremos mais a frente, ser nele que
conectaremos com o banco. Por agora, voc deve terminar a tag <form>, incluindo os parmetros
action e post, que est na pgina planetas.form.php. Observe o exemplo na Figura 75.

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.

Quando o usurio clica no boto de salvar, os dados so enviados para a pgina


planetas.inserir.php, faremos ela do incio sem reaproveitar cdigo. Crie a pgina e digite o cdigo
da Figura 76. O cdigo possui comentrio em texto cinza para ajudar a entender.

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.

Figura 76 Pgina planetas.inserir.php.


Fonte: Prprio autor.
Descrio: A imagem exibe o cdigo de recepo dos dados do formulrio HTML atravs do mtodo POST.

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.

4.5 Excluindo Dados


Para excluir uma linha em nosso banco de dados, antes de tudo, devemos receber qual ser esta
linha. Perguntar o cdigo ao usurio no seria prtico, j que ele teria que decorar o cdigo do
produto que gostaria de apagar. Ento, vamos acrescentar nossa listagem com dois links para cada
linha de dado: um link para excluir e outro para editar os dados.
A lgica simples, no link do boto vamos enviar pelo mtodo GET (sesso 4.2.1) o cdigo da linha
que iremos apagar para a pgina responsvel por isto. Depois de apagar no banco, faremos como
antes e redirecionaremos para a pgina de listagem para conferir se tudo foi feito a contento.
Vamos comear?
Primeiro iremos alterar nossa pgina de listagem um pouco. Preste bastante ateno, porque ser
necessrio repetir o processo para o link editar na prxima sesso. A Figura 77 mostra o que ser
alterado.

72

Competncia 04

Figura 77 Pgina planetas.listar.php, acrescente as linhas 45 e 57.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo para exibio das linhas de dados, que utiliza um lao while.

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

Figura 79 Pgina excluir_filme.php.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo que recebe uma varivel com o cdigo da linha a ser excluda, pelo mtodo
GET, exclui no banco e redireciona para a pgina de listagem.

A pgina planetas.excluir.php recebe a varivel id pelo mtodo GET. Montamos o pedido de


excluso em SQL acrescentando o contedo da varivel $id. Dessa forma, o MySQL saber qual
linha excluir e no vai apagar tudo. Enviamos o pedido pela conexo utilizando a funo
mysqli_query() e, se algo der errado, paramos o script e mostramos a mensagem de erro. Depois de
tudo feito corretamente, redirecionamos a exibio da pgina para planestas.listar.php.
O resultado ser a exibio da listagem sem a linha que foi apagada.

Agora a sua vez. Faa a excluso de estrelas.

4.6 Alterando Dados


Assim como excluir um registro, ou linha, no banco, precisamos saber com antecedncia qual
registro vamos editar. Vamos utilizar a mesma ideia utilizada na listagem para excluso. Na pgina
planetas.listar.php faa a modificao destacada na Figura 80.

74

Competncia 04

Figura 80 Modificao na pgina planetas.listar.php, esto nas linhas 43 e 55.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra as linhas que devem ser modificadas na listagem para incluir os links de Editar e
Excluir.

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

Figura 81 Pgina planetas.form.php modificada para o formulrio de incluir e atualizar.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo do formulrio temos alteraes nas linhas 53, 55, 56, 59, 60, 61, 63 e 65.

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

Figura 82 - Pgina planetas.alterar.php.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo PHP que faz a modificao no banco de dados.

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

5.Competncia 05 | Projeto: Emisso de Relatrios


Atualmente o PHP muito poderoso. Com o apoio de suas bibliotecas podemos editar imagens e
at gerar relatrio em PDF.
PDF, Portable Document Format, um formato de arquivo que foi desenvolvido pela Adobe
System. Seu objetivo era fornecer uma representao de documento que fosse independente de
qual aplicativo, hardware ou sistema operacional voc estivesse usando para visualizar.
Arquivos PDF podem conter texto, grficos e imagens que podem ser visualizados em qualquer
dispositivo de forma idntica.
Para que nossa aplicao PHP possa gerar relatrios em PHP, primeiramente precisamos baixar a
biblioteca que ir fazer o trabalho de transformar nossas informaes para esse formato.
Voc pode baixar em www.fpdf.org/. A Figura 83 mostra a pgina do FPDF.

Figura 83 FPDF Library.


Fonte: www.fpdf.gov (2016).
Descrio: Navegador exibe a pgina da biblioteca FPDF.

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

Figura 84 Pgina de downloads do FPDF.


Fonte: Prprio autor (2016).
Descrio: A imagem exibe o local do link para baixar o arquivo da biblioteca que est logo abaixo do nome da verso v1.81 (2015-12-20).

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.

Figura 85 Pasta da biblioteca do FPDF


Fonte: Prprio autor (2016).
Descrio: A imagem mostra a lista com pastas e arquivos da biblioteca FPDF.

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

Primeiramente vamos colocar os dois botes de impresso de relatrio. Na pgina


planetas.listar.php insira o cdigo destacado na Figura 86 perto do final do arquivo. Atente para o
local correto.

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

Figura 87 Pgina planetas.pdf.php.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra o cdigo completo para impresso do relatrio geral e individual utilizando a biblioteca
FPDF.

82

Competncia 05

Primeiramente, inclumos a biblioteca fpdf.php. Uma particularidade desta biblioteca o


tratamento parcial para codificao UTF-8. Devido a isso, os caracteres especiais devem ser tratados
com outra funo, para isso criamos a funo converte( ) que recebe como argumento o texto, trata
e devolve j recodificado adequadamente.
Criamos, ento, uma varivel $pdf, que ser nosso documento. Instanciamos com new FPDF(P,
pt, A4). Essas so as configuraes para o documento. O primeiro argumento refere-se ao
formato P. retrato, mas pode ser L para paisagem; o segundo argumento para a unidade de
medida, podendo ser cm centmetro, pt pontos, mm milmetros e in polegadas; o terceiro
argumento o tamanho do papel, temos A3, A4, A5, letter e legal.
Agora chamamos os mtodos do objeto para configurar o documento. Utilizamos o mtodo $pdf>AddPage(); para adicionar uma pgina e abaixo adicionamos a imagem logo.pb.png no PDF. Note
que devemos fornecer o endereo da imagem PATH ou URL. Outros parmetros que podemos
inserir so (na sequncia):
Image(string file [, float x [, float y [, float w [, float h [, string type]]]])

X: posio da imagem em relao ao eixo X.


Y: posio da imagem em relao ao eixo Y.
W: largura da imagem.
H: altura da imagem.
TYPE: tipo da imagem.

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');

Para dar um espaamento de 20 pontos entre uma linha e outra utilizamos


$pdf->ln(20);

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

$pdf->MultiCell(0, 20, texto de vrias linhas..., 0, 'J');

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');

Na ltima linha temos o envio do documento atravs de


$pdf->Output('relatorio.pdf', 'I');

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

Figura 89 Arquivo de relatrio individual criado pelo relatorio.php.


Fonte: Prprio autor (2016).
Descrio: A imagem mostra a exibio do relatrio individual no navegador Chrome.

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

Anda mungkin juga menyukai