Você está na página 1de 92

Programao para Web

Jean Eduardo Glazar

Curso Tcnico em Informtica

Programao para
Web
Jean Eduardo Glazar

IFES Instituto Federal do Esprito Santo


2011

Presidncia da Repblica Federativa do Brasil


Ministrio da Educao
Secretaria de Educao a Distncia

Instituto Federal do Esprito Santo


Este Caderno foi elaborado em parceria entre o Instituto Federal do Esprito Santo
e a Universidade Federal de Santa Catarina para o Sistema Escola Tcnica Aberta
do Brasil e-Tec Brasil.
Equipe de Elaborao
Instituto Federal do Esprito Santo IFES

Coordenao de Design Grfico


Andr Rodrigues/UFSC

Coordenao Institucional
Guilherme Augusto de Morais Pinto/IFES
Joo Henrique Caminhas Ferreira/IFES

Design Instrucional
Juliana Leonardi/UFSC

Coordenao Curso
Allan Francisco Forzza Amaral/IFES
Professor-autor
Jean Eduardo Glazar/IFES
Comisso de Acompanhamento e Validao
Universidade Federal de Santa Catarina UFSC

Web Master
Rafaela Lunardi Comarella/UFSC
Web Design
Beatriz Wilges/UFSC
Mnica Nassar Machuca/UFSC

Coordenao Institucional
Araci Hack Catapan/UFSC

Diagramao
Andr Rodrigues/UFSC
Brbara Zardo/UFSC
Juliana Tonietto/UFSC
Marlia C. Hermoso/UFSC

Coordenao do Projeto
Silvia Modesto Nassar/UFSC

Reviso
Jlio Csar Ramos/UFSC

Coordenao de Design Instrucional


Beatriz Helena Dal Molin/UNIOESTE e UFSC

Projeto Grfico
e-Tec/MEC

G553p Glazar, Jean Eduardo


Programao para web : Curso tcnico em informtica / Jean


Eduardo Glazar. Colatina: IFES, 2011.
102 p. : il.




ISBN: 978-85-62934-37-7

1. PHP (Linguagem de programao de computador). 2. Banco
de dados. 3. Sites da Web Desenvolvimento.
I. Glazar, Jean Eduardo. II. Instituto Federal do Esprito Santo. III. Ttulo.


CDD: 005.133

Apresentao e-Tec Brasil


Prezado estudante,
Bem-vindo ao e-Tec Brasil!
Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica
Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007,
com o objetivo de democratizar o acesso ao ensino tcnico pblico, na modalidade a distncia. O programa resultado de uma parceria entre o Ministrio da Educao, por meio das Secretarias de Educao a Distancia (SEED)
e de Educao Profissional e Tecnolgica (SETEC), as universidades e escolas
tcnicas estaduais e federais.
A educao a distncia no nosso pas, de dimenses continentais e grande
diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao
garantir acesso educao de qualidade, e promover o fortalecimento da
formao de jovens moradores de regies distantes, geograficamente ou
economicamente, dos grandes centros.
O e-Tec Brasil leva os cursos tcnicos a locais distantes das instituies de ensino e para a periferia das grandes cidades, incentivando os jovens a concluir
o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino
e o atendimento ao estudante realizado em escolas-polo integrantes das
redes pblicas municipais e estaduais.
O Ministrio da Educao, as instituies pblicas de ensino tcnico, seus
servidores tcnicos e professores acreditam que uma educao profissional
qualificada integradora do ensino mdio e educao tcnica, capaz de
promover o cidado com capacidades para produzir, mas tambm com autonomia diante das diferentes dimenses da realidade: cultural, social, familiar,
esportiva, poltica e tica.
Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Janeiro de 2010
Nosso contato
etecbrasil@mec.gov.br

e-Tec Brasil

Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de
linguagem e facilitar a organizao e a leitura hipertextual.
Ateno: indica pontos de maior relevncia no texto.

Saiba mais: oferece novas informaes que enriquecem o


assunto ou curiosidades e notcias recentes relacionadas ao
tema estudado.
Glossrio: indica a definio de um termo, palavra ou expresso
utilizada no texto.
Mdias integradas: sempre que se desejar que os estudantes
desenvolvam atividades empregando diferentes mdias: vdeos,
filmes, jornais, ambiente AVEA e outras.
Atividades de aprendizagem: apresenta atividades em
diferentes nveis de aprendizagem para que o estudante possa
realiz-las e conferir o seu domnio do tema estudado.

e-Tec Brasil

Sumrio
Palavra do professor-autor

Apresentao da disciplina

11

Projeto instrucional

13

Aula 1 A linguagem PHP


1.1 O que PHP?

15
15

1.2 Instalao

16

1.3 Sintaxe bsica

19

1.4 Como testar uma pgina em PHP

21

1.5 Variveis e tipos

23

1.6 Operadores

24

1.7 Estruturas de controle

25

1.8 Array

28

1.9 Funes

29

Aula 2 Recebendo dados do formulrio


2.1 Mtodos GET e POST

31
31

2.2 Obtendo e validando os dados

32

2.3 Upload de arquivos

36

2.4 Headers 39
Aula 3 Acesso, insero e listagem no
banco de dados MySQL
3.1 Criando o banco de dados

43
44

3.2 Conectando ao banco de dados

44

3.3 Inserindo dados

47

3.4 Listando os dados

52

3.4.1 Formulrio dinmico

54

Aula 4 Consulta, excluso e alterao no


banco de dados MySQL
4.1 Consultando no banco de dados MySQL

57
57

4.2 Excluindo no banco de dados MySQL

60

4.3 Alterando no banco de dados MySQL

62
7

e-Tec Brasil

Aula 5 Gerenciando sesses


5.1 Criando uma sesso

73
74

5.2 Manipulando as variveis de uma sesso

74

5.3 Excluindo a sesso

75

5.4 Caso de uso: autenticando usurios

75

5.4.3 Fazer logout

78

Aula 6 Caso de uso: aplicao utilizando o padro MVC


6.1 O que MVC?

e-Tec Brasil

79
79

6.2 Estrutura do MVC

80

6.3 Alterando nosso sistema para o MVC

81

Referncias

89

Currculo do professor-autor

90

Programao para Web

Palavra do professor-autor
Ol! Estudante!
um prazer t-lo conosco.
Apesar de se tratar de um curso a distncia, voc no est sozinho nesta jornada. importante que voc conhea toda a equipe envolvida neste curso:
coordenadores, professores especialistas, tutores a distncia e tutores presenciais, porque quando precisar de algum tipo de ajuda saber a quem recorrer.
Alm disso, temos nossa disposio um ambiente virtual cheio de recursos
que podem nos auxiliar neste processo.
A Educao a Distncia (EaD), pela sua caracterstica de amplitude e pelo uso
de tecnologias modernas, representa uma nova forma de aprender, respeitando sempre o ritmo de aprendizado de cada aluno.
Na EaD voc o grande responsvel pelo sucesso da aprendizagem. Seu
desempenho ser mais proveitoso medida que for resolvendo os exerccios
propostos e participando das discusses com os tutores e demais colegas de
curso. Aprender programao requer dedicao e tempo; portanto, organize
seu plano de estudo reservando um tempo todos os dias para os estudos,
para que as atividades no acumulem.
Desejo-lhe sucesso e dedicao!
Um grande abrao!
Prof. MSc. Jean Eduardo Glazar

e-Tec Brasil

Apresentao da disciplina
Nesta disciplina estudaremos programao para web sob o enfoque do servidor, ou seja, depois de enviado algum dado a partir de uma pgina em HTML.
Esta disciplina uma continuao de Fundamentos do Desenvolvimento
Web (FDW).
Vrias so as linguagens para criao de sistemas web. Vamos nos focar na
linguagem PHP, por ser uma linguagem de fcil aprendizado, comparada
com as demais, e bastante popular.
Como uma linguagem de programao, todos os conceitos aprendidos
at agora sero bastante utilizados. Tambm trabalharemos com banco de
dados, armazenando e manipulando as informaes via pginas web. Nesse
momento, ser muito til o conhecimento adquirido da disciplina Banco de
Dados (BD).
Por fim, veremos uma arquitetura para sistemas web como forma de organizarmos melhor as pginas de um sistema, com a finalidade de obtermos
produtividade no desenvolvimento e facilitarmos a manuteno posterior.
Lembre-se, a melhor forma de aprender programao praticando!

11

e-Tec Brasil

Projeto instrucional
Disciplina: Programao para Web (carga horria: 60 h).
Ementa: Linguagem para estilos. Metalinguagem. Construo de pginas
dinmicas. Integrao com banco de dados.

AULA

OBJETIVOS DE
APRENDIZAGEM

MATERIAIS

CARGA
HORRIA
(horas)

Caderno impresso.
Comparar as vantagens e desvantagens
do PHP em relao a outras linguagens.

1. A Linguagem
PHP

Instalar e configurar o ambiente de


desenvolvimento web.
Conhecer a sintaxe da linguagem PHP.
Construir pginas web com PHP.

Entender como os dados de um formulrio so manipulados em um servidor


com PHP.
2. Recebendo dados do formulrio

Aprender e exercitar o envio de um


arquivo para o servidor a partir de uma
pgina web.
Conhecer a forma de gerenciar as informaes de uma conexo com o servidor.

Ambiente Virtual de Ensino-aprendizagem (AVEA).


Sites dos programas de
instalao:
http://www.php.net/downloads
http://www.apache.org
http://www.wampserver.com
http://www.easyphp.org
http://netbeans.org

10

Caderno impresso.
Ambiente Virtual de Ensino-aprendizagem (AVEA).

10

Ambiente de programao web


(NetBeans).

Caderno impresso.
Conhecer como o PHP interage com o
banco de dados.
3. Acesso, insero
e listagem no
banco de dados
MySQL

Construir pginas web para inserir


dados em um banco de dados.
Construir pginas web para recuperar
informaes do banco de dados.

Ambiente Virtual de Ensino-aprendizagem (AVEA).


Ambiente de programao web
(NetBeans).

10

Gerenciador de banco de dados


(MySQL).

13

e-Tec Brasil

AULA

OBJETIVOS DE
APRENDIZAGEM

MATERIAIS

CARGA
HORRIA
(horas)

Caderno impresso.

4. Consulta, excluso e alterao no


banco de dados
MySQL

Aprender como realizar uma consulta


filtrando por determinado campo.

Ambiente Virtual de Ensino-aprendizagem (AVEA).

Aprender a excluir e a alterar um registro


no banco de dados a partir de pginas
web em PHP.

Ambiente de programao web


(NetBeans).

10

Gerenciador de banco de dados


(MySQL).
Caderno impresso.
Aprender para que serve uma sesso em
um sistema web e como program-la.
5. Gerenciando
sesses

Aprender a como utilizar a sesso para


autenticar usurios.
Construir pginas web para autenticar
os usurios.

6. Caso de uso:
desenvolvendo
uma aplicao
utilizando o padro
MVC

e-Tec Brasil

14

Conhecer o padro de desenvolvimento


de sistemas web MVC.
Construir um sistema web no padro
MVC.

Ambiente Virtual de Ensino-aprendizagem (AVEA).


Ambiente de programao web
(NetBeans).

10

Gerenciador de banco de dados


(MySQL).
Caderno impresso.
Ambiente Virtual de Ensino-aprendizagem (AVEA).

10

Ambiente de programao web


(NetBeans).

Programao para Web

Aula 1 A linguagem PHP


Objetivos
Comparar as vantagens e desvantagens do PHP em relao a outras linguagens.
Instalar e configurar o ambiente de desenvolvimento web.
Conhecer a sintaxe da linguagem PHP.
Construir pginas web com PHP.

1.1 O que PHP?


PHP uma linguagem que permite criar sites web dinmicos, fundamentada
nos dados submetidos pelo usurio e derivada dos dados contidos no banco de dados, que so alterados frequentemente. Vamos pegar o exemplo
de uma loja virtual. Os produtos esto sempre sofrendo alteraes, seja no
preo, na quantidade em estoque, nos produtos em promoes, nos lanamentos, etc. Hoje, quando voc entra em uma loja virtual, ver alguns produtos em promoo, outros em lanamentos, com um determinado preo.
Na prxima semana que voc visitar o site, pode ser que os preos estejam
mais baixos, por causa de novas promoes, ou aquele produto que voc
tinha visto no se encontre mais em estoque, j tenha sido vendido.
Passaremos a programar para web sob a viso do servidor. Para isso, utilizaremos a linguagem PHP. Como pr-requisito, necessrio o conhecimento
de HTML, principalmente de formulrio, que ser utilizado para enviar dados
para o servidor. Portanto extremamente importante que voc revise o contedo visto em Fundamentos do Desenvolvimento Web.
O cdigo PHP executado no servidor, sendo enviado para o cliente apenas
HTML. Dessa maneira possvel interagir com bancos de dados e aplicaes existentes no servidor, com a vantagem de no expor o cdigo fonte para o cliente.

Aula 1 A linguagem PHP

15

e-Tec Brasil

Pesquise sobre as outras


linguagens de programao
web e discuta com os colegas
e tutores, no ambiente virtual
de ensino-aprendizagem,
destacando as vantagens e
desvantagens de cada uma.

O PHP foi criado em 1995 por Rasmus Lerdorf com o nome de Personal Home
Page Tools (Ferramentas Para Pgina Pessoal), para auxiliar no desenvolvimento de pginas simples. Como teve boa aceitao e muitos programadores
utilizando-as, novas verses foram desenvolvidas com cada vez mais recursos.
Existem outras linguagens de programao que podemos utilizar para criar
as pginas dinmicas, como Java, Perl, ASP, etc.

1.2 Instalao
servidor web
um programa de computador
responsvel por aceitar pedidos
HTTP de clientes, geralmente
os navegadores, e servi-los
com pginas de respostas (em
HTML) incluindo dados, imagens,
sons e links. Esse programa
disponibiliza um local especfico
no computador servidor (site)
para armazenar e processar as
pginas de resposta.
Apache
o resultado de um esforo
coletivo de vrios colaboradores,
para o desenvolvimento de um
software gratuito, robusto e com
qualidade, para a implementao
de um servidor HTTP. o servidor
web mais usado no mundo.
capaz de executar cdigos em
PHP, Perl, Shell Script, ASP, dentre
outros. Sua utilizao mais
conhecida a que combina o
Apache com a linguagem PHP e
o banco de dados MySQL.

Para testar as pginas PHP, no basta dar um duplo clique nos arquivos.
php, como se faz com os .htm ou .html. necessrio ter um servidor web
configurado para isso. Um dos servidores web mais utilizados o Apache.

1.2.1 Instalao no Windows


