You are on page 1of 176

Programao de Pgina WEB - PHP

Edio n1 - 2007

ROSEMARY FRANCISCO

Programao de Pgina WEB.indd 1

27/8/2007 13:22:09

Programao para Internet

Apresentao
Este livro-texto contm a disciplina de Programao para Internet, cujo contedo disponibilizar aos alunos conceitos fundamentais da programao de aplicaes para Internet. Por meio deste material ser possvel conhecer uma das linguagens mais populares atualmente tanto em ambientes estudantis quanto em ambientes comerciais. Para sua melhor compreenso, o livro est estruturado em quatro partes. Na primeira parte, so apresentados os conceitos bsicos da programao para WEB, que proporcionar um primeiro contato com essa tecnologia. Ainda demonstraremos qual deve ser o ambiente de desenvolvimento e como configur-lo. A segunda parte engloba as principais caractersticas da linguagem PHP e o desenvolvimento de vrios exemplos para melhor compreenso do funcionamento de cada uma das caractersticas citadas. A terceira parte tratar de aspectos um pouco mais avanados da linguagem PHP, conceitos como desenvolvimento Orientado a Objetos sero tratados nesta parte. Por fim, na quarta e ltima parte do livro, demonstraremos como a linguagem PHP interage com o banco de dados MySQL, tambm desenvolveremos um estudo de caso que permitir a consolidao dos conhecimentos adquiridos nesta disciplina. Lembre-se de que a sua passagem por esta disciplina ser tambm acompanhada pelo Sistema de Ensino EaD Tupy, seja por correio postal, fax, telefone, e-mail ou Ambiente Virtual de Aprendizagem. Sempre entre em contato conosco quando surgir alguma dvida ou dificuldade. Entre sempre em contato conosco, quando surgir alguma dvida ou dificuldade. Toda a equipe ter a maior alegria em atend-lo (a), pois o seu desenvolvimento intelectual e profissional, nessa jornada, so o nosso maior objetivo. Acredite no seu sucesso e bons momentos de estudo! Equipe EaD Tupy

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

SUMRIO

CARTA DO PROFESSOR ............................................................................................. 4 CRONOGRAMA DE ESTUDOS .................................................................................... 5 PLANO DE ESTUDOS ................................................................................................... 6 AULA 1 VISO GERAL SOBRE A LINGUAGEM PHP............................................. 7 AULA 2 INTRODUO LINGUAGEM PHP..........................................................20 AULA 3 TIPOS DE DADOS SUPORTADOS PELA LINGUAGEM PHP.................. 33 AULA 4 TRABALHANDO COM VARIVEIS E CONSTANTES.............................. 49 AULA 5 OPERADORES DA LINGUAGEM PHP...................................................... 61 AULA 6 ESTRUTURAS DE CONTROLE. .............................................................. 73 AULA 7 CLASSES E OBJETOS............................................................................. 94 AULA 8 CONTROLE DE SESSO....................................................................... 106 AULA 9 TRABALHANDO COM BANCO DE DADOS MYSQL......................... 113 AULA 10 ESTUDO DE CASO: REVENDA DE AUTOMVEIS...............................120 REFERNCIAS ........................................................................................................ 175

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 3 27/8/2007 13:22:09

Programao de Pgina WEB - PHP

Carta da Professora
O conhecimento como um jardim: se no for cultivado, no pode ser colhido. (Provrbio Africano)

Caro(a) aluno(a), Nos prximos captulos, ter incio a caminhada rumo ao conhecimento da programao para Internet utilizando a linguagem de programao PHP. Linguagem que foi concebida apenas para uso particular, hoje em dia expande-se tanto no meio acadmico quanto em aplicaes comerciais que esto espalhadas pelo mundo. Com o avano dos meios de comunicao e a rpida expanso dos servios disponveis pela Internet, tornou-se imprescindvel aos prossionais de informtica, principalmente aos desenvolvedores de aplicaes, o conhecimento de uma linguagem que permita construir e disponibilizar diversas aplicaes para a Internet. A Internet tem mudado muitos conceitos e o seu foco principal, hoje em dia, disponibilizar servios de maneira rpida a qualquer momento e para qualquer usurio. Assim, nosso objetivo maior, depois de percorrida esta caminhada, estarmos inseridos no contexto do desenvolvimento das aplicaes para a Internet. Durante esta caminhada, conheceremos a origem da linguagem PHP, seus principais conceitos, sua sintaxe bsica e, ao nal, desenvolvendo um estudo de caso com o intuito de praticarmos melhor o conhecimento adquirido. Sendo assim, convido voc para, juntos, agora virtualmente, vencer este novo desao"

Professora Rosemary Francisco

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 4 27/8/2007 13:22:09

Programao para Internet

Cronograma de Estudos
Acompanhe, no cronograma abaixo, os contedos das aulas e atualize as possveis datas de realizao de aprendizagem e avaliaes.

Semana

Carga horria 4 8 8 6

Aula Viso Geral sobre a Linguagem PHP Introduo a Linguagem PHP Tipos de dados suportados pela Linguagem PHP Trabalhando com variveis e constantes Operadores da Linguagem PHP Estruturas de Controle Classes e Objetos em PHP Controle de Sesso Trabalhando com Banco de Dados MySQL Estudo de Caso: Revenda de Automveis

Data/ Avaliao _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_

6 8

12 8

6 14

SOCIESC - Sociedade Educacional de Santa Catarina

Programao para Internet

Plano de Estudos

Bases Tecnolgicas Banco de dados para Internet; WEB sites dinmicos; aplicaes avanadas para Internet; Performance de WEB sites.

Competncias Planejar o desenvolvimento de web sites com acesso a banco de dados; Planejar a construo de web sites dinmicos baseados em novas tecnologias; Compreender os mtodos e tcnicas de desenvolvimento de aplicaes avanadas para Internet; Identificar solues na otimizao e melhoria da performance de web sites.

Habilidades Projetar e desenvolver web sites com acesso a banco de dados; Construir web sites dinmicos; Desenvolver aplicaes avanadas para Internet; Implementar melhorias na performance de web sites.

Carga Horria: 120 horas

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

Aula 1

VISO GERAL SOBRE A LINGUAGEM PHP


Nesta prxima aula voc ir conhecer como funcionam as linguagens de programao para a Internet, tendo como foco principal a linguagem PHP. Veremos o que PHP, como e quando surgiu essa linguagem, quais as principais vantagens em utilizar a linguagem PHP para desenvolver aplicaes para Internet e como deve ser o ambiente de desenvolvimento para trabalhar com a linguagem. Bom estudo!

Objetivos da Aula

Ao nal desta aula voc dever ser capaz de: Identicar o que uma arquitetura cliente-servidor; Analisar as vantagens da utilizao da linguagem PHP para programao para Internet; Identicar qual o ambiente que deve ser utilizado para programar com PHP.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo s Linguagens de programao para Internet; O que PHP?; Como surgiu a linguagem PHP?; Vantagens da linguagem PHP; Como trabalhar com PHP; Exerccios propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 7 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

1 INTRODUO AS LINGUAGENS DE PROGRAMAO PARA INTERNET

Como j sabemos, a Internet uma rede que surgiu com o intuito principal de compartilhar informaes entre os usurios interligados por meio dela. No incio, as informaes que eram compartilhadas tinham um foco de estudo e pesquisa e os usurios que tinham acesso a essa rede eram poucos. Com o avano das tecnologias e a expanso da rede para outros usurios, o acesso s informaes e aos servios disponveis pela Internet aumentou consideravelmente. De acordo com as pesquisas realizadas em Junho/2007, pelo Internet World Stats, estima-se que a Internet usada por 18% da populao mundial (em torno de 1,1 bilho de pessoas). Este acesso vem aumentando gradativamente, em Maro/2007 essa mesma pesquisa foi realizada e as estatsticas apontaram que 16,9% da populao tinham acesso Internet. Isso signica que apenas em um ms tivemos um aumento de 1,1% de acessos, um aumento realmente considervel analisando as devidas propores (bilhes de pessoas). No so somente os acessos rede que vm aumentando, os tipos de servios disponibilizados tambm esto em larga expanso. Os servios pioneiros como WWW World Wide WEB que permitiam apenas a publicao de pginas institucionais, com informaes estticas, esto sendo substitudas por pginas com contedo cada vez mais dinmico, possibilitando aos prprios usurios da rede a interao e publicao dos contedos dessas pginas. Para permitir que os usurios da rede interajam dessa forma, necessrio que as aplicaes disponveis na Internet sejam desenvolvidas com uma linguagem que permita esses tipos de recursos. Nesse cenrio, surgiram as vrias linguagens de programao para a Internet, que permitem aos desenvolvedores criar aplicaes e servios com os mais variados recursos para disponibilizar na Internet. As aplicaes desenvolvidas para a Internet, utilizam a arquitetura cliente-servidor. O que uma arquitetura cliente-servidor? A gura 1 demonstra o funcionamento da arquitetura cliente-servidor.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 8 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

Figura 1 Representao simplicada da arquitetura cliente-servidor

Analisando a representao da gura 1, vemos um computador representando a mquina cliente, que pode ser entendida como o computador dos usurios acessando a Internet. A mquina cliente faz uma requisio de servio por meio do protocolo http protocolo que nos permite visualizar os servios disponveis na Internet - para um servidor. Devemos lembrar que a conexo entre a mquina cliente e o servidor pode ser feita por meio da Internet (quando se trata de um servio disponvel na Internet), ou ento por meio de uma rede interna (no caso das empresas que disponibilizam aplicaes cliente-servidor dentro da sua estrutura organizacional). O servidor, por sua vez, ao receber a requisio, independente se um servio interno ou externo, estar analisando a requisio feita e disponibilizando o servio. Na gura 1, o servio requisitado foi desenvolvido utilizando a linguagem PHP, portanto, o servidor ir localizar a rotina PHP, interpretar o cdigo PHP da rotina utilizando o interpretador do PHP instalado no servidor e retornar ao cliente o resultado da rotina em formato de pgina HTML. Veremos mais adiante, neste mesmo captulo, como deve ser o ambiente para trabalharmos com PHP. Porm por meio da gura 1, j podemos vericar que ser necessrio um interpretador da linguagem PHP para retornar ao usurio da aplicao o resultado nal esperado. O surgimento das linguagens de programao para Internet foi justamente

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 9 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

10

durante a fase de repercusso das redes de computadores e da arquitetura clienteservidor. As empresas fornecedoras de linguagens de programao e tambm os especialistas em servios para Internet identicaram a demanda e assim comearam a nascer as linguagens voltadas para o desenvolvimento de aplicaes cada vez mais dinmicas para a Internet.

1.1 O QUE PHP?

PHP pode ser traduzido para: PHP Hipertext Preprocessor e uma linguagem de programao voltada para o desenvolvimento de aplicaes para a Internet. Por ser uma linguagem interpretada, caracterstica comum entre as linguagens para a Internet, necessria a instalao de um interpretador no servidor da aplicao que ir interpretar as instrues da linguagem e retornar o resultado no formato de uma pgina HTML para o navegador do usurio. A linguagem PHP uma linguagem Open Source, ou seja, pode ser utilizada por qualquer usurio sem a necessidade de compra de licena para a utilizao e desenvolvimento de aplicaes. Tambm pode ser considerada como uma linguagem multiplataforma, pois o interpretador da linguagem tem compatibilidade com mais de um sistema operacional. Essas caractersticas so as principais motivaes que fazem com que a linguagem seja cada vez mais popular entre os desenvolvedores de aplicaes para a Internet.

1.2 COMO SURGIU?

A linguagem PHP foi criada em 1994 por Ramus Lerdorf. Nessa poca, a idia de Ramus era apenas facilitar a publicao de informaes no seu site pessoal. Em 1995, o interpretador foi publicado e divulgado em uma comunidade Open Source e comeou a ser utilizada por outros usurios.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 10 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

11

Fique sabendo Uma comunidade Open Source uma comunidade de desenvolvedores que desenvolvem e disponibilizam aplicaes e outros recursos que auxiliam no processo de desenvolvimento. Todos os recursos e aplicaes disponibilizados por esse tipo de comunidade so livres de licena de uso.

Entre os anos de 1996 e 1997, a linguagem j estava bem popularizada entre as diversas comunidades livres e seus usurios e, nessa poca, a origem do interpretador e suas atualizaes caram sob a responsabilidade da comunidade livre da linguagem PHP, que at hoje responsvel pelas correes e atualizaes da linguagem. Hoje em dia, a linguagem reconhecida mundialmente e muitas aplicaes j foram desenvolvidas com ela. a linguagem favorita dos acadmicos e desenvolvedores que utilizam a plataforma Linux. A verso mais recente e estvel da linguagem a verso 5, porm espera-se para o prximo ano, em 2008, o lanamento da verso 6, que j possui algumas distribuies na fase beta fase de testes.

1.3 VANTAGENS DA LINGUAGEM PHP

As principais vantagens da linguagem so: livre de licena utilizao gratuita; multiplataforma, podendo ser utilizada na maioria dos sistemas operacionais sistemas operacionais mais populares; A grande maioria dos provedores externos empresas que vendem espao para armazenamento de sites e aplicaes na Internet possuem a instalao do interpretador do PHP em seus servidores; Possui muitos recursos distribudos em bibliotecas de fontes nas comunidades livres recursos que auxiliam no desenvolvimento das aplicaes; A comunidade livre de PHP est sempre desenvolvendo e distribuindo novos recursos nas bibliotecas de fontes para os desenvolvedores;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 11 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

12

A linguagem tem suporte e integrao com os bancos de dados mais populares como MySQL, SQL Server, Oracle, DB2, entre outros; Permite o desenvolvimento de aplicaes dinmicas com recursos como: envio de e-mails, autenticao de usurios, contedo dinmico entre outros.

Alm das vantagens citadas acima, a linguagem tambm tem um diferencial importante em relao s demais: uma linguagem de fcil aprendizagem.

1.4 COMO TRABALHAR COM PHP

Os primeiros passos para iniciar o desenvolvimento de aplicaes com a linguagem PHP a preparao do ambiente de desenvolvimento. Para isso, certiquese de que voc tem os requisitos mnimos e o ambiente do PHP instalado em seu computador. O ambiente de desenvolvimento do PHP composto de um servidor WEB, responsvel pelo armazenamento e publicao das pginas, e o interpretador da linguagem PHP. O servidor WEB mais utilizado pelos desenvolvedores PHP o Apache, que um servidor gratuito, mas o PHP tambm pode ser congurado em outros servidores WEB como o famoso IIS da Microsoft. Alm disso, o ambiente de desenvolvimento pode tambm ser composto de um gerenciador de banco de dados para o armazenamento dos dados da aplicao dinmica. O banco de dados MySQL o favorito para o desenvolvimento de aplicaes para Internet com PHP. Para facilitar a congurao do ambiente de desenvolvimento, existe atualmente uma ferramenta chamada Vertrigo que permite a instalao e congurao de todo o ambiente de desenvolvimento PHP. Essa ferramenta instala inclusive o banco de dados MySQL e permite que aplicaes desenvolvidas com PHP sejam integradas com o MySQL. Para instalar o Vertrigo, voc pode fazer o download atravs do site http://vertrigo.sourceforge.net/?lang=br e seguir as instrues de instalao e congurao disponveis no site. A instalao do Vertrigo bem simples, possui a caracterstica: Next, Next, Finish ou, em portugus: Prximo Passo, Prximo Passo, Concluir.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 12 27/8/2007 13:22:10

Programao de Pgina WEB - PHP

13

As informaes do instalador tambm so bem simples e intuitivas, basta selecionar o idioma Portugus para instalao e seguir as instrues seguintes. Aps a instalao do Vertrigo voc j possuir o ambiente de desenvolvimento congurado para desenvolver suas aplicaes PHP. Para iniciarmos o desenvolvimento de aplicaes em PHP, inicialize o servidor do Vertrigo por meio do menu Iniciar >> Programas >> VertrigoServ. Ser aberta a janela do Vertrigo com as informaes das ferramentas que foram instaladas e conguradas em seu computador. Para inicializar o servidor, basta clicar no boto: Hide this window and start server que signica: Esconda essa janela e inicie o servidor. A gura 2 ilustra a janela do VertrigoServ.

Figura 2 Janela do VertrigoServ

Aps iniciar o VertrigoServ, ser mostrado um cone do servidor na barra de status do Windows, ao lado do relgio. Esse cone estar sempre visvel enquanto o servio do Vertrigo estiver ativo. Finalmente, para validarmos que est tudo certo com o Apache servidor WEB instalado para armazenar e publicar as pginas em PHP abra um navegador e digite o seguinte comando na barra de endereos: http://localhost Aps digitar o comando, ser mostrada a tela do VertrigoServ. A gura 3 mostra a tela do VertrigoServ.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 13 27/8/2007 13:22:11

Programao de Pgina WEB - PHP

14

Figura 3 Tela do VertrigoServ

Aps digitar o comando, ser mostrada a tela do VertrigoServ. A gura 3 mostra a tela do VertrigoServ. Para visualizar a verso do interpretador do PHP instalado por meio do Vertrigo, clique no link: View phpinfo screen, disponvel no item: Tools and Links. Aps clicar no link citado, ser mostrada uma tela com as informaes do interpretador do PHP: verso e bibliotecas instaladas. A gura 4 ilustra a tela com as informaes do PHP.

Figura 4 Tela com as Informaes do PHP

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 14 27/8/2007 13:22:11

Programao de Pgina WEB - PHP

15

Aps validar a congurao e o funcionamento do ambiente de desenvolvimento, precisamos escolher um editor de comandos para podermos dar incio ao conhecimento e aprendizagem da linguagem PHP. Atualmente, no mercado, h muitos editores que permitem aos desenvolvedores de PHP uma boa produtividade, porm muitos desses editores no possuem uma verso gratuita para uso. importante ressaltar aqui, que voc pode trabalhar com a linguagem PHP utilizando at um bloco de notas, contudo, como j informamos anteriormente, um editor PHP ir agilizar e melhorar a produtividade durante o desenvolvimento. No decorrer do nosso curso, utilizaremos o editor: PHP Editor, desenvolvido em portugus e uma ferramenta gratuita. Para obter a verso do PHP Editor, entre no site: http://paginas.terra.com.br/informatica/php_editor/download.html e clique no link: Mirror 2 para fazer o download do arquivo. Aps o download do arquivo, clique duas vezes em cima do arquivo executvel para fazer a instalao que bem simples, basta seguir as instrues da instalao. As guras 5 a 8 ilustram o processo de instalao do PHP Editor.

Figura 5 Tela 1 da Instalao do PHP Editor

Aps clicar no arquivo de instalao do PHP Editor, ser exibida a primeira tela com instrues para a instalao. Para prosseguir com a instalao, clique no boto avanar.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 15 27/8/2007 13:22:11

Programao de Pgina WEB - PHP

16

Em seguida, o instalador ir solicitar a conrmao do local para instalao do PHP Editor, geralmente o diretrio: C:\Arquivos de Programas\PHP Editor. Selecione o diretrio onde dever ser feita a instalao por meio do boto: Procurar, ou deixe o caminho sugerido pelo instalador e clique no boto: Instalar para prosseguir a instalao.

Figura 6 Tela 2 da Instalao do PHP Editor

Aguarde at o processo de instalao nalizar (gura 7). Quando o processo de instalao nalizar, ser mostrada a tela com as informaes da instalao. Para prosseguir, clique no boto: Terminar. Caso a opo: Executar o PHP Editor esteja selecionada esta opo vem selecionada por padro - o PHP Editor ser aberto.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 16 27/8/2007 13:22:11

Programao de Pgina WEB - PHP

17

Figura 7 Tela 3 da Instalao do PHP Editor Ao clicar no boto: Terminar, o PHP Editor ir questionar se voc deseja relacionar todos os arquivos com extenso: .php com a ferramenta. Ao conrmar esta opo, todos os arquivos criados com a extenso: .php sempre sero abertos com o PHP Editor. Esse o ltimo passo para a instalao da ferramenta. Concludo esse passo, j ser possvel trabalhar com a ferramenta. A gura 8 ilustra a ferramenta PHP Editor que utilizaremos durante o curso.

Figura 8 Ferramenta PHP Editor

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 17 27/8/2007 13:22:11

Programao de Pgina WEB - PHP

18

No prximo captulo, vamos conhecer a sintaxe da linguagem PHP.

Sntese

Nesta aula vimos: Uma introduo s linguagens para desenvolvimento de aplicaes para Internet; A denio de PHP; Como surgiu a linguagem PHP; Quais as vantagens da linguagem PHP em relao s demais linguagens; Quais so os pr-requisitos para trabalhar com PHP.

Exerccios propostos

1) Complete a frase abaixo com uma das alternativas, a ordem das palavras deve corresponder lgica da frase. A linguagem PHP possui um .... responsvel pela transformao das pginas .... em pginas .... . Essas pginas .... so as pginas que o .... ir disponibilizar ao .... a. Servidor Web, HTML, PHP, PHP, Usurio, Interpretador b. Servidor Web, PHP, HTML, PHP, Interpretador, Usurio c. Interpretador, PHP, HTML, HTML, Servidor WEB, Usurio d. Interpretador, HTML, PHP, PHP, Servidor WEB, Usurio

2) Selecione a alternativa incorreta. O PHP pode ser denido como: a. Uma linguagem de programao para Internet b. Uma linguagem Open Source c. Uma linguagem interpretada

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 18 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

19

d. Uma linguagem compilada

3) Selecione a alternativa correta. O PHP atualmente mantido: a. Pelo criador da linguagem b. Por uma comunidade de softwares que necessita licena c. Por uma comunidade de softwares livres d. Por uma empresa privada

4) Qual das alternativas abaixo no uma vantagem na utilizao do PHP? a. O PHP multiplataforma b. O PHP Open Source c. O PHP possui integrao com diversos banco de dados d. O PHP possibilita o desenvolvimento de aplicaes estticas

