Post on 18-Oct-2015
Curso Tcnico em Informtica
Programao para WebJean Eduardo Glazar
Programao para Web
Jean Eduardo Glazar
2011IFES Instituto Federal do Esprito Santo
Presidncia da Repblica Federativa do Brasil
Ministrio da Educao
Secretaria de Educao a Distncia
Equipe de ElaboraoInstituto Federal do Esprito Santo IFES
Coordenao InstitucionalGuilherme Augusto de Morais Pinto/IFESJoo Henrique Caminhas Ferreira/IFES
Coordenao CursoAllan Francisco Forzza Amaral/IFES
Professor-autorJean Eduardo Glazar/IFES
Comisso de Acompanhamento e ValidaoUniversidade Federal de Santa Catarina UFSC
Coordenao InstitucionalAraci Hack Catapan/UFSC
Coordenao do ProjetoSilvia Modesto Nassar/UFSC
Coordenao de Design InstrucionalBeatriz Helena Dal Molin/UNIOESTE e UFSC
Coordenao de Design GrficoAndr Rodrigues/UFSC
Design InstrucionalJuliana Leonardi/UFSC
Web MasterRafaela Lunardi Comarella/UFSC
Web DesignBeatriz Wilges/UFSCMnica Nassar Machuca/UFSC
DiagramaoAndr Rodrigues/UFSCBrbara Zardo/UFSCJuliana Tonietto/UFSCMarlia C. Hermoso/UFSC
RevisoJlio Csar Ramos/UFSC
Projeto Grficoe-Tec/MEC
Instituto Federal do Esprito SantoEste 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.
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 Eduar-do. II. Instituto Federal do Esprito Santo. III. Ttulo. CDD: 005.133
e-Tec Brasil33
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 mo-
dalidade a distncia. O programa resultado de uma parceria entre o Minis-
trio 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 en-
sino 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 auto-
nomia 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 Brasil5
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 Brasil7
Sumrio
Palavra do professor-autor 9
Apresentao da disciplina 11
Projeto instrucional 13
Aula 1 A linguagem PHP 151.1 O que PHP? 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 312.1 Mtodos GET e POST 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 43
3.1 Criando o banco de dados 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 57
4.1 Consultando no banco de dados MySQL 57
4.2 Excluindo no banco de dados MySQL 60
4.3 Alterando no banco de dados MySQL 62
Aula 5 Gerenciando sesses 735.1 Criando uma sesso 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 796.1 O que MVC? 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 Webe-Tec Brasil 8
e-Tec Brasil9
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 jor-
nada. importante que voc conhea toda a equipe envolvida neste curso:
coordenadores, professores especialistas, tutores a distncia e tutores presen-
ciais, 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, respei-
tando 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 Brasil11
Apresentao da disciplina
Nesta disciplina estudaremos programao para web sob o enfoque do servi-dor, 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 orga-nizarmos 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!
e-Tec Brasil13
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 MATERIAISCARGA
HORRIA(horas)
1. A Linguagem PHP
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.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Sites dos programas de instalao:http://www.php.net/downloadshttp://www.apache.orghttp://www.wampserver.comhttp://www.easyphp.orghttp://netbeans.org
10
2. Recebendo da-dos do formulrio
Entender como os dados de um formu-lrio 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 infor-maes de uma conexo com o servidor.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Ambiente de programao web (NetBeans).
10
3. Acesso, insero e listagem no banco de dados MySQL
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.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Ambiente de programao web (NetBeans).
Gerenciador de banco de dados (MySQL).
10
Projeto instrucional
AULA OBJETIVOS DE APRENDIZAGEM MATERIAISCARGA
HORRIA(horas)
4. Consulta, exclu-so e alterao no banco de dados MySQL
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.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Ambiente de programao web (NetBeans).
Gerenciador de banco de dados (MySQL).
10
5. Gerenciando sesses
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.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Ambiente de programao web (NetBeans).
Gerenciador de banco de dados (MySQL).
10
6. Caso de uso: desenvolvendo uma aplicao utilizando o padro MVC
Conhecer o padro de desenvolvimento de sistemas web MVC.
Construir um sistema web no padro MVC.
Caderno impresso.
Ambiente Virtual de Ensino--aprendizagem (AVEA).
Ambiente de programao web (NetBeans).
10
Programao para Webe-Tec Brasil 14
e-Tec Brasil
Aula 1 A linguagem PHP
e-Tec BrasilAula 1 A linguagem PHP 15
Objetivos
Comparar as vantagens e desvantagens do PHP em relao a ou-
tras 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 ban-
co 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 lana-
mentos, etc. Hoje, quando voc entra em uma loja virtual, ver alguns pro-
dutos 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, utiliza-remos 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 con-
tedo 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 exis-
tentes no servidor, com a vantagem de no expor o cdigo fonte para o cliente.
Programao para Webe-Tec Brasil 16
O PHP foi criado em 1995 por Rasmus Lerdorf com o nome de Personal Home Page Tools (Ferramentas Para Pgina Pessoal), para auxiliar no desenvolvimen-to 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 InstalaoPara 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 WindowsVoc 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 instala-
dos no Windows, chamamos de WAMP.
1.2.2 Instalao no Linux (Ubuntu)No Ubuntu tambm podemos instalar os programas separados, usando al-
gum 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
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.
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 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 BrasilAula 1 A linguagem PHP 17
Depois da instalao ser necessrio reinicializar o Apache. Para isso digite:
sudo /etc/init.d/apache2 restart
1.2.3 Testando o ambienteEm 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 :
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 recomen-dado 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, quan-
do 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 WAMP5Fonte: WAMP5 (2010) instalado no Microsoft Windows XP
Para mais detalhes sobre instalao no Linux: https://help.ubuntu.com/community/ApacheMySQLPHP
Programao para Webe-Tec Brasil 18
Figura 1.2: Exemplo do menu de opes do EasyPHPFonte: 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:
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 dire-
trio 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 configura-
o do PHP dever ser exibida, como indicado pela Figura 1.3 a seguir.
Figura 1.3: Instalao do PHP com sucessoFonte: EasyPHP 5.3.2 instalado no Microsoft Windows XP, exibido pelo Mozilla Firefox 3.5
e-Tec BrasilAula 1 A linguagem PHP 19
1.3 Sintaxe bsicaO cdigo do PHP embutido dentro de um arquivo HTML, quando for ne-
cessrio 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.
Navegador HTTP
HTML
Executa Banco deDados
Mdulo PHPPginas .PHP
Servidor WebAPACHE
12
4
3
5
Figura 1.4: Funcionamento de uma pgina dinmica PHPFonte: 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 na-vegador que a solicitou, que a exibe.
Para diferenciar o cdigo PHP dentro da pgina em HTML, podem ser utili-
zados os delimitadores descritos na Figura 1.5 a seguir.
1)
2)
3) Comandos;
4)
Figura 1.5: Delimitadores de cdigo em PHPFonte: Elaborada pelo autor
Programao para Webe-Tec Brasil 20
O primeiro delimitador da Figura 1.5 o padro. O segundo uma simpli-
ficao 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 configu-
rao 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 PHPFonte: Elaborada pelo autor
Pode haver vrios blocos de PHP misturados com vrios trechos de HTML.
1.3.1 Gerando cdigo em HTMLComo 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 echoFonte: Elaborada pelo autor
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.
e-Tec BrasilAula 1 A linguagem PHP 21
1.4 Como testar uma pgina em PHPExistem 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 aces-
sar Ferramentas->Plug-ins e verificar, na aba Instalado, se o PHP se encontra ativado; seno, ative-o.
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 me-lhor 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. Cli-que 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:
Para mais detalhes sobre o NetBeans e para fazer o download da sua instalao, acesse: http://netbeans.org
Programao para Webe-Tec Brasil 22
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 NetBeansFonte: 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.
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.
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 BrasilAula 1 A linguagem PHP 23
Depois de programar e salvar o arquivo, vamos test-lo. Para isso, abra seu na-
vegador 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 tiposAs 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;
Programao para Webe-Tec Brasil 24
O PHP case sensitive, ou seja, letras maisculas so diferentes de minscu-las. 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 OperadoresOs 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 E
Or Ou
Xor Ou exclusivo
! Negao
&& E
|| OuFonte: Elaborado pelo autor
e-Tec BrasilAula 1 A linguagem PHP 25
Quadro 1.6: Operadores de comparao
== Igual a
!= Diferente de
< Menor que
> Maior que
= Maior ou igual aFonte: 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 controleAs 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 seleoOs 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 verda-deira e o bloco do else caso a expresso seja falsa. (se...ento...seno). A Figura 1.10 mostra um exemplo.
Programao para Webe-Tec Brasil 26
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. Quan-do todas as expresses forem falsas, ento o ltimo bloco else ser executa-do. 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 compa-rada 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 swi-tch. 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 switchFonte: Elaborada pelo autor
e-Tec BrasilAula 1 A linguagem PHP 27
1.7.2 Comandos de repetioOs comandos de repetio servem para executar repetidas vezes o mesmo
bloco de comandos, at que uma condio de parada seja atingida. Os co-
mandos so: while,do...while e for. A diferena entre eles est na condi-o de parada das repeties e no contador de iterao.
while a condio de parada testada no incio da iterao. Se for verda-deira, 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 ver-dadeira, o bloco de comandos executado novamente; se for falsa, termina.
Programao para Webe-Tec Brasil 28
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 forFonte: 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 ArrayOs arrays so estruturas para armazenar valores que precisam ser indexados. Diferentemente do C, em que os ndices so apenas nmeros inteiros e con-
secutivos, em PHP os ndices podem ser de vrios tipos. Mesmo se forem in-
teiros 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 arrayFonte: 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 BrasilAula 1 A linguagem PHP 29
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 FunesAs 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 , em uma pgina HTML. As chamadas das funes ficam no
. Veja exemplos de funes na Figura 1.18 a seguir.
Figura 1.18: Exemplos de funesFonte: Elaborada pelo autor
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.
Programao para Webe-Tec Brasil 30
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 refernciaFonte: Elaborada pelo autor
Com os conceitos e comandos aprendidos nesta aula possvel criar pginas
web bsicas em PHP. O conhecimento desses comandos de extrema im-portncia 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.
ResumoNesta 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 manipu-
lados 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 aprendizagem1. 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 for-
matao.
0
e-Tec Brasil
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 da-
dos 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 POSTNa 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
e-Tec BrasilAula 2 Recebendo dados do formulrio 31
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 per-mitidos GET e POST. Mais detalhes a seguir.
enctype define o formato de como os dados sero enviados para o ser-vidor. Necessrio para o envio de arquivos, que ser tratado mais adiante.
Por enquanto, nem precisamos especificar nada. O exemplo acima mos-
tra 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 arqui-vo. 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 pas-
sar 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.
2.2 Obtendo e validando os dadosPara 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 , ele informa o nome do arquivo PHP.
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.
Programao para Webe-Tec Brasil 32
Figura 2.2: Exemplo de formulrio para envio dos dados Fonte: Elaborada pelo autor
e-Tec BrasilAula 2 Recebendo dados do formulrio 33
Seja passando os dados via POST ou GET, o programa no servidor para cap-
turar 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 in-
formados 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 da-dos 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 cam-
pos 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.
Programao para Webe-Tec Brasil 34
Figura 2.3: Pgina PHP que recebe os dadosFonte: Elaborada pelo autor
A Figura 2.4 mostra a pgina exibida pelo programa acima, com os valores
digitados no formulrio.
Figura 2.4: Resultado do envio de dadosFonte: Pgina exibida pelo Mozilla Firefox 3.5
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.
e-Tec BrasilAula 2 Recebendo dados do formulrio 35
Note que os valores dos campos do tipo ComboBoxe ListBox so os valores definidos no atributo value da opo escolhida () 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 va-lue. 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 arquivosPara enviar um arquivo para o servidor, como por exemplo uma foto, pre-
cisamos inserir um campo apropriado no formulrio. Esse campo exibe um
boto Procurar que abre a janela para escolher um arquivo. O comando :
Para testar, vamos acrescentar um campo ao formulrio da Figura 2.2 para
fazer o upload de uma foto. Precisamos mudar a tag , 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 , assim: enctype=multipart/form-data.
Figura 2.5: Formulrio com campo para upload de arquivo Fonte: Elaborada pelo autor
Programao para Webe-Tec Brasil 36
Quando o arquivo enviado para o servidor, vrias informaes so armazena-
das 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 $ar-quivo. 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 atri-buto 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 coman-dos para pegar o tipo e o tamanho do arquivo, respectivamente, so:
$arquivo[type] e $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; edestino 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 ocor-ra algum erro, como por exemplo, o diretrio de destino no existe ou no
tem permisso de gravao, essa funo retornar false.
e-Tec BrasilAula 2 Recebendo dados do formulrio 37
A ltima etapa mostrar a foto que foi enviada. Para isso basta colocar a tag
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
Programao para Webe-Tec Brasil 38
Figura 2.7: Resultado do envio de dados com fotoFonte: Pgina exibida pelo Mozilla Firefox 3.5
Teste o programa da Figura 2.6.
2.4 HeadersOs 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.
e-Tec BrasilAula 2 Recebendo dados do formulrio 39
A sintaxe da funo header:
header(cabealho)
Em que: cabealho um comando j definido para indicar o tipo de cabe-alho HTTP a ser usado.
Por exemplo, o cabealho HTTP/ indica que um cdigo de retorno envia-
do 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 headerFonte: 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 headerFonte: 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 men-
sagem. Esse fluxo de informao a base de todas as pginas web dinmicas.
Programao para Webe-Tec Brasil 40
ResumoNesta 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 aprendizagemAcrescente 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 va-
lidaes (tipo e tamanho) e coloque um link para esse arquivo, com o nome da pessoa, para quando clicar no link, abrir o arquivo PDF.
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 BrasilAula 2 Recebendo dados do formulrio 41
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 ban-cos 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 pos-
sui um mdulo especfico para esse banco. Utilizaremos o MySQL em nossos
exemplos por ser um banco simples de operar e utilizar pouco processamen-
to e memria, em comparao com os outros.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 43
3.1 Criando o banco de dadosAntes 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 Da-
dos 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.
ClientesidClientes: INTEGEREstados_sigla: CHAR(2) (FK)nome: VARCHAR(100)
sigla: CHAR(2)nome: VARCHAR(50)
cpf: VARCHAR(14)Rel_01 Estadosendereo: VARCHAR(100)
dtNasc: DATEsexo: CHAR(1)login: VARCHAR(20)senha: VARCHAR(50)cinema: TINYINT(1)musica: TINYINT(1)info: TINYINT(1)
Figura 3.1: Tabelas a serem utilizadas nos exemplosFonte: Equipe produo CEAD/IFES (2011)
O campo idClientes do tipo autoincremento.
Os campos cinema, musica e info armazenam 1 se aquela opo foi mar-cada, e 0 caso contrrio.
3.2 Conectando ao banco de dadosEm 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.
Programao para Webe-Tec Brasil 44
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 co-
muns so: no encontrar o servidor ou o usurio e a senha no terem permis-
so 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 infor-ma 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() );
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 45
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 servi-
dor 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 co-mandos no ser uma boa soluo. Caso tenha que mudar algum parme-
tro, como por exemplo o IP do servidor, todas as pgina sofrero modifica-
es. Um trabalho e tanto!
Para evitar esse trabalho de manuteno, colocam-se os comandos de cone-
xo com o banco em um nico arquivo e todas as pginas fazem acesso a
esse arquivo utilizando o comando:
Programao para Webe-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, conexao-bd.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 iden-tificador no for fornecido, a ltima conexo estabelecida ser encerrada.
3.3 Inserindo dadosA linguagem padro de comunicao com os bancos de dados a lingua-
gem SQL. Para fazer com que o PHP execute os comandos SQL no banco de
dados MySQL, utiliza-se a funo mysql_query.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 47
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 utiliza-
do 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 ).
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
Programao para Webe-Tec Brasil 48
Lembre-se que na linguagem SQL, os campos do tipo string e data devem estar entre aspas simples ( ). No exemplo acima, os campos $cinema, $mu-sica 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 MySQLFonte: Elaborada pelo autor
Os campos no banco de dados do tipo autonumerao (ou autoincre-
mento) 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 autoincremen-
to, 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 inseridoFonte: 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.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 49
Os comandos para substituir o (vazio) por zero pode ser visto na Figura 3.6:
Figura 3.6: Substituindo o (vazio) por zeroFonte: Elaborada pelo autor
3.3.1 Inserindo datas no bancoO 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, sepa-ram-se os campos dia, ms e ano utilizando a funo substr.
substr retorna uma parte de uma string. Sua sintaxe :
substr(texto, pos_inicial, tamanhoonde:
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 mos-
tra 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-diaFonte: Elaborada pelo autor
Programao para Webe-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.
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, conver-
te e verifica a data e depois insere no banco de dados.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 51
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 rece-
ber, validar e inserir os dados no banco de dados.
3.4 Listando os dadosAps 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 pr-
ximo, e assim por diante at ao ltimo. O comando em PHP que faz isso
o mysql_fetch_assoc.
Programao para Webe-Tec Brasil 52
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 mai-
sculas so diferentes de minsculas.
Para saber o total de registros retornados por uma consulta ao banco, usa-
mos 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.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 53
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 mos-
trar os resultados. Perceba que dentro do while ficam apenas os comandos para criar uma linha da tabela (). Os comandos para abrir e fechar a ta-
bela ficam antes e depois do while, respectivamente ( e ). 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 dinmicoO procedimento de listar todos os registros pode ser til quando queremos pre-
encher 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, auto-
maticamente, 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 ca-
dastradas para realizar a prova de um concurso; e assim por diante.
Todos esses exemplos podem ser obtidos com o procedimento do progra-
ma da Figura 3.11. Dentro do while que ficam os comandos HTML para cada opo desejada.
Programao para Webe-Tec Brasil 54
Como exemplo, vamos mostrar como preencher o combobox do campo
listEstado do nosso formulrio da Figura 2.2, da Aula 2. Naquele formu-lrio, 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 . Para cada
registro da tabela ser criado um comando , 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. Portan-to, 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.
e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 55
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 pro-
postos. A prxima aula depender muito destes conceitos. Somente passe
para a prxima aula quando no existir mais nenhuma dvida.
ResumoNesta 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 aprendizagem1. 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:
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
Leituras complementaresDAVIS, 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.
Programao para Webe-Tec Brasil 56
e-Tec Brasil
Aula 4 Consulta, excluso e alterao no banco de dados MySQL
e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 57
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 MySQLEm 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 rea-
lizar uma consulta no banco de dados escolhendo qualquer um dos campos
para pesquisar, ou uma combinao deles. Por exemplo, podemos listar to-
dos 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.
Programao para Webe-Tec Brasil 58
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 pes-
quisar, 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 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 en-viados 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 se-
gunda 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 Fi-gura 4.2 mostra o cdigo completo da pgina de pesquisa pesqclientes.php.
e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 59
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 exem-plo 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.
Programao para Webe-Tec Brasil 60
4.2 Excluindo no banco de dados MySQLNa 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 necess-
rio 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 mecanis-
mo 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 resulta-
dos foram omitidos. Para o seu teste, use todos os campos da tabela.
Essa imagem possui um link (tag 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. Usare-
mos 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 BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 61
Figura 4.3: Exemplo de pesquisa com uma imagem para o excluirFonte: Pgina exibida pelo Mozilla Firefox 3.5
Figura 4.4: Resultado da pesquisa com link para o excluircliente.phpFonte: 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 ima-gem 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 clu-sula WHERE informando o id do cliente que ser excludo. Ao final, a pgina redirecionada novamente para a pgina de pesquisa (voc poderia redire-
cionar 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 clienteFonte: Elaborada pelo autor
Programao para Webe-Tec Brasil 62
Implemente a pgina excluircliente.php, como mostrada acima, e teste suas pginas.
4.3 Alterando no banco de dados MySQLA 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 altera-
das. 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, interes-
sante 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 BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 63
Pesquisar
Formulrio PHP para alterar
Banco deDados
GET(cdigo)
POST
GET(mensagem)
UPDATE
Figura 4.6: Diagrama de navegao das pginas para alterar dadosFonte: Equipe produo CEAD/IFES (2011)
4.3.1 Passo 1 link no pesquisarAssim, 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 re-ferente 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 formulrioNa pgina formaltcli.php, antes de exibir o formulrio, necessrio ob-
ter 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.
Programao para Webe-Tec Brasil 64
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, alternare-
mos 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 textFonte: Elaborada pelo autor
A expresso 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 e . 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 BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 65
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, ne-cessrio 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 ()
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 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 comboboxFonte: 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 no-
vas informaes para a pgina alterarclibd.php, que realizar o UPDATE
Programao para Webe-Tec Brasil 66
no banco. Portanto, a declarao do formulrio () ficar como no
exemplo na Figura 4.12 a seguir.
Figura 4.12: Definio do action para a pgina alterarclibd.phpFonte: 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 colocare-
mos um campo no formulrio para esse cdigo. Para que o usurio no pos-
sa 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 clienteFonte: Elaborada pelo autor
e) Mensagem de erro
Os dados sero enviados para a pgina PHP que atualizar o banco de da-
dos. 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 respostaFonte: Elaborada pelo autor
O programa da Figura 4.15 mostra o cdigo completo da pgina formaltcli.php.
e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 67
Programao para Webe-Tec Brasil 68
Figura 4.15: Pgina com o formulrio preenchido (formaltcli.php)Fonte: Elaborada pelo autor
4.3.3 Passo 3 atualizar o bancoA 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, cha-mada $mensagem, que ser enviada para a pgina anterior mostr-la.
e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 69
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 afe-tados 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 proces-
so 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.
Programao para Webe-Tec Brasil 70
ResumoNesta aula aprendemos a realizar uma consulta filtrando por determinado
campo, a excluir e a alterar um registro no banco de dados a partir de pgi-
nas 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_idRetorna 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 p