Voc pode instalar o Apache e o PHP separados. Para isso basta pegar os
arquivos de instalao nos respectivos sites oficiais.
Porm, configuraes manuais devero ser feitas para os dois funcionarem
perfeitamente.
A forma mais fcil de instalar utilizar pacotes que instalam e configuram
todos os programas necessrios para o desenvolvimento de pginas web de
uma nica vez. Um conjunto muito utilizado consiste do Apache (servidor
web), MySQL (banco de dados) e PHP (linguagem para as pginas web
dinmicas), conhecido como AMP (inicial de cada produto). Quando esses
produtos so instalados no Linux, chamamos de LAMP. Quando so instalados no Windows, chamamos de WAMP.

1.2.2 Instalao no Linux (Ubuntu)


Para mais detalhes sobre o
Apache, acesse o site oficial:
http://www.apache.org
Os principais instaladores
so: WAMP5 (http://www.
wampserver.com) e EasyPHP
(http://www.easyphp.org).

Faa o download do Apache


e instale o software em seu
computador:
http://www.apache.org
Aps instalar o Apache, faa o
download do PHP e instale-o:
http://www.php.net/downloads

e-Tec Brasil

No Ubuntu tambm podemos instalar os programas separados, usando algum instalador, como o apt-get. Na mesma linha de comando possvel
instalar todos os pacotes necessrios, basta digitar:
sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server
libapache2-mod-auth-mysql php5-mysql
Nas verses mais novas do Ubuntu, tambm possvel instalar um pacote
com todos os programas. O comando :
sudo tasksel install lamp-server

16

Programao para Web

Depois da instalao ser necessrio reinicializar o Apache. Para isso digite:


sudo /etc/init.d/apache2 restart

1.2.3 Testando o ambiente


Em qualquer instalao, seja no Windows ou no Linux, um diretrio especfico
ser criado para colocar as pginas em PHP, chamado www. Quando o Apache
recebe uma solicitao para exibir uma pgina, ele ir buscar nesse diretrio.
No Windows, o diretrio www fica dentro do diretrio de instalao do
produto. Por exemplo, se voc usou o EasyPHP, o diretrio :

Para mais detalhes sobre


instalao no Linux: https://
help.ubuntu.com/community/
ApacheMySQLPHP

C:\Arquivos de programas\EasyPHP-5.3.2\www
O diretrio EasyPHP pode mudar de nome de acordo com a verso instalada.
No Linux, o diretrio :
/var/www
Podem ser criados subdiretrios dentro do diretrio www. at recomendado que se faa isso, para organizar melhor as pginas.
Para testar o ambiente, primeiro devemos verificar se os programas esto
em execuo. Voc pode configur-los para iniciar automaticamente, quando o computador for ligado, ou manualmente. Tanto o WAMP5 quanto o
EasyPHP colocam um cone prximo ao relgio que contm as opes para
inicializar (start) ou parar (stop) os processos. No WAMP5, o cone parecido
com um velocmetro de um carro. No EasyPHP, o cone o desenho de letra
E. Na Figura 1.1 vemos o exemplo do WAMP5 e na Figura 1.2 vemos o
exemplo do EasyPHP.

Figura 1.1: Exemplo do menu de opes do WAMP5


Fonte: WAMP5 (2010) instalado no Microsoft Windows XP

Aula 1 A linguagem PHP

17

e-Tec Brasil

Figura 1.2: Exemplo do menu de opes do EasyPHP


Fonte: EasyPHP 5.3.2 (2010) instalado no Microsoft Windows XP

Agora vamos criar um arquivo com extenso .php (teste.php, por exemplo)
na pasta base www. Abra-o com qualquer editor de texto e digite:
<?php phpinfo(); ?>
Salve-o e em seguida digite em seu navegador favorito o seguinte endereo:
http://localhost/teste.php.
teste.php o nome do arquivo PHP que voc criou. localhost significa que
o seu navegador ir procurar o arquivo no seu prprio computador, no diretrio www configurado na instalao. Na internet, como o servidor est em
outro local, substitui-se localhost pelo endereo web da empresa, como por
exemplo: http://www.empresaxyz.com.br/cadastro.php
Se a instalao estiver correta, uma tela com informaes sobre a configurao do PHP dever ser exibida, como indicado pela Figura 1.3 a seguir.

Figura 1.3: Instalao do PHP com sucesso


Fonte: EasyPHP 5.3.2 instalado no Microsoft Windows XP, exibido pelo Mozilla Firefox 3.5

e-Tec Brasil

18

Programao para Web

1.3 Sintaxe bsica


O cdigo do PHP embutido dentro de um arquivo HTML, quando for necessrio algum processamento pelo servidor. Depois que o servidor processar
o cdigo PHP, apenas o que for gerado em HTML ser enviado de volta para
o usurio; assim, o usurio no conseguir ver o cdigo em PHP, que ficar
apenas no servidor. A Figura 1.4 ilustra o funcionamento de uma pgina
web dinmica.
1
Navegador

HTTP

Executa

HTML
5

Mdulo PHP
Pginas .PHP

Banco de
Dados

Servidor Web
APACHE

Figura 1.4: Funcionamento de uma pgina dinmica PHP


Fonte: Equipe produo CEAD/IFES (2011)

Passo 1 O usurio em seu navegador solicita uma pgina em PHP, por


exemplo, consulta.php. Essa solicitao enviada pelo protocolo HTTP ao
servidor web da empresa (por exemplo, o Apache).
Passo 2 O Apache chama a pgina PHP que foi solicitada e a executa.
Passo 3 A pgina PHP pode ou no fazer acesso ao banco de dados.
Passo 4 Ao final da execuo do programa PHP, uma pgina de resposta
em HTML enviada ao Apache.
Passo 5 O Servidor web Apache repassa a pgina de resposta para o navegador que a solicitou, que a exibe.
Para diferenciar o cdigo PHP dentro da pgina em HTML, podem ser utilizados os delimitadores descritos na Figura 1.5 a seguir.
1) <?php
Comandos;
?>

2) <?
Comandos;
?>

3) <script
language=php>
Comandos;
</script>

4) <%
Commandos;
%>

Figura 1.5: Delimitadores de cdigo em PHP


Fonte: Elaborada pelo autor

Aula 1 A linguagem PHP

19

e-Tec Brasil

O primeiro delimitador da Figura 1.5 o padro. O segundo uma simplificao do primeiro. Esses so os mais usados. O terceiro segue o estilo de
scripts em HTML. O quarto segue o estilo do ASP.
Para utilizar a forma simplificada, bem como o estilo ASP, o arquivo de configurao php.ini deve ser alterado, pelos campos short_open_tags e asp_tags,
respectivamente.
A Figura 1.6 mostra a estrutura de uma pgina HTML com o cdigo PHP
embutido.

Figura 1.6: Exemplo de estrutura de uma programao de uma pgina em PHP


Fonte: Elaborada pelo autor

Pode haver vrios blocos de PHP misturados com vrios trechos de HTML.

1.3.1 Gerando cdigo em HTML


comando echo
a instruo que envia para a
pgina de sada, em HTML, as
informaes processadas em
PHP, podendo ser texto, nmeros
ou variveis. Essas informaes,
na maioria das vezes, so
mescladas com os comandos
HTML.

Como o cdigo PHP processado no servidor e apenas o HTML enviado


como resposta, utilizaremos o comando echo para gerar esse HTML. Veja o
exemplo da Figura 1.7 a seguir.

Figura 1.7: Exemplo de programa utilizando o comando echo


Fonte: Elaborada pelo autor

e-Tec Brasil

20

Programao para Web

1.4 Como testar uma pgina em PHP


Existem vrios editores de PHP. Dentre os gratuitos, recomenda-se o PHPEditor.
Porm, vamos utilizar um ambiente de desenvolvimento mais moderno, que
engloba vrias linguagens e que est sempre em atualizao, o NetBeans.
Para verificar se o seu NetBeans possui o mdulo PHP instalado, basta acessar Ferramentas->Plug-ins e verificar, na aba Instalado, se o PHP se
encontra ativado; seno, ative-o.

Para mais detalhes sobre


o NetBeans e para fazer o
download da sua instalao,
acesse: http://netbeans.org

Se no estiver na aba Instalado, procure-o na aba Plug-ins disponveis


e instale-o ( preciso estar conectado internet).
Todos os arquivos devem ser salvos com a extenso .php no diretrio www
da instalao do servidor web. Crie subdiretrios dentro do www para melhor organizar seus arquivos.
Os subdiretrios dentro do diretrio www devem ter permisso de gravao
e escrita.
O primeiro passo abrirmos o NetBeans e criarmos um novo projeto. Para
isso, realize os seguintes passos:
1. Clique em Arquivo > Novo Projeto.
2. Dentre as opes Categorias da janela aberta, escolha PHP. Dentro
de Projetos, escolha Aplicativo PHP. Clique em Prximo.
3. Escolha um nome para o projeto (por exemplo, MeuSitePHP).
4. Na Pasta de cdigos-fonte, escolha o diretrio www, ou algum
subdiretrio dentro deste, por exemplo, C:/Arquivos de Programas/
EasyPHP/www/ProgWeb. No Linux seria /var/www/ProgWeb. Clique em Finalizar.
Aps criarmos o projeto, ele passa a ser exibido na aba Projetos, que
fica no canto esquerdo do NetBeans. Para criar os arquivos em PHP, siga os
seguintes passos:

Aula 1 A linguagem PHP

21

e-Tec Brasil

1. Na aba de Projetos, clique com o boto direito do mouse no nome de


nosso projeto.
2. Escolha as opes Novo > Pgina da Web do PHP.
3. Escolha um nome para a pgina com a extenso .php (por exemplo,
PrimeiraPagina.php). Clique em Finalizar.
PRONTO!!! Voc j pode programar em PHP. A Figura 1.8 apresenta um
trecho da tela mostrada aps a realizao dos passos acima.

Figura 1.8: Criando uma pgina PHP no NetBeans


Fonte: NetBeans IDE 6.8 instalado no Microsoft Windows XP

Voc tambm pode, e deve, criar subdiretrios dentro do seu projeto, para
organizar melhor as suas pginas.
Uma arquitetura para
desenvolvimento web que
organiza a programao
das pginas de um sistema,
com o objetivo de aumentar
a produtividade e facilitar a
manuteno, ser vista na Aula 6.

Para criar subdiretrios no NetBeans, siga os passos:


1. Clique com o boto direito do mouse no nome do projeto.
2. Escolha as opes Novo > Diretrio.
3. Escolha um nome para o diretrio. Clique em Finalizar.
Quando for criar novas pginas PHP, clique em cima do diretrio no qual
deseja colocar as pginas.

e-Tec Brasil

22

Programao para Web

Depois de programar e salvar o arquivo, vamos test-lo. Para isso, abra seu navegador favorito e digite: http://localhost/nomedoarquivo.php, em que:
localhost corresponde ao seu computador local; e
nomedoarquivo.php nome que voc deu no seu arquivo PHP (no nosso
exemplo, PrimeiraPagina.php).
Se o servidor web estiver em outro computador, ento troque localhost pelo
IP (ou hostname) desse servidor.
Caso tenha criado subdiretrios, ento acrescente no endereo do navegador
os subdiretrios criados. Exemplo: http://localhost/ProgWeb/cadcliente.php
Nesse exemplo foi criado o subdiretrio ProgWeb e dentro dele foi colocada
a pgina cadcliente.php.

1.5 Variveis e tipos


As variveis em PHP no precisam ser declaradas. Quando atribumos algum
valor para elas, o tipo automaticamente reconhecido. Os tipos suportados so:
Inteiros (integer ou long);
Reais (float ou double);
Strings;
Array (vetores);
Objetos*.
* Como se trata de um curso bsico, a programao orientada a objetos em
PHP no ser vista.
Os nomes das variveis devem ser criados com um $ seguido de uma string
que deve ser inicializada por uma letra ou _. Exemplos:
$x = 10.4;
$frase = Exemplo de varivel string;
$_cont = 0;

Aula 1 A linguagem PHP

23

e-Tec Brasil

O PHP case sensitive, ou seja, letras maisculas so diferentes de minsculas. Portanto, para facilitar, criem as variveis sempre em minsculo.
Os comentrios podem ser de uma linha, utilizando o smbolo //, ou de mais
linhas, delimitado pelos smbolos /* e */. Exemplos:
$cont = 0; // Exemplo de comentrio de uma linha
/* Exemplo de comentrio com mais de uma linha. Preste ateno nos
smbolos delimitadores. */

1.6 Operadores
Os principais operadores em PHP esto descritos nos quadros a seguir: os
operadores aritmticos podem ser vistos no Quadro 1.4, os operadores
lgicos esto descritos no Quadro 1.5, os operadores de comparao
so mostrados no Quadro 1.6 e demais operadores importantes esto no
Quadro 1.7 a seguir.
Quadro 1.4: Operadores aritmticos
+

Adio

Subtrao

Multiplicao

Diviso

%
Mdulo (resto da diviso)
Fonte: Elaborado pelo autor

Quadro 1.5: Operadores lgicos


And

Or

Ou

Xor

Ou exclusivo

Negao

&&

||
Ou
Fonte: Elaborado pelo autor

e-Tec Brasil

24

Programao para Web

Quadro 1.6: Operadores de comparao


==

Igual a

!=

Diferente de

<

Menor que

>

Maior que

<=

Menor ou igual a

>=
Maior ou igual a
Fonte: Elaborado pelo autor

Quadro 1.7: Outros operadores importantes

Concatenao de strings

Atribuio

++

Incremento (soma 1)

-Decremento (subtrai 1)
Fonte: Elaborado pelo autor

1.7 Estruturas de controle


As estruturas de controle servem para controlar a ordem de execuo das
instrues de um programa. As principais so as de seleo e repetio.

1.7.1 Comandos de seleo


Os comandos de seleo servem para escolher um determinado bloco de
comandos a partir da avaliao de uma expresso. Os comandos de seleo
so: if (e suas variaes) e o switch.
Um bloco de comandos delimitado pelos smbolos: { e }.
if executa um bloco de comando caso a expresso seja verdadeira (se..
ento). Veja um exemplo na Figura 1.9.

Figura 1.9: Exemplo do comando if


Fonte: Elaborada pelo autor

if...else executa o primeiro bloco de comandos se a expresso for verdadeira e o bloco do else caso a expresso seja falsa. (se...ento...seno). A
Figura 1.10 mostra um exemplo.

Aula 1 A linguagem PHP

25

e-Tec Brasil

Figura 1.10: Exemplo do comando if...else


Fonte: Elaborada pelo autor

if...elseif...else o elseif utilizado quando vrias condies precisam ser


analisadas. Para cada elseif, uma nova expresso deve ser analisada. Quando todas as expresses forem falsas, ento o ltimo bloco else ser executado. Exemplo na Figura 1.11 a seguir.

Figura 1.11: Exemplo do comando if... elseif... else


Fonte: Elaborada pelo autor

switch funciona semelhante a vrios if juntos. Uma expresso ou varivel