5) Para desenvolver aplicaes com PHP, necessrio ter um ambiente de desenvolvimento. Quais dos itens abaixo so obrigatrios nesse ambiente de desenvolvimento ( permitida mltipla escolha): a. Servidor WEB b. Banco de Dados c. Interpretador PHP d. Editor PHP

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 19 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

20

Aula 2

INTRODUO LINGUAGEM PHP

Caro aluno(a)! Nesta segunda aula voc ir aprender a sintaxe bsica da linguagem PHP e tambm vai desenvolver o primeiro exemplo com a linguagem. Aps o desenvolvimento desse exemplo, ser mostrado como testar o exemplo no ambiente de desenvolvimento congurado. Bom estudo!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Escrever uma instruo bsica em PHP; Testar o funcionamento de uma pgina PHP.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Conhecendo a sintaxe bsica da linguagem; Desenvolvendo o primeiro exemplo com PHP; Exerccios propostos

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 20 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

21

1 CONHECENDO A SINTAXE BSICA DA LINGUAGEM

Grande parte das aplicaes desenvolvidas em PHP possui a seguinte estrutura: Interface com o usurio aparncia da aplicao representada pela parte HTML com imagens e textos estticos e/ou dinmicos; Scripts com instrues em PHP representando a lgica de negcio da aplicao; Integrao com banco de dados representando os dados dinmicos que sero disponibilizados na aplicao. Essa estrutura tambm utilizada em aplicaes desenvolvidas com outras linguagens, pois esse um padro seguido por grande parte de desenvolvedores de aplicaes para a Internet. Portanto, importante lembrar que, alm de utilizarmos a linguagem PHP para desenvolvermos aplicaes dinmicas, tambm devemos conhecer os componentes bsicos da linguagem HTML e os conceitos bsicos de banco de dados.

1.1 Delimitando o cdigo PHP

Para fazer a interpretao de um cdigo PHP e disponibilizar no formato HTML, o interpretador procura um identicador que sinaliza o incio do cdigo PHP. Esse identicador chamado de delimitador. Por meio do delimitador, o interpretador saber onde o incio e o m do cdigo PHP. O delimitador PHP representado pelos smbolos: <?php ou somente <? = incio do bloco de comandos; ?> = m do bloco de comandos.

O exemplo abaixo demonstra como utilizar o delimitador PHP: <?php //instrues PHP; ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 21 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

22

ou <? //instrues PHP; ?>

Esse o primeiro conceito que devemos utilizar quando estamos desenvolvendo com PHP. Sempre que incluirmos alguma instruo PHP, necessrio incluir a instruo dentro do bloco de delimitadores. Como vimos, podemos utilizar arquivos / pginas em PHP para montar a interface / leiaute da aplicao. Esse leiaute, muitas vezes, criado com o auxlio da linguagem HTML que permite a insero de estilos de fontes diferentes, imagens e outros componentes interativos. Por esse motivo, comum, quando desenvolvemos utilizando PHP, a interao entre instrues PHP e instrues HTML no mesmo arquivo. A funo da linguagem HTML ser formatar o leaiute da aplicao dinmica, de acordo com a disposio das instrues PHP e HTML. Vamos analisar o cdigo da pgina PHP abaixo:

Nome da pgina: exemplo1.php Contedo da pgina: <html> <body> <b><? print Ol Seja Bem Vindo ao PHP ?> </b> </body> </html>

Analisando o contedo da pgina, as instrues que esto em negrito so especcas da linguagem HTML e a instruo que no est em negrito uma instruo PHP. O interpretador ir identicar a existncia de uma instruo PHP por meio dos delimitadores: <? ?> e interpretar a instruo que foi denida. As instrues HTML foram includas na pgina apenas para facilitar a formatao do texto que ser mostrado, nesse caso, um texto em negrito, portanto, no ter nenhuma interferncia

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 22 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

23

1.2 Separador de instrues

Outro item importante que devemos utilizar no desenvolvimento com PHP o separador das instrues. Cada instruo denida em uma pgina em PHP deve ser nalizada com um ponto e vrgula ;. O interpretador do PHP l as instrues de uma pgina linha a linha. Quando ele identica o nal de uma instruo, interpreta a instruo e, caso tenha sucesso, ir disponibilizando o resultado parcialmente. Isso signica que a pgina HTML, resultante do processo de interpretao, ser montada aos poucos, conforme a nalizao da interpretao das instrues. Esse processo, muitas vezes, transparente aos olhos do usurio, sendo possvel sua identicao somente quando h lentido na montagem da pgina HTML. A lentido pode ser causada por uma srie de fatores como: problema na rede, problema no computador ou ainda problema na instruo PHP denida.

1.3 Nomes de variveis

Diferente da maioria das linguagens de desenvolvimento, tanto para a Internet quanto para aplicaes diversas, a linguagem PHP possui uma caracterstica especca para declarao de nomes de variveis. Ao declarar um nome para uma varivel, necessrio incluir o smbolo: $ antes da varivel. Esse smbolo ir identicar que o nome a seguir uma varivel. O interpretador PHP somente reconhecer uma varivel se a mesma iniciar com o smbolo $. Outra caracterstica importante a ser ressaltada que o PHP case-sensitive, ou seja, ele faz distino entre maisculas e minsculas. Veja no exemplo abaixo a utilizao de variveis: <? $nome = Jos; print Ol . $nome; // vai mostrar Jos print <br>; print Ol . $NOME; // no vai mostrar nada ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 23 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

24

1.4 Comentrios

Como j sabemos, os comentrios so muito importantes durante o desenvolvimento das aplicaes, por meio deles teremos como compreender o que faz uma determinada instruo ou bloco de instrues. Assim, quando for necessrio executar alguma manuteno na instruo, ser possvel faz-la de forma mais rpida. Em PHP h dois tipos de comentrios: Comentrios de linha = // Comentrios de bloco = /* o comentrio ca aqui */

Os comentrios de linha so utilizados quando precisamos fazer um comentrio rpido, que ocupe apenas uma linha. J os comentrios de bloco so utilizados quando o comentrio a ser feito possui mais de uma linha de texto. Veja o exemplo: <? //esse um comentrio de linha, ca apenas no cdigo print Essa frase est abaixo do comentrio de linha; //mais um comentrio de linha, a linha abaixo utilizada o comando <BR> do //HTML, para pular duas linhas entre as frases que sero mostradas na tela print <br><br>; /* Esse um comentrio de bloco. Pode ter mais de uma linha de comentrio, porm assim como o comentrio de linha, tambm somente ca no cdigo e nunca ser interpretado e mostrado na pgina nal em HTML para o usurio. */ print Essa frase ser mostrada duas linhas abaixo da primeira frase e abaixo do comentrio de bloco; ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 24 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

25

1.5 Imprimindo cdigo na tela

Como j vimos nos exemplos anteriores, utilizamos o comando: print para imprimir o resultado das instrues na tela do navegador. Em PHP existem dois comandos que permitem imprimir textos e cdigos na tela: print echo

Ambos possuem a mesma funo: imprimir na tela, e no existe nenhum tipo de distino entre eles, portanto, em seus cdigos, voc poder utilizar o comando que lhe parece mais agradvel. No prximo tpico criaremos e testaremos o primeiro exemplo e car mais clara a funo do comando de impresso na tela.

2 DESENVOLVENDO O PRIMEIRO EXEMPLO COM PHP

Agora que j conhecemos a sintaxe bsica do PHP, vamos desenvolver nosso primeiro exemplo utilizando o PHP Editor para criar uma pgina em PHP e o ambiente de desenvolvimento do Vertrigo para testar o funcionamento da pgina criada. Primeiro devemos iniciar o servidor do Vertrigo. V at o menu Iniciar >> Programas >> VertrigoServ e selecione o item: VertrigoServ. Ao clicar nesse item, ser mostrada a tela de inicializao do servio do Vertrigo, veja a gura 2 ilustrada no captulo 1 desta apostila. Clique no boto: Hide this window and Start Server para iniciar o servio. Em seguida, abra o navegador da Internet e informe o comando abaixo na barra de endereos: http://localhost

Ser mostrada a pgina do VertrigoServ (gura 3 do captulo 1 desta apostila). Seguidos esses passos, j podemos iniciar o desenvolvimento do nosso exemplo. Para conseguirmos testar os nossos exemplos, ser necessrio disponibilizar os arquivos dentro do servidor WEB Apache, instalado pelo VertrigoServ. Dessa forma, todos os arquivos de exemplo devero estar dentro de um diretrio chamado: www que est dentro do diretrio de Instalao do VertrigoServ. Se voc optou pelo

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 25 27/8/2007 13:22:12

Programao de Pgina WEB - PHP

26

caminho padro de instalao para VertrigoServ no momento da instalao, o diretrio www estar disponvel em C:\Arquivos de Programas\VertrigoServ\www. Se voc optou por outro caminho de instalao, procure o caminho que voc informou no momento da instalao e procure pelo diretrio: www. Aps encontrar o diretrio: www, crie um novo diretrio dentro dele chamado: apostila_php. Todos os arquivos desenvolvidos em PHP durante o curso devero ser disponibilizados nesse diretrio para realizar os testes. Com o diretrio criado, vamos agora abrir o PHP Editor para criar nosso primeiro exemplo. Os outros exemplos mostrados na apostila podero ser testados tambm da mesma forma que faremos com este exemplo. Abra o PHP Editor e, na barra de endereos mostrada, procure pelo diretrio: apostila_php criado dentro do diretrio: www do VertrigoServ. A gura 9 mostra onde deve ser selecionado o diretrio: apostila_php.

Figura 9 Selecionando diretrio: apostila_php no PHP Editor

Com o diretrio: apostila_php selecionado, j possvel criar o arquivo PHP que possuir a instruo do primeiro exemplo. Crie um novo arquivo clicando no cone de criao de arquivo ou acessando o menu: Arquivo >> Novo. O PHP Editor ir questionar qual o tipo de arquivo que voc deseja criar, selecione o tipo de arquivo:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 26 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

27

/PHP e clique no boto: OK. A gura 10 ilustra a janela com as opes de arquivos que podem ser criados.

Figura 10 Criando arquivos no PHP Editor

A seguir ser mostrada a estrutura de um arquivo em PHP. A gura 11 ilustra o formato de um novo arquivo em PHP criado pelo PHP Editor.

Figura 11 Novo arquivo PHP

As instrues em PHP do exemplo devero car dentro dos delimitadores do PHP: <? e ?>. Os demais comandos que aparecem no arquivo so comandos HTML

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 27 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

28

utilizados para a formatao da pgina HTML nal, criada pelo interpretador PHP, ao nal da interpretao de todas as instrues PHP contidas no arquivo. O comando: <TITLE></TITLE> do HTML o responsvel por alterar o ttulo da pgina PHP que aparece na barra azul do navegador de Internet. Assim, vamos alterar o texto: Documento PHP, que est dentro do comando HTML, para Primeiro Exemplo em PHP. Isso far com que o texto informado seja mostrado como ttulo da pgina no navegador. Feita a alterao, vamos colocar as instrues PHP do exemplo dentro dos delimitadores PHP. Digite a seguinte instruo:

<? //Esse o primeiro exemplo em PHP que vamos testar //Iremos imprimir o texto: O teste funcionou ok!

//Primeiro vamos criar uma varivel que vai receber o texto: $texto = O teste funcionou ok!;

//Agora vamos imprimir esse texto na tela utilizando o comando print: print $texto; ?>

Depois salve o arquivo clicando no cone do disquete ou selecionando o menu: Arquivo >> Salvar. Salve o arquivo com o nome: exemplo4.php. A gura 12 ilustra como car o cdigo arquivo exemplo4.php.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 28 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

29

Figura 12 Arquivo exemplo4.php

Para testarmos a execuo do arquivo de exemplo criado, devemos acessar o navegador de Internet e informar o seguinte comando na barra de endereos: http://localhost/apostila_php/exemplo4.php Ao executar esse comando no navegador, o arquivo: exemplo4.php ser interpretado pelo interpretador PHP, em seguida, transformado em uma pgina HTML e, ao nal, o contedo da pgina HTML gerado disponibilizado pelo servidor WEB Apache do ambiente VertrigoServ. A gura 13 ilustra o resultado do teste.

Figura 13 Testando o exemplo4.php

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 29 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

30

Todos os arquivos desenvolvidos em PHP devero ser testados dessa forma. Para os nossos exemplos, sempre criaremos os arquivos PHP dentro do diretrio: apostila_php, porm para suas prximas aplicaes, crie um novo diretrio e disponibilize os arquivos dentro desse diretrio para testes. Para testar no navegador, sempre coloque o nome do diretrio criado aps o comando: http://localhost/ e informe o nome do arquivo que deseja testar. Seguem alguns exemplos de chamadas de arquivos para testar no navegador.

1. Testar o arquivo: principal.php disponvel no diretrio: aplicacao1: http://localhost/aplicacao1/principal.php

2. Testar o arquivo: teste.php disponvel no diretrio: aplicacao2: http://localhost/aplicacao2/teste.php

3. Testar o arquivo: exemplo1.php disponvel no diretrio: apostila_php: http://localhost/apostila_php/exemplo1.php

Sntese

Nesta aula vimos: A sintaxe bsica da linguagem PHP; Como desenvolver e testar um exemplo bsico em PHP.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 30 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

31

Exerccios propostos

1) Qual das alternativas abaixo no faz parte da estrutura bsica de uma aplicao desenvolvida com PHP: a. Interface com usurio b. Pgina com instrues PHP c. Interface com o banco de dados d. Integrao com banco de dados

2) Para utilizar uma instruo PHP em uma pgina, necessrio (apenas uma alternativa est correta): a. Utilizar os delimitadores PHP representados pelos caracteres: <? E ?> b. Declarar uma varivel c. Utilizar comandos HTML d. Montar a instruo PHP no corpo da pgina HTML

3) Todas as instrues PHP devem ser nalizadas com (apenas uma alternativa est correta): a. Ponto (.) b. Ponto e vrgula (;) c. Vrgula (,) d. Todas as alternativas esto incorretas

4) Ao declarar uma varivel importante observar ( permitida mltipla escolha): a. Se o smbolo $ foi utilizado no incio do nome da varivel b. Se foi declarado o tipo de dados da varivel c. Se a varivel est com letras maisculas e minsculas por causa do case-sensitive d. O tipo de valor que a varivel est recebendo

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 31 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

32

5) O comando PHP que imprime instrues na tela o ( permitida mltipla escolha): a. printf b. print c. printout d. echo

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 32 27/8/2007 13:22:13

Programao de Pgina WEB - PHP

33

Aula 3

TIPOS DE DADOS SUPORTADOS PELA LINGUAGEM PHP

Caro aluno(a)! Nesta aula voc estudar sobre os tipos de dados suportados pela linguagem PHP. Mostraremos como utilizar os tipos de dados, como transformar uma varivel que possui um tipo de dado para outro tipo de dados e vamos tambm testar alguns exemplos utilizando os tipos de dados vistos. Boa aula!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar quais so os tipos de dados utilizados pelo PHP; Utilizar corretamente os tipos de dados nas variveis; Transformar um tipo de dado em outro tipo de dado; Testar o funcionamento dos tipos de dados.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo aos Tipos de Dados do PHP; Transformando Tipos de Dados; Exerccios propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 33 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

34

1 INTRODUO AOS TIPOS DE DADOS DO PHP

A linguagem PHP, assim como em outras linguagens para desenvolvimento de aplicaes para Internet, no exige a declarao do tipo de dados no momento da criao de uma varivel. Mas se no informamos qual o tipo de dado de uma varivel, como o PHP consegue trabalhar com os tipos de dados e executar clculos matemticos, por exemplo? A linguagem PHP consegue fazer a distino entre os tipos de dados, por meio do conceito: tipagem automtica, utilizada pelo interpretador PHP. Mas o que a tipagem automtica? A tipagem automtica o processo que o interpretador PHP utiliza para analisar qual o valor que est sendo atribudo a uma varivel e setar o tipo de dados desta varivel de acordo com o tipo de dados do valor atribudo varivel. Veja o exemplo abaixo:

<? //A varivel est recebendo um valor inteiro: $numero1 = 10;

//A segunda varivel est recebendo um valor com casas decimais: $numero2 = 10.5;

//Vamos imprimir o valor das duas variveis e testar: print $numero1; print - ; print $numero2; ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 34 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

35

Se voc testar o exemplo acima, ir vericar que os valores atribudos s duas variveis foram impressos corretamente na tela. At aqui tudo certo, mas como podemos validar que a varivel: $numero1 est atribuda com o tipo de dados: inteiro e a varivel: $numero2 est atribuda com o tipo de dado: nmero com casas decimais? Veremos nos prximos captulos da apostila que a linguagem PHP fornece uma srie de funes que permitem vericar e executar aes diversas. Nesse exemplo, portanto, para vericarmos o tipo de dado de uma varivel, poderemos utilizar uma funo que o PHP disponibiliza e que mostra qual o tipo de dado de uma varivel. A funo que utilizaremos para isso a funo: gettype(nome_variavel). Essa funo ir retornar o tipo de dado de uma varivel. Vamos ento incluir as linhas abaixo no nosso exemplo:

<? //vamos utilizar o comando <BR> do HTML para pular duas linhas print <BR><BR>; //em seguida vamos imprimir o tipo de dado da varivel $numero1 print Tipo de dado da varivel numero1 : . gettype($numero1); //vamos utilizar o comando <BR> do HTML para pular mais duas linhas print <BR><BR>; //depois vamos imprimir o tipo de dado da varivel $numero2 print Tipo de dado da varivel numero2 : . gettype($numero2); ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 35 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

36

O resultado do teste mostrado na gura 14:

Figura 14 Testando o exemplo5.php

De acordo com o resultado, podemos vericar que a varivel $numero1 assumiu o tipo de dado: integer que suporta nmeros inteiros e, a varivel $numero2 assumiu o tipo de dado: double que suporta nmeros com casas decimais. Assim, mesmo no informando na instruo de declarao de uma varivel qual o tipo de dado que ela dever assumir, o interpretador do PHP ir selecion-lo automaticamente, de acordo com o tipo de dado do valor da varivel. Vamos vericar agora quais so os tipos de dados que a linguagem PHP fornece para o desenvolvimento de aplicaes. A linguagem PHP tem suporte para os seguintes tipos de dados: Nmeros inteiros Nmeros com casas decimais Textos Booleanos Array Objeto

Vamos analisar, um a um, cada tipo de dado.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 36 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

37

1.1 Nmeros Inteiros

considerado inteiro um nmero do conjunto de inteiros da matemtica: Z = {..., -2, -1, 0, 1, 2, ...}. Os nmeros inteiros podem ser utilizados em decimal (base 10), hexadecimal (base 16) ou octal (base 8), ou ainda como um nmero inteiro positivo ou negativo. Veja no exemplo abaixo a forma de aplicao dos inteiros:

<? $inteiro1 = 1234; // nmero decimal $inteiro2 = -123; // um nmero negativo $inteiro3 = 0123; // nmero octal (equivalente a 83 em decimal) $inteiro4 = 0x1A; // nmero hexadecimal (equivalente a 26 em decimal) ?>

Os nmeros inteiros hexadecimais devem sempre iniciar com o valor: 0x e os nmeros inteiros octal devem sempre iniciar com o valor: 0. Esses valores, no incio, so os responsveis pela interpretao correta do formato da varivel inteiro pelo interpretador PHP. O tipo de dados que suporta nmeros inteiros em PHP chamado de: integer.

1.2 Nmeros com casas decimais

O tipo de dado que suporta nmeros com casas decimais em PHP chamado de: double. Esse tipo de dado permite uma preciso de at 14 decimais. Os nmeros com casas decimais podem ser especicados da seguinte forma: <? $numero1 = 1.234; $numero2 = 23e4; // representa o nmero 230.000 ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 37 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

38

1.3 Textos

O tipo de dado que suporta textos em PHP chamado de: string. Para atribuir valores do tipo texto em uma varivel PHP pode-se utilizar tanto aspas duplas quanto aspas simples. Existe, porm, uma diferena na interpretao dos valores das variveis dependendo do tipo de aspas utilizado. As diferenas so: Atribuindo valores s variveis do tipo: string com aspas simples: O valor da varivel ser exatamente o texto que est entre as aspas simples. Atribuindo valores s variveis do tipo: string com aspas duplas: O valor da varivel poder conter outra varivel entre as aspas duplas ou ainda, caracteres de escape que permitem a formatao dos dados.

Para compreender melhor a diferena entre a atribuio de valores com aspas simples e com aspas duplas, vamos vericar o exemplo: <? /* atribuindo texto com aspas simples, vai ignorar o caracter de escape \n e mostrar como parte do texto */ $texto1 = Esse o texto atribudo com aspas simples, vai ignorar o \n print $texto1; informado ;

//vamos utilizar o comando <br> do HTML para pular uma linha print <br>;

/* atribuindo texto com aspas duplas, vai interpretar o caracter de escape \n */

$texto2 = Esse o texto atribudo com aspas simples, vai interpretar o \n informado ; print $texto2; ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 38 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

39

Analisando o resultado do exemplo, vamos vericar que a atribuio feita com aspas simples mostra o texto como foi escrito. O caracter de escape: \n completamente ignorado. J utilizando a atribuio com aspas duplas, o caracter de escape interpretado, portanto, no mostrado como um texto na tela. Os caracteres de escape mais utilizados em PHP so:
Sintaxe \n \r \t \\ \$ \ \ Signicado Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla

Verique que o caracter de escape: \n, utilizado no exemplo, executa a ao de quebra de linha. Analisando novamente o resultado do nosso exemplo, executando o exemplo por meio do navegador, vamos identicar que a quebra de linha no foi feita. Por que no foi feita a quebra de linha? A resposta correta para essa questo : por causa do HTML. A linguagem HTML sozinha no entende a ao dos caracteres de escape. necessrio um comando HTML para formatar o texto de acordo com os caracteres de escape informados. O comando em HTML que faz a formatao do texto com caracteres de escape o <pre></pre>. Vamos ento melhorar o nosso exemplo incluindo uma nova impresso da varivel utilizando o comando HTML que interpreta os caracteres de escape:

