Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao para
Web
Jean Eduardo Glazar
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
Projeto Grfico
e-Tec/MEC
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
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.
e-Tec Brasil
Sumrio
Palavra do professor-autor
Apresentao da disciplina
11
Projeto instrucional
13
15
15
1.2 Instalao
16
19
21
23
1.6 Operadores
24
25
1.8 Array
28
1.9 Funes
29
31
31
32
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
44
47
52
54
57
57
60
62
7
e-Tec Brasil
73
74
74
75
75
78
e-Tec Brasil
79
79
80
81
Referncias
89
Currculo do professor-autor
90
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
10
Caderno impresso.
Ambiente Virtual de Ensino-aprendizagem (AVEA).
10
Caderno impresso.
Conhecer como o PHP interage com o
banco de dados.
3. Acesso, insero
e listagem no
banco de dados
MySQL
10
13
e-Tec Brasil
AULA
OBJETIVOS DE
APRENDIZAGEM
MATERIAIS
CARGA
HORRIA
(horas)
Caderno impresso.
10
6. Caso de uso:
desenvolvendo
uma aplicao
utilizando o padro
MVC
e-Tec Brasil
14
10
10
15
e-Tec Brasil
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.
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
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.
17
e-Tec Brasil
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.
e-Tec Brasil
18
HTTP
Executa
HTML
5
Mdulo PHP
Pginas .PHP
Banco de
Dados
Servidor Web
APACHE
2) <?
Comandos;
?>
3) <script
language=php>
Comandos;
</script>
4) <%
Commandos;
%>
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.
Pode haver vrios blocos de PHP misturados com vrios trechos de HTML.
e-Tec Brasil
20
21
e-Tec Brasil
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.
e-Tec Brasil
22
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.
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
Or
Ou
Xor
Ou exclusivo
Negao
&&
||
Ou
Fonte: Elaborado pelo autor
e-Tec Brasil
24
Igual a
!=
Diferente de
<
Menor que
>
Maior que
<=
Menor ou igual a
>=
Maior ou igual a
Fonte: Elaborado pelo autor
Concatenao de strings
Atribuio
++
Incremento (soma 1)
-Decremento (subtrai 1)
Fonte: Elaborado 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.
25
e-Tec Brasil
e-Tec Brasil
26
27
e-Tec Brasil
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.
e-Tec Brasil
28
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.
29
e-Tec Brasil
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.
e-Tec Brasil
30
31
e-Tec Brasil
e-Tec Brasil
32
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
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.
35
e-Tec Brasil
e-Tec Brasil
36
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]
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.
e-Tec Brasil
38
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.
39
e-Tec Brasil
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:
e-Tec Brasil
40
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.
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
43
e-Tec Brasil
Rel_01
Estados
sigla: CHAR(2)
nome: VARCHAR(50)
e-Tec Brasil
44
45
e-Tec Brasil
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
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.
47
e-Tec Brasil
e-Tec Brasil
48
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
49
e-Tec Brasil
Os comandos para substituir o (vazio) por zero pode ser visto na Figura 3.6:
e-Tec Brasil
50
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.
51
e-Tec Brasil
e-Tec Brasil
52
53
e-Tec Brasil
e-Tec Brasil
54
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.
55
e-Tec Brasil
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.
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:
e-Tec Brasil
56
57
e-Tec Brasil
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
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.
59
e-Tec Brasil
60
61
e-Tec Brasil
e-Tec Brasil
62
Formulrio
POST
PHP
para alterar
UPDATE
GET
(cdigo)
Pesquisar
GET
(mensagem)
Banco de
Dados
Figura 4.7: Comando com o link no campo nome para chamar o alterar
Fonte: Elaborada pelo autor
63
e-Tec Brasil
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
65
e-Tec Brasil
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.
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.
e-Tec Brasil
66
67
e-Tec Brasil
e-Tec Brasil
68
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.
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
mysql_select_db
Nome do banco.
mysql_close
mysql_query
mysql_insert_id
mysql_fetch_assoc
mysql_num_rows
mysql_affected_rows
mysql_error
isset
die
substr
String original.
Posio inicial.
Tamanho da substring.
include e include_once
continua
e-Tec Brasil
70
checkdate
strtotime
date
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.
71
e-Tec Brasil
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.
73
e-Tec Brasil
e-Tec Brasil
74
75
e-Tec Brasil
Formulrio
Login
Pesquisa
Principal
PHP para
conferir no banco
POST
validado
ERRO: GET
(mensagem)
SELECT
Banco de
Dados
e-Tec Brasil
76
77
e-Tec Brasil
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
session_destroy
Destri a sesso.
$_SESSION
unset
session_unset
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
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.
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
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.
e-Tec Brasil
80
CONTROLADOR
MODELO
(Regras de
Negcio)
81
e-Tec Brasil
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.
e-Tec Brasil
82
83
e-Tec Brasil
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
85
e-Tec Brasil
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.
e-Tec Brasil
86
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
87
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
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