analisada e, de acordo com o valor, um entre vrios blocos de comandos
executado. Diferentemente do if, cuja expresso somente retorna verdadeiro
ou falso, no switch o valor retornado pode ser diverso. A expresso comparada com cada uma das clusulas case at que uma coincida. Quando isso
acontece, o bloco de comandos correspondente executado at encontrar o
comando break, que interrompe a execuo daquele bloco e finaliza o switch. Se nenhuma clusula coincidir, ento o bloco delimitado pelo comando
default executado. Na Figura 1.12 temos um exemplo do switch.

Figura 1.12: Exemplo do comando switch


Fonte: Elaborada pelo autor

e-Tec Brasil

26

Programao para Web

1.7.2 Comandos de repetio


Os comandos de repetio servem para executar repetidas vezes o mesmo
bloco de comandos, at que uma condio de parada seja atingida. Os comandos so: while,do...while e for. A diferena entre eles est na condio de parada das repeties e no contador de iterao.
while a condio de parada testada no incio da iterao. Se for verdadeira, repete o bloco de comandos; se for falsa, interrompe as repeties.
Exemplo na Figura 1.13.

Figura 1.13: Exemplo do while


Fonte: Elaborada pelo autor

do...while funciona de maneira semelhante ao while; a diferena que


a condio testada depois do bloco de comandos. Isso garante que pelo
menos uma vez o bloco de comandos ser executado. Veja um exemplo na
Figura 1.14 a seguir.

Figura 1.14: Exemplo do do...while


Fonte: Elaborada pelo autor

for utilizado quando se conhece a quantidade total de iteraes ou


quando se pretende contar essas iteraes. Sua sintaxe :
for (inicializao; condio; incremento) { . . }
Em que:
Inicializao uma instruo de atribuio executada apenas uma
vez, no incio do lao. Geralmente utilizada para inicializar a varivel que
ir controlar o nmero de repeties do lao.
Condio a expresso que controla a parada das repeties. Se for verdadeira, o bloco de comandos executado novamente; se for falsa, termina.

Aula 1 A linguagem PHP

27

e-Tec Brasil

Incremento define a maneira como a varivel de controle do lao ser


alterada a cada vez que o lao for repetido. Ela executada ao final da
execuo de cada repetio do corpo do lao.
Veja exemplo na Figura 1.15 a seguir.

Figura 1.15: Exemplo do for


Fonte: Elaborada pelo autor

Atividades de aprendizagem 1.1: Crie um cdigo em PHP que exiba uma


sequncia de nmeros de 1 a 100. Os nmeros pares devem ser formatados
em negrito e os nmeros mpares em itlico.

1.8 Array
Os arrays so estruturas para armazenar valores que precisam ser indexados.
Diferentemente do C, em que os ndices so apenas nmeros inteiros e consecutivos, em PHP os ndices podem ser de vrios tipos. Mesmo se forem inteiros no precisam ser consecutivos. Os valores armazenados no precisam
ser do mesmo tipo. Veja um exemplo na Figura 1.16, onde print_r mostra
todos os elementos do array.

Figura 1.16: Exemplo do array


Fonte: Elaborada pelo autor

Perceba que podemos trabalhar com ndices diferentes em um mesmo array.


Outra forma semelhante para inicializar o array pode ser vista na Figura 1.17,
que idntica a da Figura 1.16 a seguir.

e-Tec Brasil

28

Programao para Web

Para mais detalhes sobre funes


para manipulao de arrays,
consulte:
SOARES, Walace. PHP 5:
conceitos, programao e
integrao com banco de dados.
3 ed. So Paulo: rica, 2007.

Figura 1.17: Outra forma de inicializar o array


Fonte: Elaborada pelo autor

Crie um array e preencha com alguns estados, indexados pela sigla, como
no programa na Figura 1.16. Faa uma funo que receba esse array e uma
sigla como parmetro e mostre o nome do estado.

1.9 Funes
As funes em PHP seguem o mesmo princpio das de outras linguagens. A
diferena que como no precisamos declarar os tipos, a lista de parmetros
possui apenas o nome das variveis. As funes que retornam valor tambm
no precisam informar o tipo de retorno. A sintaxe :
function nome_funo (lista de parmetros) { ... }
Para organizar melhor o cdigo, as declaraes das funes ficam dentro do
bloco <HEAD>, em uma pgina HTML. As chamadas das funes ficam no
<BODY>. Veja exemplos de funes na Figura 1.18 a seguir.

Figura 1.18: Exemplos de funes


Fonte: Elaborada pelo autor

Aula 1 A linguagem PHP

29

e-Tec Brasil

Por definio, a passagem de parmetros por valor. Caso se queira passar


os parmetros por referncia, para alterar uma varivel dentro da funo,
utiliza-se o smbolo & antes do parmetro. Veja a Figura 1.19 a seguir.

Figura 1.19: Exemplo de funo com passagem de parmetro por referncia


Fonte: Elaborada pelo autor

Com os conceitos e comandos aprendidos nesta aula possvel criar pginas


web bsicas em PHP. O conhecimento desses comandos de extrema importncia para os demais recursos que sero abordados nas prximas aulas.
Portanto, somente passe para a prxima aula se todos esses conceitos e
comandos foram entendidos e bem praticados.

Resumo
Leituras complementares:
SOARES, Walace. PHP 5:
conceitos, programao e
integrao com banco de dados.
3 ed. So Paulo: rica, 2007.
GUTMANS, Andi; BAKKEN, Stig
Saether; RETHANS, Derick.
PHP 5: programao ponderosa.
Rio de Janeiro: Alta Books, 2005.
Links interessantes:
http://www.php.net
http://www.apache.org
http://pt.wikipedia.org/wiki/PHP

Nesta primeira aula vimos como instalar e configurar o servidor web Apache
e o mdulo PHP. Aprendemos a sintaxe do PHP e com isso criamos nossa
primeira pgina web, ainda sem muitos recursos e sem interatividade. Na
prxima aula entenderemos como os dados de um formulrio so manipulados em um servidor com PHP, aprenderemos a enviar um arquivo para o
servidor a partir de uma pgina web e conheceremos a forma de gerenciar
as informaes de uma conexo com o servidor.

Atividade de aprendizagem
1. Pesquise nos livros os comandos para pegar a data do sistema. Faa uma
funo de saudao da sua pgina. Essa funo dever pegar a hora
corrente e mostrar na tela a mensagem abaixo, com sua respectiva formatao.

0 <= Hora < 12 BOM DIA (em vermelho)


12 <= Hora < 18 BOA TARDE (em verde)
18 <= Hora < 24 BOA NOITE (em azul)

e-Tec Brasil

30

Programao para Web

Aula 2 Recebendo dados


do formulrio
Objetivos
Entender como os dados de um formulrio so manipulados em
um servidor com PHP.
Aprender e exercitar o envio de um arquivo para o servidor a partir
de uma pgina web.
Conhecer a forma de gerenciar as informaes de uma conexo
com o servidor.
Aps o conhecimento da sintaxe dos comandos em PHP, vamos agora criar
as pginas dinmicas tratando as informaes obtidas de outras pginas,
como por exemplo, de formulrios.
A partir de um formulrio em HTML em um navegador, o usurio envia dados para uma pgina no servidor. Aprenderemos os comandos em PHP para
capturar esses dados e fazer sua validao.
extremamente importante que vocs revisem o contedo de formulrios
HTML vistos na disciplina Fundamentos do Desenvolvimento Web.

2.1 Mtodos GET e POST


Na definio de um formulrio em HTML, trs atributos sero importantes
para a criao de pginas em PHP no servidor: action, method e enctype.
Vejamos um exemplo na Figura 2.1 a seguir.

Figura 2.1: Exemplo de definio de um formulrio em HTML


Fonte: Elaborada pelo autor

Aula 2 Recebendo dados do formulrio

31

e-Tec Brasil

name nome do formulrio. til para referncia em funes javascript.


action arquivo no servidor que ser chamado para tratar os dados do
formulrio. A pgina em HTML com o formulrio ir passar os dados para
o programa PHP especificado por este campo.
method mtodo de envio de dados para o servidor. Dois tipos so permitidos GET e POST. Mais detalhes a seguir.
enctype define o formato de como os dados sero enviados para o servidor. Necessrio para o envio de arquivos, que ser tratado mais adiante.
Por enquanto, nem precisamos especificar nada. O exemplo acima mostra o valor padro, que pode ser omitido.
A diferena entre GET e POST est na forma como os dados so enviados
para o servidor. No mtodo POST, os dados so enviados ocultos. o mtodo
recomendado quando se utiliza formulrio.
J no mtodo GET, os dados so enviados de forma aberta, na URL, na forma do
par campo=valor. Para isso, utiliza-se o smbolo ? depois do nome do arquivo. Os pares campo=valor so separados pelo smbolo &. Essa forma de envio
utilizada quando temos poucas informaes a serem passadas, e elas podem
ser especificadas direto na URL. Utiliza-se principalmente quando queremos passar dados atravs de um link, sem os campos de um formulrio. Exemplo:
http://www.xxx.com/cons.php?nome=Joo&cidade=Colatina
Nesse exemplo foi utilizado o mtodo GET, que chama o programa cons.php,
passando o campo nome igual a Joo e o campo cidade igual a Colatina.
Um exemplo mais real pode
ser visto no site do Google.
Depois que voc fizer uma
pesquisa qualquer, verifique
o endereo que aparece.
Perceba que existem vrios
pares campo=valor que
so passados para o servidor,
mas que no tm formulrio
para digitar.

e-Tec Brasil

2.2 Obtendo e validando os dados


Para enviar dados para o servidor, vamos criar um formulrio como o da
Figura 2.2 a seguir. Preste ateno no nome de cada campo. Esse nome ser
usado no programa PHP. Veja tambm o atributo action do <FORM>, ele
informa o nome do arquivo PHP.

32

Programao para Web

Figura 2.2: Exemplo de formulrio para envio dos dados


Fonte: Elaborada pelo autor

Aula 2 Recebendo dados do formulrio

33

e-Tec Brasil

Seja passando os dados via POST ou GET, o programa no servidor para capturar e tratar os dados ser o mesmo. Os dados enviados para o programa
PHP sero transformados em um array, $_POST, se o mtodo de envio for o
POST, e $_GET, se o mtodo de envio foi o GET. Esses vetores so indexados
pelos nomes dos campos.
Se o mtodo de envio for o POST, os nomes dos campos sero aqueles informados no atributo name dos comandos HTML. Se o envio for por GET,
ento o nome dos campos sero aqueles especificados no endereo pelo
par campo=valor.
Vamos agora criar um arquivo PHP com o mesmo nome dado no action do
formulrio (no exemplo cadcliente.php). Nessa pgina, vamos capturar os dados enviados e mostrar uma pgina de resposta com esses dados. Para pegar
cada campo, devemos informar qual o array que contm os dados ($_POST ou
$_GET) e entre colchetes [ ] o nome do campo, definido no formulrio HTML.
Depois de pegar os dados, podemos verificar se foram preenchidos e se
esto corretos. Por exemplo: verificar se o campo foi preenchido, verificar
datas, validar CPF, verificar se o e-mail vlido, etc.
A Figura 2.3 mostra o cdigo que recebe os dados e verifica se alguns campos esto preenchidos; caso no estejam, mostra uma mensagem de erro e,
por ltimo, exibe na tela os dados informados. Mais adiante aprenderemos
a inserir esses dados no banco de dados.

e-Tec Brasil

34

Programao para Web

Figura 2.3: Pgina PHP que recebe os dados


Fonte: Elaborada pelo autor

A Figura 2.4 mostra a pgina exibida pelo programa acima, com os valores
digitados no formulrio.
Funes para validar datas,
CPF, e-mail, etc. so facilmente
encontradas na internet. Veja
alguns links:
http://codigofonte.uol.com.br/
codigos/php/validacao
http://www.revistaphp.com.br
http://www.criarweb.com/php
http://phpbrasil.com
http://www.codigofonte.net/
scripts/php.

Figura 2.4: Resultado do envio de dados


Fonte: Pgina exibida pelo Mozilla Firefox 3.5

Aula 2 Recebendo dados do formulrio

35

e-Tec Brasil

Note que os valores dos campos do tipo ComboBoxe ListBox so os valores


definidos no atributo value da opo escolhida (<option>) e no o nome
que aparece no formulrio. No exemplo acima, o estado ES.
O valor do campo do tipo RadioButton tambm o valor do atributo value. No exemplo acima, o sexo M ou F.
Campos do tipo CheckBox retornam true(verdadeiro) se foram marcados e
false (falso), caso contrrio.
Pesquise na internet as funes para validar data e CPF. Acrescente essas
funes ao programa da Figura 2.3 para validar nosso campo CPF e data de
nascimento. Informe as mensagens de erro em vermelho.

2.3 Upload de arquivos


Para enviar um arquivo para o servidor, como por exemplo uma foto, precisamos inserir um campo apropriado no formulrio. Esse campo exibe um
boto Procurar que abre a janela para escolher um arquivo. O comando :
<INPUT type=file name=nome_do_campo>
Para testar, vamos acrescentar um campo ao formulrio da Figura 2.2 para
fazer o upload de uma foto. Precisamos mudar a tag <FORM>, adicionando
o atributo enctype e colocar mais uma linha, depois da confirmao da
senha, para fazer o upload da foto. Os comandos alterados e acrescentados
esto na Figura 2.5 a seguir.
Para o upload funcionar necessrio acrescentar o atributo enctype dentro
da tag <FORM>, assim: enctype=multipart/form-data.

Figura 2.5: Formulrio com campo para upload de arquivo


Fonte: Elaborada pelo autor

e-Tec Brasil

36

Programao para Web

Quando o arquivo enviado para o servidor, vrias informaes so armazenadas em um vetor chamado $_FILES, como o nome, o tipo, o tamanho, etc. Para
obter esses dados, devemos informar o nome do campo entre colchetes, assim:
$arquivo = $_FILES[nome_do_campo];
A varivel $arquivo foi utilizada para receber o arquivo. A partir desse comando,
sempre que pretendermos trabalhar com o arquivo, utilizaremos a varivel $arquivo. Diversas informaes podem ser obtidas a partir dessa varivel, como:
cdigos de erros, se ocorrerem, tamanho, tipo e o nome temporrio do arquivo.
Se ocorrer algum erro no upload, o cdigo de erro fica armazenado no atributo error. O cdigo zero significa que no ocorreu nenhum erro. Para
obter esse cdigo, utilize o seguinte comando:
$arquivo[error]
As verificaes que podemos fazer so em relao ao tamanho, ao tipo do
arquivo, etc. No nosso exemplo, vamos verificar se o arquivo uma imagem
(gif, jpg, png, bmp) e se o tamanho menor que 100.000 bytes. Os comandos para pegar o tipo e o tamanho do arquivo, respectivamente, so:

$arquivo[type]

$arquivo[size]

O arquivo, propriamente dito, quando chega ao servidor, colocado em um