<? //vericar texto2 com a formatao de quebra de linha do \n print <pre>$texto2</pre>; ?>

Executando novamente o exemplo completo no navegador, podemos vericar que a quebra de linha foi feita corretamente. Inclusive, se analisarmos a ltima linha do exemplo, a varivel $texto2 foi includa dentro do comando <pre></pre>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 39 27/8/2007 13:22:14

Programao de Pgina WEB - PHP

40

e tambm dentro das aspas duplas. O texto que estava dentro da varivel $texto2 foi mostrado corretamente. Isso acontece porque o interpretador PHP consegue interpretar uma varivel mesmo que esteja dentro de um texto com aspas duplas. J com aspas simples isso no seria possvel. Vamos validar essa informao tentando executar a ltima instruo de comando do nosso exemplo trocando as aspas duplas por aspas simples:

<? //vericar a impresso na tela com aspas simples print <pre>$texto2</pre>; ?>

Executando o exemplo novamente, o resultado ser a ilustrao da gura 15:

Figura 15 Testando o exemplo6.php

Na ltima linha impressa, o interpretador PHP no conseguiu interpretar a varivel $texto2, pois a varivel foi colocada entre aspas simples.

1.4 Booleanos

O dado boolean o tipo mais simples que existe no PHP. um tipo de dado comum na maioria das linguagens de programao, pois recebe somente dois valores:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 40 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

41

1. Verdadeiro = True ou 1 2. Falso = False ou 0

Esse tipo de dado muito utilizado para validaes do resultado de outras instrues. Utiliz-lo-emos bastante nos exemplos dos prximos captulos.

1.5 Array

O tipo de dado array utilizado como um vetor na linguagem PHP. Vetores so mapeamentos de valores que cam armazenados no disco HD do computador. Podemos criar uma varivel do tipo array e utilizar as posies do mapeamento do disco para armazenar mais de um valor. A quantidade das posies informada na criao do array. Existem duas maneiras de criar uma varivel do tipo array, veja o exemplo.

<? //forma 1 - criando um array e setando o valor do array $array1[1] = Posio 1 do array1; $array1[2] = Posio 2 do array1; $array1[3] = Posio 3 do array1; //imprimindo os dados do array1 print $array1[1] $array1[2] $array1[3] <BR>;

//forma 2 - criando um array e setando o valor do array $array2 = array(1=>Posio 1 do array2, 2=> Posio 2 do array2, 3=>Posio 3 do array2); //imprimindo os dados do array1 print $array2[1] ?> $array2[2] $array2[3] <BR>;

No exemplo, criamos dois arrays utilizando as duas formas possveis, mas utilizamos como chave da posio nmeros inteiros. Em PHP podemos tambm criar arrays utilizando textos como chave da posio do mapeamento dos dados.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 41 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

42

Veja o exemplo.

<? //criando array com chave de posio do tipo texto $arrayTexto[Nome] = Jos Aparecido; $arrayTexto[Idade] = 22; //imprimindo os dados do arrayTexto print $arrayTexto[Nome]; print <br>; print $arrayTexto[Idade]; ?>

Alm de podermos utilizar chave de posio do tipo texto, podemos tambm atribuir qualquer tipo de dado suportado pelo PHP para a posio de uma varivel do tipo: array. Trabalharemos mais com arrays nos prximos captulos do nosso livro-texto.

1.6 Objeto

Desde a verso 4 a linguagem PHP tem suporte programao orientada a Objetos. A partir dessa verso todos os conceitos utilizados pela Orientao a Objetos podem ser utilizados em uma aplicao desenvolvida em PHP. Na verso 5 porm, esses conceitos foram reforados e melhorados na linguagem e cou mais fcil desenvolver aplicaes utilizando os paradigmas da Orientao a Objetos. No captulo 7 da apostila analisaremos com mais detalhes a programao orientada a objetos em PHP. O estudo de caso que desenvolveremos tambm utilizar os conceitos da Orientao a Objetos.

2 TRANFORMANDO OS TIPOS DE DADOS

Como o interpretador PHP utiliza a tipagem automtica para indicar o tipo de dado de uma varivel, pode acontecer que o tipo de dado indicado no seja o mais

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 42 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

43

adequado ou o esperado por algum procedimento da aplicao. Por esse motivo, h possibilidade de alterarmos o tipo de dado de uma varivel, para que os procedimentos possam ser executados corretamente. A linguagem PHP disponibiliza trs formas para transformao dos tipos de dados de uma varivel.

2.1 Coero

A Coero uma forma utilizada automaticamente pelo interpretador PHP. Um exemplo de coero utilizado quando uma varivel recebe o resultado de uma operao matemtica entre dois nmeros, sendo um nmero inteiro e outro nmero com casas decimais. A varivel que receber o valor ter seu tipo de dados alterado para nmeros com casas decimais ou o tipo de dado: double. Veja o exemplo.

<? // exemplo de coero $inteiro = 1; $real = 2.5;

print

tipo

de

dados

da

varivel

$inteiro

gettype($inteiro) . <br>; print tipo de dados da varivel $real = . gettype($real) . <br>;

$resultado = $inteiro; print valor da varivel resultado = $resultado <br>; print tipo de dados da varivel resultado = .

gettype($resultado) . <br>;

// gerando a coero do tipo de dado da varivel resultado com a operao //matemtica de soma $resultado = $inteiro+$real;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 43 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

44

print valor da varivel resultado = $resultado <br>; print tipo de dado da varivel resultado = .

gettype($resultado) . <br>; ?>

Ao analisarmos o resultado do exemplo, podemos vericar que o tipo de dado da varivel $resultado indicado como: integer, quando a varivel $resultado recebe a varivel $inteiro. A varivel resultado, porm, passou a assumir o tipo de dados: double, quando foi atribudo o valor da operao matemtica entre a varivel $inteiro e a varivel $real para a varivel $resultado. Isso ocorre porque a operao matemtica de somar dois nmeros: um nmero inteiro e o outro nmero real com casas decimais resulta opera em um nmero real. Ento a operao utilizada automaticamente pelo interpretador PHP e no temos como utilizar manualmente a operao de coero.

2.2 Transformao explcita de tipos de dados

A transformao explicta pode ser utilizada pelos desenvolvedores e considerada a mais bsica de transformao de tipos de dado das variveis. Para utiliz-lo precisamos dos cast, conversores de um tipo de dado para outro tipo de dado. Os tipos de cast permitidos so: (int), (integer) = altera o tipo de dado para integer; (real), (double), (oat) = altera o tipo de dado para oat; (string) = altera o tipo de dado para string; (array) = altera o tipo de dado para array; (object) = altera o tipo de dado para objeto.

Veja o exemplo.

<? // exemplo utilizando cast $numero = 1;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 44 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

45

//imprimir o valor e o tipo de dado da varivel $numero print valor da varivel = $numero <br>; print tipo de dado da varivel = . gettype($numero) . <br>;

// fazer a converso do tipo de dado da varivel $numero utilizando cast $numero = (double) 1;

print valor da varivel depois do cast = $numero <br>; print tipo de dado da varivel depois do cast = . gettype($numero) . <br>; ?>

Executando o exemplo acima, podemos vericar que a varivel $numero passou a assumir o tipo de dado: double.

2.3 Transformando tipos de dados com a funo settype

Essa forma tambm pode ser utilizada pelos desenvolvedores, basta que a funo settype da linguagem PHP seja informada na instruo. O exemplo a seguir ilustra a utilizao da funo settype(nome_variavel):

<? // exemplo utilizando a funo settype $texto = 10;

//imprimir o valor e o tipo de dado da varivel $texto print valor da varivel = $texto <br>; print tipo de dado da varivel = . gettype($texto) . <br>;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 45 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

46

// fazer a converso do tipo de dado da varivel $texto utilizando settype settype($texto,integer); // convertendo o tipo de dado para integer

print valor da varivel depois da transformao = $texto <br>; print tipo de dado da varivel depois da transformao = . gettype($texto) . <br>; ?>

No exemplo, foi feita a transformao de um tipo de dado texto string para o tipo de dado inteiro integer utilizando a funo settype. H vrias funes disponveis na linguagem PHP e, durante o curso, utilizaremos vrias dessas funes. Porm, para visualizar todas as funes disponveis na linguagem, voc deve consultar o Manual PHP disponvel na instalao do PHP Editor. Para acessar o manual v at o menu: Iniciar >> Programas >> PHP Editor e selecione o item Manual PHP.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 46 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

47

Sntese

Nesta aula vimos: Os tipos de dados suportados pela linguagem PHP; Como podemos transformar o tipo de dado de uma varivel para outro tipo de dado; Testes com os tipos de dados da linguagem PHP.

Exerccios propostos

1) Selecione a alternativa incorreta. A linguagem PHP suporta os seguintes tipos de dados: a. Nmeros b. Textos c. Datas d. Lista de Valores

2) O tipo de dado que permite duas formas de atribuio o (apenas uma alternativa est correta): a. Integer b. Double c. Boolean d. String

3) O tipo de dado da varivel abaixo ser (apenas uma alternativa est correta): $numero = 1; a. Integer b. Boolean

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 47 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

48

c. String d. Double

4) Para utilizar caracteres de escape na impresso de instrues em PHP necessrio (apenas uma alternativa est correta): a. Utilizar o comando HTML <br> b. Utilizar o comando HTML <b></b> c. Utilizar o comando HTML <pre></pre> d. Todas as alternativas esto incorretas

5) A instruo abaixo ir (apenas uma alternativa correta): $numero = (double) 1; a. Transformar a varivel para String b. Transformar a varivel para Double c. Transformar a varivel para Integer d. Transformar a varivel para Boolean

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 48 27/8/2007 13:22:15

Programao de Pgina WEB - PHP

49

Aula 4

TRABALHANDO COM VARIVEIS E CONSTANTES


Caro aluno(a)! Nesta quarta aula vamos identicar a diferena entre variveis e constantes. Estudaremos como utiliz-las nas aplicaes desenvolvidas em PHP. Alm disso, vericaremos quais so os tipos de variveis disponveis em PHP e como podemos trabalhar com elas. Por m, veremos mais algumas funes disponveis em PHP que podem nos auxiliam nos procedimentos com variveis. Bom estudo!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar os tipos de variveis existentes em PHP; Utilizar variveis para criar rotinas em PHP; Utilizar funes do PHP para trabalhar com as variveis; Identicar a diferena entre variveis e constantes; Utilizar constantes para criar rotinas em PHP; Testar o funcionamento das variveis e constantes.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Trabalhando com variveis; Funes PHP para trabalhar com variveis; Trabalhando com constantes; Exerccios propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 49 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

50

1 TRABALHANDO COM VARIVEIS

No captulo anterior, vimos que na linguagem PHP, no h necessidade de declarar as variveis com um tipo de dado especco, pois o interpretador PHP utiliza a tipagem automtica para atribuir um tipo de dado a uma varivel. Dessa forma, podemos inicializar uma varivel somente quando realmente necessitamos dela em um procedimento da aplicao que estamos desenvolvendo. Relembrando o que foi mencionado no captulo 2 introduo a linguagem PHP -, o nome da varivel dever sempre possuir o smbolo: $ no incio. justamente esse smbolo que indica ao interpretador PHP que uma varivel est sendo declarada do smbolo at o ponto e vrgula que ir encerrar a instruo de declarao da varivel. Tambm devemos relembrar que as variveis em PHP so case-sensitive, ou seja, o nome da varivel tem distino entre letras maisculas e minsculas. Agora, aps relembrarmos os conceitos bsicos a respeito das variveis, vamos vericar quais so os tipos de variveis disponveis na linguagem PHP. Alm das variveis bsicas do PHP criadas pelos desenvolvedores, h outros tipos de variveis que podem ser utilizadas. Em geral, so criadas pelo servidor WEB e o interpretador PHP para auxiliar nos procedimentos da aplicao. As variveis aqui conceituadas como bsicas so todas aquelas utilizadas nos exemplos criados at agora no curso. A partir de agora conheceremos outros tipos de variveis que poderemos utilizar em nossos exemplos e posteriores aplicaes.

1.1 Variveis enviadas pelo navegador

Quando utilizamos pginas PHP e HTML para fazer interao entre o usurio e a aplicao, podemos utilizar as variveis enviadas pelo navegador. H dois tipos de variveis enviadas pelo navegador: 1. POST = so as variveis enviadas pelos formulrios em HTML 2. GET = so as variveis enviadas ou por formulrios HTML ou pelo endereo do navegador - URL no endereo do navegador.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 50 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

51

Para vericar a diferena entre as duas variveis, vamos analisar o exemplo a seguir. Neste exemplo criaremos um formulrio HTML em uma pgina PHP para passar um valor por meio de uma varivel e depois imprimir o valor da varivel na tela. Utilizaremos o mesmo teste para variveis do tipo POST e GET. Vamos ao exemplo.

Pgina1: exemplo11_form.php <HTML> <HEAD> <TITLE>Exemplo 11 - Form</TITLE> </HEAD> <BODY> <form name=form1 action=exemplo11.php method=post> Nome: <input type=text name=nome><br> <input type=submit name=btnEnviar value=Enviar valor> </form> </BODY> </HTML>

Pgina 2: exemplo11.php <HTML> <HEAD> <TITLE>Exemplo 11</TITLE> </HEAD> <BODY> <? $nome = $_POST[nome]; print O nome informado : $nome <br>; ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 51 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

52

Vamos agora analisar o exemplo. A pgina exemplo11_form.php criada, possui apenas um formulrio HTML com um nico campo texto chamado: nome. O valor informado nesse campo texto ser enviado para a pgina: exemplo11.php, aps clicar no boto: Enviar Valor. O comando que informa para onde ser enviado o valor, est denido no comando: action=exemplo11.php do comando <form></form> do formulrio HTML. O tipo de varivel a ser enviado para a pgina denido no comando: method=post do comando <form></form> do formulrio HTML. Nesse exemplo, ento, enviaremos o valor por meio de uma varivel do tipo POST. Porm, se o desenvolvedor desejar enviar o valor por meio de uma varivel do tipo GET, utilizando esse mesmo formulrio, poder faz-lo trocando o texto post por get. Analisando a pgina 2, exemplo11.php, identicamos na primeira linha, aps o delimitador PHP, a instruo: $nome = $_POST[nome]. Nesse comando estamos pegando o valor da varivel POST, enviada pelo navegador, e atribuindo a varivel $nome para depois imprimir na tela. Tambm possvel imprimir direto o contedo da varivel enviada pelo navegador, para isso, basta alterar o comando para: print $_POST[nome]; Ao executar o exemplo acima, veremos que, aps clicar no boto: Enviar valor, o navegador ir para a pgina exemplo11.php e mostrar o valor informado no campo de texto do formulrio da pgina exemplo11_form.php Vamos agora utilizar o mesmo exemplo para testar as variveis do tipo: GET. Para isso, altere o method=post do formulrio para method=get. Execute novamente o teste. Qual foi o resultado? Nesse caso, no foi mostrado o valor informado, certo? Isso mesmo, porque a varivel agora est indo por meio do tipo: GET. Verique agora a barra de endereos do navegador da internet, ele dever mostrar o seguinte comando:
http://localhost/apostila_php/exemplo11.php?nome=12&btnEnviar=Enviar+valor

Por que est mostrando os dados com o tipo: GET e com o tipo: POST? Porque o tipo de varivel GET envia os valores por meio do endereo do navegador. E como fazemos para mostrar o valor enviado pelo navegador na pgina 2, exemplo11.php? Devemos alterar a instruo: $_POST[nome] para $_GET[nome], assim

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 52 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

53

o nome ser mostrado corretamente na pgina exemplo11.php. Faa o teste novamente e valide essa informao. Esses tipos de variveis sero amplamente utilizados para o desenvolvimento de aplicaes que fazem interao com usurios, porm h duas diferenas muito importantes entre os dois tipos de variveis e que devem ser levadas em considerao na anlise de qual tipo de varivel utilizar: 1. Os tipos de varivel GET so enviados pelo endereo do navegador e por isso todos os dados cam expostos na barra de endereos. Assim evite utilizar esse tipo de varivel quando houver dados sigilosos envolvidos. 2. A barra de endereo do navegador possui limitao de tamanho, mximo 255 caracteres, portanto, os valores dos tipos de varivel GET no podero ultrapassar esse tamanho. Se ultrapassar, os dados no sero enviados por completo, sero enviados somente os dados at o tamanho limite estabelecido pelo navegador. Analisando essas informaes, podemos denir que o tipo de varivel indicado para formulrios em HTML o tipo: POST. O GET poder ser utilizado em outros procedimentos da aplicao. Veremos mais detalhes sobre esses dois tipos de variveis no decorrer do curso.

1.2 Variveis de ambiente

A linguagem PHP possui vrias variveis de ambiente que podem auxiliar durante o desenvolvimento de uma aplicao. Para visualizar o contedo de uma varivel de ambiente, basta utilizar a instruo: $_SERVER[nome_da_variavel]. H, por exemplo, a varivel: $_SERVER[PHP_SELF] que possui o nome e o caminho do prprio arquivo como valor. H tambm outras variveis que possuem dados sobre o navegador do usurio, o servidor HTTP, e at a verso do PHP instalada no servidor. Para visualizar todas as variveis de ambiente disponveis, podemos utilizar a funo phpinfo() ou a opo: View phpinfo() screen, disponvel na pgina principal do VertrigoServ. As variveis de ambiente esto listadas abaixo do item: Apache Environment.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 53 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

54

1.3 Variveis de sesso

A linguagem PHP disponibiliza tambm variveis de sesso que permitem o controle da sesso do usurio. Esse tipo de varivel comumente utilizado em aplicaes que possuem autenticao de usurio. Para visualizar o contedo de uma varivel de sesso, basta utilizarmos a instruo: $_SESSION[nome_da_variavel]. Estudaremos com mais detalhes sobre as variveis de sesso no captulo 8 Controle de Sesso.

2 FUNES PHP PARA TRABALHAR COM VARIVEIS

A linguagem PHP disponibiliza vrias funes que auxiliam no desenvolvimento de aplicaes. Nesse tpico, estudaremos as principais funes da linguagem que permitem manipular as variveis criadas em PHP.

2.1 Funes que testam o tipo de dado de uma varivel

As funes que testam o tipo de dado de uma varivel so: is_int = testa se o tipo de dado da varivel inteiro; is_integer = testa se o tipo de dado da varivel inteiro; is_real = testa se o tipo de dado da varivel real nmero com casas decimais; is_long = testa se o tipo de dado da varivel inteiro longo; is_oat = testa se o tipo de dado da varivel oat nmero com casas decimais; is_string = testa se o tipo de dado da varivel string; is_array = testa se a varivel um array; is_object = testa se a varivel um objeto.

Para utilizar essas funes, deveremos seguir o modelo abaixo: nome_funcao(nome_variavel);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 54 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

55

O valor de retorno de todas as funes booleano, ou seja, verdadeiro ou falso true | false ou 1 | 0. O valor verdadeiro ser retornado quando o tipo de dado da varivel est de acordo com a funo utilizada. Vamos executar o exemplo a seguir e vericar o funcionamento da funo is_string:

Pgina: exemplo12.php <HTML> <HEAD> <TITLE>Exemplo 12</TITLE> </HEAD> <BODY> <? $variavelString = Texto da varivelString; print is_string($variavelString); ?> </BODY> </HTML>

Ao executarmos o exemplo12.php, ser impresso na tela o valor 1. Esse valor o retorno da funo is_string e signica que a varivel: $variavelString possui o tipo de dado: String.

2.2 Funo que destri uma varivel

Toda vez que criamos uma varivel, cria-se um espao em memria para ser utilizado pela aplicao. Dessa forma, quando trabalhamos com vrias variveis em uma aplicao, todas estaro consumindo espao em memria. Portanto, muito importante ao trabalharmos com variveis, destrumos ou, na linguagem do computador, desalocarmos a varivel da memria quando j no precisamos dela. A funo que permite desalocar uma varivel da memria : unset(nome_ variavel). Aps utilizar a funo unset(), a varivel ser destruda, portanto, os valores da

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 55 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

56

varivel sero perdidos. Assim, somente utilize essa funo quando tiver certeza que a varivel no ser mais utilizada por algum procedimento dentro da aplicao.

2.3 Funes que vericam se uma varivel possui valor

Existem duas funes que vericam se uma varivel possui valor: isset(nome_da_variavel) empty(nome_da_variavel)

Como na maioria das funes PHP, o retorno dessas duas funes tambm booleano. H, porm, uma diferena entre as duas variveis que precisamos analisar antes de utiliz-las. Na primeira funo a funo isset vericado se a varivel j foi criada na aplicao, ou seja, se j foi utilizada alguma vez pela aplicao. Caso a varivel no tenha sido criada ainda, retornar o valor 0 ou false. Na segunda funo a funo empty ser vericado se a varivel possui valor vazio ou nulo, porm a varivel j deve estar criada na aplicao. Vamos executar o exemplo que segue para compreender melhor essa diferena entre as duas funes:

Pgina: exemplo13.php <HTML> <HEAD> <TITLE>Exemplo 13</TITLE> </HEAD> <BODY> <? $variavel1 = ; // verica se a $variavel1 possui valor vazio ou nulo print variavel1 = . empty($variavel1); print <br>; //destroi a $variavel1 unset($variavel1);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 56 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

57

//verica se existe a $variavel1 print variavel1 = . isset($variavel1); ?> </BODY> </HTML>

3 TRABALHANDO COM CONSTANTES