diretrio temporrio, configurado no arquivo php.ini. Para mover para o
diretrio definitivo, usa-se o seguinte comando:
move_uploaded_file($arquivo[tmp_name], destino)
em que:
$arquivo[tmp_name] pega o nome do arquivo temporrio; e
destino diretrio de destino do arquivo.
O diretrio de destino deve existir e com permisso para escrita.
Se a cpia for realizada com sucesso, esse comando retorna true. Caso ocorra algum erro, como por exemplo, o diretrio de destino no existe ou no
tem permisso de gravao, essa funo retornar false.

Aula 2 Recebendo dados do formulrio

37

e-Tec Brasil

A ltima etapa mostrar a foto que foi enviada. Para isso basta colocar a tag
<IMG> com o diretrio destino para onde o arquivo foi copiado. A Figura 2.6
mostra o trecho de cdigo para lidar com o upload do arquivo. Esse cdigo deve
ser colocado no programa da Figura 2.3, antes da parte que mostra os dados na
tela. A Figura 2.7 mostra o resultado do envio dos dados com a imagem.

Figura 2.6: Pgina PHP que trata um arquivo recebido


Fonte: Elaborada pelo autor

e-Tec Brasil

38

Programao para Web

Figura 2.7: Resultado do envio de dados com foto


Fonte: Pgina exibida pelo Mozilla Firefox 3.5

Teste o programa da Figura 2.6.

2.4 Headers
Os headers servem para o gerenciamento da conexo entre o PHP e o
navegador do usurio, podendo trocar informaes contidas no cabealho
HTTP de uma pgina.
Os headers so informaes trocadas entre o navegador e o servidor de
maneira transparente ao usurio, e podem conter dados sobre o tipo e a
verso do navegador, a pgina de onde partiu a requisio (link), os tipos de
arquivos aceitos como resposta, e uma srie de outras informaes.

Aula 2 Recebendo dados do formulrio

39

e-Tec Brasil

A sintaxe da funo header:


header(cabealho)
Em que: cabealho um comando j definido para indicar o tipo de cabealho HTTP a ser usado.
Por exemplo, o cabealho HTTP/ indica que um cdigo de retorno enviado para o navegador do cliente. O exemplo na Figura 2.8 mostra o envio de
uma mensagem de Pgina no encontrada:

Figura 2.8: Exemplo do envio de uma mensagem usando o header


Fonte: Elaborada pelo autor

Uma segunda forma de usar o header para redirecionar para outra pgina.
Esse comando muito til para, ao final de uma pgina puramente em PHP,
redirecionar para outra pgina padronizada de resposta ou de erro. Usa-se o
comando Location e logo em seguida o nome da pgina que se pretende
redirecionar. Veja um exemplo na Figura 2.9:

Figura 2.9: Exemplo de redirecionamento de pgina usando o header


Fonte: Elaborada pelo autor

O comando header deve ser usado antes de qualquer comando de exibio


(echo, tags HTML, include).
Usaremos o header mais adiante como forma de redirecionamento de pgina.
Com os conhecimentos desta aula voc tem a capacidade de criar pginas web
dinmicas, nas quais, a partir de um formulrio em HTML em um navegador, o
usurio possa enviar dados para um programa no servidor e receber uma mensagem. Esse fluxo de informao a base de todas as pginas web dinmicas.

e-Tec Brasil

40

Programao para Web

Resumo
Nesta aula programamos nossa primeira pgina dinmica com recebimento
e validao de dados. Tambm aprendemos a enviar um arquivo junto com
os dados. Porm, nossas pginas ainda no esto completas. Falta salvar os
dados para que eles no se percam. Para isso preciso acessar banco de
dados a partir no PHP, que ser nossa prxima Aula.

Atividade de aprendizagem
Acrescente no formulrio da Figura 2.2 mais um campo para fazer o upload
de um arquivo do tipo PDF, como se fosse o envio do currculo da pessoa.
Altere o programa da Figura 2.3 para receber esse arquivo, fazer as suas validaes (tipo e tamanho) e coloque um link para esse arquivo, com o nome
da pessoa, para quando clicar no link, abrir o arquivo PDF.

Aula 2 Recebendo dados do formulrio

41

Leituras complementares:
SOARES, Walace. PHP 5:
conceitos, programao e
integrao com banco de dados.
3 ed. So Paulo: rica, 2007.
GUTMANS, Andi; BAKKEN, Stig
Saether; RETHANS, Derick. HP 5:
programao ponderosa. Rio de
Janeiro: Alta Books, 2005.
MELO, Alexandre Altair de;
NASCIMENTO, Maurcio G. F.
PHP profissional. 2 ed. So
Paulo: Novatec, 2007.

e-Tec Brasil

Aula 3 Acesso, insero e listagem


no banco de dados MySQL
Objetivos
Conhecer como o PHP interage com o banco de dados.
Construir pginas web para inserir dados em um banco de dados.
Construir pginas web para recuperar informaes do banco de
dados.
At agora j aprendemos a criar pginas dinmicas que recebem e validam os
dados, mas essas informaes esto se perdendo. Precisamos armazen-las
em algum lugar. Esse local o banco de dados.
Como pr-requisito, fundamental que voc revise a linguagem SQL, estudada
na disciplina de Banco de Dados, por ser essa a linguagem universal dos bancos de dados. por meio dela que o PHP ir conversar com o banco de dados.
A maioria dos sites dinmicos acessa algum banco de dados. Em alguns
casos, somente para tarefas simples, como cadastrar usurios e senhas. Em
outros casos, o banco de dados vital para o funcionamento do sistema
web, como uma loja virtual.
Com o PHP podemos acessar diversos banco de dados, como o MySQL,
PostgreSQL, Oracle, SQL Server, Firebird, Sysbase, Informix, SQLite e outros
mais. Para os bancos de dados que o PHP no tem um mdulo especfico,
podemos utilizar os drivers ODBC.
Um dos bancos de dados mais utilizados com o PHP o MySQL. O PHP possui um mdulo especfico para esse banco. Utilizaremos o MySQL em nossos
exemplos por ser um banco simples de operar e utilizar pouco processamento e memria, em comparao com os outros.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

43

e-Tec Brasil

3.1 Criando o banco de dados


Antes de construir o site, devemos modelar os dados a serem manipulados
pelas pginas, porque assim teremos uma melhor viso das informaes a
serem acessadas em cada pgina. Veja a seo sobre Modelagem de Dados da disciplina Banco de Dados.
Para usarmos em nossos exemplos, vamos criar um banco de dados no MySQL
com o nome ProgWebBD e construir as tabelas descritas na Figura 3.1 a seguir.
Clientes
idClientes: INTEGER
Estados_sigla: CHAR(2) (FK)
nome: VARCHAR(100)
cpf: VARCHAR(14)
endereo: VARCHAR(100)
dtNasc: DATE
sexo: CHAR(1)
login: VARCHAR(20)
senha: VARCHAR(50)
cinema: TINYINT(1)
musica: TINYINT(1)
info: TINYINT(1)

Rel_01

Estados
sigla: CHAR(2)
nome: VARCHAR(50)

Figura 3.1: Tabelas a serem utilizadas nos exemplos


Fonte: Equipe produo CEAD/IFES (2011)

O campo idClientes do tipo autoincremento.


Os campos cinema, musica e info armazenam 1 se aquela opo foi marcada, e 0 caso contrrio.

3.2 Conectando ao banco de dados


Em uma pgina PHP, o primeiro passo conectar com o banco de dados.
Utilizaremos o comando mysql_connect para criar essa conexo.
A conexo a estrada por onde trafegaro os dados da sua pgina at o
banco de dados, e vice-versa.

e-Tec Brasil

44

Programao para Web

mysql_connect abre a conexo de uma pgina em PHP com o banco de


dados. Sua sintaxe :
mysql_connect(servidor, usurio, senha)
onde:
servidor IP (ou hostname) a porta do servidor onde est o banco
de dados, no formato servidor: porta. Se o banco de dados estiver no
mesmo computador, pode usar localhost. Se a porta no for informada,
ser utilizada a porta padro, que no MySQL a 3306.
Usurio e senha cadastrados no banco de dados.
Podem ocorrer alguns erros ao se tentar abrir a conexo. Os casos mais comuns so: no encontrar o servidor ou o usurio e a senha no terem permisso de acesso ao banco. Caso ocorra algum erro, o ideal seria mostrar uma
mensagem de erro e interromper a execuo da pgina, j que sem a conexo
no poderemos acessar o banco de dados. Para isso usaremos a funo die.
die funo que exibe uma mensagem e interrompe a execuo da pgina.
Sua sintaxe :
die(mensagem)
A mensagem pode ser concatenada com a funo mysql_error, que informa a mensagem original do erro. Exemplo:
die(Erro ao conectar. . mysql_error() );
O ponto . serve para juntar as duas mensagens, ou seja, ele o operador
que concatena strings.
O die pode ser usado junto com outra funo. Se der erro nessa funo, o
die chamado automaticamente. Utiliza-se o operador or para associar o
die a alguma funo. O exemplo abaixo chama a funo mysql_connect;
se der erro, automaticamente o die executado para mostrar a mensagem
e interromper a execuo da pgina.
mysql_connect(localhost,root,root) or die(Erro ao conectar. .
mysql_error() );

Aula 3 Acesso, insero e listagem no banco de dados MySQL

45

e-Tec Brasil

Caso a abertura da conexo ocorra normalmente, o segundo passo escolher o


nome do banco de dados que ser utilizado. Em um servidor de banco de dados
podem existir vrios bancos. Usaremos para isso a funo mysql_select_db.
mysql_select_db seleciona o banco a ser utilizado no servidor conectado
anteriormente. Sua sintaxe :
mysql_select_db(nome_banco)
Exemplo: Selecionar o banco de dados criado anteriormente para os exemplos.
mysql_select_db(ProgWebBD);
O programa da Figura 3.2 mostra o exemplo de conexo com o nosso banco
de dados de exemplo. O servidor de banco de dados MySQL est no servidor com IP 172.16.43.10, usurio root, senha root e o nome do banco
criado foi ProgWebBD.

Figura 3.2: Exemplo de conexo com o banco de dados


Fonte: Elaborada pelo autor

Cada pgina que necessitar acessar o banco de dados dever ter esses dois
comandos no incio.
Como um sistema web geralmente possui vrias pginas, replicar esses comandos no ser uma boa soluo. Caso tenha que mudar algum parmetro, como por exemplo o IP do servidor, todas as pgina sofrero modificaes. Um trabalho e tanto!
Para evitar esse trabalho de manuteno, colocam-se os comandos de conexo com o banco em um nico arquivo e todas as pginas fazem acesso a
esse arquivo utilizando o comando:

e-Tec Brasil

46

Programao para Web

include ou include_once
include insere pedaos de cdigos PHP de um determinado arquivo na
pgina atual.
include_once a diferena que este comando verifica se o arquivo j foi
inserido anteriormente, ou seja, insere somente uma nica vez.
Sua sintaxe :
include(nome_arquivo.php) ou
include_once(nome_arquivo.php)
Ento, o cdigo da Figura 3.2 ficar em um arquivo, por exemplo, conexaobd.php, e todas as outras pginas incluiro esse cdigo da seguinte forma:
include_once(conexaobd.php)
PRONTO!!! Uma vez conectado com o banco de dados, podemos realizar todas
as operaes para manipulao dos dados: inserir, pesquisar, alterar e excluir. O
que precisaremos saber para realizar essas operaes sobre a linguagem SQL.
Uma conexo estabelecida com o comando mysql_connect encerrada,
automaticamente, ao final da execuo da pgina. Caso queira encerr-la
antes disso, deve ser utilizado o comando mysql_close.
mysql_close fecha a conexo com o banco de dados. Sua sintaxe :
mysql_close(identificador)
em que: identificador a varivel que indica a conexo criada. Se o identificador no for fornecido, a ltima conexo estabelecida ser encerrada.

3.3 Inserindo dados


A linguagem padro de comunicao com os bancos de dados a linguagem SQL. Para fazer com que o PHP execute os comandos SQL no banco de
dados MySQL, utiliza-se a funo mysql_query.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

47

e-Tec Brasil

mysql_query funo que executa um comando SQL no banco de dados


MySQL. Retorna verdadeiro (true) em caso de sucesso e falso (false) caso
contrrio. Sua sintaxe :
mysql_query(comando, conexao)
em que:
comando o comando na linguagem SQL, como: INSERT, SELECT,
UPDATE, DELETE, etc.
conexo parmetro opcional que indica a conexo com o banco de
dados. Se no for informada, utiliza a ltima conexo aberta.
Portanto, para inserir os dados no banco, o comando em SQL que utilizado
o INSERT. Para testarmos, vamos criar duas pginas: uma em HTML com o
formulrio para digitar os dados e a outra em PHP, que ir receber os dados,
verificar se esto corretos e depois inserir no banco.
O formulrio conter os mesmos campos que a tabela Clientes do nosso
banco de dados de teste da Figura 3.1. Esse formulrio ser o mesmo utilizado na Figura 2.2, da Aula 2, com a incluso de mais um campo para o login,
chamado txtLogin. Esse formulrio enviar os dados para a pgina em PHP
no servidor chamada cadclientebd.php (atributo action da tag <FORM>).
O programa em PHP no servidor ser semelhante ao programa da Figura
2.3, da Aula 2. A diferena ficar por conta da incluso dos dados no banco,
ao invs de mostrar os dados na pgina. Para isso, vamos criar uma varivel
($sql) que receber o comando INSERT com os dados do formulrio. Logo
aps, essa varivel ser passada para o mysql_query.
Na sintaxe do INSERT, a parte do VALUES em que passamos os valores para
o banco de dados. nesse ponto que usaremos as variveis com os valores
obtidos dos formulrios. A Figura 3.3 apresenta este comando:

Figura 3.3: Exemplo de montagem do comando SQL


Fonte: Elaborada pelo autor

e-Tec Brasil

48

Programao para Web

Lembre-se que na linguagem SQL, os campos do tipo string e data devem


estar entre aspas simples ( ). No exemplo acima, os campos $cinema, $musica e $info no esto entre aspas porque so do tipo inteiro.
Logo em seguida chamaremos o comando em PHP para executar esse SQL no
banco de dados. Esse comando o mysql_query e pode ser visto na Figura 3.4.
Figura 3.4: Exemplo de chamada para executar o comando SQL no MySQL
Fonte: Elaborada pelo autor

Os campos no banco de dados do tipo autonumerao (ou autoincremento) no devem ser passados para o comando INSERT.
Verifique que em nossa tabela de exemplo, o campo idClientes um campo
autoincremento e ele no foi passado para o INSERT.
Caso queira obter o ltimo nmero inserido de um campo autoincremento, utiliza-se a funo mysql_insert_id.
mysql_insert_id retorna o ltimo nmero inserido de um campo do tipo
autoincremento. Sua sintaxe :
mysql_insert_id(conexao)
em que: conexo um parmetro opcional que indica a conexo com o
banco de dados. Se no for informada, utiliza a ltima conexo aberta.
Em nosso exemplo, poderamos criar a varivel $cod para receber o cdigo
do cliente inserido, conforme exemplo na Figura 3.5 a seguir.
Figura 3.5: Obtendo o ltimo cdigo autoincremento inserido
Fonte: Elaborada pelo autor

Os campos do formulrio do tipo checkbox enviam para a pgina PHP o valor


true se estiverem marcados e (vazio) se no estiverem marcados. Portanto,
antes de passar essa varivel para o comando INSERT, devemos substituir o
(vazio) por zero, j que em nosso banco esses campos armazenam 0 ou 1.
O valor true corresponde ao 1; portanto, no teria problema ao passar para o SQL.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

49

e-Tec Brasil

Os comandos para substituir o (vazio) por zero pode ser visto na Figura 3.6:

Figura 3.6: Substituindo o (vazio) por zero


Fonte: Elaborada pelo autor

3.3.1 Inserindo datas no banco


O MySQL trabalha com o tipo data no formato americano, ou seja, ano-ms-dia. Portanto preciso converter o nosso formato de data (dia-ms-ano)
para o formato americano, antes de passar a data para o comando INSERT.
Admitindo que a data recebida esteja no formato dd/mm/aaaa, separam-se os campos dia, ms e ano utilizando a funo substr.
substr retorna uma parte de uma string. Sua sintaxe :
substr(texto, pos_inicial, tamanho
onde:
texto string original.
pos_inicial posio onde inicia o pedao da string que se deseja. A
primeira letra est na posio zero.
tamanho da substring a partir da posio inicial.
Logo, o dia o pedao da data que inicia na posio 0 e tem tamanho 2. O ms
o pedao da data que inicia na posio 3 e tem tamanho 2. O ano o pedao
da data que inicia na posio 6 e tem tamanho 4. O exemplo da Figura 3.7 mostra o cdigo em PHP, em que $dtNasc a varivel com a data a ser modificada.

Figura 3.7: Exemplo de separao dos campos de uma data


Fonte: Elaborada pelo autor

Em seguida, concatenam-se os campos no formato desejado, no nosso caso


ano-ms-dia, como mostrada na Figura 3.8 a seguir.
Figura 3.8: Concatenando a data no padro do MySQL: ano-ms-dia
Fonte: Elaborada pelo autor

e-Tec Brasil

50

Programao para Web

Podemos tambm verificar se essa uma data vlida. Para isso, usa-se o
comando checkdate.
checkdate retorna verdadeiro (true) se a data vlida e falso (false) caso
contrrio. Sua sintaxe :
checkdate(mes, dia, ano)
Para testar nossa data, o exemplo ficaria conforme Figura 3.9 a seguir.

Figura 3.9: Funo que verifica se uma data vlida


Fonte: Elaborada pelo autor

O programa da Figura 3.10 mostra todo o cdigo da pgina cadclientebd.php,


que recebe os dados do formulrio, verifica se os campos esto corretos, converte e verifica a data e depois insere no banco de dados.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

51

e-Tec Brasil

Figura 3.10: Pgina em PHP que insere os dados do cliente no banco


Fonte: Elaborada pelo autor

Crie a tabela Produtos no banco de dados MySQL com os seguintes campos:


idProduto inteiro autoincremento (chave primria)
descrio varchar(100)
preo float
qtdeEstoque inteiro
dataValidade date
Crie o formulrio para entrar com esses dados e a pgina em PHP para receber, validar e inserir os dados no banco de dados.

3.4 Listando os dados


Aps inserir os dados no banco, temos a possibilidade de recuper-los e
mostr-los para o usurio. O comando em SQL que faz isso o SELECT.
O comando em PHP para recuperar os dados o mesmo usado no inserir, o
mysql_query. O que muda o comando SQL passado para o banco, que
agora o SELECT.
O retorno de um SELECT no banco um conjunto de registros. Precisamos
percorrer todos esses registros, pegando o primeiro, passando para o prximo, e assim por diante at ao ltimo. O comando em PHP que faz isso
o mysql_fetch_assoc.

e-Tec Brasil

52

Programao para Web

mysql_fetch_assoc retorna um registro de uma consulta e aponta para


o prximo registro. Retorna false quando no existir mais registros, ou seja,
quando chegar ao ltimo. Retorna o registro em forma de array, em que os
ndices so os nomes das colunas da tabela no banco de dados. Sua sintaxe :
mysql_fetch_assoc(identificador)
em que: identificador o resultado do SELECT, ou seja, o conjunto de registros.
Como o mysql_fetch_assoc retorna um registro por vez, e para quando
chegar ao ltimo (false), podemos coloc-lo como condio de parada em
um comando while, para percorrer todos os registros.
O registro retornado a cada lao do while guardado em uma varivel do
tipo array. Cada posio do array um campo da tabela. Para pegar o
valor, usa-se como ndice do array o nome do campo definido na tabela
do banco, desta forma:
$variavel_registro[nome_campo]
O nome do campo deve ser o mesmo usado no banco de dados. Letras maisculas so diferentes de minsculas.
Para saber o total de registros retornados por uma consulta ao banco, usamos o comando mysql_num_rows.
mysql_num_rows retorna a quantidade de registros da ltima consulta
ao banco. Sua sintaxe :
mysql_num_rows(identificador);
em que: identificador o resultado do SELECT, ou seja, o conjunto de registros.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

53

e-Tec Brasil

O programa da Figura 3.11 mostra o exemplo de uma pgina que consulta


todos os dados da tabela Clientes, do nosso banco de dados de teste. Para
cada registro obtido, uma linha de uma tabela em HTML criada para mostrar os resultados. Perceba que dentro do while ficam apenas os comandos
para criar uma linha da tabela (<TR>). Os comandos para abrir e fechar a tabela ficam antes e depois do while, respectivamente (<TABLE> e </TABLE>).
A primeira linha da tabela, com os nomes dos campos, tambm fica fora do
while, porque no pode ser repetida.

Figura 3.11: Pgina em PHP que exibe todos os clientes


Fonte: Elaborada pelo autor

3.4.1 Formulrio dinmico


O procedimento de listar todos os registros pode ser til quando queremos preencher algum objeto da pgina com os dados da tabela, como por exemplo,
preencher as opes de um combobox a partir do banco de dados. Nesse caso,
o formulrio dinmico, porque qualquer alterao no banco de dados, automaticamente, refletida no formulrio. Situaes nas quais isso pode ocorrer
so inmeras, como: preencher um combobox com todos os cursos cadastrados
no banco; ou exibir as opes cadastradas no banco de dados para que um
cliente possa escolher a cor de um produto; ou selecionar uma das cidades cadastradas para realizar a prova de um concurso; e assim por diante.
Todos esses exemplos podem ser obtidos com o procedimento do programa da Figura 3.11. Dentro do while que ficam os comandos HTML para
cada opo desejada.

e-Tec Brasil

54

Programao para Web

Como exemplo, vamos mostrar como preencher o combobox do campo


listEstado do nosso formulrio da Figura 2.2, da Aula 2. Naquele formulrio, as opes foram definidas no prprio cdigo HTML. Vamos agora ler
os estados a partir do nosso banco de dados.
Utilizaremos o programa da Figura 3.11 dentro do formulrio da Figura 2.2,
da Aula 2, na regio onde montado o combobox listEstados. Nosso SELECT
ser na tabela Estados (veja Figura 3.1). Dentro do while vamos colocar os
comandos para criar as opes do combobox, que o <OPTION>. Para cada
registro da tabela ser criado um comando <OPTION>, mostrando o nome do
estado. Para o atributo value, ser usada a sigla do estado. Quando o usurio
escolhe uma opo de um combobox, apenas o atributo value enviado para
o servidor; em nosso caso, somente a sigla do estado ser enviada. A Figura
3.12 mostra o trecho de programa alterado do formulrio para cadastro.

Figura 3.12: Montando um formulrio dinmico


Fonte: Elaborada pelo autor

Toda pgina que contiver cdigos em PHP deve ter a extenso .PHP. Portanto, o formulrio de cadastro de clientes que antes era apenas HTML, deve ser
renomeado para a extenso PHP.
Antes de testar, voc deve preencher a tabela Estados com algumas informaes.
Com o conhecimento adquirido at agora, voc capaz de criar sites que
armazenam dados em um banco de dados. Voc tambm tem a capacidade
de recuperar as informaes do banco de dados e mostr-las para o usurio.
A grande maioria dos sites utiliza algum banco de dados para manipular as
informaes. Vimos um exemplo com o banco de dados MySQL, mas voc
pode trabalhar com qualquer banco de dados.

Aula 3 Acesso, insero e listagem no banco de dados MySQL

55

e-Tec Brasil

Essa a base de toda a interao de pginas web com o banco de dados.


Portanto, pratique! Teste os exemplos apresentados e faa os exerccios propostos. A prxima aula depender muito destes conceitos. Somente passe
para a prxima aula quando no existir mais nenhuma dvida.

Resumo
Leituras complementares
DAVIS, Michele E.; PHILLIPS,
Jon A. Aprendendo PHP e
MySQL. Rio de Janeiro: Alta
Books, 2008.
MILANI, Andr. Construindo
aplicaes web com PHP e
MySQL. So Paulo: Novatec,
2010.
NIEDERAUER, Juliano.
Desenvolvendo websites com
PHP. 2 ed. So Paulo: Novatec,
2004.

Nesta aula aprendemos a conectar com o banco de dados e a realizar as


operaes para inserir e listar dados. Para realizar essas operaes, vimos
exemplos de pginas web dinmicas com os comandos PHP. Na prxima aula
continuaremos trabalhando com bancos de dados. Aprenderemos a alterar
e excluir dados do banco.

Atividades de aprendizagem
1. Crie uma pgina em PHP para listar todos os produtos da tabela criada na
terceira Atividade de aprendizagem ( Atividade 3.1) desta aula.
2. Crie a tabela Vendas no banco de dados MySQL com os seguintes campos:

WELLING, Luke; THOMSON,


Laura. PHP e MySQL:
desenvolvimento web. 3 ed. Rio
de Janeiro: Elsevier, 2005.

idVenda inteiro autoincremento (chave primria)


idCliente chave estrangeira da tabela Clientes
idProduto chave estrangeira da tabela Produtos
qtdeVendida inteiro
preoTotal float
dataVenda date
formaPagto inteiro (pode ser chave estrangeira de outra tabela com
as formas de pagamento)
Crie o formulrio para entrar com os dados de uma venda. Preencha um
combobox com todos os clientes cadastrados e outro com os produtos.
Lembre-se de colocar no atributo value o id do cliente e do produto. Os
demais campos sero do tipo texto.
Se a forma de pagamento estiver em uma tabela separada, coloque um
combobox para ela tambm.
Depois crie uma pgina em PHP para receber os dados do formulrio e inserir
na tabela Vendas

e-Tec Brasil

56

Programao para Web

Aula 4 Consulta, excluso e alterao


no banco de dados MySQL
Objetivos
Aprender como realizar uma consulta filtrando por determinado
campo.
Aprender a excluir e a alterar um registro no banco de dados a
partir de pginas web em PHP.
Vamos continuar interagindo com o banco de dados. Como pr-requisito,
fundamental que vocs tenham assimilado o contedo da aula anterior; sem
ele no ser possvel se conectar com o banco de dados.

4.1 Consultando no banco de dados MySQL


Em muitas situaes, listar todas as informaes de uma tabela do banco de
dados no uma boa opo. Tabelas que possuem grande quantidade de
dados aumentam o trfego da internet para trazer todas essas informaes
para a pgina.
Vamos aprender agora como filtrar os dados de um consulta. Podemos realizar uma consulta no banco de dados escolhendo qualquer um dos campos
para pesquisar, ou uma combinao deles. Por exemplo, podemos listar todos os clientes que nasceram em um determinado ms, ou listar todos os
funcionrios com salrio maior que um determinado valor, ou ainda, listar
todas as vendas do ltimo ms que ainda no foram pagas.
Para selecionar determinadas informaes do banco de dados, usaremos
a clusula WHERE dentro do SELECT, como vocs j viram na disciplina de
Banco de Dados. O que veremos aqui como pegar os campos de um
formulrio para fornecer como limite para a consulta e exibir a resposta na
mesma pgina.
Ento, a nossa pgina ter o formulrio em HTML para a consulta, e outra
parte com o cdigo em PHP para exibir o resultado, que pode ser em forma
de tabela.

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

57

e-Tec Brasil

Como exemplo, nosso formulrio ter um combobox para escolher o tipo de


consulta, chamado comboTipo. As opes sero por nome ou por ms de
aniversrio. Ter tambm um campo para digitarmos o valor que queremos pesquisar, chamado txtPesquisa. Ao enviar os dados, esse formulrio chamar a
mesma pgina, para que o PHP possa exibir os dados da pesquisa. Portanto o
atributo action do <FORM> apontar para o mesmo arquivo. O programa da
Figura 4.1 mostra essa pgina, que chamaremos de pesqclientes.php.

Figura 4.1: Programa de um formulrio para pesquisar os clientes (pesqclientes.php)


Fonte: Elaborada pelo autor

Quando o usurio clicar no boto Enviar, os dados para pesquisar sero enviados para a mesma pgina, que agora executar o PHP na parte de baixo
e mostrar o mesmo formulrio, mais a tabela de resposta.
Porm, na primeira vez que chamarmos essa pgina, o PHP no pode ser
executado. Ele somente ser executado da segunda vez em diante, ou seja,
quando ele receber os dados para a pesquisa. Para distinguir quando uma
pgina est recebendo uma informao ou no, usaremos o comando isset.
isset retorna verdadeiro (true) se uma certa varivel j foi declarada, e falso
(false), em caso contrrio. Sua sintaxe :
isset(variavel)
Na primeira vez que a pgina chamada, no temos nenhuma varivel. Na segunda vez em diante, a pgina recebe as variveis comboTipo e txtPesquisa
do formulrio (via mtodo POST ou GET). Podemos utilizar qualquer uma dessas
duas variveis para testar quando o PHP ser executado.
Dentro do PHP, obtm-se o tipo de pesquisa que ser feita, por nome ou por
ms (comboTipo), e monta-se o SQL correspondente com o valor digitado em
txtPesquisa. O resultado mostrado em forma de tabela. O programa da Figura 4.2 mostra o cdigo completo da pgina de pesquisa pesqclientes.php.
e-Tec Brasil

58

Programao para Web

Figura 4.2: Programa de uma pgina para pesquisar os clientes (pesqclientes.php)


Fonte: Elaborada pelo autor

Quando a pesquisa com um campo do tipo string, como o nome do exemplo anterior, usa-se a palavra LIKE no lugar da igualdade, dentro da clusula
WHERE do SELECT. O smbolo % dentro do valor a ser pesquisado serve
como curinga. Significa que pode vir qualquer caracter naquela posio. O
exemplo anterior busca no banco de dados qualquer cliente que comea
com o valor digitado pelo usurio.
O que muda de uma pesquisa para outra so os campos e as tabelas do
banco de dados, como, por exemplo, pesquisar produtos, vendas, locaes,
reservas, etc. Portanto, as modificaes no cdigo para realizar outro tipo de
pesquisa seriam alterar o SELECT e a forma de exibir os dados.
Crie uma pgina em PHP para pesquisar os produtos da tabela criada na
Atividade de aprendizagem da aula 3. Voc deve permitir pesquisar pela
descrio, cdigo e data de validade.

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

59

e-Tec Brasil

4.2 Excluindo no banco de dados MySQL


Na grande maioria dos sistemas, no se usa muito excluir informaes do
banco de dados, porque isso faz com que a empresa perca o histrico dos
dados. O que se faz colocar um campo na tabela que informa o estado
da informao como, por exemplo: ativo, inativo, em andamento,
finalizado, aguardando resposta, etc.
Em vez de excluir o cliente do banco de dados, a empresa pode apenas
mudar seu estado para inativo, para que no futuro possa realizar alguma
campanha para recuperar os clientes perdidos.
Mesmo no sendo muito utilizado, em algumas situaes pode ser necessrio excluir informaes do banco. Ento vamos aprender a fazer isso: para a
operao de excluir do banco, mais uma vez o que muda o comando SQL.
Os comandos em PHP so os mesmos: abrir a conexo, selecionar o banco e
executar o comando SQL.
Na maioria dos sistemas, ao excluir, necessrio conhecer pelo menos um
dado da tabela. Dificilmente iremos excluir vrios dados de uma vez. O ideal
seria obter a informao que corresponde chave primria da tabela, por ser
uma informao nica. Uma das formas de fazer isso usar algum mecanismo de pesquisa para escolher a informao a ser pesquisada.
Em nosso exemplo, vamos utilizar a pgina j criada de pesquisa. Na tabela
que exibe as informaes, podemos colocar em cada linha uma palavra, uma
imagem ou algum outro objeto que, quando clicado, chama a pgina em
PHP para excluir. A Figura 4.3 mostra a pgina resultante da pesquisa com
uma imagem que corresponde operao de excluir.
Para facilitar a visualizao da imagem, alguns campos da tabela de resultados foram omitidos. Para o seu teste, use todos os campos da tabela.
Essa imagem possui um link (tag <A> do HTML) que aponta para a pgina
do excluir, chamada em nosso exemplo de excluircliente.php. Em cada
imagem devemos passar o cdigo da informao que ser excluda. Usaremos o mtodo GET para envio de informaes para a outra pgina (vejam
a seo 2.1). O dado que passaremos ser o cdigo do cliente. Essa varivel
ser chamada de codigo. O programa da Figura 4.4 mostra a pgina
pesqclientes.php alterada para adicionar na tabela de resultado, mais
uma coluna, que corresponde a imagem para a operao excluir. Percebam
que em cada linha da tabela, o link passar via GET, a varivel codigo, que
receber o id de cada cliente no banco de dados.
e-Tec Brasil

60

Programao para Web

Figura 4.3: Exemplo de pesquisa com uma imagem para o excluir


Fonte: Pgina exibida pelo Mozilla Firefox 3.5

Figura 4.4: Resultado da pesquisa com link para o excluircliente.php


Fonte: Elaborada pelo autor

Altere e execute a pgina pesqclientes.php, para colocar o link para o


excluir cliente, como mostrado acima. Ao passar o mouse em cima da imagem do excluir, mas sem clicar, olhe na barra de status, na parte de baixo do
navegador, o link de cada imagem. Perceba que o que muda de um para o
outro o cdigo do cliente.
A pgina excluircliente.php ser a responsvel por executar o comando
SQL no banco de dados. Essa pgina recebe o cdigo passado via GET, pelo
link da imagem excluir, e executa o comando DELETE no banco, com a clusula WHERE informando o id do cliente que ser excludo. Ao final, a pgina
redirecionada novamente para a pgina de pesquisa (voc poderia redirecionar para qualquer outra pgina do seu sistema). O programa da Figura
4.5 mostra o cdigo PHP completo dessa pgina.

Figura 4.5: Programa em PHP para excluir um cliente


Fonte: Elaborada pelo autor

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

61

e-Tec Brasil

Implemente a pgina excluircliente.php, como mostrada acima, e teste


suas pginas.

4.3 Alterando no banco de dados MySQL


A operao de alterar dados no banco segue o mesmo princpio que as demais
informaes. Novamente o que muda o comando SQL passado para o banco.
Porm, o que torna uma pgina web um pouco mais trabalhosa para alterar
dados, mas nem tanto, que devemos ter as informaes que sero alteradas. Essas informaes podem estar dispostas de diversas formas em uma
pgina. O mecanismo mais fcil e apropriado para isso o formulrio em
HTML. Ento, ao escolher uma determinada informao para alterar, vamos
chamar uma pgina com o formulrio j preenchido com as informaes
anteriores. O usurio altera no formulrio os dados que deseja e depois os
envia para outra pgina em PHP que atualizar o banco de dados.
Antes de chamar o formulrio com os dados, na maioria das vezes, interessante usar algum mecanismo de busca, como uma pgina de pesquisa. Em
nosso exemplo, vamos utilizar trs passos para alterar os dados de um cliente:
Passo 1 usar a pgina pesqclientes.php para pesquisar o cliente de
quem queremos modificar os dados. Colocar um link em cada cliente para
que, ao clicar, a pgina formaltcli.php seja chamada, enviando o cdigo
do cliente via GET;
Passo 2 a pgina formaltcli.php exibir um formulrio j preenchido
com os dados do cliente escolhido. Aps alterar os dados clicaremos em um
boto para envi-los para a pgina alterarclibd.php;
Passo 3 a pgina alterarclibd.php atualizar o banco de dados com as
informaes atuais oriundas do formulrio. Ao final, ser redirecionado para
a pgina com o formulrio, que exibir a mensagem de sucesso ou erro.
A Figura 4.6 mostra o diagrama de navegao desse mecanismo.

e-Tec Brasil

62

Programao para Web

Formulrio
POST

PHP
para alterar

UPDATE

GET
(cdigo)

Pesquisar

GET
(mensagem)

Banco de
Dados

Figura 4.6: Diagrama de navegao das pginas para alterar dados


Fonte: Equipe produo CEAD/IFES (2011)

4.3.1 Passo 1 link no pesquisar


Assim, como colocamos um link para a pgina que exclui os dados, vamos
fazer de forma semelhante para a operao de alterar. Colocaremos um link
no nome de cada cliente, que chamar a pgina com o formulrio, passando
o cdigo do cliente via GET.
Poderamos tambm usar uma imagem ou qualquer outro mecanismo para
chamar o formulrio, desde que passe o cdigo do cliente que se deseja alterar.
A linha na pgina pesqclientes.php que ser alterada o comando echo
que monta cada linha da tabela, dentro do while. Perceba que a coluna referente ao nome passa a ter um link para o formulrio do alterar e a coluna
referente imagem do excluir continua com o link para a pgina de excluir.
Ambos os links passam o cdigo do cliente via mtodo GET. A nova linha
mostrada na Figura 4.7 a seguir.

Figura 4.7: Comando com o link no campo nome para chamar o alterar
Fonte: Elaborada pelo autor

4.3.2 Passo 2 exibir o formulrio


Na pgina formaltcli.php, antes de exibir o formulrio, necessrio obter os demais dados do banco, uma vez que temos somente o cdigo do
cliente passado como GET. Ento, executaremos o SELECT para isso. Aps,
colocaremos os dados do banco em variveis PHP que sero utilizadas para
preencher o formulrio.
O campo do tipo data, obtido no banco de dados, est no formato Y-m-d
(padro do MySQL). Ento temos que convert-lo para o nosso formato
d/m/Y, para exibir no formulrio. Usaremos para isso duas funes, a
strtotime e a date.

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

63

e-Tec Brasil

strtotime converte uma data no formato string para o formato timestamp


(usado pelo PHP). Sua sintaxe :
strtotime(string_data)
date converte uma data no formato timestamp para algum formato em
string. Sua sintaxe :
date(formato, timestamp)
Portanto, para converter de Y-m-d para d/m/Y usaremos os seguintes
comandos:
$varData = date(d/m/Y, strtotime($varData));
Em que: $varData a data no formato Y-m-d.
Em cada campo do formulrio colocaremos a varivel PHP, correspondente
ao dado obtido do banco. Como temos campos de tipos diferentes, cada um
ter uma forma diferente de preencher os dados. Em todas elas, alternaremos entre cdigos HTML e PHP.
a) Campos do tipo text
Coloca o atributo value e, entre aspas duplas, abre o PHP e pega a varivel
correspondente com o echo. Veja a Figura 4.8 desta forma:

Figura 4.8: Atribuindo valor para campos do tipo text


Fonte: Elaborada pelo autor

A expresso <?php echo $nome; ?> abre o cdigo em PHP, pega a varivel
$nome com o dado obtido do banco e coloca no atributo value do campo
do formulrio.
Todo o cdigo PHP deve ficar dentro das aspas duplas do atributo value.
b) Campos do tipo textarea
O contedo desse campo fica entre as tags <TEXTAREA> e </TEXTAREA>.
Ento, colocaremos o cdigo PHP com o valor a ser preenchido entre essas
tags. Segue o exemplo na Figura 4.9 para o campo endereo.
e-Tec Brasil

64

Programao para Web

Figura 4.9: Atribuindo valor para campos do tipo textarea


Fonte: Elaborada pelo autor

c) Campos do tipo radio e checkbox


Coloca-se a palavra checked na opo que ficar marcada. Portanto, necessrio testar com o comando if qual ser essa opo. O exemplo na Figura
4.10 com o campo sexo ficaria assim:

Figura 4.10: Atribuindo valor para campos do tipo radio e checkbox


Fonte: Elaborada pelo autor

d) Campos do tipo combobox (<SELECT>)


Nesses campos, a opo marcada recebe o atributo selected. Ento, uma
das solues seria semelhante a dos campos do tipo radio. Testa com o if
e coloca o atributo selected na opo correspondente. Porm, muitas vezes,
as opes de uma caixa de seleo so obtidas do banco de dados. Nesse
caso, no PHP que obtm as opes do banco, coloca-se o if para testar qual
opo ser a selecionada. Se for a que queremos que fique marcada, ento
o comando <OPTION> fica com o atributo selected, como o exemplo na
Figura 4.11, com o campo que lista os estados.

Figura 4.11: Atribuindo valor para campos do tipo combobox


Fonte: Elaborada pelo autor

A varivel $estado obtida da tabela de Clientes, ou seja, o estado que


dever ficar marcado. A varivel $sigla obtida de cada registro da tabela
com todos os estados.
A partir do formulrio preenchido, o usurio poder alterar os dados que lhe
convm. Ao clicar no boto para enviar os dados, o formulrio enviar as novas informaes para a pgina alterarclibd.php, que realizar o UPDATE

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

65

e-Tec Brasil

no banco. Portanto, a declarao do formulrio (<FORM>) ficar como no


exemplo na Figura 4.12 a seguir.

Figura 4.12: Definio do action para a pgina alterarclibd.php


Fonte: Elaborada pelo autor

O valor da chave primria de uma tabela no pode ser alterado, porque pode
causar inconsistncia nos dados. Porm, ela fundamental para o processo
de alterar, porque ser por meio dela que o sistema identificar o registro a
ser alterado.
Em nosso exemplo, a chave primria o cdigo do cliente. Ento colocaremos um campo no formulrio para esse cdigo. Para que o usurio no possa alterar esse valor, esse campo ficar oculto. Para criar um campo oculto,
basta usar o atributo type com o valor hidden, como no exemplo na Figura
4.13 a seguir.

Figura 4.13: Campo oculto (hidden) com o cdigo do cliente


Fonte: Elaborada pelo autor

e) Mensagem de erro
Os dados sero enviados para a pgina PHP que atualizar o banco de dados. Para saber se ocorreu erro ou no, redirecionaremos para a pgina com
o formulrio novamente, informando a mensagem de erro ou sucesso. Essa
mensagem ser enviada via o mtodo GET, com o nome mensagem. Ento,
em nossa pgina com o formulrio, colocaremos o cdigo PHP abaixo para
pegar a mensagem, caso tenha, e exibir junto com os dados. A Figura 4.14
mostra esta programao.

Figura 4.14: Exibindo a mensagem de resposta


Fonte: Elaborada pelo autor

O programa da Figura 4.15 mostra o cdigo completo da pgina formaltcli.


php.

e-Tec Brasil

66

Programao para Web

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

67

e-Tec Brasil

Figura 4.15: Pgina com o formulrio preenchido (formaltcli.php)


Fonte: Elaborada pelo autor

4.3.3 Passo 3 atualizar o banco


A pgina alterarclibd.php receber os novos dados do formulrio do
programa da Figura 4.15, via POST, e atualizar o banco de dados com o
comando UPDATE. O programa da Figura 4.16 mostra essa pgina.
A pgina para atualizar o banco semelhante de inserir. A diferena que
utilizado o comando UPDATE, ao invs de INSERT. Tambm foram tirados
os comandos echo e colocadas as mensagens em uma nica varivel, chamada $mensagem, que ser enviada para a pgina anterior mostr-la.

e-Tec Brasil

68

Programao para Web

Figura 4.16: Pgina que atualiza o banco de dados (alterarclibd.php)


Fonte: Elaborada pelo autor

Aps realizar uma alterao no banco de dados, como por exemplo, com o
comando UPDATE, possvel obter quantos registros foram alterados. Para
isso basta utilizar a funo mysql_affected_rows.
mysql_affected_rows retorna a quantidade de registros que foram afetados por um comando SQL, como por exemplo o UPDATE. Sua sintaxe :
mysql_affected_rows(conexao)
em que: conexo um parmetro opcional que indica a conexo com o
banco de dados. Se no for informado, utiliza a ltima conexo aberta.
Com isso, conclumos o assunto sobre banco de dados. Vimos que o processo de acesso e manipulao de dados independe da operao a ser feita. O
que define a operao que faremos com o banco de dados o comando em
SQL, como o INSERT, SELECT, UPDATE, DELETE e outros mais. Pronto! Agora
voc capaz de criar um site completo, armazenando e recuperando dados
do banco de dados.

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

69

e-Tec Brasil

Resumo
Nesta aula aprendemos a realizar uma consulta filtrando por determinado
campo, a excluir e a alterar um registro no banco de dados a partir de pginas web em PHP. Na prxima aula aprenderemos a trabalhar com sesses,
o que nos permitir, por exemplo, implementar a validao de usurio no
sistema, bem como trocar dados entre as pginas de uma sesso.
Encontra-se a seguir a Tabela 4.1 com o resumo dos comandos aprendidos
at agora para manipulao do PHP com o banco de dados MySQL.
Tabela 4.1: Resumo dos principais comandos
FUNO

DESCRIO

PARMETROS

mysql_connect