Constantes podem ser denidas como uma varivel que possui um valor constante, ou seja, o valor ser denido uma nica vez e jamais ser alterado durante a execuo da aplicao. Essa a principal diferena entre uma constante e uma varivel. Como o prprio nome indica, as constantes possuem valores que jamais sero alterados por algum procedimento dentro da aplicao. J as variveis podem ter o seu valor alterado, dependendo do tipo de ao que for executado pela aplicao. As constantes geralmente so utilizadas para receber valores de conguraes / parmetros que sero utilizados pelo sistema. Um exemplo de constante pode ser um login e senha para conexo da aplicao com o banco de dados. Esse dado sempre ser o mesmo durante a execuo de toda a aplicao, portanto, poder estar denido em uma constante. Para denir uma constante na aplicao, utilizamos a funo: dene(nome_ da_constante,valor_da_constante). A linguagem PHP possui algumas constantes pr-denidas que permitem vericar as conguraes do ambiente onde o interpretador PHP est instalado. Algumas constantes disponveis possuem como valor: a verso do PHP, o Sistema Operacional do servidor, o arquivo em execuo, entre outras informaes. Para visualizar todas as constantes pr-denidas disponveis, podemos utilizar a funo phpinfo() ou ento utilizar a opo: View phpinfo() screen, disponvel na pgina principal do VertrigoServ. Veja o exemplo que mostra como denir e utilizar uma constante dentro das pginas PHP:

Pgina: exemplo14.php

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 57 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

58

<HTML> <HEAD> <TITLE>Exemplo 14</TITLE> </HEAD> <BODY> <? // denir a constante taxa de juros dene(taxaJuros,0.5);

// imprime o valor da constante na tela print taxa de Juros = . taxaJuros; print <br>;

// utiliza a constante para um clculo $valor = 100.00*taxaJuros;

// imprime o resultado do clculo com a constante print valor = . $valor; ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 58 27/8/2007 13:22:16

Programao de Pgina WEB - PHP

59

Sntese

Nesta aula vimos: Os tipos de variveis disponveis na linguagem PHP; Como trabalhar com as variveis; Funes PHP que auxiliam nos procedimentos com variveis; A diferena entre variveis e constantes; Como trabalhar com as constantes; Testes com variveis e constantes.

Exerccios propostos

1) Os tipos de variveis mais utilizados no desenvolvimento de aplicaes com PHP so ( permitida mltipla escolha): a. Sesso b. Enviadas pelo Navegador c. Ambiente d. Memria

2) Complete a frase abaixo com uma das alternativas: As variveis que utilizam a barra de endereos do navegador a .... a. Sesso b. Post c. Get d. Servidor

3) O tipo de varivel que possui os dados da congurao do PHP (apenas uma alternativa correta): a. Ambiente

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 59 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

60

b. Post c. Sesso d. Servidor

4) A funo que verica se a varivel est setada e com o valor vazio a (apenas uma alternativa correta): a. is_string b. unset c. empty d. isset

5) A principal diferena entre uma varivel e uma constante (apenas uma alternativa correta): a. A constante somente aceita um tipo de dado b. A constante tem limitao de valor c. O valor da constante no muda nunca na aplicao d. A constante no pode ser utilizada em algumas instrues

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 60 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

61

Aula 5

OPERADORES DA LINGUAGEM PHP

Caro aluno(a)! Nesta quinta aula voc conhecer os tipos de operadores disponveis na linguagem PHP e a diferena entre eles. Alm disso, analisaremos o que uma expresso condicional e quando podemos utiliz-las dentro de nossas aplicaes. Por m, realizaremos alguns testes para identicar melhor a funcionalidade dos operadores e tambm da expresso condicional. Bons Estudos!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar os tipos de operadores da linguagem PHP; Utilizar os tipos de operadores; Identicar o que uma expresso condicional; Utilizar a expresso condicional.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Conhecendo os Tipos de Operadores; Conhecendo a Expresso Condicional; Exerccios Propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 61 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

62

1 CONHECENDO OS TIPOS DE OPERADORES

A linguagem PHP, assim como outras linguagens de programao, disponibiliza vrios tipos de operadores para auxiliar na execuo de procedimentos dentro das aplicaes. Nesse captulo, vericremos quais so os tipos de operadores e como podemos utiliz-los em nossas pginas PHP.

1.1 Operadores Aritmticos

Os operadores aritmticos so aqueles que auxiliam em clculos e expresses matemticas. Esses operadores somente podero ser utilizados entre variveis com os tipos de dados nmeros inteiros e/ou nmeros com casas decimais nmeros reais. Observe quais so os operadores aritmticos disponveis em PHP.
+ * / % adio subtrao multiplicao diviso mdulo

O exemplo demonstra a utilizao dos operadores aritmticos nas pginas em PHP:

Pgina: exemplo15.php <HTML> <HEAD> <TITLE>Exemplo 15</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 62 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

63

// utilizando operaes matemticas $numero1 = 10; $numero2 = 3;

// imprime o valor das variveis print valor da varivel numero1 = . $numero1; print <br>; print valor da varivel numero2 = . $numero2; print <br><br>;

// faz a soma entre as variveis e mostra o resultado print Soma = . ($numero1+$numero2); print <br>;

// faz a diferena entre as variveis e mostra o resultado print Subtrao = . ($numero1-$numero2); print <br>;

// faz a multiplicao entre as variveis e mostra o resultado print Multiplicao = . ($numero1*$numero2); print <br>;

// faz a diviso entre as variveis e mostra o resultado print Diviso = . ($numero1/$numero2); print <br>;

// faz a diviso entre as variveis e mostra o resto da diviso print Mdulo - Resto da Diviso = . ($numero1%$numero2); print <br>; ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 63 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

64

1.2 Operador String

Para os tipos de dados string, h apenas um operador disponvel, o que permite a concatenao entre variveis do tipo string. Concatenar duas variveis do tipo string signica juntar o valor das duas variveis. O quadro a seguir mostra o smbolo que representa o operador de concatenao em PHP.
. concatenao

Se voc observar novamente os ltimos exemplos desenvolvidos, utilizamos o operador de concatenao para unir textos com variveis. O exemplo abaixo mostra a concatenao entre duas variveis do tipo texto:

Pgina: exemplo16.php <HTML> <HEAD> <TITLE>Exemplo 16</TITLE> </HEAD> <BODY> <? // utilizando operador String $texto1 = Vamos testar ; $texto2 = o operador de concatenao;

// imprime o valor das variveis concatenadas print $texto1 . $texto2; ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 64 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

65

1.3 Operadores de Atribuio

Os operadores de atribuio tm como funo retornar um valor atribudo de acordo com a operao indicada. As operaes podem utilizar operadores aritmticos ou ainda o operador: string. A atribuio feita sempre por valor, e no por referncia. Isso signica que a atribuio ir alterar denitivamente o valor da varivel armazenada em memria. Observe no quadro a seguir os operadores de atribuio disponveis em PHP.
= += -= *= /= %= .= atribuio simples atribuio com adio atribuio com subtrao atribuio com multiplicao atribuio com diviso atribuio com mdulo atribuio com concatenao

Na maioria dos exemplos que desenvolvemos at agora, utilizamos o operador bsico de atribuio para atribuir um valor as variveis. No exemplo abaixo, vamos utilizar outros dois operadores de atribuio para vericarmos o seu funcionamento:

Pgina: exemplo17.php <HTML> <HEAD> <TITLE>Exemplo 17</TITLE> </HEAD> <BODY> <? // utilizando operadores de atribuio $texto = O valor da varivel numero = ; $numero = 5;

// utilizando o operador de atribuio concatenao

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 65 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

66

$texto .= $numero;

// imprime o valor da varivel $texto print $texto; print <BR>;

// utiliza o operador de atribuio adio $numero += 2;

// imprime o valor da varivel $numero print $numero; ?> </BODY> </HTML>

1.4 Operadores Lgicos

Os operadores lgicos so geralmente utilizados em expresses e comparaes entre condies ou variveis que retornam valores booleanos. Os operadores lgicos disponveis em PHP so os que mostramos no quadro a seguir.
! && || no (inverso) e lgico ou lgico

Nos exemplos dos prximos captulos e tambm no desenvolvimento de nosso estudo de caso, muitas vezes utilizanremos os operadores lgicos para validar valores de variveis e condies.

1.5 Operadores de Comparao

Os operadores de comparao so utilizados para comparar valores entre

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 66 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

67

variveis e expresses. O retorno de uma comparao ser sempre um valor do tipo: booleano. Veja quais so os operadores de comparao disponveis em PHP.
== != < > <= >= igual a diferente de menor que maior que menor ou igual a maior ou igual a

Nos exemplos dos prximos captulos e tambm no desenvolvimento de nosso estudo de caso, muitas vezes utilizando os operadores de comparao para comparar os valores de variveis e tambm expresses.

1.6 Operadores de Incremento e Decremento

Os operadores de atribuio tm como funo aumentar (incremento) ou diminuir (decremento) o valor de uma varivel. So operadores sempre utilizados em tipos de dados numricos e o valor da varivel ter sempre o incremento/decremento de 1. Por exemplo: se uma varivel possui o valor 10 e utilizamos o operador de incremento aps a utilizao do operador, a varivel ter o valor 11. Se utilizssemos o decremento nessa mesma varivel, o valor seria diminudo para 9. O incremento/decremento ser feito de acordo com a ordem que disponibilizamos o operador e a varivel. Se colocarmos o operador de incremento/decremento antes da varivel, a ao do operador ser feita antes de mostrar a varivel, caso contrrio, se o operador for colocado depois da varivel, a ao do operador ser feita depois de mostrar a varivel. Observe os operadores de incremento e decremento disponveis em PHP.
++ -Incremento Decremento

Assim como os operadores lgicos e de atribuio, utilizaremos bastante os

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 67 27/8/2007 13:22:17

Programao de Pgina WEB - PHP

68

operadores de incremento e decremento nos exemplos dos prximos captulos. No exemplo que segue j podemos ter uma noo de como funcionam estes operadores:

Pgina: exemplo18.php <HTML> <HEAD> <TITLE>Exemplo 18</TITLE> </HEAD> <BODY> <? // utilizando operadores de incremento e decremento $numero = 5;

// imprime o valor da varivel $numero utilizando o operador de incremento print $numero++; print <BR>;

// imprime o valor da varivel $numero utilizando o operador de decremento print $numero--; print <BR>; ?> </BODY> </HTML>

2 CONHECENDO A EXPRESSO CONDICIONAL

A expresso condicional considerada um tipo de operador. Tambm conhecida como um operador de seleo ternrio. A funo da expresso condicional vericar uma dada condio e, dependendo do valor da condio retornado valor booleano: true ou false a expresso executar

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 68 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

69

uma instruo. A sintaxe da expresso condicional : (condio)?(instruo1):(instruo2)

O interpretador PHP interpreta a expresso condicional da seguinte maneira: 1. Avalia a condio feita; 2. Se o resultado da condio for verdadeiro true ou 1 - a expresso condicional ir mostrar o valor da instruo1; 3. Se o resultado da condio for falso false ou 0 a expresso condicional ir mostrar o valor da instruo2.

A expresso condicional tambm conhecida pelos desenvolvedores por if rpido. O if uma estrutura de controle que tambm valida condies. Estudaremos mais sobre o if no prximo captulo. No exemplo a seguir podemos vericar o funcionamento da expresso condicional. Tambm utilizaremos um operador de comparao, o operador de igualdade:

Pgina: exemplo19.php <HTML> <HEAD> <TITLE>Exemplo 19</TITLE> </HEAD> <BODY> <? // testando a expresso condicional $numero1 = 5; $numero2 = 4;

/* utiliza a expresso condicional para vericar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto de acordo com o retorno da condio / comparao feita */

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 69 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

70

print ($numero1==$numero2)?Valores iguais:Valores diferentes; print <BR>; ?> </BODY> </HTML>

Sntese

Nesta aula estudamos: Os tipos de operadores disponveis na linguagem PHP; Como e quando utilizamos os tipos de operadores; O que uma expresso condicional; Como e quando podemos utilizar uma expresso condicional; Realizamos testes para validar a funcionalidade dos tipos de operadores e tambm da expresso condicional.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 70 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

71

Exerccios propostos

1) Os operadores que permitem a realizao de clculos matemticos so (mltipla escolha): a. Aritmticos b. String c. Atribuio d. Incremento

2) Complete a frase com uma das alternativas abaixo: A concatenao uma operao permitida pelo operador ... e tem como funo .... a. Aritmtico, adicionar variveis b. Atribuio, atribuir valor s variveis c. String, unir valores das variveis d. Decremento, separar o valor da varivel em dois

3) O operador que retorna o resto de uma diviso (apenas uma alternativa correta): a. Aritmtico Diviso b. Aritmtico Mdulo c. Aritmtico - Incremento d. Aritmtico - Atribuio

4) Os operadores de atribuio so utilizados para (mltipla escolha): a. Atribuir valores as variveis b. Atribuir tipo de dados em variveis c. Executar uma operao matemtica em uma varivel d. Executar uma operao matemtica somente aps a atribuio de um valor

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 71 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

72

5) A expresso condicional pode ser denida como ( permitida mltipla escolha): a. Um operador aritmtico b. Um operador de atribuio c. Um comando de seleo d. Um operador de seleo ternrio

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 72 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

73

Aula 6

ESTRUTURAS DE CONTROLE

Caro aluno(a)! Nesta sexta aula voc estudar sobre as estruturas de controle disponveis na linguagem PHP. Vamos aprender quais so essas estruturas e quando podemos utiliz-las dentro das nossas aplicaes. Tambm desenvolveremos vrios exemplos com as estruturas de controle para testar e compreender melhor a funo de cada uma. Bons Estudos!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar quais so as estruturas de controle do PHP; Identicar como e quando utilizar as estruturas de controle; Testar o funcionamento das estruturas de controle.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo s Estruturas de Controle; Estruturas de Seleo; Estruturas de Repetio; Estruturas de Quebra de Fluxo; Exerccios Propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 73 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

74

1 INTRODUO S ESTRUTURAS DE CONTROLE

As estruturas de controle disponveis na linguagem PHP so comuns na maioria das linguagens de programao. Se voc j possui o conhecimento de alguma linguagem de programao, identicar vrias caractersticas semelhantes nas estruturas de controle do PHP. A sintaxe das estruturas de controle do PHP tambm bem similar sintaxe de outras linguagens. Se voc j trabalhou com a linguagem de programao C ou Java, vai vericar que a sintaxe das estruturas de controle bem semelhante. Nos prximos tpicos desse captulo, estudaremos os trs tipos de estruturas de controle disponveis na linguagem PHP: Estruturas de Seleo, Estruturas de Repetio e Estruturas de Quebra de Fluxo. Na sintaxe e tambm nos exemplos, veremos que, para os dois primeiros tipos de estruturas, existe uma caracterstica em comum, os blocos de comando. Um bloco de comando consiste em um agrupamento de instrues PHP dentro de uma estrutura de controle. Esses blocos so delimitados pelos caracteres: { que representa o incio do bloco e } que representa o m do bloco de comando. Dependendo da estrutura de controle utilizada e tambm do procedimento que ser executado dentro da estrutura de controle, poderemos ter: nenhum, um ou mais blocos de comando. A existncia de um bloco de comando ser dispensada quando o procedimento tiver apenas uma instruo de comando. A seguir, vericaremos detalhadamente quais so as estruturas de controle e qual a aplicao de cada uma delas.

2 ESTRUTURAS DE SELEO

As estruturas de seleo, tambm conhecidas por estruturas condicionais, tm como funo validar condies e comparar o resultado das condies. Aps executar as funes de validao e comparao, as estruturas de seleo iro executar os blocos de comando, denidos de acordo com o resultado da comparao.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 74 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

75

A expresso condicional, que vericamos no captulo anterior, pode tambm ser considerada como uma estrutura de controle de seleo. Existem dois tipos de estruturas de seleo: If e Switch. A seguir vamos vericar quais as diferenas e sintaxe de cada uma delas.

2.1 If

O If considerado a estrutura de controle mais comum das linguagens de programao e muito utilizado no desenvolvimento das aplicaes. Possui um sintaxe bem simples:

IF(condio) Instruo;

Ou

IF(condio){ Instruo1; Instruo2; Etc; }

A primeira sintaxe utilizada quando temos apenas uma instruo PHP a ser executada aps a validao da condio. No necessrio, portanto, criar um bloco de comando para agrupar e executar as instrues. Na segunda sintaxe, temos mais de uma instruo PHP a ser executada, portanto, necessria a criao de um bloco de comando para agrupar as instrues e execut-las conforme a seqncia denida. O If sempre executar o bloco de comando ou a instruo nica se a condio entre parnteses retornar um resultado booleando verdadeiro. Caso contrrio, o bloco de comando ou a instruo nica no sero executadas. Veja o exemplo.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 75 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

76

Pgina: exemplo20.php <HTML> <HEAD> <TITLE>Exemplo 20</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4;

/* utiliza o if para vericar se os valores das variveis: $numero1 e $numero2 so diferentes e depois imprime um texto caso o retorno da condio seja verdadeiro neste exemplo estamos tambm utilizando o operador de comparao - desigualdade */

if ($numero1!=$numero2){ print As variveis possuem valores diferentes; print <BR>; } ?> </BODY> </HTML>

Analisando o resultado do teste, vericaremos que a mensagem: As variveis possuem valores diferentes foi impressa na tela, pois realmente elas possuem valores diferentes. Utilizando o operador de comparao de desigualdade, a condio retornou um valor booleano verdadeiro, pois as variveis possuem valores diferentes. Vamos agora utilizar o mesmo exemplo, porm alterando a condio para vericar se os valores das variveis so iguais. Para isso, vamos utilizar o operador de comparao de igualdade:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 76 27/8/2007 13:22:18

Programao de Pgina WEB - PHP

77

Pgina: exemplo21.php <HTML> <HEAD> <TITLE>Exemplo 21</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4;

/* utiliza o if para vericar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto caso o retorno da condio seja verdadeiro neste exemplo estamos tambm utilizando o operador de comparao - igualdade */ if ($numero1==$numero2){ print iguais; print <BR>; } ?> </BODY> </HTML> As variveis possuem valores

Quando executamos o exemplo, agora, no foi mostrada nenhuma mensagem na tela, por qu? Porque a condio retornou um valor falso, ou seja, o valor das duas variveis no verdadeiro. Certo, mas neste caso ento, como fazemos para mostrar alguma mensagem quando o valor da condio falso? Podemos utilizar a instruo: else. A sintaxe do IF utilizando a instruo else :

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 77 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

78

IF(condio) Instruo; Else Instruo;

Ou para utilizar com bloco de comando:

IF(condio){ Instruo1; Instruo2; Etc; } Else { Instruo1; Instruo2; Etc; }

As instrues do Else sero executadas somente quando o valor da condio do If for falso. Podemos ainda utilizar um encadeamento de condies quando precisamos analisar uma srie de condies no mesmo procedimento. Esse encadeamento uma mistura entre IFs e Elses dentro do cdigo. Veja como ca a sintaxe:

IF(condio1){ Instruo1; Instruo2; Etc; } Else IF(condio2) { Instruo1; Instruo2; Etc;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 78 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

79

} Else IF(condio3) { Instruo1; Instruo2; Etc; } Else IF(condioN) { Instruo1; Instruo2; Etc; } Else { Instruo1; Instruo2; Etc; }

Mostramos na sintaxe acima, que no existe um limite para o encadeamento de ifs. Esse tipo de procedimento pode ser utilizado de acordo com a quantidade de condies e comparaes que devem ser executadas pela aplicao. importante lembrar que as instrues do Else If sero executadas somente se a condio do IF tiver valor verdadeiro, caso contrrio, as instrues executadas sero as do Else nal, que no possui um IF com uma condio para comparar, por isso executado quando o valor da condio de todos os Ifs for falso. Vamos testar o exemplo abaixo para compreender melhor o funcionamento do IF encadeado:

Pgina: exemplo22.php <HTML> <HEAD> <TITLE>Exemplo 22</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 79 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

80

// testando o IF encadeado $numero1 = 5; $numero2 = 4; $numero3 = 5;

// utilizando o If encadeado if ($numero1==$numero2){ print As variveis: numero1 e numero2 possuem valores iguais; print <BR>; } else if ($numero1==$numero3){ print As variveis: numero1 e numero3 possuem valores iguais; print <BR>; } else if ($numero2==$numero3){ print As variveis: numero2 e numero3 possuem valores iguais; print <BR>; } else { print As trs variveis possuem valores diferentes; print <BR>; } ?> </BODY> </HTML>

2.2 Switch

A estrutura de seleo Switch funciona de maneira semelhante aos Ifs encadeados. Essa estrutura muito utilizada quando necessrio comparar o valor de uma varivel ou ento de uma mesma condio com diversos valores.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 80 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

81

Se utilizarmos o IF encadeado para testar uma varivel com diversos valores, teremos sempre que montar um IF com vrios Else If at completar todos os valores que desejamos testar. Utilizando o Switch para esse mesmo procedimento, o cdigo car mais enxuto e ter o mesmo efeito. Vamos analisar a sintaxe do switch:

Switch(valor_a_ser_comparado){ Case valor1: Instruo; Break; Case valor2: Instruo; Break; Default: Instruo; Break; }

Na sintaxe acima, os itens em negrito so os que deveremos alterar de acordo com o procedimento que ser executado. Onde est o valor_a_ser_comparado ser indicada a varivel que deseja comparar o valor ou ento a condio que deseja comparar o valor resultante da condio. Onde est o valor1 e o valor2 sero indicados os valores que sero comparados. As instrues a serem executadas sero as que indicam que a condio verdadeira. Exemplo: se o valor_a_ser_comparado igual ao valor1, ento a instruo que ser executada a instruo abaixo do case valor1. Caso nenhum case possua o valor do valor a ser comparado, a instruo a ser executada ser a instruo que est abaixo do Default. O comando Default semelhante ao Else na estrutura do If. Para compreendermos melhor o funcionamento do switch, vamos executar o exemplo a seguir:

Pgina: exemplo23.php <HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 81 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

82

<HEAD> <TITLE>Exemplo 23</TITLE> </HEAD> <BODY> <? // testando o switch $numero = 10;

// utilizando o switch com varivel switch($numero){ case 0: print O valor da varivel 0; break; case 5: print O valor da varivel 5; break; case 10: print O valor da varivel 10; break; default: print O valor da varivel diferente de 0,5 e 10; break; } print <br><br>;

// utilizando o switch com condio switch($numero/2){ case 0: print A diviso varivel por 2 0; break; case 5:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 82 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

83

print A diviso varivel por 2 5; break; default: print A diviso varivel por 2 diferente de 0 e 5; break; } ?> </BODY> </HTML>

3 ESTRUTURAS DE REPETIO

As estruturas de repetio so muito utilizadas quando precisamos executar um bloco de comandos vrias vezes at que uma dada condio que com o valor falso. Existem trs tipos de estruturas de repetio: While, Do...While e For. Todas possuem a mesma funcionalidade, repetir as instrues do bloco de comandos at que uma dada condio que com o valor falso, porm as trs fazem a validao da condio de forma diferente. Vamos analisar cada estrutura de repetio separadamente para compreender melhor as diferenas entre elas.

3.1 While

A estrutura de repetio while possui a seguinte sintaxe:

While(condio) Instruo;

Ou utilizando bloco de comandos:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 83 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

84

While(condio){ Instruo1; Instruo2; InstruoN; }

Tal qual o If, a condio entre os parnteses do while devem possuir um valor verdadeiro para que as instrues sejam executadas. Dessa forma, somente se o resultado da condio for verdadeiro que as instrues sero executadas. Para utilizar uma estrutura de repetio, importante que, em algum momento, o valor da condio testado se torne falso, caso contrrio, a aplicao car em eterno loop, ou seja, estar executando as instrues eternamente. Isso acontece porque as instrues somente sero executadas quando o valor da condio for verdadeiro. Se a condio permanecer eternamente com o valor verdadeiro a aplicao estar executando as instrues innitamente. Essa caracterstica comum para todas as estruturas de repetio. No caso especco do while, a condio testada no incio da instruo while e, em seguida, feita a execuo das instrues. Se a condio permanecer com o valor verdadeiro, as instrues sero executadas novamente e assim sucessivamente, at que o valor da condio se torne falso. Veja no exemplo abaixo a funcionalidade da estrutura while:

Pgina: exemplo24.php <HTML> <HEAD> <TITLE>Exemplo 24</TITLE> </HEAD> <BODY> <? // testando o while $numero = 1;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 84 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

85

// utilizando while para testar se o valor da varivel $numero menor que 10 while($numero<10){ print O valor da varivel numero .$numero . <br>;

// utilizando o operador de incremento para aumentar o valor ++$numero; // imprime o novo valor da varivel $numero print O valor da varivel numero agora .$numero . <BR>;

// verica se o valor da varivel 10 e imprime o m do loop if($numero==10) print Fim do Loop; } ?> </BODY> </HTML>

3.2 Do ... while

A estrutura de repetio do...while semelhante estrutura while. A nica diferena entre elas que o while testa a condio no nicio do comando e a estrutura do...while testa a condio no nal do comando. Isso signica que, se a condio estiver com o valor falso, utilizando do...while as instrues sero executadas uma vez. Utilizando while, se a condio estiver com o valor falso, as instrues no sero executadas. Veja a sintaxe do do...while:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 85 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

86

Do{ Instruo; }while(condio);

Diferente das demais estruturas de controle, o do...while obriga a utilizao do bloco de comando em sua sintaxe. Vamos ao exemplo utilizando a estrutura do...while:

Pgina: exemplo25.php <HTML> <HEAD> <TITLE>Exemplo 25</TITLE> </HEAD> <BODY> <? // testando o do...while $numero = 10;

// utilizando do...while para testar se o valor da varivel $numero menor que 10 do{ print O valor da varivel numero .$numero . <br>; // utilizando o operador de incremento para aumentar o valor ++$numero;

// imprime o novo valor da varivel $numero print O valor da varivel numero agora .$numero . <BR>;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 86 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

87

// verica se o valor da varivel maior ou igual 10 e imprime o m do loop if($numero>=10) print Fim do Loop; }while($numero<10); ?> </BODY> </HTML>

3.3 For

A estrutura de repetio For possui a mesma funo que o While e o Do...While, porm sua estrutura e sintaxe so bem diferentes. O For tambm uma condio e executa as instrues do bloco de comando, caso o valor da condio seja verdadeiro. Porm no For, a condio baseada em uma varivel contadora, o que o torna muito til quando temos uma lista de valores para ser mostrado ou trabalhado e temos o conhecimento do incio e m dessa lista. imprescindvel que saibamos o incio e o m da lista, pois estes dados so utilizados na sintaxe do for. Vamos analisar a sintaxe do for:

For(inicializao;condio;incremento ou decremento do contador) Instruo;

Ou utilizando bloco de comandos:

For(inicializao;condio;incremento ou decremento do contador){ Instruo1; InstruoN; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 87 27/8/2007 13:22:19

Programao de Pgina WEB - PHP

88

Entre as vrias utilidades que a estrutura For nos possibilita, a principal a facilidade para trabalhar com variveis do tipo array. Como j vimos no captulo sobre os tipos de dados, um array uma varivel com vrias posies para armazenamento de valores. Sempre sabemos a quantidade de posies que o array possui, portanto temos as informaes de tamanho dessa lista de variveis. No exemplo abaixo, iremos compreender melhor a utilizao do For para mostrar os valores das posies de um Array:

Pgina: exemplo26.php <HTML> <HEAD> <TITLE>Exemplo 26</TITLE> </HEAD> <BODY> <? // testando o for $arrayNomes[0] = Joo; $arrayNomes[1] = Jos; $arrayNomes[2] = Maria; $arrayNomes[3] = Felisberto;

// utilizando o for para mostrar os valores do $arrayNomes for($contador=0;$contador<=3;$contador++){ print $arrayNomes[$contador] . <br>; } ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 88 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

89

4 ESTRUTURAS DE QUEBRA DE FLUXO

As estruturas de quebra de uxo so geralmente utilizadas para dar suporte s outras estruturas de controle. So utilizadas para quebrar o uxo de um procedimento, parar a execuo de uma instruo que est dentro de um loop, por exemplo, e dar continuidade nas instrues seguintes. Existem dois tipos de estruturas de quebra de uxo: Break e Continue. A seguir vamos analisar o comportamento dessas duas estruturas.

4.1 Break

A estrutura de controle break pode ser utilizada como suporte pelas estruturas de repetio: While, Do...While e For e tambm na estrutura de seleo: Switch. Quando o interpretador PHP encontra o Break dentro de uma estrutura, imediatamente ele pra a execuo das instrues e segue para as demais instrues denidas. Como j vimos no exemplo do Switch, o Break serve para parar as comparaes de valores de uma varivel ou condio. Com as estruturas de repetio acontece a mesma ao. A instruo seguinte ao break no executada e o uxo de instrues aps a repetio executado. O exemplo a seguir queremos imprimir na tela somente os nmeros mltiplos de 2. Os nmeros que no so mltiplos de 2 no sero impressos na tela.

Pgina: exemplo27.php <HTML> <HEAD> <TITLE>Exemplo 27</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 89 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

90

// testando a quebra de uxo com Break // utilizando o for para mostrar os nmeros mltiplos de 2 for($numero=0;$numero<=10;$numero++){ if( ($numero%2) == 0 ) { print 2<br>; break; print Mensagem aps o Break<BR>; } } ?> </BODY> </HTML> $numero . mltiplo de

Ao executarmos o exemplo, apenas uma linha foi mostrada, a linha do nmero 0. Porque isto aconteceu? Porque, aps a impresso da mensagem na tela, o interpretador encontrou a estrutura de quebra de uxo Break. Quando o interpretador encontra o Break, pra imediatamente de executar as instrues da estrutura onde o Break se encontra e passa a executar as instrues que esto na seqncia dessa estrutura. A seguir analisaremos a estrutura de quebra de uxo Continue e utilizaremos esse mesmo exemplo para analisar a diferena entre as duas estruturas.

4.2 Continue

A estrutura de controle Continue tambm d suporte s estruturas de controle de repetio. A diferena entre o Break e o Continue: em que o Continue pra a execuo da estrutura de repetio no momento o interpretador encontra o Continue, porm ao invs de sair da estrutura de repetio, a execuo direcionada para o incio da estrutura. Utilizando o for como exemplo, a execuo direcionada para a primeira linha do For onde testada a condio da varivel contadora.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 90 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

91

Vamos utilizar o mesmo exemplo do Break, alterando-o para Continue e vericar a diferena entre eles.

Pgina: exemplo28.php <HTML> <HEAD> <TITLE>Exemplo 28</TITLE> </HEAD> <BODY> <? // testando a quebra de uxo com Continue // utilizando o for para mostrar os nmeros mltiplos de 2 for($numero=0;$numero<=10;$numero++){ if( ($numero%2) == 0 ) { print 2<br>; continue; print Mensagem aps o Continue<BR>; } } ?> </BODY> </HTML> $numero . mltiplo de

Aps executarmos o exemplo novamente, trocando o break pelo continue, podemos observar que os nmeros mltiplos de 2 foram corretamente impressos na tela. Porm a mensagem que ca abaixo do continue, assim como quando utilizamos o break, nunca ser executada.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 91 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

92

Sntese

Nesta aula estudamos: As estruturas de controle disponveis na linguagem PHP; Como e quando podemos utilizar as estruturas de controle nas aplicaes; Desenvolvemos testes para validar a funcionalidade das estruturas de controle.

Exerccios propostos

1) As estruturas de controle disponveis no PHP so ( permitida mltipla escolha): a. Repetio b. Atribuio c. Seleo d. Quebra de Fluxo

2) A estrutura de controle If uma estrutura do tipo (apenas uma alternativa est correta): a. Condio b. Seleo c. Atribuio d. Repetio

3) A estrutura de controle Switch se assemelha a outra estrutura de controle. Qual a estrutura? a. For b. If c. Break d. While

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 92 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

93

4) A estrutura de repetio que testa o valor da condio no nal : a. While b. For c. Do ... While d. Switch

5) As estruturas de quebra de uxo so utilizadas para ( permitida mltipla escolha): a. Finalizar uma instruo b. Dar suporte s outras estruturas de controle c. Alterar o uxo das estruturas de repetio d. Interromper a execuo da pgina

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 93 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

94

Aula 7

CLASSES E OBJETOS

Caro aluno(a)! Nesta aula voc estudar sobre programao orientada a objetos na linguagem PHP. Revisaremos os conceitos bsicos da Orientao a Objetos; vericaremos a aplicao desses conceitos na linguagem PHP e, ao nal, construiremos alguns exemplos utilizando a programao orientada a objetos. O contedo visto nesta aula ser bastante aplicado no nosso estudo de caso. Bons Estudos!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar os conceitos bsicos de Orientao a Objetos; Identicar a sintaxe bsica para trabalhar com Orientao a Objetos em PHP; Testar exemplos de programao Orientada a Objetos.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Revisando os conceitos bsicos da Orientao a Objetos; Trabalhando com Classes e Objetos; Exerccios Propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 94 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

95

1 REVISANDO CONCEITOS BSICOS DA ORIENTAO A OBJETOS

O foco do nosso aprendizado neste curso conhecer a linguagem PHP e as caractersticas principais para desenvolvermos aplicaes para Internet. O tema Orientao a Objetos, que vericaremos neste captulo, abordar alguns conceitos bsicos da Orientao a Objetos e tambm demonstrar como podemos, por meio da linguagem PHP, aplicar seus conceitos no desenvolvimento de aplicaes. Esses conceitos sero sucientes para compreendermos como a linguagem PHP implementa a programao orientada a objetos.

1.1 Classes e Objetos

Na denio bsica da orientao a objetos, uma classe pode ser denida como a estrutura que cria novos objetos. Isso signica que todos os objetos utilizados em um sistema so criados por meio da estrutura das classes. O que so os objetos e para que servem? Qual a vantagem da utilizao dos objetos em uma aplicao? Vamos responder essas questes em etapas. Para compreendermos o que um objeto, vamos relembrar o conceito de varivel: utilizada em uma aplicao para armazenar um valor, temporariamente, em memria, durante a execuo de uma aplicao. Essa varivel poder ter o seu valor alterado, porm isto varia de acordo com os procedimentos denidos na aplicao. Vimos que podemos utilizar variveis do tipo array para armazenar mais de um valor em memria. Criamos um array com algumas posies e atribumos valores nessas posies para executar diversos procedimentos durante a execuo da aplicao. Da mesma forma, os objetos tambm sero armazenados em memria, porm os objetos possuem caractersticas diferentes. Vamos imaginar que estamos desenvolvendo um sistema acadmico onde h a manuteno do cadastro de alunos. Por meio dessa manuteno possvel: cadastrar novos alunos, alterar cadastros de alunos existentes, apagar e visualizar o cadastro completo do aluno. Por meio da funcionalidade: Visualizar Cadastro Completo do Aluno ser

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 95 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

96

visualizar todos os dados do cadastro do aluno. Nessa tela sero mostrados os seguintes dados: Matrcula, Nome, Endereo, Telefone do Aluno. Se quisermos trabalhar com os dados de um Aluno nessa tela, permitir a alterao dos dados, por exemplo, teramos que armazenar todos os dados em variveis. Porm essas variveis e seus valores estariam armazenados na memria em locais diferentes, ou seja, no estariam agrupadas em um nico local para acesso. Isso poderia aumentar o tempo na busca pelos dados das variveis em memria, principalmente quando existirem muitos campos no cadastro de Alunos. Esse problema poderia ser solucionado se todos os dados estivessem armazenados agrupados na memria. Quando utilizamos objetos para esses casos, conseguimos agrupar as variveis em um nico local, permitindo rpido acesso ao dado armazenado em memria. No exemplo do Aluno, utilizando o conceito de objetos, criaramos um objeto Aluno, que seria armazenado em memria e, dentro desse objeto, seriam agrupados e armazenados os valores de suas variveis. Em orientao a objetos, as variveis agrupadas dos objetos so chamadas de atributos. Assim, o objeto Aluno teria os seguintes atributos: Matrcula, Nome, Endereo e Telefone, que estariam agrupados em um nico local em memria, facilitando o acesso aos dados armazenados e tambm a manipulao desses dados. A vantagem, nesse caso, permitir o agrupamento dos dados do Aluno em um nico local, fazendo grande diferena no desempenho de uma aplicao. Alm disso, utilizar objetos nos permite ainda outro recurso, a possibilidade de denir algumas funcionalidades especcas para cada objeto. No exemplo do objeto Aluno, denimos como atributos desse objeto: Matrcula, Nome, Endereo e Telefone. Os valores dos atributos sero os dados do Aluno armazenados no sistema e, para cada registro de Aluno no sistema existir um objeto Aluno. Como os atributos esto agrupados em um nico local, possvel denir funcionalidades para o tratamento dos dados destes atributos. Analisando novamente as funcionalidades da manuteno do cadastro de Alunos, h uma funcionalidade que permite a alterao de qualquer um dos registros de Alunos existentes no sistema. Como permitida a alterao de qualquer registro, identicamos que essa funcionalidade igual para todos os objetos Aluno, certo? O sistema tem que permitir que todos os objetos Aluno possam ter os dados de seus

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 96 27/8/2007 13:22:20

Programao de Pgina WEB - PHP

97

atributos alterados. Vamos analisar outra funcionalidade, a que permite apagar os dados dos alunos. Essa funcionalidade tambm permitir apagar qualquer registro de aluno, salvo algumas restries que podem ser denidas na aplicao. Logo, a funcionalidade remover registro de aluno tambm comum para todos os objetos Aluno. Aps essa anlise, podemos identicar os seguintes itens: 1. Todos os objetos Aluno tero os atributos: Matrcula, Nome, Endereo e Telefone, dados que so comuns entre todos os registros de alunos do sistema 2. Todos os objetos Aluno podero ter as funcionalidades: Alterar Dados do Aluno, Remover Dados do Aluno que tambm so funcionalidades comuns para todos os registros de alunos do sistema

Ento, alm de permitir armazenar os dados de seus atributos em nico local para rpido acesso, um objeto tambm permite a denio de funcionalidades para o tratamento dos valores dos seus atributos. Essa uma das principais vantagens da utilizao de objetos em aplicaes: manter os atributos e funcionalidades de uma informao, no nosso exemplo a informao Aluno, agrupados em uma nica estrutura: o objeto. Conhecendo o que um objeto e quais as vantagens na sua utilizao, vamos relembrar a denio da classe: pode ser denida como uma estrutura que cria objetos. por meio da classe que vamos conseguir criar objetos em nossas aplicaes. A classe ento possuir a estrutura do objeto que vai criar. Vamos utilizar o exemplo do objeto Aluno para vericar o formato de uma classe:

Classe Aluno Atributos: Matrcula Nome Endereo Telefone

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 97 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

98

Funcionalidades: Cadastra Aluno Altera dados do Aluno Apaga dados do Aluno Retorna dados do Aluno

Analisando o formato da classe aluno, vericamos que foram denidos os atributos utilizados pelo objeto Aluno e tambm suas funcionalidades. A funo da classe ter a estrutura nal de como o objeto dever ser criado na memria. Assim, a classe deve ter a relao de todos os atributos e funcionalidades que o objeto vai ter depois de criado. Dessa forma, quando precisarmos criar um objeto Aluno, sempre iremos chamar a classe Aluno para saber qual a estrutura do Aluno que deve ser criada. Resumindo, podemos denir classe e objeto da seguinte forma: Classe o formato da estrutura que um objeto vai possuir. Sua funo criar objetos baseados nesse formato. Objetos so criados por meio de uma classe e permitem agrupar dados de atributos e funcionalidades de uma informao. Os objetos iro assumir o formato de estrutura denido na classe que o criou.

1.2 Estrutura das Classes

Uma classe composta dos seguintes itens: Atributos Mtodo Construtor (parmetros do mtodo) Mtodo Destrutor (parmetros do mtodo) Mtodos de Funcionalidades (parmetros do mtodo)

No tpico anterior, vimos que os atributos so as posies em memria dos objetos que armazenam os dados. Os atributos de uma classe devem ser denidos de acordo com os dados dos objetos que desejamos armazenar e/ou manipular. Quando denimos a estrutura de uma classe, podemos incluir um mtodo construtor. O mtodo construtor sempre ser executado toda vez que a classe for

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 98 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

99

utilizada para criar um novo objeto. Uma classe pode ter mais de um mtodo construtor, mas para isso dever ser aplicado o conceito de sobrecarga de mtodos dos conceitos da Orientao a Objetos.

Fique sabendo A sobrecarga de mtodos um recurso da Orientao a Objetos que permite a criao de um mtodo com o nome de um outro j existente, porm com parmetros diferentes quantidade de parmetros que o mtodo ir receber e/ou tipo de dados desses parmetros.

O mtodo destrutor, por sua vez, sempre executado quando um objeto apagado da memria. Esta ao acontece quando a aplicao ou um procedimento especco da aplicao executado e a utilizao do objeto em memria no mais necessria. Para evitar que os objetos quem em excesso na memria objetos que no sero mais utilizados pela aplicao no procedimento so destrudos e removidos da memria. Assim, quando a ao executada, o mtodo destrutor da classe executado. Os mtodos de funcionalidades de uma classe so aqueles que possuem as funcionalidades de um objeto. Para cada funcionalidade do objeto, teremos um mtodo de funcionalidade denido dentro da classe. A ao que o mtodo ir executar tambm ser denida dentro da classe, pois a ao da funcionalidade j estar completa e disponvel para ser utilizada pelo objeto, assim que o objeto for criado. Todos os mtodos podem receber parmetros da aplicao/procedimento que o chamou. Os parmetros so opcionais e podem ser utilizados para auxiliar na funo que o mtodo ir desempenhar. Os parmetros geralmente so variveis que a aplicao/procedimento utiliza para o auxlio da execuo de alguma funo. Vamos considerar, por exemplo, que temos uma classe que cria objetos e realiza clculos matemticos. Nessa classe h o mtodo: soma que recebe dois nmeros como parmetro e retorna a soma desses dois nmeros. Nesse caso, os nmeros foram passados por parmetro para auxiliar na execuo da funo do mtodo: realizar a soma dos nmeros recebidos por parmetro. No prximo tpico, vericaremos qual a sintaxe para a denio das classes

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 99 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

100

e como feita a criao dos objetos por meio de uma classe.

2 TRABALHANDO COM CLASSES E OBJETOS

Quando denimos uma classe em PHP, devemos utilizar a seguinte sintaxe:

class NomeDaClasse{

[modicador] atributo1; [modicador] atributoN;

[modicador] function mtodo1([parmetros]){ Instruo1; InstruoN; }

[modicador] function mtodo1([parmetros]){ Instruo1; InstruoN; } }

Observemos que existem alguns itens entre colchetes, so os modicadores e os parmetros, representados entre colchetes, pois a denio deles opcional. Isso signica que no necessrio informar estes itens, quando denimos uma classe. Utilizamos parmetros nos mtodos somente quando este precisa realizar alguma funo que depende do valor de uma varivel externa, caso contrrio, a passagem de parmetros para o mtodo descartada. Os modicadores indicados na sintaxe da classe so os comandos que denem a visibilidade dos itens da classe e, conseqentemente, do objeto criado por meio dela. A visibilidade identicar como os atributos e mtodos sero utilizados por toda a aplicao. H trs tipos de visibilidade:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 100 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

101