Abre a conexo com o banco de dados.

IP do servidor onde est o banco de dados.


Usurio e senha com permisso de acesso
ao banco de dados.

mysql_select_db

Seleciona o banco a ser utilizado.

Nome do banco.

mysql_close

Fecha a conexo com o banco de dados.

Conexo criada anteriormente.

mysql_query

Funo que executa um comando SQL


no banco de dados MySQL. Retorna
verdadeiro (true) em caso de sucesso e
falso (false) caso contrrio.

Comando na sintaxe SQL.

mysql_insert_id

Retorna o ltimo nmero inserido de um


campo do tipo autoincremento

Parmetro opcional que indica a conexo


com o banco de dados.

mysql_fetch_assoc

Retorna um registro de uma consulta, em


forma de array, e aponta para o prximo
registro. Retorna false quando chegar ao
ltimo.

Conjunto de registros resultante de uma


consulta.

mysql_num_rows

Retorna a quantidade de registros da


ltima consulta ao banco.

Conjunto de registros resultante de uma


consulta.

mysql_affected_rows

Retorna a quantidade de registros que


foram afetados por um comando SQL.

Parmetro opcional que indica a conexo.

mysql_error

Retorna uma mensagem caso ocorra


algum erro no acesso ao banco de dados

isset

Retorna verdadeiro (true) se uma certa


varivel j foi declarada, e falso (false),
em caso contrrio

Varivel a ser verificada.

Insere pedaos de cdigos PHP de um


determinado arquivo na pgina atual

Nome do arquivo PHP.

die

Funo que exibe uma mensagem e


interrompe a execuo da pgina.

Mensagem a ser exibida.

substr

Retorna uma parte de uma string

String original.
Posio inicial.
Tamanho da substring.

include e include_once

continua

e-Tec Brasil

70

Programao para Web

checkdate

Retorna verdadeiro (true) se a data


vlida, e falso (false), em caso contrrio

Ms, dia e ano.

strtotime

Converte uma data no formato string para


o formato timestamp.

Data no formato string (padro americano:


Y-m-d).

date

Converte uma data no formato timestamp


para algum formato em string.

Formato final da data.


Data original do tipo timestamp.
concluso

Fonte: Adaptado de Soares (2007)

Atividades de aprendizagem
1. Crie uma pgina em PHP para pesquisar as vendas da tabela criada
na segunda atividade dentre as Atividades de aprendizagem propostas
ao final da Aula 3. Voc deve permitir pesquisar todas as vendas de um
determinado cliente e todas as vendas de um determinado produto.
Obs.:Como na tabela Vendas tem apenas o cdigo do cliente e do produto,
ser necessrio pesquisar pelo nome usando as tabelas Clientes e Produtos,
ou seja, no SELECT ser preciso juntar (JOIN) a tabela Vendas com as tabelas
Clientes e Produtos, de acordo com o tipo da pesquisa. Veja a apostila da
disciplina de Bancos de Dados sobre como realizar a pesquisa unindo mais
de uma tabela.

Leituras complementares:
DAVIS, Michele E.; PHILLIPS,
Jon A. Aprendendo PHP e
MySQL. Rio de Janeiro: Alta
Books, 2008.
MILANI, Andr. Construindo
aplicaes web com PHP e
MySQL. So Paulo: Novatec,
2010.
NIEDERAUER, Juliano.
Desenvolvendo websites
com PHP. 2 ed. So Paulo:
Novatec, 2004.
WELLING, Luke; THOMSON,
Laura.PHP e MySQL:
desenvolvimento web. 3 ed. Rio
de Janeiro: Elsevier, 2005.

2. Implemente uma pgina para excluir os produtos da tabela criada na terceira Atividade de aprendizagem da Aula 3. Altere a pgina do pesquisar
produtos, criada na primeira Atividade de aprendizagem desta Aula, e
implemente o PHP para excluir o produto do banco.
3. Implemente as pginas para alterar os dados do cliente, como mostrada
acima e teste.
4. Faa o mesmo procedimento para alterar os dados dos produtos. Altere a
pgina do pesquisar produtos, criada na primeira Atividade de aprendizagem desta Aula, para colocar o link para a pgina de formulrio com os
dados do produto preenchidos. Implemente o PHP para atualizar o banco.

Aula 4 Consulta, excluso e alterao no banco de dados MySQL

71

e-Tec Brasil

Aula 5 Gerenciando sesses


Objetivos
Aprender para que serve uma sesso em um sistema web e como
program-la.
Aprender a como utilizar a sesso para autenticar usurios.
Construir pginas web para autenticar os usurios.

Esta Aula voltada para o gerenciamento de sesses em sistemas web. O


uso de sesses permitir que informaes sejam trocadas entre pginas web
de uma mesma sesso. Com isso, ser possvel fazer a validao do usurio
em uma pgina e verificar em todas as outras se o usurio foi autenticado
ou no. E ainda mais, de posse do tipo do usurio (administrador, gerente,
caixa, operador, etc.), possvel fazer controle de acesso, programando em
cada pgina os tipos de usurios que podem acess-las.
A cada pgina visitada por um usurio, uma nova conexo criada pelo
HTTP do navegador ao servidor. As informaes da conexo anterior no so
mantidas. Entretanto, em diversas situaes desejvel que certas informaes sejam armazenadas temporariamente, entre uma pgina e outra.
Como exemplo, pode-se citar a autenticao de login, que feita em uma
pgina e em todas as outras necessrio verificar se o usurio est logado,
alm de permitir obter os dados desse usurio em todas as pginas.

Sesso
Uma sesso basicamente
um meio de mantermos dados
durante a navegao por vrias
pginas de um site. Quando uma
sesso aberta, ela recebe um
identificador nico, o que permite ao PHP recuperar os dados
vinculados quela sesso.

Para testar o uso de sesses, vamos utilizar o login e senha cadastrados na


tabela de Clientes, como o modelo de dados da Figura 3.1, da Aula 3.
Outro exemplo o carrinho de compras. Enquanto o usurio visita vrias
pginas, o carrinho de compras armazena os produtos comprados.

Aula 5 Gerenciando sesses

73

e-Tec Brasil

5.1 Criando uma sesso


Para criar uma sesso, usa-se o comando:
session_start();
Aps esse comando, um array, chamado $_SESSION, criado para manipularmos as informaes armazenadas. Com esse array possvel incluir uma
nova varivel, alterar as existentes e excluir uma ou todas as variveis.
As pginas em que for preciso acessar informaes do array $_SESSION, deve-se usar tambm o comando session_start(), para acessar a sesso criada.

5.2 Manipulando as variveis de uma sesso


Os dados armazenados em uma sesso so armazenados no array $_SESSION.
O ndice desse array, entre colchetes, o nome da varivel de sesso.
Para criar uma nova varivel na sesso, basta colocar seu nome como ndice
do array $_SESSION. O exemplo da Figura 5.1 mostra a criao da sesso
e das variveis login, tipo e nome, obtidas do banco de dados, depois de
validar o login 3 e a senha do usurio.

Figura 5.1: Criao da sesso e suas variveis


Fonte: Elaborada pelo autor

O procedimento para acessar uma varivel j presente no <IT>array<IT> $_


SESSION o mesmo. Em nosso exemplo acima, poderamos obter o nome e
o login do usurio em qualquer pgina. Para eliminar uma varivel de uma
sesso, utiliza-se o comando:
unset($_SESSION[nome_da_varivel])

e-Tec Brasil

74

Programao para Web

5.3 Excluindo a sesso


Uma sesso automaticamente eliminada quando o navegador do usurio
fechado. Caso queira destruir a sesso antes disso, como por exemplo,
ao clicar em um boto do tipo sair ou logout, devem ser realizadas
trs etapas. A primeira acessar a sesso com o comando session_start().
A segunda a liberao de todas as variveis da sesso com o comando
session_unset(). A ltima a destruio da sesso com o comando:
session_destroy();
O programa da Figura 5.2 mostra o exemplo de um cdigo PHP chamado a
partir de um boto sair ou logout, para finalizar a sesso. Aps encerrar
a sesso, a pgina redirecionada para o formulrio inicial de login.

Figura 5.2: Pgina que finaliza uma sesso (logout.php)


Fonte: Elaborada pelo autor

5.4 Caso de uso: autenticando usurios


Para testarmos o uso de sesses, vamos criar as pginas para fazer a autenticao
do usurio. No nosso banco de dados de exemplo, na tabela Clientes, j temos
o login e a senha dos usurios. Vamos utilizar essa tabela para validar o usurio.

5.4.1 Formulrio de login


Vamos criar um formulrio, chamado formlogin.php, com os campos de
login e senha. Esse formulrio enviar os dados para o PHP login.php,
via POST, que consultar o banco de dados verificando se o login e a senha
esto corretos. Se estiverem corretos, ento cria a sesso, coloca as variveis
login e nome,e redireciona para a pgina inicial do sistema. Se o login e a
senha no conferem, ento redireciona para o formulrio de login, passando uma mensagem de erro via GET, isso para que no prprio formulrio de
login o usurio possa ver a mensagem de erro e digitar novamente o login
e a senha. A Figura 5.3 mostra o diagrama de navegao desse processo.

Aula 5 Gerenciando sesses

75

e-Tec Brasil

Formulrio
Login

Pesquisa
Principal

PHP para
conferir no banco
POST
validado

ERRO: GET
(mensagem)
SELECT

Banco de
Dados

Figura 5.3: Diagrama de navegao para realizar o login


Fonte: Equipe produo CEAD/IFES (2011)

No formulrio de login, vamos colocar o cdigo PHP para exibir a mensagem


de erro, caso ocorra. A mensagem ficar acima dos campos. Voc pode
colocar a mensagem em outro local, caso deseje. O programa da Figura 5.4
mostra o cdigo do formulrio formlogin.php e o programa da Figura
5.5 mostra o PHP login.php.

Figura 5.4: Formulrio de login (formlogin.php)


Fonte: Elaborada pelo autor

e-Tec Brasil

76

Programao para Web

Figura 5.5: PHP para conferir login e senha no banco (login.php)


Fonte: Elaborada pelo autor

A pgina principal o ponto de entrada do seu sistema. Crie essa pgina


com links para todas as operaes que implementamos, como cadastrar e
pesquisar cliente, cadastrar e pesquisar produtos, cadastrar e pesquisar vendas, e assim por diante.

5.4.2 Verificar a sesso


Uma vez autenticado o usurio e criada a sesso, todas as outras pginas, no
seu incio, iro validar se a sesso foi criada, para evitar que uma pgina seja
acessada sem passar pelo processo de login. Uma pgina somente acessada
se existe uma sesso. Uma sesso existe somente se o usurio foi autenticado.
Para verificar se o usurio foi autenticado, basta verificar se a varivel login
est registrada na sesso, pois ela somente adicionada quando o login e
a senha so validados. Se no estiver, porque o usurio no est logado;
nesse caso, redirecione para o formulrio de login.
Como todas as pginas devem verificar se o usurio est logado, vamos
colocar esse cdigo em um arquivo separado, e todas as pginas incluem-no com o comando include_once. O programa da Figura 5.6 mostra esse
cdigo, chamado validar.php.

Figura 5.6: Verificar se o usurio est logado (validar.php)


Fonte: Elaborada pelo autor

Aula 5 Gerenciando sesses

77

e-Tec Brasil

Em todas as pginas do seu sistema, basta incluir o validar.php no incio,


antes de qualquer coisa, e da seguinte forma, conforme Figura 5.7.

Figura 5.7: Incluir o programa de validao de sesso em cada pgina


Fonte: Elaborada pelo autor

5.4.3 Fazer logout


Para sair do seu sistema, basta colocar um link sair ou logout na pgina
principal, que aponte para o PHP do programa da Figura 5.2.
Com essas pginas, completamos nosso site com a autenticao de usurios,
muito utilizada nos sites de hoje em dia. Mas a sesso no serve apenas para
isso. Ela pode ser usada para a troca de informao entre as pginas. Uma
pgina adiciona uma informao na sesso e outra pgina a recupera. Isso
pode ser feito nas pginas de alterao de dados, na Aula 4, para transmitir
o cdigo do cliente e seus dados para as pginas que exibiro e alteraro os
dados do cliente. Tente voc fazer essa mudana.

Resumo
Nesta aula, voc viu tudo o que precisava para criar sistemas web com acesso a banco de dados e autenticao de usurios. Porm a programao que
fizemos misturou vrias linguagens em um nico arquivo. Na prxima aula,
veremos uma metodologia para organizar melhor os arquivos, separando a
programao da parte visual (HTML e CSS), regras do negcio (PHP) e manipulao do banco de dados (SQL). A seguir, voc encontra na Tabela 5.1 os
principais comandos para trabalhar com sesses.
Tabela 5.1: Principais comandos para trabalhar com sesses
FUNO

DESCRIO

PARMETROS

session_start

Cria uma nova sesso ou acessa uma j criada.

session_destroy

Destri a sesso.

$_SESSION

Array com os dados compartilhados pela sesso.

Nome da varivel entre colchetes.

unset

Elimina UMA varivel da sesso.

Nome da varivel da sesso.

session_unset

Eliminam TODAS as variveis da sesso.

Fonte: Adaptado Soares (2007)

Atividades de aprendizagem
Implemente o processo de autenticao do usurio para todas as pginas
do seu sistema, como mostrado acima. Crie a pgina principal com os links
para todas as suas operaes e para a operao sair (logout). Tente acessar
diretamente uma pgina, sem se logar, para ver o que acontece.

e-Tec Brasil

78

Programao para Web

Aula 6 Caso de uso: aplicao


utilizando o padro MVC
Objetivos
Conhecer o padro de desenvolvimento de sistemas web MVC.
Construir um sistema web no padro MVC.

Chegamos nossa ltima aula de nossa disciplina. Esta Aula voltada, principalmente, para aqueles que iro trabalhar com desenvolvimento de sistemas, seja web ou no.
Vamos aprender a organizar melhor o cdigo para que o processo de desenvolvimento seja produtivo, com melhor qualidade e com menos erros. E caso
tenha erros, que sejam de fcil correo. Para isso, vamos aprender uma
metodologia que separa o sistema em camadas, o MVC.

6.1 O que MVC?


O padro MVC (do ingls Model-View-Controller) separa os dados (Model)
do layout (View). Dessa forma, alteraes feitas no layout no afetam a manipulao de dados, que por sua vez podero ser reorganizados sem alterar
o layout. O problema resolvido introduzindo-se um componente entre a
manipulao dos dados e a apresentao: o fluxo da aplicao (Controller).
O MVC usado em padres de projeto de software, mas abrange mais a
arquitetura de uma aplicao do que tpico para um padro de projeto.

Controller
O controller (controlador)
responsvel por transformar
eventos gerados pela interface
em ao de negcios.