1. Public deixa os atributos/mtodos pblicos para toda a estrutura da aplicao. 2. Protected permite que somente algumas pginas e objetos do sistema tenham acesso aos atributos e mtodos da classe, que cam protegidos e podero ser acessados somente por pginas e objetos que fazem parte do mesmo pacote mesmo caminho fsico onde se encontra o arquivo da classe. 3. Private tornar os atributos/mtodos privados. Isso signica que somente a prpria classe/objeto poder acessar e manipular os atributos e mtodos denidos como privados.

Geralmente, os atributos de uma classe so denidos como privados utilizam o modicador private no incio da declarao - porque, segundo o conceito de encapsulamento da orientao a objetos, somente o prprio objeto poder manipular seus atributos, mantendo a integridade dos dados dos objetos e evitando que procedimentos alheios ao objeto prejudiquem os dados armazenados. Vamos, agora, criar nossa primeira classe em PHP, utilizando o exemplo a seguir.

Pgina: class.operacao.php <? // declara a classe // o objeto que for criado por meio desta classe assumir a visibilidade e nome // da classe class Operacao{

//declara um atributo private $resultado;

// declara o mtodo adio // o mtodo recebe dois nmeros para executar o clculo e retornar o // resultado

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 101 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

102

Public function adicao($numero1, $numero2){ $this->resultado = $numero1 + $numero2; return $this->resultado; }

} ?>

Podemos executar o arquivo da classe no VertrigoServ para validar se no h erro, porm no ser mostrada nenhuma mensagem na tela, porque criamos apenas o formato da classe, ou seja, a estrutura que um objeto ir possuir. Para testarmos o funcionamento dessa classe, vamos criar outro arquivo de exemplo que utilizar a estrutura da classe para criar objetos: Operacao. Quando utilizamos uma classe para criar um objeto, dizemos que instanciamos um novo objeto. Todos os objetos so instanciados por meio de uma classe j denida. Esse tambm um conceito da Orientao a Objetos. Vamos agora criar um novo arquivo de exemplo para testarmos o funcionamento da classe: Operacao. Nesse arquivo vamos disponibilizar um formulrio HTML com dois campos para que possamos informar dois nmeros. Depois iremos submeter os valores dos campos para esse mesmo arquivo vamos utilizar a funo que verica se existe uma varivel setada, nesse caso, as duas variveis que sero enviadas pelo navegador e instanciar um objeto Operacao para utilizar o mtodo: adicao desse objeto.

Pgina: exemplo29_form.php <HTML> <HEAD> <TITLE>Exemplo 29</TITLE> </HEAD> <BODY> <!-Este um comentrio em HTML!

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 102 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

103

Quando queremos que o formulrio envie as variveis para a mesma pgina, no especicamos o atributo: action do comando form --> <form name=form1 method=post>

Nmero 1: <input type=text name=numero1><br> Nmero 2: <input type=text name=numero2><br> <input type=submit name=btnEnviar value=Calcular Soma> </form>

<? //verica se existe a varivel de navegador numero1 if(isset($_POST[numero1])){

//cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2];

//verica se as variveis possuem valor diferente de vazio if(!empty($num1) && !empty($num2)){

// inclui o arquivo que possui a estrutura da classe para permitir a // criao do objeto require_once(class.operacao.php);

// cria o objeto $objOperacao = new Operacao(); // a partir de agora a varivel: $objOperacao um

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 103 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

104

objeto que possui a estrutura // da classe operao // vamos ento chamar o mtodo adicao e obter o resultado da soma e mostrar // o resultado na tela print $objOperacao->adicao($num1,$num2) . <br>;

// como j no precisamos do objeto: $objOperacao, vamos destru-lo Unset($objOperacao); }

} ?> </BODY> </HTML>

Ao analisarmos o cdigo fonte do exemplo29.php, podemos identicar trs comandos que ainda no foram utilizados: 1. require_once(arquivo) esse comando permite incluir um arquivo php dentro de outro arquivo. Permite estruturarmos e organizarmos melhor os arquivos da aplicao. Existem outros dois comandos semelhantes ao require_once(): include() e require(). 2. new NomeClasse() permitir a criao de um objeto com base na estrutura da classe identicada. 3. -> - utilizado somente pelos objetos para chamar e executar as instrues de um mtodo. As demais instrues utilizadas no exemplo29.php j foram vistas nos captulos anteriores. Ao executarmos o exemplo29.php no VertrigoServ, ser mostrado o formulrio HTML com dois campos de texto para preenchimento. Aps informarmos os nmeros e clicarmos no boto: Calcular Soma, as validaes sero feitas, o objeto Operacao

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 104 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

105

ser criado e o mtodo: adicao executado. Como o mtodo adicao retorna o resultado, podemos imprimir o resultado na tela. Ao nal, como no iremos mais utilizar o objeto: Operao, podemos destru-lo, removendo-o da memria.

Sntese

Nesta aula zemos uma reviso sobre os conceitos bsicos da Orientao a Objetos. Estudamos a sintaxe bsica da programao orientada a objetos em PHP e analisamos alguns exemplos da aplicao da programao orientada a objetos em PHP.

Exerccios propostos

1) A diferena entre uma classe e um objeto (apenas uma alternativa est correta): a. O objeto armazenado em memria e a classe no b. A classe possui a estrutura de um objeto c. O objeto possui a estrutura de uma classe d. A classe armazena variveis na memria

2) A sintaxe correta para criar um objeto (apenas uma alternativa est correta): a. $objeto = TipoObjeto(); b. objeto = new TipoObjeto(); c. objeto = TipoObjeto() d. $objeto = new TipoObjeto();

3) Exerccio prtico: Desenvolva os mtodos: subtrao, multiplicao e diviso para a classe: class.operacao.php e altere o formulrio do exemplo29.php para permitir que o usurio selecione a operao que deseja realizar.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 105 27/8/2007 13:22:21

Programao de Pgina WEB - PHP

106

Aula 8

CONTROLE DE SESSO

Caro aluno(a)! Nesta oitava aula voc estudar sobre o controle de sesso em PHP. Vericaremos o que uma sesso e como podemos utiliz-la em aplicaes para Internet. O controle de sesso muito utilizado, principalmente por aplicaes que possuem restrio de acesso de usurios. Bons Estudos!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar como o funcionamento das sesses; Testar o controle de sesso; Utilizar o controle de sesso em suas aplicaes.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo ao controle de sesso; Testando o controle de sesso em PHP; Exerccios propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 106 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

107

1 INTRODUO AO CONTROLE DE SESSO

No primeiro captulo deste livro-texto, vimos como utilizar a arquitetura clienteservidor quando acessamos aplicaes na Internet. Assim, todas as aplicaes desenvolvidas para Internet estaro instaladas em um servidor que disponibilizar a aplicao aos usurios, por meio da conexo entre a mquina cliente e o servidor. Quando o usurio abre o navegador de Internet e faz a primeira requisio de acesso aplicao no servidor, criada uma sesso de conexo entre a mquina cliente e o servidor, mantida pela prpria mquina cliente at a nalizao do acesso aplicao. A sesso ser encerrada somente quando o usurio fechar a aplicao ou por algum imprevisto na conexo cliente-servidor. O controle de sesso muito utilizado por aplicaes que possuem acesso restrito. Utilizaremos alguns exemplos que demonstram esse tipo de recurso. No captulo 4 deste livro-texto Trabalhando com Variveis e Constantes tivemos uma pequena introduo s variveis de sesso. Quando uma conexo cliente-servidor estabelecida, a sesso do cliente criada. Aps a criao da sesso, possvel utiliz-la para criar variveis. A sesso uma identicao da conexo do cliente com o servidor e todas as variveis de sesso criadas estaro automaticamente relacionadas com essa que ser mantida pela mquina cliente. Caso seja encerrada, todas as variveis relacionadas com a sesso tambm sero encerradas. Dessa forma, quando trabalhamos com variveis de sesso necessrio sempre vericar se ela est ativa e depois, se a varivel de sesso existe. A sintaxe para criao de uma varivel de sesso : $_SESSION[nome_da_variavel] = valor_da_variavel A varivel de sesso, assim como as outras, tambm pode receber qualquer valor, pois o interpretador PHP utilizar a tipagem automtica para atribuir o tipo de dado varivel. Para utilizarmos variveis de sesso dentro de uma aplicao, precisamos fazer uso das seguintes funes do PHP: session_start() = inicia a sesso que permitir a manipulao de variveis de sesso. Funo sempre utilizada quando houver procedimentos com variveis

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 107 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

108

de sesso. session_is_registered(nome_da_variavel) - verica se a varivel de sesso existe na sesso. Essa funo ir retornar um valor booleano - verdadeiro ou falso. session_destroy() = naliza todas as variveis de sesso registradas. Se, por algum motivo, desejarmos encerrar uma nica varivel de sesso, deveremos utilizar a funo unset(nome_da_variavel), pois a funo session_destroy(), naliza todas as variveis mantidas na sesso.

2 TESTANDO O CONTROLE DE SESSO EM PHP

Para testarmos o controle de sesso em PHP, utilizaremos trs arquivos de exemplo: exemplo30.php, que possuir um formulrio HTML de autenticao de usurios; o exemplo31.php, que far a validao dos dados informados no formulrio HTML, criar uma varivel de sesso e redirecionar para o exemplo32.php. O exemplo32. php estar validando a criao da varivel de sesso e mostrando uma mensagem na tela.

Pgina: exemplo30_form.php <HTML> <HEAD> <TITLE>Exemplo 30</TITLE> </HEAD> <BODY> <form name=form1 action=exemplo31.php method=post>

Login: <input type=text name=login><br> Senha: <input type=password name=senha><br> <input type=submit name=btnEnviar value=Autenticar Usurio> </form> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 108 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

109

Pgina: exemplo31_form.php <? //inicia a sesso session_start();

if(isset($_POST[login])){

$login = $_POST[login]; $senha = $_POST[senha];

//verica se o login e senha informados esto corretos if($login == user && $senha == 1234){

//cria a varivel de sesso $_SESSION[user] = $login; }

} // redireciona para a tela exemplo32.php header(location:exemplo32.php); ?>

Pgina: exemplo32_form.php <? //inicia a sesso session_start(); ?> <HTML> <HEAD> <TITLE>Exemplo 32</TITLE> </HEAD> <BODY>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 109 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

110

<? //verica se a varivel de sesso foi criada if(session_is_registered(user)){ print Sesso criada com sucesso.; } else { print A sesso no foi criada, login e senha incorretos; } //destroi a sesso session_destroy(); ?> <br><br> <a href =exemplo30.php>Voltar para tela de Autenticao</ a> </BODY> </HTML>

Teste os exemplos informando o login e senha corretos, denido no exemplo31. php e tambm incorretos para validar a criao da varivel de sesso. Uma sesso pode ter N variveis de sesso, porm, por medida de segurana, no aconselhvel manter muitos dados em sesso. Antes de nalizarmos esse captulo, vamos analisar uma nova instruo utilizada nos exemplos acima: header(location:exemplo32.php); O comando header pode ser utilizado para vrios procedimentos. No exemplo acima, utilizamos o comando para que, ao nal da execuo do exemplo31.php, o usurio fosse redirecionado para o exemplo32.php. O item location: o subcomando do header que permite esse tipo de recurso. Porm somente ser possvel utilizar este redirecionamento quando nenhum tipo de impresso foi feito na tela. Se, por acaso, no for feita nenhuma impresso na tela, mas houver algum comando HTML como o <HTML></HTML> ou outro comando HTML qualquer, o recurso no vai funcionar e ser retornado um erro. Portanto, utilize esse recurso somente quando houver

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 110 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

111

certeza de que no ser impresso nada na tela do usurio. Outra dica importante com relao funo: session_start(). Se voc vericar o exemplo32.php, a funo est logo no topo da pgina, antes mesmo do comando HTML: <HTML></HTML>. O session_start() tambm tem o mesmo tipo de requisito que o comando header, ou seja, deve ser utilizado antes de qualquer impresso na tela, mesmo que sejam apenas comandos HTMLs.

Sntese

Nesta aula estudamos como funciona o Controle de Sesso; introduzimos alguns contedos sobre Controle de Sesso em PHP e analisamos exemplos de testes para vericar como funcionam as sesses em PHP.

Exerccios propostos

1) A sesso pode ser denida como (apenas uma alternativa correta): a. Uma varivel b. Uma constante c. Uma identicao de conexo d. Uma estrutura de controle

2) Quando utilizamos variveis de sesso, conseqentemente estas variveis estaro armazenadas: a. No banco de dados b. No HD disco fsico c. Na memria d. Na sesso da mquina cliente

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 111 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

112

3) A sesso criada quando: a. Um usurio abre o navegador b. Um usurio faz uma autenticao correta em um sistema c. Uma mquina cliente faz uma requisio ao servidor d. Uma mquina cliente efetiva uma conexo de acesso com o servidor

4) Quando precisamos realizar operaes com variveis de sesso devemos sempre utilizar a funo: a. Session_is_registered() b. Session_destroy() c. $_SESSION[] d. Session_start()

5) A funo que encerra todas as variveis de sesso mantidas na sesso da mquina cliente a: a. Session_is_registered() b. Session_destroy() c. $_SESSION[] d. Session_start()

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 112 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

113

Aula 9

TRABALHANDO COM BANCO DE DADOS MYSQL


Caro aluno(a)! Nesta nona aula estudaremos as principais formas de integrao do PHP com o banco de dados MySQL. Identicaremos as principais funes para conexo e manipulao dos dados de um banco de dados e os procedimentos necessrios para a conexo com esse banco. Bons Estudos!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Identicar quais so as funes necessrias para trabalhar com o MySQL; Identicar os passos para fazer uma conexo com o MySQL; Testar a integrao do PHP com o MySQL.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo; Conexo com o MySQL; Executando comandos de manipulao de dados; Executando comandos de seleo de dados; Exerccios Propostos.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 113 27/8/2007 13:22:22

Programao de Pgina WEB - PHP

114

1 INTRODUO

Grande parte das aplicaes disponveis na Internet, atualmente, possuem contedo dinmico, ou seja, possuem o contedo armazenado em um banco de dados. Manter o contedo atualizado desse tipo de aplicao muito mais fcil e rpido do que manter o contedo de aplicaes estticas, desenvolvidas apenas com HTML, pois no necessrio alterar o leaiute da pgina a cada alterao de contedo. Basta que esteja denido onde sero publicados os contedos armazenados em banco de dados e, conforme so atualizados sero disponibilizados automaticamente no local denido. Para que essa facilidade na manuteno de contedos se torne real, necessrio utilizar uma linguagem de programao de aplicaes para Internet que tenha suporte e integrao a um banco de dados. A linguagem PHP, atualmente na verso 5, possui suporte e integrao em grande parte dos bancos de dados. Alm disso, a combinao: PHP e MySQL tem sido um par perfeito desde o incio da popularidade do PHP. Assim, nesse captulo, estudaremos as formas de integrao que a linguagem PHP disponibiliza para podermos desenvolver aplicaes com contedo dinmico armazenado no banco de dados MySQL. Se voc fez a instalao do VertrigoServ, tambm j tem instalado e congurado em sua mquina a verso 5 do MySQL.

1.1 Conectando com o MySQL

A linguagem PHP disponibiliza vrias funes que permitem a integrao com o banco de dados MySQL. Identicar essas funes no manual do PHP bem simples, pois todas elas iniciam com o termo: mysql. A conexo com o servidor de banco de dados MySQL, em PHP, feita por meio da funo mysql_connect, que tem a seguinte sintaxe:
mysql_connect(nome_servidor[:porta], login_usuario, senha_usuario);

Analisando a sintaxe da funo de conexo com o servidor, podemos vericar

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 114 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

115

que necessria a passagem de trs parmetros: 1. O nome do servidor onde est instalado o MySQL e, caso o MySQL no esteja instalado na porta padro, deve-se informar, aps o nome do servidor, o nmero da porta; 2. O login do usurio que possui acesso ao servidor MySQL e tambm ao banco de dados que se deseja conectar; 3. E a senha do usurio que est conectando no servidor MySQL. A funo de conexo ir retornar um valor inteiro, que o identicador da conexo estabelecida e dever ser armazenado numa varivel para ser utilizado depois na seleo do banco de dados e tambm nos procedimentos de manipulao com o banco de dados. Veja o exemplo de conexo com o banco de dados: $conexao = mysql_connect(localhost, root, vertrigo); Utilizando o exemplo acima, se a conexo for bem sucedida, ou seja, se existir um servidor MySQL chamado: localhost que possua o usurio e a senha fornecida, o identicador da conexo com o servidor car armazenado na varivel $conexo. Aps efetuar com sucesso a conexo com o MySQL, ser necessrio selecionar o banco de dados que possui os dados da aplicao. Essa seleo feita por meio da funo int mysql_db_query, que possui a seguinte sintaxe: mysql_db_query(nome_banco, identicador_conexao); A funo de seleo do banco de dados que ir retornar 0, se no encontrar o banco de dados no servidor especicado pelo identicador da conexo, e 1, em caso de sucesso. Veja o exemplo de seleo do banco de dados revenda que ser utilizado no nosso estudo de caso: mysql_select_db(revenda, $conexao); Caso a seleo do banco de dados seja feita com sucesso, ser possvel realizar qualquer manipulao nos dados desse banco de dados, desde que o usurio utilizado para a conexo com o servidor tenha permisso para realizar tais operaes.

1.2 Executando comandos de manipulao de dados

Para executar comandos de manipulao de dados no MySQL, por meio da

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 115 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

116

linguagem PHP, necessrio que a conexo com o MySQL e a seleo do banco de dados j tenha sido efetuada com sucesso. Caso contrrio, a tentativa de manipulao ir retornar um erro. Para manipular dados em um banco de dados, utilizamos os seguintes comandos SQL: 1. INSERT para inserir registros 2. UPDATE para alterar registros 3. DELETE para excluir registros No entraremos em detalhes sobre a sintaxe e os padres da linguagem SQL aqui, pois esse conhecimento um pr-requisito para cursar esta disciplina. Os comandos SQL sero executados na linguagem PHP por meio da funo: mysql_query cuja sintaxe : mysql_query(comando_sql, identicador_da_conexao); O retorno da funo ser 0, em caso de falha, e 1, em caso de sucesso. Quando a funo for executada com sucesso, signica que instruo SQL foi executada corretamente pelo servidor MySQL e a manipulao dos dados foi executada com sucesso.

1.3 Executando comandos de seleo de dados

Os comandos de seleo de dados tambm so executados por meio da funo mysql_query. A diferena nesse caso, que a funo ter um valor diferente de 0 e 1. O valor de retorno, nesse caso, um identicador que possui a identicao do resultado da seleo realizada. Para visualizarmos o resultado da seleo, ser necessrio utilizarmos a funo mysql_result, cuja sintaxe :
mysql_result(identicador_resultado, linha_registro, campo_registro);

O identicador do resultado obtido por meio do retorno da funo mysql_query. A linha especica a linha de registro a ser exibida, j que uma query SELECT pode retornar diversas linhas de registros, e campo o identicador do campo a ser exibido. Vejamos um exemplo: $consulta = SELECT nome, email FROM usuario WHERE nome LIKE Joo;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 116 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

117

$resultado = mysql_query($consulta, $conexao); Print Nome: . mysql_result($resultado,0,nome) . <br> ; Print e-mail: . mysql_result($resultado,0,email) . <br>;

A funo mysql_result no a nica que permite o tratamento do resultado de um comando de seleo. Inclusive, para resultado com muitas linhas de registro, podemos dizer que ela desaconselhvel. Por isso, aconselhvel utilizar outra funo, por exemplo, a funo mysql_fetch_row, que possui a seguinte sintaxe: mysql_fetch_row(identicador_resultado); O retorno dessa funo ser um array de registros. Assim torna-se mais fcil tratar um resultado com vrias linhas, e sem utilizar os nomes dos campos na rotina de tratamento do resultado. Vamos analisar o mesmo exemplo, porm agora utilizando a funo mysql_fetch_row:

$consulta = SELECT nome, email FROM usuario; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Nome: . $linha[0] . <BR>; print e-mail: . $linha[1] . <BR>; }

Nessa aula conhecemos apenas algumas funes bsicas que permitem a integrao do PHP com o banco de dados MySQL, porm existem outras funes que auxiliam nessa integrao. Na prxima aula desenvolveremos um estudo de caso e aplicaremos os conceitos de integrao com o banco de dados MySQL vistos nesse captulo.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 117 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

118

Sntese

Nesta aula estudamos as principais funes para integrao entre o PHP e o MySQL. Tambm estudamos os procedimentos que devem ser executados para a conexo com o MySQL, alm de termos analisado exemplos de integrao e manipulao dos dados de um banco de dados MySQL.

Exerccios propostos

Para resolver os exerccios seguintes, obrigatria a criao do banco de dados revenda do modelo ER abaixo. Este banco de dados tambm ser utilizado no estudo de caso da prxima aula.

1) Crie um arquivo em PHP que faa a conexo com o banco de dados MySQL, selecione o banco de dados revenda e em seguida, utilize as funes de integrao para executar os seguintes comandos SQL: a. Inserir os seguintes registros na tabela Marcas: i. 1 Citroen ii. 2 Audi

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 118 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

119

iii. 3 Renault b. Selecionar e imprimir todos os registros inseridos na tabela Marcas. c. Alterar a descrio do registro nmero 3 da tabela Marcas para Pegeout. d. Selecionar e imprimir todos os registros inseridos na tabela Marcas depois da alterao.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 119 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

120

Aula 10

ESTUDO DE CASO: REVENDA DE AUTOMVEIS


Caro aluno(a)! Nesta dcima aula reveremos todos os conceitos vistos at agora e consolidaremos nossos conhecimentos com o incio do desenvolvimento de uma aplicao para revenda de automveis. Vericaremos os passos principais para o desenvolvimento de uma aplicao e efetivaremos uma funcionalidade completa para manuteno dos dados de uma tabela no banco de dados. Ao nalizar essa aula, car como desao para voc, desenvolver o restante da aplicao seguindo as dicas e o conhecimento adquirido na disciplina. Bons Estudos e bom desenvolvimento!

Objetivos da Aula

Ao nal desta aula, voc dever ser capaz de: Consolidar os conhecimentos adquiridos na disciplina; Iniciar o desenvolvimento de uma aplicao de revenda de automveis.

Contedos da Aula

Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Caractersticas da Aplicao; Desenvolvendo as Classes de Conexo; Desenvolvendo as Classes de Negcio; Desenvolvendo a interface com usurio.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 120 27/8/2007 13:22:23

Programao de Pgina WEB - PHP

121

1 CARACTERSTICAS DA APLICAO

A aplicao que iniciaremos nessa aula refere-se ao modelo ER, da pg. , da aula anterior. A aplicao tem como objetivo atender as necessidades de uma revenda de automveis, cuja inteno desenvolver um site na Internet que permita ao usurio selecionar marcas e/ou modelos de automveis e visualizar uma lista de automveis disponveis para venda. Vericaremos quais so os primeiros passos para desenvolver a aplicao, criar as principais classes do sistema, a tela principal e a manuteno dos registros de uma das tabelas na administrao do site. Ao nalizarmos esses itens, voc j ser capaz de dar continuidade na aplicao e desenvolver os demais recursos. Ao nal do captulo, algumas sugestes de funcionalidades sero apresentadas para enriquecer a aplicao da revenda de automveis.

2 DESENVOLVENDO AS CLASSES DE CONEXO

A primeira tarefa que devemos realizar, para desenvolvermos a aplicao da revenda de automveis a criao das classes que permitiro criar os objetos de conexo e acesso aos dados para seleo e manipulao. Criaremos, ento, duas classes: 1. A classe: class.conexaobanco.php, responsvel pela conexo com o MySQL 2. E a classe: class.acessobanco.php, cujos mtodos sero operaes de manipulao e seleo que podem ser executadas no banco de dados. Essas duas classes sero o corao da nossa aplicao, pois todos os objetos do sistema as utilizaro para fazer a conexo e seleo/manipulao dos dados no banco de dados. Vamos ento analisar o cdigo fonte da classe: class.conexaobanco.php:
<?php class ConexaoBanco { //Propriedade Esttica referenciando um tipo da mesma Classe

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 121 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

122

static $instancia = false;

private $server = localhost; private $user = root; private $password = vertrigo; private $conexao;

//Construtor Private - No possvel utilizar new em outras classes private function __construct() {

//faz a conexo com o banco de dados $this->conexao = mysql_connect($this->server, $this>user, $this->password); }

//Metodo para recuperar instancia public function getInstancia() { if (!ConexaoBanco::$instancia) {

ConexaoBanco::$instancia = new ConexaoBanco();//chamando construtor } return ConexaoBanco::$instancia; }

public function getConexao(){ return $this->conexao; }

//destrutor - destri conexo com o banco function __destruct(){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 122 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

123

mysql_close($this->conexao); } } ?>

Analisando o cdigo fonte da classe, observamos haver um mtodo construtor, que farr a conexo com o MySQL, por meio dos dados dos atributos privados j selecionados com os dados de conexo com o MySQL. Nessa classe, existe tambm o mtodo destrutor, que fechar a conexo com o banco de dados, quando o objeto for nalizado/destrudo. A funo que fecha a conexo com o banco de dados a mysql_close. Os outros dois mtodos da classe, o getConexao: retorna o identicador da conexo realizada e o getInstancia sempre retornar o mesmo objeto em memria para os demais objetos da aplicao. Esse mtodo foi congurado dessa forma para prevenir o problema de estouro de pool no banco de dados. O problema ocorre quando muitas conexes com o banco de dados so inicializadas e no so nalizadas. Essas conexes que cam abertas iro consumir os recursos do banco at esgotar e isso gerar o famoso estouro de pool. No nosso caso, utilizando o objeto conexaobanco, haver sempre uma nica conexo e, ao nal da aplicao, essa conexo ser devidamente nalizada. Agora vamos analisar o cdigo-fonte da classe: class.acessobanco.php: <?php require(class.conexaobanco.php);

class AcessoBanco{

private $base = revenda; private $conexao;

//mtodo construtor public function AcessoBanco(){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 123 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

124

//conexo com o banco de dados $oConexaoBanco = ConexaoBanco::getInstancia(); $this->conexao = $oConexaoBanco->getConexao();

//mtodo que retorna o valor do campo informado no parmetro public $paramWhere){ function getValorCampo($paramCampo, $paramFrom,

$valorCampo = ;

//comando SQL que busca o valor do campo informado $comandoSql = SELECT . $paramCampo . FROM . $paramFrom . WHERE . $paramWhere;

//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);

//pega a qtde de registros retornados $qtdeRegistros = mysql_num_rows ($resultado);

if ($qtdeRegistros > 0) { $valorCampo = mysql_result($resultado,0,$paramCa mpo); } return $valorCampo;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 124 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

125

//mtodo que seleciona registros no banco de dados public function selectRegistro($paramTabela, $paramCampos, $paramCondicao = , $paramOrdenacao = ){

//comando SQL que seleciona os dados no banco de dados $comandoSql = SELECT . $paramCampos . FROM . $paramTabela;

//inclui condio quando existir if (!empty($paramCondicao)){ $comandoSql .= WHERE . $paramCondicao; }

//inclui ordenao quando existir if (!empty($paramOrdenacao)){ $comandoSql .= ORDER BY . $paramOrdenacao; }

//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);

$i = 0;

$arrayRegistro = array();

//seta o array de Registros com os registros retornados while ($registro = mysql_fetch_array ($resultado)) { $arrayRegistro[$i] = $registro; $i++;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 125 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

126

return $arrayRegistro;

//mtodo que insere registros no banco de dados e retorna o ltimo id inserido public function insertRegistro($paramTabela, $paramCampos, $paramValores){

$id = 0;

//comando SQL que insere os dados no banco de dados $comandoSql = INSERT INTO . $paramTabela . ( . $paramCampos . ) VALUES( . $paramValores . ) ;

//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);

//verica se deve ser retornado o id $id = mysql_insert_id($this->conexao);

//verica se teve erro no query if (mysql_errno($this->conexao)){ echo mysql_error($this->conexao); }

return $id; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 126 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

127

//mtodo que altera registros no banco de dados public function updateRegistro($paramTabela, $paramCampos, $paramCondicao){ $resultado = 0;

//comando SQL que altera os dados no banco de dados $comandoSql = UPDATE . $paramTabela . SET . $paramCampos . WHERE . $paramCondicao;

//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);

//verica se teve erro no query if (mysql_errno($this->conexao)){ echo mysql_error($this->conexao); }

return $resultado;

//mtodo que altera registros no banco de dados public function deleteRegistro($paramTabela, $paramCondicao){

//comando SQL que apaga os dados no banco de dados $comandoSql = DELETE FROM . $paramTabela . WHERE . $paramCondicao;

//executa o comando SQL no banco de dados

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 127 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

128

$resultado = mysql_db_query ($this->base, $comandoSql, $this>conexao);

} }

?>

A classe acessobanco a classe responsvel pela seleo do banco de dados e por todo tipo de manipulao e seleo dos dados no banco. Essa classe possui um mtodo para cada tipo de comando SQL, permitindo exibilidade e organizao dos comandos SQL em um nico local. Observando os mtodos criados, identicamos uma palavra que no tinha sido mencionada at o momento, a palavra static, que tambm faz parte do conceito de orientao a objetos e indica que no necessria a criao de um objeto em memria para utilizar os mtodos da classe. Isso signica que no precisamos utilizar o comando new Objeto() para utilizar o mtodo static, basta apenas informar qual a classe que possui o mtodo static e cham-lo. Veja, a seguir, como feita a chamada de um mtodo static de uma classe: NomeDaClasse::NomeDoMetodo(); Nas classes de negcio utilizaremos bastante a chamada de mtodos static.

3 DESENVOLVENDO AS CLASSES DE NEGCIO

Criadas as classes de conexo e acesso ao banco, precisaremos desenvolver as classes de negcio aquelas que criaro os objetos no sistema para manipular as informaes ao nal, salvar no banco de dados. Neste livro-texto visualizaremos as classes de negcio que criaro objetos Marcas, porm existem outras classes na aplicao que possuem a mesma estrutura e que sero disponibilizadas para os testes e desenvolvimento dos demais recursos da aplicao. As classes de negcio so divididas em duas: 1. Classe que cria o objeto Bean esse termo muito utilizado em

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 128 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

129

programao orientada a objetos e identica as classes que possuem a estrutura das tabelas denidas no banco de dados. Para cada tabela no banco de dados ser criada uma classe com a estrutura dessa tabela, cujos campos sero os atributos da classe. Para cada atributo dessa classe existiro dois mtodos: um que atribui um valor para o atributo e outro que retorna o valor do atributo. So os chamados mtodos: set e get da orientao a objetos. 2. Classe com a Regra de Negcio do objeto Bean essa classe possuir os mtodos/funcionalidades de negcio disponveis para o objeto Bean correspondente. Essa classe possuir mtodos static, para cham-los, no ser necessria a criao do objeto Regra de Negcio. Vamos analisar o cdigo-fonte das classes Bean e Regra de Negcio, criadas por meio da tabela: Marcas do banco de dados. Classe Bean class.marca.php <?php class Marca{

//atributos private $cod; private $desc;

//mtodo construtor da classe public function Marca(){ $this->cod = 0; $this->desc = ; }

//mtodos da classe

//cod public function setCod($paramCod){ $this->cod = $paramCod; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 129 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

130

public function getCod(){ return $this->cod; }

//desc public function setDesc($paramDesc){ $this->desc = $paramDesc; }

public function getDesc(){ return $this->desc; } }

?>

Analisando a classe Bean da tabela: Marcas, identicamos uma estrutura bem simples possui dois atributos e quatro mtodos. Para cada atributo da classe h um mtodo: set, que atribui valor ao atributo, e um mtodo: get, que retorna o valor do atributo. Para todas as tabelas do sistema ser necessrio criar uma classe semelhante, lembrando sempre que os atributos da classe so os campos da tabela em questo. Vamos agora analisar a classe Regra de Negcio da tabela: Marcas.

Classe Regra de Negcio class.marcaRN.php

<?php // incluso do arquivo de classe Marca require_once(class.marca.php); //inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 130 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

131

class MarcaRN{

//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = $paramCondicao;

//pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela,

$campos, $condicao, $paramOrderBy);

class MarcaRN{

//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 131 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

132

$condicao = $paramCondicao;

//pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela,

$campos, $condicao, $paramOrderBy);

//gera a lista de objetos $lista = self::geraArrayObjeto($resultado);

//destroi objeto unset($acessoBanco);