6.1.1 Vantagens
Como o modelo MVC gerencia mltiplos visualizadores usando o mesmo
modelo, fcil manter, testar e atualizar sistemas mltiplos. Como a parte
visual separada do modelo de negcio, possvel alterar a parte visual
sem alterar o sistema todo.
muito simples adicionar novas funcionalidades apenas incluindo seus
visualizadores e controles sem alterar o que j foi feito, tornando a aplicao

Aula 6 Caso de uso: aplicao utilizando o padro MVC

79

e-Tec Brasil

escalvel. possvel ter desenvolvimento em paralelo para o modelo, visualizador e controle, pois so independentes, ganhando em produtividade.
Dentre as principais vantagens podemos destacar:
reaproveitamento de cdigo;
facilidade de manuteno;
integrao de equipes e/ou diviso de tarefas;
camada de persistncia independente;
implementao de segurana;
facilidade na alterao da interface da aplicao;
aplicao escalvel.

6.1.2 Desvantagens
As vantagens superam em muito as desvantagens, mas mesmo assim podemos citar alguns pontos desfavorveis:
requer uma quantidade maior de tempo para analisar e modelar o sistema;
requer pessoal especializado;
no aconselhvel para pequenas aplicaes.

6.2 Estrutura do MVC


O MVC possui trs componentes: modelo, viso e controlador (veja Figura 6.1).
a) Modelo representa os dados da aplicao e as regras de negcio que
governam o acesso e a modificao dos dados. O modelo fornece ao
controlador a capacidade de acessar as funcionalidades da aplicao encapsuladas pelo prprio modelo. Pode ainda ser subdividido em regras
do negcio e persistncia dos dados.
b) Viso renderiza o contedo de uma parte particular do modelo e encaminha para o controlador as aes do usurio; acessa tambm os dados do
modelo via controlador e define como esses dados devem ser apresentados.
Apresenta os dados para o usurio sem se preocupar com a origem deles.
c) Controlador define o comportamento da aplicao. ele que interpreta as aes do usurio e as mapeia para chamadas do modelo. Com
base na ao do usurio e no resultado do processamento do modelo,

e-Tec Brasil

80

Programao para Web

o controlador seleciona uma visualizao a ser exibida como parte da


resposta solicitao do usurio. H, normalmente, um controlador para
cada conjunto de funcionalidades relacionadas.
VISO
(Navegador)

CONTROLADOR

MODELO
(Regras de
Negcio)

Figura 6.1: Estrutura do MVC


Fonte: Equipe produo CEAD/IFES (2011)

6.3 Alterando nosso sistema para o MVC


As pginas do nosso sistema esto todas misturadas. Temos pginas com
a interface visual, regras de negcio e manipulao de dados em um nico
local. Isso dificulta a produtividade do processo de desenvolvimento e, caso
tenha erro, fica mais difcil encontr-lo.
Como vocs mesmo podem ter observado, algumas pginas possuem vrias
linguagens misturadas, como: o HTML para a parte visual; o PHP para a validao e regras de negcio; e o SQL para a persistncia de dados.
Nossos exemplos foram desenvolvidos dessa forma de propsito. Primeiro,
para mostrar como seria o raciocnio lgico do processo de pginas web. E
depois para que voc possa comparar com uma arquitetura comprovadamente melhor para desenvolvimento de sistemas.
Portanto, vamos agora separar nossos cdigos. Tudo que for para a interface
visual, seja para entrada de dados ou para a sada de dados (por exemplo,
mensagens de erro), ser separado na camada da viso. Criaremos um arquivo, chamado controlador.php que ir receber todas as requisies
da interface grfica, fazer a validao dos dados e chamar as funes correspondentes camada do modelo, que por sua vez, ficaro em arquivos
separados. Na camada do modelo ficaro as funes em PHP referentes ao
que o sistema faz, ou seja, as suas operaes.
Para que o sistema fique independente do banco de dados a ser usado, criaremos uma camada, chamada persistncia, que far o mapeamento das funes
do modelo para o banco de dados MySQL. Se o banco de dados mudar, o que
pode acontecer com qualquer sistema, basta alterarmos apenas as funes da
camada de persistncia, sem ter que alterar todas as pginas do sistema.

Aula 6 Caso de uso: aplicao utilizando o padro MVC

81

e-Tec Brasil

6.3.1 Persistncia dos dados


Vamos comear separando as funes referente ao acesso ao banco de dados MySQL. Essas funes so todas aquelas que comeam com mysql_.
Vamos mapear as funes da camada do modelo nas funes do MySQL.
Poderamos fazer uma camada de persistncia para cada tipo de banco de
dados. O programa da Figura 6.2 mostra como seria essa persistncia.

Figura 6.2: Camada de persistncia dos dados (persistencia.php)


Fonte: Elaborada pelo autor

Se for usar outro banco de dados, basta implementar outra camada, alterando o
cdigo dentro de cada funo. Por exemplo, se o banco fosse o PostgreSQL, as funes seriam: pq_connect, pg_select_bd, pg_query, etc.

6.3.2 Modelo de negcio


Nesta camada ficam as funes referentes aos casos de uso do sistema, ou
seja, as funcionalidades que o sistema ter. Por exemplo, as operaes que
fazemos com o cliente so: incluir, alterar, excluir e pesquisar. Ento, cada uma
dessas operaes ser transformada em uma funo. Podemos separar as funes de acordo com os elementos do sistema. Por exemplo, todas as operaes referentes ao cliente ficaro em um arquivo chamado de clientes.php.
As operaes sobre os produtos ficaro em outro arquivo, e assim por diante.

e-Tec Brasil

82

Programao para Web

A camada do modelo de negcio no gera nenhum comando em HTML.


O retorno, sucesso ou fracasso retornado para o controlador que ser responsvel por montar a pgina de resposta.
O programa da Figura 6.3 mostra como ficaro as operaes com os clientes.
o mesmo cdigo j visto, porm em nova arquitetura. Perceba que quando
for necessrio acessar o banco de dados, as funes chamadas sero as da
camada de persistncia do programa da Figura 6.2.

Aula 6 Caso de uso: aplicao utilizando o padro MVC

83

e-Tec Brasil

Figura 6.3: Operaes com os Clientes (clientes.php)


Fonte: Elaborada pelo autor

A funo validarCampos foi separada porque repetida no incluir e alterar, que ficaram mais simples e muito parecidas. Todas as funes seguem o
mesmo padro: validar os campos, criar a conexo com o banco de dados e
chamar a funo da camada de persistncia.

6.3.3 Controlador
O controlador ser apenas um arquivo PHP. Ele receber da interface visual o
cdigo da operao e os dados, e chamar a funo correspondente da camada do modelo, retornando a mensagem de erro ou sucesso para a pgina
que originou a requisio.
Todas as pginas de interface visual devero ter um campo que informa qual
operao o controlador chamar.
Em nossos exemplos, esse campo ser chamado de operao. As possveis
operaes sero todas aquelas da camada do modelo, por exemplo, as funes do arquivo clientes.php do programa da Figura 6.3: incluirCliente,
alterarCliente, excluirCliente, etc.
O inserir e alterar enviam os dados para o servidor com o mtodo POST
e o excluir envia com o mtodo GET. Para padronizar o controlador, vamos
adotar o mtodo GET. Portanto, os formulrios devero ser alterados. O programa da Figura 6.4 mostra um exemplo da estrutura do controlador.

e-Tec Brasil

84

Programao para Web

Figura 6.4: Estrutura do controlador (controlador.php)


Fonte: Elaborada pelo autor

Aula 6 Caso de uso: aplicao utilizando o padro MVC

85

e-Tec Brasil

6.3.4 Camada da viso


Pginas COM formulrio para as pginas com formulrio (em nosso
exemplo: formclientes.php, formaltcli.php e login.php) as mudanas
sero as seguintes: a primeira passar a enviar os dados para o controlador.
Para padronizar o controlador, os formulrios tambm passaro os dados
via GET. A segunda colocar um campo escondido para definir qual a operao que o controlador far. A terceira colocar a mensagem de resposta
fornecida de volta pelo controlador. Para enviar os dados para o controlador
com o mtodo GET, basta alterar os atributos action e method, da seguinte
forma, conforme a Figura 6.5.

Figura 6.5: Alterando o mtodo de envio do formulrio para GET


Fonte: Elaborada pelo autor

A segunda mudana, conforme j mencionado, colocar um campo escondido para indicar ao controlador qual a operao ele far. Como exemplo,
chamaremos esse campo de operao. O valor a ser passado (atributo value)
dever ser o mesmo valor com o qual o controlador far a comparao. Cada
operao dever ter um valor diferente. Por exemplo: incluirCliente, alterarCliente, excluirCliente, etc., conforme a Figura 6.6.

Figura 6.6: Campo operao oculto (hidden)


Fonte: Elaborada pelo autor

A terceira mudana, conforme j mencionado, colocar em algum lugar


da sua pgina a mensagem de resposta, caso tenha, de sucesso ou falha da
operao. Essa mensagem ser enviada do controlador para a pgina, usando o mtodo GET. Em nosso exemplo, veja o controlador, o nome do campo
foi chamado de mensagem. O cdigo em PHP a ser inserido ser como o
apresentado na Figura 6.7 a seguir.

Figura 6.7: Exibindo a mensagem de resposta


Fonte: Elaborada pelo autor

e-Tec Brasil

86

Programao para Web

Pginas SEM formulrio para as pginas que no possuem formulrio,


apenas links para outras pginas, enviando os campos via mtodo GET, as
mudanas sero apenas alterar o link para o controlador e adicionar o campo
que corresponde operao. Em nosso exemplo, a nica mudana ser no
link do excluir da pgina de pesquisa pesqclientes.php (veja a Figura 6.8).

Figura 6.8: Link do excluir apontando para o controlador


Fonte: Elaborada pelo autor

As operaes de consulta ao banco tambm podem ser colocadas no controlador, porm o processo mais complicado, requer um estudo mais aprofundado do MVC. Por enquanto deixe da forma que se encontra, dentro de pginas da camada da viso. Para quem for trabalhar com desenvolvimento de
sistemas web, ser muito importante apronfudar-se mais nessa metodologia.
Perceba que antes, a cada pgina de formulrio, tnhamos uma pgina em
PHP para realizar aquela operao. Em um sistema maior, a quantidade de
arquivos para organizar seria muito grande.
Com o MVC, continuamos com as pginas da interface grfica, porm as pginas em PHP no servidor ficaram bastante reduzidas. Temos o controlador,
o arquivo de persitncia e arquivos nos quais podemos agrupar as funes
de cada elemento do sistema. Por exemplo, todas as operaes referentes a
produto ficariam em um arquivo, as operaes referentes a vendas em
outro arquivo, e assim por diante.

Resumo
Nesta Aula, conhecemos o padro de desenvolvimento de sistemas web
MVC. Vimos como organizar melhor o cdigo para que o processo de desenvolvimento seja mais produtivo, com melhor qualidade e com menos erros. Aprendemos a separar a programao da parte visual (HTML e CSS),
regras do negcio (PHP) e manipulao do banco de dados (SQL). No fim,
alteramos uma parte do nosso sistema web de exemplo para o padro MVC.
Caro estudante, chegamos ao final desta disciplina. Espero que voc tenha
gostado e que seja capaz de desenvolver sistemas web. Diverti-me criando

Aula 6 Caso de uso: aplicao utilizando o padro MVC

87

Aprender mais sobre MVC


muito importante caso
voc pretenda trabalhar com
programao web. Seguem
alguns links:
http://www.dsc.ufcg.edu.
br/~jacques/cursos/map/html/
arqu/mvc/mvc.htm
http://codeigniterbrasil.com/
passos-iniciais/mvc-modelview-controller/
http://www.tiagolemos.com.
br/2009/07/10/o-que-e-o-mvcmodel-view-controller/
http://msdn.microsoft.com/enus/library/ms978748.aspx.

e-Tec Brasil

essas pginas e tambm aprendi um pouquinho mais sobre PHP. Mas isso
no tudo! Temos muito mais recursos em PHP que no daria tempo de
estudar nesta disciplina. Caso voc se interesse, veja as referncias no final
de cada aula e na seo Referncias.

Atividades de aprendizagem
1. Faa as alteraes do seu sistema para o MVC. Comece com as operaes sobre os clientes, como descrito acima.
2. Acrescente no MVC as operaes com os produtos. Comece criando o
arquivo com as funes referentes a produtos. Depois altere o controlador para fazer a ligao das pginas visuais com essas funes.
3. Acrescente no MVC as operaes de login. No controlador teremos mais um
else if para a validao do login e senha e criao da sesso. Nas demais
pginas, coloque o PHP para verificar se a sesso foi criada, como na Aula 5.

e-Tec Brasil

88

Programao para Web

Referncias
DAVIS, Michele E.; PHILLIPS, Jon A. Aprendendo PHP e MySQL. Rio de Janeiro: Alta
Books, 2008.
SOARES, Walace. PHP 5: conceitos, programao e integrao com banco de dados. 3 ed.
So Paulo: rica, 2007.
GUTMANS, Andi; BAKKEN, Stig Saether; RETHANS, Derick. PHP 5: programao ponderosa.
Rio de Janeiro: Alta Books, 2005.
MELO, Alexandre Altair de; NASCIMENTO, Maurcio G. F. PHP profissional. 2 ed. So
Paulo: Novatec, 2007.
MILANI, Andr. Construindo aplicaes web com PHP e MySQL. So Paulo:
Novatec, 2010.
NIEDERAUER, Juliano. Desenvolvendo websites com PHP. 2 ed. So Paulo: Novatec, 2004.
WELLING, Luke; THOMSON, Laura. PHP e MySQL: desenvolvimento web. 3. ed. Rio
de Janeiro: Elsevier, 2005.

Referncias

89

e-Tec Brasil

Currculo do professor-autor
Graduado em Cincia da Computao pela Universidade Federal de Viosa-MG
(1997) e mestre em Engenharia de Produo/Pesquisa Operacional pela UFRJ/
COPPE (2000). Trabalhou trs anos como Analista de Sistemas e lder de projeto
pela DBA Engenharia de Sistemas prestando servios de desenvolvimento de
sistemas para a Caixa Econmica Federal, no Rio de Janeiro. Foi professor do
Curso de Cincia da Computao da Faculdade de Aracruz (FACHA, hoje FAACZ) de 2002 a 2007. professor efetivo do Instituto Federal do Esprito Santo
(IFES) desde 2006, lecionando disciplinas para os cursos: Tcnico em Informtica,
Superior de Tecnologia em Redes de Computadores e Sistemas de Informao,
onde atua como coordenador. Na EaD, trabalha desde 2008 como professor-autor-formador e tutor a distncia nos cursos do IFES: Tecnlogo em Anlise e
Desenvolvimento de Sistemas e Tcnico em Informtica. Para mais informaes,
veja o currculo completo na Plataforma Lattes:

http://lattes.cnpq.br/4033155608776526

e-Tec Brasil

90

Programao para Web

Programao para Web


Jean Eduardo Glazar

Curso Tcnico em Informtica

Você também pode gostar