return $lista;

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){

$i = 0; $marcas = array();

foreach ($paramLista as $indiceArray => $array) {

//instancia o objeto $marca = new Marca(); $marca->setCod($array[marca_cod]); $marca->setDesc($array[marca_desc]);

$marcas[$i] = $marca;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 132 27/8/2007 13:22:24

Programao de Pgina WEB - PHP

133

$i++; }

return $marcas;

//retorna um objeto public static function getObjeto($paramCod){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = marca_cod = . $paramCod;

//pega a lista de registros Categoria $resultado $campos, $condicao); = $acessoBanco->selectRegistro($tabela,

$marca = ;

//verica se retornou um resultado if(sizeof($resultado)>0){ $marca = new Marca(); $marca->setCod($resultado[0][marca_cod]); $marca->setDesc($resultado[0][marca_desc]); }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 133 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

134

//destroi objeto unset($acessoBanco);

return $marca;

public static function alterObjeto(&$Objeto){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_desc = . $Objeto->getDesc() . ; $condicao = marca_cod = . $Objeto->getCod();

//altera o Banco de Dados $resultado $campos, $condicao); = $acessoBanco->updateRegistro($tabela,

//destroi objeto unset($acessoBanco);

//altera o objeto

public static function addObjeto(&$Objeto){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 134 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

135

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . ;

//altera o Banco de Dados $resultado $campos, $valor); = $acessoBanco->insertRegistro($tabela,

//destroi objeto unset($acessoBanco);

//deleta o objeto public static function delObjeto(&$Objeto){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro

$tabela = marcas; $condicao = marca_cod = . $Objeto->getCod();

//altera o Banco de Dados $resultado $condicao); = $acessoBanco->deleteRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 135 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

136

//destroi objeto unset($acessoBanco);

?>

A classe regra de negcio a que permitir a manipulao dos registros da tabela no banco de dados. No caso da classe: MarcaRN, criaremos mtodos especcos para a manipulao dos dados da tabela: Marcas do banco de dados revenda. Analisando o cdigo fonte da classe, identicamos mtodo para cada tipo de manipulao no banco de dados. H dois mtodos de seleo no banco: o getListaObjeto que ir retornar uma lista de objetos Marca, de acordo com a quantidade de registros existente no banco de dados e o getObjeto, que retorna um nico objeto Marca. Esse segundo mtodo utilizado para pegar um registro especco da tabela por meio da chave primria campo que identica o registro no banco de dados. Como estamos programando orientado a objetos e utilizando um banco de dados relacional para armazenar os dados, necessrio fazer um mapeamento objeto - relacional para pegar os registros que esto no banco de dados relacional e transform-los em objetos dentro da aplicao. Assim, o mtodo: geraArrayObjeto o responsvel pela criao da lista de objetos Marcas, com base no resultado da consulta de seleo executada no banco de dados. Os demais mtodos da classe referem-se s operaes de manipulao dos registros no banco de dados. Existe um mtodo para cada operao comando SQL. Nesses mtodos tambm utilizamos o mapeamento objeto relacional, porm nesse momento transformaremos os objetos em memria nos registros do banco de dados. Como todos os mtodos da classe de negcio se referem manipulao e seleo de registros no banco de dados, a classe: acessobanco, criada no tpico anterior, ser a ponte entre o objeto e o banco de dados. Assim, todas as tabelas do banco de dados revenda tero duas classes

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 136 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

137

correspondentes na aplicao: a classe Bean, que possuir a estrutura da tabela, e a Regra de Negcio, com mtodos que permitiro a seleo e manipulao dos registros no banco de dados. Vamos agora criar as classes Bean e Regra de Negcio para as tabelas: Modelos e Automoveis. Verique que as estruturas dessas classes so semelhantes s classes da tabela: Marcas. A nica diferena entre elas, em relao quantidade de atributos o mapeamento objeto relacional, que utilizar dados da tabela a que a classe se refere.

Classe Bean class.modelo.php <?php

class Modelo{

//atributos private $cod; private $desc; private $marca_cod;

//mtodo construtor da classe public function Modelo(){ $this->cod = 0; $this->desc = ; $this->marca_cod = 0; }

//mtodos da classe

//cod public function setCod($paramCod){ $this->cod = $paramCod;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 137 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

138

public function getCod(){ return $this->cod; }

//desc public function setDesc($paramDesc){ $this->desc = $paramDesc; }

public function getDesc(){ return $this->desc; }

//marca_cod

public function setMarcaCod($paramMarcaCod){ $this->marca_cod = $paramMarcaCod; }

public function getMarcaCod(){ return $this->marca_cod; } }

?>

Classe Regra de Negcio: class.modeloRN.php <?php // inclusoo do arquivo de classe Modelo require_once(class.modelo.php);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 138 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

139

//inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);

class ModeloRN{

//retorna uma lista de objetos modelo public static function getListaObjeto($paramCondicao = , $paramOrderBy = mod_desc){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc, marca_cod; $condicao = $paramCondicao;

//pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela,

$campos, $condicao, $paramOrderBy);

//gera a lista de objetos $lista = self::geraArrayObjeto($resultado);

//destroi objeto unset($acessoBanco);

return $lista;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 139 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

140

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){

$i = 0; $modelos = array();

foreach ($paramLista as $indiceArray => $array) {

//instancia o objeto $modelo = new modelo(); $modelo->setCod($array[mod_cod]); $modelo->setDesc($array[mod_desc]); $modelo->setMarcaCod($array[marca_cod]);

$modelos[$i] = $modelo; $i++;

return $modelos;

//retorna um objeto public static function getObjeto($paramCod){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = modelos;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 140 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

141

$campos = mod_cod, mod_desc,marca_cod; $condicao = mod_cod = . $paramCod;

//pega a lista de registros Categoria $resultado $campos, $condicao); = $acessoBanco->selectRegistro($tabela,

$modelo = ;

//verica se retornou um resultado if(sizeof($resultado)>0){ $modelo = new modelo(); $modelo->setCod($resultado[0][mod_cod]); $modelo->setDesc($resultado[0][mod_desc]); $modelo->setMarcaCod($resultado[0][marca_ cod]); }

//destroi objeto unset($acessoBanco);

return $modelo;

public static function alterObjeto(&$Objeto){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 141 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

142

$tabela = modelos; $campos = mod_desc = . $Objeto->getDesc() . .; $campos = marca_cod = . $Objeto->getMarcaCod() . ; $condicao = mod_cod = . $Objeto->getCod();

//altera o Banco de Dados $resultado $campos, $condicao); = $acessoBanco->updateRegistro($tabela,

//destroi objeto unset($acessoBanco);

//altera o objeto public static function addObjeto(&$Objeto){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc,marca_cod; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . , . $Objeto->getMarcaCod() . ;

//altera o Banco de Dados $resultado $campos, $valor); = $acessoBanco->insertRegistro($tabela,

//destroi objeto

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 142 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

143

unset($acessoBanco);

//deleta o objeto public static function delObjeto(&$Objeto){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = modelos; $condicao = mod_cod = . $Objeto->getCod();

//altera o Banco de Dados $resultado $condicao); = $acessoBanco->deleteRegistro($tabela,

//destroi objeto unset($acessoBanco);

?>

Classe Bean: class.automovel.php <?php

class Automovel{

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 143 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

144

//atributos private $placa; private $mod_cod; private $ano; private $preco; private $cor; private $combustivel; private $km; private $arcondicionado; private $vidroeletrico; private $vidroverde; private $airbag; private $travaeletrica; private $alarme; private $desembacador; private $rodaliga; private $volantehidraulico; private $arquente; private $abs; private $cambioaut; private $cdplayer; private $isulm; private $limpadortraseiro; private $outros; private $vendido;

//mtodo construtor da classe public function Automovel(){ $this->placa = ; $this->mod_cod = 0; $this->ano = 0; $this->preco = 0;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 144 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

145

$this->cor = ; $this->combustivel = ; $this->km = 0; $this->arcondicionado = 0; $this->vidroeletrico = 0; $this->vidroverde = 0; $this->airbag = 0; $this->travaeletrica = 0; $this->alarme = 0; $this->desembacador = 0; $this->rodaliga = 0; $this->volantehidraulico = 0; $this->arquente = 0; $this->abs = 0; $this->cambioaut = 0; $this->cdplayer = 0; $this->isulm = 0; $this->limpadortraseiro = 0; $this->outros = 0; $this->vendido = 0; }

//mtodos da classe

//placa public function setPlaca($paramPlaca){ $this->placa = $paramPlaca; }

public function getPlaca(){ return $this->placa; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 145 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

146

//mod_cod public function setModCod($paramModCod){ $this->mod_cod = $paramModCod; }

public function getModCod(){ return $this->mod_cod; }

//ano public function setAno($paramAno){ $this->ano = $paramAno; }

public function getAno(){ return $this->ano; }

//preco public function setPreco($paramPreco){ $this->preco = $paramPreco; }

public function getPreco(){ return $this->preco; }

//cor public function setCor($paramCor){ $this->cor = $paramCor;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 146 27/8/2007 13:22:25

Programao de Pgina WEB - PHP

147

public function getCor(){ return $this->cor; }

//combustivel public function setCombustivel($paramCombustivel){ $this->combustivel = $paramCombustivel; }

public function getCombustivel(){ return $this->combustivel; }

//km public function setKm($paramKm){ $this->km = $paramKm; }

public function getKm(){ return $this->km; }

//arcondicionado public function setArCondicionado($paramArCondicionado){ $this->arcondicionado = $paramArCondicionado; }

public function getArCondicionado(){ return $this->arcondicionado; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 147 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

148

//vidroeletrico public function setVidroEletrico($paramVidroEletrico){ $this->vidroeletrico = $paramVidroEletrico; }

public function getVidroEletrico(){ return $this->vidroeletrico; }

//vidroverde public function setVidroVerde($paramVidroVerde){ $this->vidroverde = $paramVidroVerde; }

public function getVidroVerde(){ return $this->vidroverde; }

//airbag public function setAirBag($paramAirBag){ $this->airbag = $paramAirBag; }

public function getAirBag(){ return $this->airbag; }

//travaeletrica public function setTravaEletrica($paramTravaEletrica){ $this->travaeletrica = $paramTravaEletrica; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 148 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

149

public function getTravaEletrica(){ return $this->travaeletrica; }

//alarme public function setAlarme($paramAlarme){ $this->alarme = $paramAlarme; }

public function getAlarme(){ return $this->alarme; }

//desembacador public function setDesembacador($paramDesembacador){ $this->desembacador = $paramDesembacador; }

public function getDesembacador(){ return $this->desembacador; }

//rodaliga public function setRodaLiga($paramRodaLiga){ $this->rodaliga = $paramRodaLiga; }

public function getRodaLiga(){ return $this->rodaliga; }

//volantehidraulico

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 149 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

150

public function setVolanteHidraulico($paramVolanteHidrauli co){ $this->volantehidraulico = $paramVolanteHidraulico; }

public function getVolanteHidraulico(){ return $this->volantehidraulico; }

//arquente public function setArQuente($paramArQuente){ $this->arquente = $paramArQuente; }

public function getArQuente(){ return $this->arquente; }

//abs public function setAbs($paramAbs){ $this->abs = $paramAbs; }

public function getAbs(){ return $this->abs; }

//cambioaut public function setCambioAut($paramCambioAut){ $this->cambioaut = $paramCambioAut; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 150 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

151

public function getCambioAut(){ return $this->cambioaut; }

//cdplayer public function setCdPlayer($paramCdPlayer){ $this->cdplayer = $paramCdPlayer; }

public function getCdPlayer(){ return $this->cdplayer; }

//isulm public function setIsulm($paramIsulm){ $this->isulm = $paramIsulm; }

public function getIsulm(){ return $this->isulm; }

//limpadortraseiro public function setLimpadorTraseiro($paramLimpadorTraseiro ){ $this->limpadortraseiro = $paramLimpadorTraseiro; }

public function getLimpadorTraseiro(){ return $this->limpadortraseiro; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 151 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

152

//outros public function setOutros($paramOutros){ $this->outros = $paramOutros; }

public function getOutros(){ return $this->outros; }

//vendido public function setVendido($paramVendido){ $this->vendido = $paramVendido; }

public function getVendido(){ return $this->vendido; } }

?>

Classe Regra de Negcio: class.automovelRN.php

<?php // inclusoo do arquivo de classe Automovel require_once(class.automovel.php); //inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);

class AutomovelRN{

//retorna uma lista de objetos automovel

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 152 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

153

public static function getListaObjeto($paramCondicao = , $paramOrderBy = aut_placa){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = automoveis; $campos = aut_placa,mod_cod,aut_ano,aut_preco,aut_

cor,aut_combustivel,aut_km,aut_arcondicionado,; $campos .= aut_vidroeletrico,aut_vidroverde,aut_

airbag,aut_travaeletrica,aut_alarme,aut_desembacador,; $campos .= aut_rodaliga,aut_volantehidraulico,aut_

arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isulm,; $campos .= aut_limpadortraseiro,aut_outros,aut_vendido; $condicao = $paramCondicao;

//pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela,

$campos, $condicao, $paramOrderBy);

//gera a lista de objetos $lista = self::geraArrayObjeto($resultado);

//destroi objeto unset($acessoBanco);

return $lista;

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 153 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

154

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){

$i = 0; $automovels = array();

foreach ($paramLista as $indiceArray => $array) {

//instancia o objeto $automovel = new automovel(); $automovel->setPlaca($array[aut_placa]); $automovel->setModCod($array[mod_cod]); $automovel->setAno($array[aut_ano]); $automovel->setPreco($array[aut_preco]); $automovel->setCor($array[aut_cor]); $automovel->setCombustivel($array[aut_combustivel]); $automovel->setKm($array[aut_km]); $automovel->setArCondicionado($array[aut_ar condicionado]); $automovel->setVidroEletrico($array[aut_vidroeletrico]); $automovel->setVidroVerde($array[aut_vidrov erde]); $automovel->setAirBag($array[aut_airbag]); $automovel->setTravaEletrica($array[aut_tra vaeletrica]); $automovel->setAlarme($array[aut_alarme]); $automovel>setDesembacador($array[aut_desembacador]); $automovel->setRodaLiga($array[aut_rodaliga]);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 154 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

155

$automovel->setVolanteHidraulico($array[aut_ volantehidraulico]); $automovel->setArQuente($array[aut_arquente]); $automovel->setAbs($array[aut_abs]); $automovel->setCambioAut($array[aut_cambio aut]); $automovel->setCdPlayer($array[aut_cdplayer]); $automovel->setIsulm($array[aut_isulm]); $automovel->setLimpadorTraseiro($array[aut_ limpadortraseiro]); $automovel->setOutros($array[aut_outros]); $automovel->setVendido($array[aut_vendido]); $automovels[$i] = $automovel; $i++;

return $automovels;

//retorna um objeto public static function getObjeto($paramCod){

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco();

//seta os valores para passar por parmetro $tabela = automoveis; $campos

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 155 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

156

aut_placa,mod_cod,aut_ano,aut_preco,aut_cor,aut_ combustivel,aut_km,aut_arcondicionado,; $campos .= aut_vidroeletrico,aut_vidroverde,aut_

airbag,aut_travaeletrica,aut_alarme,aut_desembacador,; $campos .= aut_rodaliga,aut_volantehidraulico,aut_

arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isulm,; $campos .= aut_limpadortraseiro,aut_outros,aut_vendido; $condicao = aut_placa = . $paramCod;

//pega a lista de registros Categoria $resultado $campos, $condicao); = $acessoBanco->selectRegistro($tabela,

$automovel = ;

//verica se retornou um resultado

if(sizeof($resultado)>0){ $automovel = new automovel(); $automovel->setPlaca($resultado[0][aut_ placa]); $automovel->setModCod($resultado[0][mod_cod]); $automovel->setAno($resultado[0][aut_ano]); $automovel->setPreco($resultado[0][aut_ preco]); $automovel->setCor($resultado[0][aut_cor]); $automovel>setCombustivel($resultado[0][aut_combustivel]); $automovel->setKm($resultado[0][aut_km]); $automovel>setArCondicionado($resultado[0][aut_arcondicionado]);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 156 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

157

$automovel->setVidroEletrico($resultado[0][aut _vidroeletrico]); $automovel->setVidroVerde($resultado[0][aut_ vidroverde]); $automovel->setAirBag($resultado[0][aut_air bag]); $automovel->setTravaEletrica($resultado[0][aut _travaeletrica]); $automovel->setAlarme($resultado[0][aut_ alarme]); $automovel->setDesembacador($resultado[0][aut_ desembacador]); $automovel->setRodaLiga($resultado[0][aut_rodaliga]); $automovel->setVolanteHidraulico($resultado[0][ aut_volantehidraulico]); $automovel->setArQuente($resultado[0][aut_arquente]); $automovel->setAbs($resultado[0][aut_abs]); $automovel->setCambioAut($resultado[0][aut_ cambioaut]); $automovel->setCdPlayer($resultado[0][aut_cdplayer]); $automovel->setIsulm($resultado[0][aut_isu lm]); $automovel->setLimpadorTraseiro($resultado[0][aut_limpadortraseiro]); $automovel->setOutros($resultado[0][aut_out ros]); $automovel->setVendido($resultado[0][aut_vendido]); }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 157 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

158

//destroi objeto unset($acessoBanco);

return $automovel;

?>

4 DESENVOLVENDO A INTERFACE COM O USURIO

Criadas as classes Bean e Regra de Negcio, podemos desenvolver as pginas PHP que possuiro a interface da aplicao com o usurio. Essas pginas utilizaro as classes Bean e Regra de Negcio para trabalhar com os objetos dentro da aplicao. Desenvolveremos quatro pginas de interface: 1. index.php pgina principal da aplicao que permitir ao usurio selecionar uma Marca, um Modelo relacionado Marca selecionada e vericar a lista de carros relacionadas ao Modelo para consulta. 2. admin/marca_lst.php pgina da administrao que permitir ao administrador da aplicao visualizar todos os registros armazenados na tabela: Marcas do banco de dados. 3. admin/marca_frm.php pgina com o formulrio que permitir o cadastro e alterao dos registros da tabela: Marcas. 4. admin/marca_action.php pgina que ir alterar os dados do objeto de acordo com a ao feita no formulrio: cadastro, alterao ou remoo e chamar a classe Regra de Negcio para efetivar a alterao dos dados do objeto no banco de dados.

Seguem os cdigos-fonte de cada pgina:

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 158 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

159

Pgina: index.php <html> <head> <title>Revenda de Automveis</title> <meta http-equiv=Content-Type content=text/html; charset=iso8859-1> </head>

<body> <? //inclui as classes require_once(classes/class.marcaRN.php); require_once(classes/class.modeloRN.php); require_once(classes/class.automovelRN.php); ?> <form name=form1 method=post> <table width=100% border=0 cellpadding=0 cellspacing=0> <tr> <td width=20% valign=top> <!-- seleo de marcas e modelos --> Marcas: <select form1.submit();> <option tion> <? $marca_cod=0; if(isset($_POST[marca_cod])){ $marca_cod = $_POST[marca_cod]; } value=0>Selecione a Marca</opname=marca_cod onChange=document.

$lista = MarcaRN::getListaObjeto(,);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 159 27/8/2007 13:22:26

Programao de Pgina WEB - PHP

160

foreach($lista as $oMarca){ ?> <option value=<?=$oMarca->getCod()?> <? ($marca_cod==$oMarca->getCod())?print selected:print ; ?> ><?=$oMarca->getDesc()?></option> <? } ?> </select> <br><br> Modelos: <select name=mod_cod onChange=document.form1. submit();> <option value=0>Selecione o Modelo</option> <? $condicao = ; if(isset($_POST[marca_cod])){ $condicao POST[marca_cod]; } = marca_cod = . $_

$mod_cod=0; if(isset($_POST[mod_cod])){ $mod_cod = $_POST[mod_cod]; }

print $condicao . <br>;

$lista = ModeloRN::getListaObjeto($condicao ,); foreach($lista as $oModelo){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 160 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

161

?> <option Cod()?> <? value=<?=$oModelo->getselected:

($mod_cod==$oModelo->getCod())?print

print ; ?> ><?=$oModelo->getDesc()?></option> <? } ?> </select> </td> <td width=5%>&nbsp;</td> <td> <!-- lista de automtveis --> <table width=100% align=center border=1

bordercolor=#000000 cellpadding=3 cellspacing=0> <tr bgcolor=#EAEAEA> <td>Placa</td> <td>Ano</td> <td>Preco</td> </tr> <? $condicao = mod_cod = . $mod_cod; $lista = AutomovelRN::getListaObjeto($condi cao,); foreach($lista as $oAutomovel){ ?> <tr> <td><?=$oAutomovel->getPlaca()?></td> <td><?=$oAutomovel->getAno()?></td> <td><?=$oAutomovel->getPreco()?></td> </tr> <?

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 161 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

162

}//foreach ?> </table> </td> </tr> </table> </form> </body> </html>

Pgina: admin/marca_lst.php <? /* Indica que o arquivo no deve car em cache (fora o seu reprocessamento) */

require_once(classes/class.marcaRN.php);

?> <input name=btnNovo type=button value=Nova Marca

onClick=location.href=marca_frm.php /><br><br> <table width=100% align=center border=1 bordercolor=#000000 cellpadding=3 cellspacing=0> <tr bgcolor=#EAEAEA> <td>Cdigo</td> <td>Descrio</td> <td>&nbsp;</td> </tr> <?

$lista = MarcaRN::getListaObjeto(,);

foreach($lista as $oMarca){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 162 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

163

?> <tr> <td><?=$oMarca->getCod()?></td> <td><?=$oMarca->getDesc()?></td> <td><input name=btnAlterar type=button value=Alterar onClick=location.href=marca_frm.

php?cod=<?=$oMarca->getCod()?> /></td> </tr> <? }//foreach ?> </table> <? //Libera objetos unset($lista); ?>

Pgina: admin/marca_frm.php <? require_once(classes/class.marcaRN.php);

// verica se cadastro ou alterao if (isset($_GET[cod])){ // alterao $cod = $_GET[cod]; $oMarca = MarcaRN::getObjeto($cod); } else { // cadastro $cod = 0; $oMarca = new Marca(); }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 163 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

164

$desc = $oMarca->getDesc();

//Libera objetos unset($oMarca);

?> <form method=post name=frm action=marca_action.php> <table width=95% align=center border=0 cellpadding=0 cellspacing=0> <tr> <td width=30% align=right>Cdigo: &nbsp;</ td> <td><input name=cod type=text size=10

maxlength=5 value=<?=$cod?> /></td> </tr> <tr> <td width=30% align=right>Descrio: &nbsp;</ td> <td><input name=desc type=text size=40

maxlength=100 value=<?=$desc?> /></td> </tr> <tr> <td width=30% align=right>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td width=30%>&nbsp;</td> <td> <input name=btnSalvar type=Submit value=Salvar> <input name=btnCancelar type=button

value=Cancelar onClick=location.href=marca_lst.php> <? if($cod > 0) { ?>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 164 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

165

<input name=btnApagar type=Submit value=Apagar /> <? } ?> </td> </tr> </table> </form>

Pgina: admin/marca_action.php <? require_once(classes/class.marcaRN.php);

//Carrega ou cria objeto if (isset($_POST[cod])){ $cod = $_POST[cod]; $oMarca = MarcaRN::getObjeto($cod); }

//variavel booleana que ir vericar se um novo registro $ehNovoRegistro = false;

//caso no exista o objeto cria um novo objeto pois um novo registro if(empty($oMarca)){ $oMarca = new Marca(); $ehNovoRegistro = true; } //Verica se foi clicado no boto apagar if ((isset($_POST[btnApagar])) && ($_POST[btnApagar] ==

Apagar)){ if ($cod > 0){ MarcaRN::delObjeto($oMarca);

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 165 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

166

} }else{ $oMarca->setCod($_POST[cod]); $oMarca->setDesc($_POST[desc]);

if ($ehNovoRegistro){ // adiciona o registro MarcaRN::addObjeto($oMarca); } else { //altera o registro MarcaRN::alterObjeto($oMarca); } } unset($oMarca);

header(location:marca_lst.php) ?>

Para testar as pginas da aplicao, necessrio incluir alguns registros nas tabelas: Marcas, Modelos e Automveis no banco de dados. Os registros da tabela: Marcas podero ser inseridos por meio das telas da administrao. A partir de agora, voc poder dar continuidade ao desenvolvimento da aplicao. Para isso, basta criar as classes Bean e Regra de Negcio para as tabelas que faltam. Alm disso, voc poder melhorar a administrao da aplicao, incluindo uma tela de autenticao para os funcionrios da revenda. Se voc tiver dvidas de como desenvolver esse recurso, retorne ao captulo 8 do livro-texto e verique o exemplo que desenvolvemos. Ainda na administrao podero ser desenvolvidas as telas de manuteno das outras tabelas do banco de dados, isso dar bastante exibilidade para os mantenedores da aplicao.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 166 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

167

Sntese

Nesta aula estudamos os passos para o desenvolvimento de uma aplicao para Internet, utilizando PHP e banco de dados MySQL.

CONCLUSO

Atualmente, quase impossvel que uma empresa no possua uma arquitetura cliente-servidor e sistemas disponveis para acesso por meio de um navegador de Internet. Esse fato tem se tornado cada vez mais constante, pois manter as aplicaes agrupadas em um local torna-se mais rentvel para as empresas, que economizaro tempo e recursos com manuteno em aplicaes instaladas em diversas mquinas. Isso sem contar os custos com licenas que os sistemas desktop podem acrescentar ao oramento das empresas. Tambm fato que as aplicaes disponveis na Internet tm evoludo muito e em grande escala. As empresas que fornecem aplicaes e softwares diversos possuem cada vez mais demanda para o prossional que est atualizado com este tipo de tecnologia. Portanto, imprescindvel que os prossionais de informtica, tenham conhecimento bsico da programao para a Internet. Este conhecimento ir possibilitar ao prossional desenvolver aplicaes dinmicas e interativas e disponibiliz-las na Internet. Assim, esse mdulo teve como objetivo principal introduzir os conhecimentos bsicos sobre programao de aplicaes para a Internet, utilizando a linguagem PHP.

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 167 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

168

Respostas dos Exerccios

Aula 1 1) C 2) D 3) C 4) D 5) A, C

Aula 2 1) C 2) A 3) B 4) A,C 5) B,D

Aula 3 1) C 2) D 3) C 4) C 5) B

Aula 4 1) A,B,C 2) C 3) A 4) C 5) C

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 168 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

169

Aula 5 1) A,C,D 2) C 3) B 4) A,C 5) C,D

Aula 6 1) A,C,D 2) B 3) B 4) C 5) A,B,C

Aula 7 1) B 2) D 3) class.operacao.php <? // declara a classe // o objeto que for criado por meio desta classe assumir a visibilidade e nome // da classe class Operacao{

//declara um atributo private $resultado = 0; // declara o mtodo adio // o mtodo recebe dois nmeros para executar o clculo e // retornar o resultado

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 169 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

170

Public function adicao($numero1, $numero2){ $this->resultado = $numero1 + $numero2; return $this->resultado; }

// declara o mtodo subtrao Public function subtracao($numero1, $numero2){ $this->resultado = $numero1 - $numero2; return $this->resultado; }

// declara o mtodo multiplicao Public function multiplicacao($numero1, $numero2){ $this->resultado = $numero1 * $numero2; return $this->resultado; }

// declara o mtodo diviso Public function divisao($numero1, $numero2){ // faz o tramento para no permitir diviso por zero if($numero2>0){ $this->resultado = $numero1 / $numero2; } return $this->resultado; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 170 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

171

} ?>

exemplo29.php

<HTML> <HEAD> <TITLE>Exemplo 29</TITLE> </HEAD> <BODY> <!-Este um comentrio em HTML! Quando queremos que o formulrio envie as variveis para a mesma pgina, no especicamos o atributo: action do comando form --> <form name=form1 method=post>

Nmero 1: <input type=text name=numero1><br> Nmero 2: <input type=text name=numero2><br> <input type=submit name=btnEnviar value=Calcular Soma> </form>

<? //verica se existe a varivel de navegador numero1 if(isset($_POST[numero1])){

//cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2];

//verica se as variveis possuem valor diferente de vazio if(!empty($num1) && !empty($num2)){

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 171 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

172

//inclui o arquivo que possui a estrutura da classe para permitir a criao //do objeto require_once(class.operacao.php);

//cria o objeto $objOperacao = new Operacao();

// a partir de agora a varivel: $objOperacao um objeto que possui a estrutura // da classe operao // vamos ento chamar o mtodo adicao e obter o resultado da soma e mostrar // na tela print $objOperacao->adicao($num1,$num2) . <br>;

// como j no precisamos do objeto: $objOperacao, vamos destru-lo unset($objOperacao); } } ?> </BODY> </HTML>

Aula 8 1) C 2) D 3) D 4) D 5) B

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 172 27/8/2007 13:22:27

Programao de Pgina WEB - PHP

173

Aula 9 1) <HTML> <HEAD> <TITLE>Exemplo 33</TITLE> </HEAD> <BODY> <? //conecta com o banco de dados MySQL $conexao = mysql_connect(localhost, root, vertrigo);

//seleciona o banco de dados revenda mysql_db_query(revenda,$conexao);

//apaga todos os registros da tabela marcas mysql_query(DELETE FROM marcas);

//insere os registros na tabela marcas: mysql_query(INSERT INTO marcas VALUES(1,Citroen)); mysql_query(INSERT INTO marcas VALUES(2,Audi)); mysql_query(INSERT INTO marcas VALUES(3,Renault));

//seleciona e mostra os registros $consulta = SELECT marca_cod, marca_desc FROM marcas; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Cdigo: . $linha[0] . <BR>; print Descrio: . $linha[1] . <BR><BR>; }

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 173 27/8/2007 13:22:28

Programao de Pgina WEB - PHP

174

print Alterao de Registro<br><br>;

//altera o registro 3 da tabela mysql_query(UPDATE marcas SET marca_desc = Pegeout WHERE marca_cod = 3);

print Mostra os registros novamente<br><br>;

//seleciona e mostra os registros $consulta = SELECT marca_cod, marca_desc FROM marcas; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Cdigo: . $linha[0] . <BR>; print Descrio: . $linha[1] . <BR><BR>; }

?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 174 27/8/2007 13:22:28

Programao de Pgina WEB - PHP

175

REFERNCIAS BIBLIOGRFICAS

1. CONVERSE, Tim; PARK, Joyce. PHP A Bblia. So Paulo: Campus / Elsevier, 2003.

2. WIKIPDIA, a enciclopdia livre. Artigos Eletrnicos. Disponvel em: http:// pt.wikipedia.org/

3. Internet World Stats. Disponvel em: http://www.internetworldstats.com/

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 175 27/8/2007 13:22:28

Programao de Pgina WEB - PHP

176

Copyright Tupy Virtual 2007 Nenhuma parte desta publicao pode ser reproduzida por qualquer meio sem a prvia autorizao desta instituio. Autor: Rosemary Francisco Programao de Pgia WEB - PHP: Material didtico / Rosemary Francisco Design institucional: Thiago Vedoi de Lima; Cristiane de Oliveira - Joinville: Tupy Virtual, 2007 Ficha catalogrca elaborada pela Biblioteca Universitria Tupy Virtual

Crditos
SOCIESC Sociedade Educacional de Santa Catarina Tupy Virtual Ensino a Distncia Rua Albano Schmidt, 3333 Joinville SC 89206-001 Fone: (47)3461-0166 E-mail: ead@sociesc.org.br Site: www.sociesc.org.br/portalead Diretor Geral Sandro Murilo Santos Diretor de Administrao Vicente Otvio Martins de Resende Diretor de Ensino, Pesquisa e Extenso Roque Antonio Mattei Diretor do Instituto Superior Tupy Wesley Masterson Belo de Abreu Diretor da Escola Tcnica Tupy Luiz Fernando Bublitz Coordenador da Escola Tcnica Tupy Alexssandro Fossile Alan Marcos Blenke Coordenador do Curso Juliano Prim Coordenador de Projetos Jos Luiz Schmitt Revisora Pedaggica Ndia Ftima de Oliveira Equipe Didtico-Pedagcia Rosemary Francisco Design Grco Thiago Vedoi de Lima

EDIO MATERIAL DIDTICO Professor Conteudista Rosemary Francisco Design Institucional Thiago Vedoi de Lima Cristiane Oliveira Ilustrao Capa Thiago Vedoi de Lima Projeto Grco Equipe Tupy Virtual Reviso Ortogrca Ndia Ftima de Oliveira

EQUIPE TUPY VIRTUAL Raimundo Nonato Gonalves Robert Wilson Jos Mafra Thiago Vedoi de Lima Cristiane Oliveira

SOCIESC - Sociedade Educacional de Santa Catarina


Programao de Pgina WEB.indd 176 27/8/2007 13:22:28

You might also like