Vous êtes sur la page 1sur 117

Aplicativos para WEB II

William Geraldo Sallum

Planejamento e Gesto em Tecnologia da Informao

Centro Federal de Educao Tecnologia de Minas Gerais CEFET/MG Belo Horizonte - MG 2012

Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de linguagem e facilitar a organizao e a leitura hipertextual. Ateno: indica pontos de maior relevncia no texto. Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao tema estudado. Glossrio: indica a definio de um termo, palavra ou expresso utilizada no texto. Mdias Integradas: sempre que se desejar que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos, filmes, jornais, ambiente AVEA e outras. Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa realiz-las e conferir o seu domnio do tema estudado.

Sumrio

Palavra do professor-autor ............................................................................................ 6 Prezados estudantes........................................................................................................ 6 Apresentao da disciplina ............................................................................................ 7 Objetivos gerais .............................................................................................................. 7 Objetivos especficos....................................................................................................... 7 Contedo programtico ................................................................................................. 7 Projeto instrucional ........................................................................................................ 9 1.Aula 1 Servidor Web: preparando para utilizar o PHP ..................................... 11
1.1 Introduo ............................................................................................................................. 11 1.2 Instalando o Servidor Web e servios ................................................................................... 12 1.2.1 Onde e como conseguir o pacote WampServer?............................................................... 12 1.2.2 como instalar o pacote WampSever? ................................................................................ 13 1.2.3 como instalar um servidor num drive removvel (USB)? ................................................. 20 1.2.4 testando as funcionalidades do pacote WampServber..................................................... 21

2.Aula 2 PHP Conceitos I........................................................................................ 25


2.1 Introduzindo a linguagem PHP ...................................................................................... 25 2.1.1Conceitos............................................................................................................................. 25 2.1.2histria e evoluo da linguagem PHP................................................................................ 26 2.1.3mas o que eu preciso para rodar o PHP? ............................................................................. 28 2.2 Introduzindo a linguagem PHP ...................................................................................... 28 2.2.1declarando PHP................................................................................................................... 28 2.2.2o primeiro Script PHP ......................................................................................................... 29 2.2.3testando seu Script PHP ...................................................................................................... 29 2.3 2.4 2.5 2.6 2.7 Comentrios em PHP ..................................................................................................... 30 PHP: variveis................................................................................................................ 31 PHP uma linguagem fracamente tipada ...................................................................... 31 Regras de denominao para as variveis ...................................................................... 32 operadores de PHP ......................................................................................................... 32

2.7.1operadores Aritmticos ....................................................................................................... 32 Fonte: Elaborada pelo autor. ....................................................................................................... 33 2.7.2operadores de Atribuio .................................................................................................... 33

Fonte: Elaborada pelo autor ........................................................................................................ 33 2.7.3operadores de Comparao ................................................................................................. 33 Fonte: Elaborada pelo autor. ....................................................................................................... 33 2.7.4operadores Lgicos ............................................................................................................. 33 Fonte: Elaborada pelo autor. ....................................................................................................... 34

3.Aula 3 PHP: conceitos II ........................................................................................ 37


3.1 PHP: variveis String ............................................................................................................ 37 3.1.1 o operador de concatenao ............................................................................................... 37 3.1.2 a funo strlen()................................................................................................................. 38 3.1.3 a funo strpos() ................................................................................................................. 38 3.1.4 PHP: relao das funes String ....................................................................................... 39

4.Aula 4 PHP: conceitos III ...................................................................................... 48


4.1 PHP: funes matemticas .................................................................................................... 48 4.2 PHP: array ............................................................................................................................ 53 4.2.1 PHP: arrays numricos ....................................................................................................... 54 4.2.2 PHP: arrays associativos ................................................................................................... 55 4.2.3 PHP: arrays multidimensionais .......................................................................................... 56

5.Aula 5 PHP: conceitos IV....................................................................................... 64


5.1 PHP: funes de Data e Hora................................................................................................ 64 5.2. PHP: estrutura condicional if ... else .................................................................................... 68 5.2.1 PHP: a estrutura if .............................................................................................................. 69 5.2.2 PHP: a declarao if ... else................................................................................................ 70 5.2.3 PHP: a instruo elseif ... ................................................................................................... 71 5.2.4 PHP: utilizando operador tercirio como estrutura de deciso .......................................... 72 5.3 PHP: instruo switch ........................................................................................................... 73

6.Aula 6 PHP: conceitos V ........................................................................................ 76


6.1 PHP: estrutura de repetio............................................................................................ 76 6.1.1 PHP: o lao while............................................................................................................... 76 6.1.2 PHP: lao do ... while ......................................................................................................... 77 6.1.3 PHP: Looping for .............................................................................................................. 78 6.1.4PHP: lao foreach................................................................................................................ 79 6.2 PHP: funes.................................................................................................................. 80 6.2.1 PHP: funes internas ........................................................................................................ 81 6.2.2 PHP: criao de funes.................................................................................................... 81 6.2.3 PHP: funes - Adicionando parmetros ........................................................................... 82

6.3 PHP: incluindo arquivos - Server Side Includes (SSI)........................................................ 83 6.3.1 PHP: a funo include() ..................................................................................................... 84 6.3.2 PHP: a funo require()...................................................................................................... 85

7.Aula 7 PHP: conceitos VI....................................................................................... 88


7.1 PHP: manipulao de formulrios......................................................................................... 88 7.1.1 PHP: validao de Formulrio ........................................................................................... 89 7.1.2 PHP: a funo $ _GET ....................................................................................................... 89 7.1.3 PHP: quando usar method = "get"?.................................................................................... 90 7.1.4 PHP: a funo $ _POST ..................................................................................................... 91 7.1.5 PHP: quando usar method = "post"?.................................................................................. 91 7.2 PHP: upload de arquivos ....................................................................................................... 92 7.2.1 PHP: como criar o script que dever receber o up-load do arquivo................................... 93 7.2.2 PHP: restries em upload ................................................................................................. 94 7.2.3 PHP: gravando o arquivo transferido ................................................................................. 95

8.Aula 8 PHP: conceitos VII ..................................................................................... 98


8.1 PHP: conexo de Banco de Dados com PHP ........................................................................ 98 8.1.1 PHP: como seria uma tabela de Banco de Dados?............................................................. 98 8.1.2 PHP: como criar uma conexo com um Banco de Dados MySQL................................... 99 8.1.3 PHP: finalizando uma conexo ........................................................................................ 100 8.1.4 PHP: inserindo dados no MySQL .................................................................................... 100 Fonte: Elaborada pelo autor. ..................................................................................................... 102 8.1.5 PHP: Inserindo dados de formulrio em um BD.............................................................. 102 8.1.6 PHP: selecionando dados em um BD............................................................................... 103 Fonte: Elaborada pelo autor. ..................................................................................................... 104 8.1.7 PHP: utilizando tabela HTML para receber os resultados da pesquisa............................ 104 Fonte: Elaborada pelo autor. ..................................................................................................... 105 8.1.8 PHP: utilizando a clusula WHERE ................................................................................ 105 Fonte: Elaborada pelo autor. ..................................................................................................... 106 8.1.9 PHP: ordenando registros pela palavra chave .................................................................. 106 Fonte: Elaborada pelo autor. ..................................................................................................... 107 8.1.20 PHP: alterando os dados de uma tabela.......................................................................... 108 Fonte: Elaborada pelo autor. ..................................................................................................... 109 8.1.21 PHP: como excluir dados em um banco de dados.......................................................... 109 Fonte: Elaborada pelo autor. ..................................................................................................... 110 8.1.22 PHP: configurando o MySQL para execuo no PHP ................................................... 110

Fonte: Elaborada pelo autor. ..................................................................................................... 110 Fonte: Elaborada pelo autor. ..................................................................................................... 113 Fonte: Elaborada pelo autor. ..................................................................................................... 113

Referncias .................................................................................................................. 115

Palavra do professor-autor

Prezado estudante! Praticamente todos os sistemas informacionais desenvolvidos hoje em dia tratam de dados e/ou informaes utilizando algum tipo de tecnologia ligada a internet. As informaes produzidas ou tratadas podem ser transmitidas de um lugar a outro ou simplesmente manipuladas localmente. Mesmo para as informaes manipuladas localmente, o uso de recursos tais como linguagens de programao e aplicativos de desenvolvimento esto ligados direto ou indiretamente a Web. Isto tem indicado o grau de relevncia que a rea de desenvolvimento para web vem acumulando dia a dia. A nossa disciplina - Aplicativos para WEB II ou AW2, possui a caracterstica de ser bem aceita e bem assimilada pelos nossos alunos, pois trabalha diretamente com tecnologia de vanguarda na comunicao, utilizada em todo o mundo: a internet. Esta disciplina, assim como as demais deste curso, visa fornecer informaes para que voc possa desenvolver e manter programas ou aplicativos, para a internet, capazes de interagir com o usurio em qualquer parte do mundo. Assim, espero que aproveite todas as aulas e lembre-se: acompanhar integralmente as aulas e praticar efetivamente os exerccios imprescindvel para sedimentar as informaes obtidas no seu banco de conhecimentos.

Um grande abrao!

William G. Sallum

Apresentao da disciplina
Aplicativos para Web II uma disciplina do curso de PGTI que se apresenta com um contedo bastante focado no desenvolvimento de interaes entre clientes e servidores. Esta disciplina contempla a parte de interao entre pginas locais, bando de dados e servidor remoto, proporcionando conhecimentos a cerca de sua criao, subsidiados pela utilizao dos seguintes conhecimentos tcnicos: Ambiente Web-server Conceitos, funcionalidades, elementos, infraestrutura, instalaes e configuraes do ambiente dos servidores Web. Linguagem PHP Linguagem que opera do lado dos servidores, com sintaxe semelhante a linguagem C e C++ e bastante rica em funes de manuteno, armazenamento e transmisso de dados.

Objetivos gerais Instrumentalizar o aluno com conceitos e habilidades tcnicas, metodologias para o desenvolvimento de aplicativos e construo de pginas avanadas para a Web.

Objetivos especficos Transmitir conhecimento acerca de desenvolvimento de pginas a partir de conceitos sobre a estrutura e a operacionalizao dos servidores Web; desenvolvimento de pginas utilizando a linguagem PHP com objetivos de transmisso de dados, manipulao e armazenamento de informao. Alm desses: ao final da disciplina, o aluno dever: dominar tecnologias para desenvolvimento de pginas Web dinmicas; planejar uma estrutura de servidor Web; estruturar e desenvolver um site, conciliando informao e design; executar estudos de casos usando esses conceitos; integrao PHP com MySQL. Contedo programtico Sero abordados sobre conceitos de servidores web; os conceitos da linguagem PHP, sua sintaxe, variveis, operadores, estruturas de deciso e repetio, construo de funes, transferncia de dados entre pginas, bem como conexo com BDs e manipulaes de informaes em BDs Mtodo de avaliao. 7

A avaliao ser dividida entre a presencial, aplicada nos plos, e online, aplicada no ambiente Moodle. Os instrumentos de avaliao online consistiro na participao efetiva e construtiva nos fruns de discusso, alm de exerccios e trabalhos.
INSTRUMENTO DE AVALIAO VALOR

1. Avaliao Presencial 2. Avaliaes online


2.1. Frum 2.2 Chat 2.3. Exerccios e trabalhos 2.4. Extra (participao em pelo menos 1 vez em cada frum)

60 pontos 40 pontos
8 pontos 8 pontos 24 pontos 5 pontos

Projeto instrucional
Disciplina: Aplicativos para Web II (carga horria: 60). Ementa: Linguagem de programao para web-PHP. Banco de dados MySQL.

AULA

OBJETIVOS DE APRENDIZAGEM

MATERIAIS

CARGA HORRIA (horas)

1. Servidor Web: preparando para utilizar o PHP

Conhecer conceitos de servidores web e suas funcionalidades. Identificar a escolha e instalao do servidor web bem como agregados.

2. PHP: conceitos I

Conhecer a Linguagem PHP. Aprender a instalao e configurao da mquina PHP. Compreender a estrutura bsica da linguagem PHP e sua sintaxe. Compreender a utilizao de variveis.

3. PHP: conceitos II

Conhecer os operadores da linguagem e as funes Strings.

4. PHP: conceitos III

Conhecer as funes matemticas e matrizes.

sobre

5. PHP: conceitos IV

Conhecer as funes sobre datas. Compreender as estruturas condicionais if..else e switch...case. Entender as estruturas de repetio while e for.
Conhecer sobre a criao e manipulao de funes externas.

6. PHP: conceitos V

Editor de cdigo fonte; ambiente virtual: indicaes de instalaes; frum de discusso; chats, e glossrio. Editorao e visualizao de cdigo fonte; ambiente virtual: frum de discusso; chats, e glossrio. Editorao e visualizao de cdigo fonte; ambiente virtual: frum de discusso; chats, e glossrio. Editorao e visualizao de cdigo fonte; ambiente virtual: frum de discusso; chats, e glossrio. Editorao e visualizao de cdigo fonte; ambiente virtual: frum de discusso; chats, e glossrio. Editorao e visualizao de cdigo fonte; ambiente virtual:

Construir funes e entender seu frum de funcionamento. discusso; chats, Saber como incluir arquivos PHP dentro e glossrio. das pginas.

7. PHP: conceitos VI

Editorao e visualizao de Utilizar formulrios e os tipos de cdigo fonte; transferncias de dados entre pginas ambiente virtual: utilizando os Operadores $_GET e frum de $_POST. discusso; chats, e glossrio.
Compreender a conexo com banco de Editorao e dados. visualizao de Entender a manipulao e armazenamento cdigo fonte; de dados.

8. PHP: conceitos VII

Rever os conceitos trabalhados ao longo da disciplina e integrar todas as tecnologias e tcnicas para elaborao de pginas web completas.

ambiente virtual: frum de discusso; chats, e glossrio.


Total:

11

60

10

1. Aula 1 Servidor web: preparando para utilizar o PHP


Objetivos Conhecer conceitos de servidores web e suas funcionalidades. Identificar a escolha e instalao do servidor web bem como agregados

1.1 Introduo
A computao ou simplesmente a utilizao do computador pode ser restrita ao local residencial ou ao local de trabalho ou a escola. Mas a troca de informaes, seja buscando e/ou publicando, o processo mais inusitado desde o ultimo sculo; e tambm o processo mais trivial, quando visto sob a tica do usurio atual. Buscar ou publicar informaes implica diretamente no entendimento e na operao de estruturas do tipo cliente-servidor. Isto significa que, se de um lado tem-se um computador ou um sistema que necessita de servios (como, por exemplo, transferncia de um arquivo, ou de e-mail, ou simplesmente de uma pgina da internet), denominado de cliente, do outro deve existir um computador ou sistema que possa prover ou atender as necessidades de tais solicitaes; e a, o sistema situado desta outra ponta denominado de servidor. Em suma: quem necessita e solicita algum tipo de servio ou produto digital denominado cliente e aquele que fornece tais servios ou produtos denominado servidor. Entretanto, sob o ponto de vista tcnico, o funcionamento de um sistema clienteservidor exige a compreenso em anlise, instalao, operao e manuteno de todo um ambiente de prestao de servios virtuais atravs da internet, de forma mais acurada e sistemtica. O cerne de um ambiente como este - tambm denominado de gestor ou mquina web - o servidor web. Os servidores web so os principais fornecedores de contedo da internet e os dois mais famosos servidores web sendo executados pelo mundo afora so: o IIS Internet Information Server (Servidor de Informaes da Internet da Microsoft) e o Apache, inicialmente criado para plataformas Unix e depois estendido para Windows. Esta responsabilidade se divide, principalmente, entre dois servios: o Httpd do grupo Apache, tambm responsvel por aproximadamente 65% das mquinas 11

servidoras em todo o mundo, e o IIS da Microsoft, com cerca de 25% do mercado segundo sites especializados no assunto. O restante do mercado (10%) distribudo a outros servidores. O IIS um servidor proprietrio da Microsoft e o Apache um software livre regido pelas normas GPL, com suporte a uma grande variedade de sistemas operacionais, incluindo todas as verses do Windows, Linux, Unix e Mac OS X, alm de uma variedade de sistemas operacionais nonmainstream, como o BeOS e VMS. Neste sentido, nos ateremos, no curso, instalao e configurao do servidor Apache para ambiente Windows.

1.2 Instalando o servidor Web e servios


Basicamente precisaremos de trs componentes para a construo de um servidor web: o prprio servidor web, que nesse caso o escolhido aqui o Apache; uma linguagem de interface cliente-servidor que trabalhe do lado servidor que no caso o PHP e um banco de dados: o MySQL. Como a instalao ser em um ambiente Windows, opcionalmente podemos adotar duas posturas: ou instalar os sistemas (Apache, PHP e MySQL) separadamente, ou todos em UM, como o caso do pacote WampServer (que possui os aplicativos: Windows, Apache, MySQL e PHP), obtido gratuitamente pela Internet. <Glossrio: WampServer uma verso mais atualizada do pacote WAMP5.> 1.2.1 Onde e como conseguir o pacote WampServer? Os links abaixo fornecem duas opes para baixar o WAMP: WampServer 2.1e (verso 32 bits) e WampServer 2.1d (verso 64 bits). Voc deve escolher a verso que atenda a sua configurao de plataforma. A verso 32 bits possui 19,6 Mb de tamanho e a verso 64 bits, 24,9 Mb. O tempo de download depende diretamente do tipo e velocidade de sua conexo com a internet.

12

<Mdias Integradas: Para instalar o seu servidor <http://www.wampserver.com/en/download.php> <http://www.wampserver.com/en/#download-wrapper>

utilize

os

links: ou

<Ateno: Tais link fornecem opo de instalao para a plataforma Linux.> 1.2.2 Instalao do pacote WampSever Como dito anteriormente, o pacote WampServer entregue com as disposies das ltimas verses do Apache, MySQL e PHP. Depois do WampServer ter sido instalado, voc pode adicionar outros lanamentos por download. Eles iro aparecer no menu WampServer e voc ser capaz de mudar de verses com um simples clique. D um duplo clique no arquivo baixado e siga as instrues da instalao. Tudo quase automtico. Assim, aps clicar no arquivo baixado, surgir uma janela semelhante a janela abaixo.

Figura 1.1: Janela de instalao do WampServer solicitando autorizao para a autoinstalao Fonte: WampServer, 2011

Selecione executar o arquivo clicando no boto Run.

13

Figura 1.2: Janela de instalao do WampServer alertando para o caso de haver alguma verso anterior do sistema Fonte: WampServer, 2011

Voc ser questionado sobre se deseja ou no instalar essa verso em cima da WAMP5 1.x., caso ela exista. Clique em Sim para continuar com a instalao. A partir da, aparecer a primeira janela de instalao de boas-vindas (Figura 1.3). Clique em Avanar (Next) para continuar.

Figura 1.3: Janela de instalao do WampServer dando as boas vindas instalao Fonte: WampServer, 2011

A janela seguinte contm a GNU - General Public License que lhe permitir usar este software. Aps ler toda a licena marque o boto I accept the agreement caso aceite os termos apresentados no texto lido. Em seguida clique no boto avanar para continuar.

14

Figura 1.4: Janela de instalao do WampServer solicitando autorizao de instalao conforme licena Fonte: WampServer, 2011

A caixa da Figura 1.5 permite a voc escolha onde gostaria de instalar todos os arquivos. Voc pode mudar esta opo se desejar, mas se o fizer, tenha em mente que voc deve coloc-lo em uma pasta cujo nome no contenha quaisquer espaos, como alguns navegadores / servidores tm problemas de manipulao de espaos em nomes de arquivo. O local selecionado tambm onde os arquivos da web sero armazenados. Se no tiver certeza, aceite a sugesto impressa no campo da janela abaixo.

Figura 1.5: Janela de instalao do WampServer instruindo sobre o local fsico da instalao

15

Fonte: WampServer, 2011

A janela da Figura 1.6 permite criar o cone no desktop e na barra de inicializao rpida.

Figura 1.6: Janela de instalao do WamServer sobre a criao dos cones do sistema Fonte: WampServer, 2011

A prxima janela apenas informa sobre todas as opes de instalao selecionadas. Verifique se as configuraes esto corretas e clique em Avanar (Next) para iniciar a instalao do aplicativo.

Figura 1.7: Janela de instalao do WampServer aguardando autorizao para iniciar a autoinstalao Fonte: WampServer, 2011

16

A janela a seguir mostra o termmetro de progresso de instalao do software.

Figura 1.8:Janela de instalao do WampServer com termmetro da instalao do sistema Fonte: WampServer, 2011

A prxima janela sobrepe a janela anterior e solicita que o usurio informe qual o programa do browser dever ser inicialmente utilizado pelo WampServer como padro de gerenciamento do servidor Apache.

Figura 1.9: Janela de instalao do WampServer instruindo sobre a preferncia de browser Fonte: WampServer, 2011

A prxima janela permite que voc configure o seu servidor para encaminhar qualquer e-mail que o PHP produza para uma conta de correio eletrnico. Se voc no tem um e-mail ou no deseja receber qualquer mensagem do sistema, basta deix-los como se apresentam e clicar em Avanar (Next) e prosseguir. 17

Figura 1.10: Janela de instalao do WampServer instruindo sobre a conta de e-mail Fonte: WampServer, 2011

Figura 1.11: Janela de instalao do WampServer instruindo sobre o final da instalao Fonte: WampServer, 2011

A prxima figura mostra a janela de concluso da instalao do aplicativo. A partir da, voc j pode iniciar o servidor automaticamente, depois de fechar esta janela. Clique em Concluir (Finish) para finalizar a instalao.

18

Figura 1.12: Detalhe da barra de tarefas do Windows indicando operacionalidade do WampServer Fonte: WampServer do Windows, 2011

Depois que o servidor estiver rodando, voc ver o cone do servidor WAMP, conforme acima, na barra de tarefas (para todos os Windows, exceto Windows 7). O menu acima dever ser apresentado assim que voc clicar no cone do aplicativo que aparecer na barra de tarefas, ao lado do relgio. As opes deste menu so apresentadas a seguir.

Figura 1.13: Menu Pop-up de aplicativos WampServer e respectivas configuraes Fonte: WampServer, 2011

Localhost - Esta opo simplesmente abre a pgina que est armazenada no diretrio home (que "C: \ wamp \ index.php \ www" por padro ou aquela que voc determinou durante a instalao). Voc tambm pode obter esta pgina, simplesmente digitando "http://localhost" ou http://127.0.0.1 na barra de endereos de seu navegador web. 19

phpMyAdmin - Esta opo ir apresentar o aplicativo phpmyadmin (que tambm pode ser executado, indo para http://localhost/phpmyadmin/ no seu navegador web. phpMyAdmin uma ferramenta desenvolvida para gerenciar, consultar, selecionar e visualizar suas bases de dados MySQL. Este aplicativo foi desenvolvido em PHP e relativamente simples de usar. www Directory Esta opo ir abrir a pasta onde os sites esto armazenados. Este o diretrio onde os arquivos sero carregados quando voc evoca localhost. Apache - Esta opo disponibiliza as definies de configurao para o Apache e permite que voc faa a configurao que voc necessita. PHP - Esta opo possui as definies de configurao do PHP e ir permitir que voc faa a configurao que voc necessita. MySQL - Esta opo possui as configuraes do MySQL e permitir que voc faa a configurao que voc necessita. A partir da, voc detm as opes para controlar os servios do servidor web e bem como torn-lo on ou offline. Por padro, o servidor configurado com um arquivo index.php que mostra os servios que so iniciados pelo servio. Esse arquivo mostra tambm os programas que comearam em seu servidor com base nas pastas que esto dentro da pasta www. Voc no tem que manter este arquivo se voc no quiser. Voc pode apag-lo e fazer sua prpria index.php que ser exibido sempre que voc acessar localhost. Existem vrias configuraes que podem ser feitas para a presente configurao do servidor.

1.2.3 Instalando um servidor num drive removvel (via porta USB)


Imagine a seguinte situao: Voc est precisando apresentar ou testar uma aplicao desenvolvida em PHP e a mquina pela qual a apresentao se dar no possui instalado um servidor Apache e muito menos uma mquina PHP rodando. E o pior, esta mquina no permite a instalao de qualquer aplicativo. Este , realmente, um grande problema!

20

Mas existe uma soluo bastante original para este e outros casos semelhantes: O pacote WOS. Este pacote um aplicativo destinado a ser utilizado a partir de um pendrive USB. WOS um software gratuito que permite a rpida criao de um sistema WAMP (Windows, Apache, MySQL e PHP) em qualquer sistema Windows. Primeiramente devemos fazer o download desse pacote para nosso computador. <Mdias Integradas: Vamos clicar no link da pgina de download do WOS http://wos-portable.en.softonic.com/download e baixar o arquivo SoftonicDownloader_for_wos_portable.exe..Terminado o download do arquivo, vamos transferi-lo para o nosso pendrive e clicar duas vezes no arquivo para execut-lo e, assim, iniciarmos a instalao. Escreva em um documento digital quais as dificuldades que voc teve ao fazer o que foi solicitado e tambm relate o que voc teve vontade de realizar aps a instalao. Poste no ambiente virtual na atividade tarefa, criada para esta finalidade>

1.2.4 Testando as funcionalidades do pacote WampServber


Aps a concluso da instalao do pacote, necessrio verificar se o Apache, a maquinaPHP, bem como as funcionalidades do MySQL esto rodando. A primeira providncia a ser executada testar se o Apache est funcionando. Para isto vamos abrir o browser e, na sua barra de endereos, digitar o URL: http://localhost/

Figura 1.14: Janela de retorno da pgina do Apache confirmando a sua funcionalidade Fonte: Firefox verso 9.0.1

Se na janela do browser aparecer a mensagem It works!, tal como ilustrado acima, parabns!!! O Apache est instalado corretamente e est funcionando. 21

Agora necessrio verificar se o PHP est rodando. Para isto vamos criar um arquivo PHP e salv-lo no local de referncia do localhost que poder ser: a pasta WWW (se instalado o WAMP em C:/ ou htdocs se outro pacote - por exemplo: Xampp). Desse modo, vamos criar um arquivo com um script bem simples, conforme abaixo.

Figura 1.15: Script de teste de funcionalidade do PHP Fonte: Elaborada pelo autor

Mais adiante, iremos explicar como este script funciona. Por hora, vamos apenas digit-lo no editor de texto de sua preferncia (aqui ns utilizamos o MAXs HTML Beauty) e salv-lo com o nome prog.php, dentro da pasta especificada anteriormente. Agora, vamos abrir o browser e digitar na barra de endereo:

http://locvalhost/prog.php, evocando o arquivo gerado: prog.php.

Figura 1.16: Janela de retorno de execuo do script desenvolvido na figura anterior Fonte: Elaborado pelo autor e visualizado pelo Firefox verso 9.0.1.

22

Caso o PHP esteja em correto funcionamento, a tela acima dever ser apresentada. Agora a vez de verificar se o nosso BD - Banco de Dados tambm est funcionando. Para isto, vamos digitar no browser o endereo: http://localhost/phpmyadmin/

Figura 1.17: Janela da pgina do gerenciador phpMyAdmin confirmando sua funcionalidade Fonte: Browser Firefox verso 9.0.1.

Se a tela acima foi apresentada, ento nosso BD tambm est funcionando corretamente. Mais adianta iremos mostrar como criar Banco de Dados e tabelas utilizando o aplicativo phpMyAdmin. Resumo Nesta aula, aprendemos os conceitos de sistema Cliente-Servidor e como se d a sua estrutura e objetivos. Vimos que necessrio um aplicativo sendo executado nos bastidores do sistema que possa promover e gerenciar a comunicao de dentro para fora e de fora para dentro do micro. Entendemos que este aplicativo um servidor de acesso e comunicao e que existe para ser instalado nas verses pagas e gratuitas (ISS e Apache respectivamente). Aprendemos onde e como instalar este servidor de Internet, na verso gratuita, passo a passo. Aprendemos, tambm, que existem verses compactas (WOS) para instalao em memrias removveis (do tipo USB), ideais para testes e manutenes. 23

Atividades de aprendizagem: 1) O estudante deve instalar o pacote Wamp5 ou WampServer ou Xampp (mais indicado para o Windows 7) em um computador, conforme orientaes descritas neste captulo. Deve, ainda, deixar o sistema funcionando corretamente. <Atividades de aprendizagem: Escrava um pequeno relatrio da atividade e poste no frum criado para esta finalidade.> <Ateno: Opcionalmente, o aluno deve instalar o WOS (ou pacote semelhante) em pendrive de forma a deix-lo funcional.>

24

2. Aula 2 PHP Conceitos I

Objetivos Conhecer a Linguagem PHP. Aprender a instalao e configurao da mquina PHP. Compreender a estrutura bsica da linguagem PHP e sua sintaxe. Compreender a utilizao de variveis.

2.1 Introduzindo a linguagem PHP 2.1.1 Conceitos


At recentemente, a criao de scripts na internet era algo que poucas pessoas dominavam e destas, muitas no conseguiram. Recentemente, porm, mais e mais pessoas vm construindo seus prprios websites e linguagens de script. Devido a isso, as linguagens de script esto ficando mais fceis de aprender e a linguagem PHP uma das mais poderosas. PHP uma linguagem server-side. Isto , o script executado no seu servidor web, e no no navegador do usurio. Uma grande vantagem o fato de no se precisar preocupar com problemas de compatibilidade. PHP relativamente nova (em comparao com outras linguagens como Perl (CGI) e Java), mas est rapidamente se tornando uma das mais populares linguagens de script na internet. Voc pode estar se perguntando por que devemos escolher PHP em relao s outras linguagens, tal como Perl, ou mesmo porque voc deve aprender uma linguagem de script? Do ponto de vista de algum que aprende, aprender uma linguagem de script pode abrir novas e enormes possibilidades para o seu site. Embora voc possa fazer download de scripts pr-fabricados pela internet, estes geralmente ou contm publicidade para o autor ou no vai fazer exatamente o que voc precisa que faa. Como estudioso e/ou tcnico em informtica, especialista uma linguagem de script, voc pode facilmente editar quaisquer scripts dessa linguagem para fazer o que desejar alm de poder criar seus prprios scripts, pginas, portais, etc.

25

A utilizao de scripts nos sites permite que se adicionem novos recursos "interativos", tais como: formulrios, guestbooks, fruns, contadores e at recursos mais avanados, como sistemas de portais, gesto de contedos, publicidade etc. Desenvolver pginas utilizando programao em linguagens de script demonstra, do ponto de vista tcnico, imagem mais profissional. Alm de ampliar os horizontes no mercado vido por profissionais dessa categoria.

2.1.2 Histria e evoluo da linguagem PHP


A histria de surgimento e evoluo da linguagem PHP narrada no endereo http://www.php.net/manual/en/history.php.php. E a seguir encontra-se o resumo da traduo desta histria. O PHP sucede de um produto mais antigo, chamado PHP/FI. PHP/FI foi criado por Rasmus Lerdorf em 1995, inicialmente como um simples conjunto de scripts Perl para monitorar os acessos ao seu currculo online. Ele chamou esse conjunto de scripts de "Personal Home Page Tools". Como mais funcionalidades foram requeridas, Rasmus escreveu uma implementao C muito maior, que foi capaz de se comunicar com Bancos de Dados e possibilitava usurios desenvolver simples aplicativos dinmicos para web. Rasmus resolveu disponibilizar o cdigo fonte do PHP/FI para que todos possam ver, para que qualquer pessoa pode us-lo, bem como fixar bugs e melhorar o cdigo. PHP/FI, o que representava Personal Home Page / Forms Interpreter, inclua algumas funcionalidades bsicas do PHP que ns conhecemos hoje. Tinha variveis em Perl, interpretao automtica de variveis de formulrio e sintaxe embutida no HTML. A sua prpria sintaxe era similar a do Perl, porm muito mais limitada, simples, e um pouco inconsistente. Em 1997, PHP/FI 2.0, a segunda verso da implementao C, obteve milhares de usurios ao redor do mundo (estimado), com cerca de 50.000 domnios reportando que tinha instalado, o que representa cerca de 1% dos domnios na Internet. Embora houvesse milhares de pessoas contribuindo com pequenos cdigos para este projeto, ele ainda estava no grande projeto de um nico homem.

26

PHP/FI 2.0 foi oficialmente lanado somente em Novembro de 1997, aps passar a maior parte da sua vida em verses beta. Ele foi rapidamente substitudo pelos alphas do PHP 3.0. PHP 3 - O PHP 3.0 foi a primeira verso que se assemelha ao PHP que ns conhecemos hoje. Ela foi criada por Andi Gutmans e Zeev Suraski em 1997 e foi totalmente reescrita, aps eles descobrirem que o PHP/FI 2.0 poderia ajud-los a desenvolver suas prprias aplicaes de e-Commerce de um projeto da Uiversidade. Em um esforo cooperativo e iniciativa de comear o PHP/FI partir da base-usurio existente, Andi, Rasmus e Zeev decidiram cooperar e anunciar o PHP 3.0 como o sucessor oficial do PHP/FI 2.0, e o desenvolvimento do PHP/FI 2.0 foi descontinuado. Uma das maiores caractersticas do PHP 3.0 era sua forte capacidade de extensibilidade. Alm de oferecer aos usurios finais uma infraestrutura slida para diversos bancos de dados, protocolos e APIs, o extensibilidade do PHP 3.0 atraiu dezenas de desenvolvedores para se juntar e submeter novos mdulos. Esta a chave do tremendo sucesso do PHP 3.0. Outras caractersticas chaves introduzidas no PHP 3.0 foram o suporte sintaxe para orientao objetos e uma sintaxe muito mais poderosa e consistente. A nova verso da linguagem foi disponibiliza com um novo nome, que eliminou a impresso do limitado uso pessoal que o PHP/FI 2.0 possua. Ela foi nomeada simplesmente de 'PHP'. No final de 1998, o PHP obteve uma base the dezenas de milhares de usurios (estimativa) e centenas de milhares de Web sites relatando que o tinham instalado. Em seu pico, o PHP 3.0 foi instalado em aproximadamente 10% dos servidores Web da Internet. O PHP 3.0 foi oficialmente lanado em Junho de 1998, depois de ter passado aproximadamente 9 meses em testes pblicos. PHP 4 - Esta verso foi baseada numa nova engenharia, e acompanhada com uma srie de novas caractersticas, sendo oficialmente lanada em Maio de 2000, pela dupla de engenheiros: Zeev e Andi, quase dois anos aps o seu predecessor, o PHP 3.0. Alm do altssimo melhoramento da performance desta verso, o PHP 4.0 incluiu outras caractersticas chave como o suporte para muitos servidores WEb, sesses HTTP,

27

buffer de sada, maneiras mais seguras de manipular input de usurios e muitas construes novas na linguagem. A partir da, o PHP comeou a ser usado por centenas de milhares de desenvolvedores (estimativa), e muitos milhes de sites reportam que tem o PHP instalado, que explica os mais de 20% de domnios da Internet. PHP 5 - Foi lanado em julho de 2004, depois de um longo desenvolvimento e vrios pre-releases. dirigido principalmente pelo seu ncleo, a Zend Engine 2.0 com um novo modelo de objeto e dezenas de outras novas funcionalidades.

2.1.3 Como fazer rodar o PHP


Como mencionado anteriormente, o PHP uma linguagem de script serverside. Isso significa que, embora os usurios no necessitem instalar um novo software, necessrio ter o PHP configurado em seu servidor. A linguagem PHP deve ser listada como parte do pacote com o Apache, tal como visto na primeira aula. Se o seu servidor de contedo (caso possua algum) no suporta o PHP, voc pode solicitar ao seu provedor de hospedagem para instal-lo, j que o mesmo livre para fazer o download e para a instalao Equipamentos.

2.2 Introduzindo a linguagem PHP


Escrever cdigos PHP realmente muito simples. No necessrio nenhum software especializado, sendo necessrio apenas um editor de texto (como o Bloco de notas do Windows ou outro especfico tal como o MAXs, informado na aula passada).

2.2.1 Declarando PHP


Scripts PHP so sempre colocados entre duas tags. Elas dizem ao seu servidor para analisar as informaes que se encontram entre elas e execut-las. Existem trs formas diferentes de compartimentar scripts PHP. So as seguintes: Cdigo Resumido <? Cdigo do PHP ?> 28

Cdigo Normal <?php Cdigo do PHP ?> Cdigo Estendido <script language="php>" Cdigo PHP </script>

2.2.2 Primeiro Script PHP


O primeiro script PHP ser escrito de forma muito bsica. Tudo o que o que ele vai fazer mostrar todas as informaes sobre o PHP do seu servidor. Digite o seguinte cdigo em seu editor de texto:

<?php phpinfo() ; ?>

Como podemos ver isso, na verdade, apenas uma linha de cdigo. uma funo phpinfo padro do PHP que ir dizer ao servidor para mostrar uma tabela padro de informao com as informaes sobre a configurao do servidor. Outra coisa que se deve observar nesse exemplo o smbolo de pontuao (;) ponto e vrgula terminando a linha de comando. Isso muito importante. Tal como acontece com muitos outros scripts e linguagens de programao, quase todas as linhas so terminadas com um ponto e vrgula e se for ignorado, o sistema imprimir um erro.

2.2.3 Teste de script PHP


Agora que voc terminou o script, necessrio salv-lo com um nome qualquer, por exemplo: t.php. Em seguida, faa o upload (cpia) para o servidor de forma normal ou, se o servidor se encontra no seu prprio computador (ou pendrive), copie para a pasta que est representada como www (ou htdocs se o Apache o Xampp). Agora, usando o navegador, acesse a URL do script. Se ele est funcionando

29

corretamente (e se o PHP est instalado no servidor), voc deve visualizar uma pgina repleta de informaes sobre o PHP, semelhante a imagem a seguir.

Figura 2.1: Pgina gerada a partir da execuo do arquivo phpinfo.php Fonte: Internet Explorer, verso 9.0

Se o script no funcionar e aparecer uma pgina em branco, pode ter havido erro no cdigo.

2.3 Comentrios em PHP


No PHP, usamos / / para fazer um comentrio em uma nica linha ou / * e * / para fazer um grande bloco de comentrio. Veja exemplos na figura a seguir. <html> <body> <?php // Este um comentrio de uma linha /* Este um bloco de comentrio */ ?> </body> </html>

30

Ao executar o script anterior, claro que nada ser mostrado, j que no existem comandos que faam alguma sada para a tela, apenas comentrios.

2.4 Variveis
As variveis so usadas para armazenar valores, como cadeias de texto, nmeros ou arrays (vetores). Assim, quando uma varivel declarada, ela pode ser usada repetidamente outra vez em seu script. Uma caracterstica interessante e diferente das outras linguagens que todas as variveis do PHP comeam com um sinal de $. Desse modo, a maneira correta de declarar uma varivel em PHP $var_name = value; comum novos programadores PHP esquecerem o sinal $, no incio da varivel. Nesse caso, o programa no vai funcionar alm de poder gerar algum tipo de erro. Continuando, vamos ilustrar o processo de utilizao de variveis, criando uma varivel contendo uma string e uma varivel contendo um nmero: <?php $txt = "Ei mame, olha na web!"; $x=16;
?>

Neste exemplo, foi criada a varivel do tipo String: $txt, ao mesmo tempo em que lhe foi atribudo o valor: Ei mame, olha eu na web! e foi criada a varivel do tipo inteiro: $x j contendo o valor 16.

2.5 PHP uma linguagem fracamente tipada


O que isto??!! Como vimos anteriormente, no PHP, uma varivel no precisa ser declarada antes de receber um valor. No exemplo anterior, podemos verificar que no h a necessidade de dizer ao PHP qual tipo da varivel (se inteiro, real, caracter, etc.). Bastando apenas atribuir o que se deseja a varivel e pronto: est criada e atribuda! O compilador PHP converte automaticamente a varivel para o tipo de dados correto, dependendo de seu valor atribudo. 31

Em uma linguagem de programao fortemente tipada, imprescindvel declarar (definir) o tipo e o nome da varivel antes de us-la. Em outras palavras, no PHP a varivel declarada automaticamente j ao us-la.

2.6 Regras de denominao para as variveis


Um nome de varivel deve comear com uma letra ou um sublinhado "_"; Um nome de varivel s pode conter caracteres alfanumricos e sublinhados (AZ, _ AZ, 0-9 e _).

Um nome de varivel no deve conter espaos. Se um nome de varivel mais do que uma palavra, devem ser separados por um sublinhado ($my_string), ou com capitalizao ($myString).

2.7 Operadores de PHP


Esta seo lista os diferentes operadores utilizados no PHP. Semelhantemente aos j visto em JavaScript, os operadores so usados para efetuar operaes aritmticas, de atribuio, de comparao e lgicos.

a) Operadores aritmticos
Tabela 2.1: Tabela com os operadores aritmticos disponibilizados pelo PHP Operador + * / % ++ -Soma Subtrao Multiplicao Diviso Mdulo (resto da diviso) Incremento Decremento Descrio Exemplo x=2 x+2 x=2 5-x x=4 x*5 15 / 5 5/2 5% 2 10% 8 10% 2 x=5 x++ x=5 x-Resultado 4 3 20 3 2.5 1 2 0 X=6 x=4

32

Fonte: Elaborada pelo autor

b) Operadores de atribuio
Tabela 2.2: Tabela com os operadores de atribuio disponibilizados pelo PHP Operador = += -= *= /= .= %= y=x x+=y x -=y x*=y x/=y x .=y x%=y Exemplo y=x x=x+y x=x-y x=x*y x=x/y x=x.y x=x%y o mesmo que

Fonte: Elaborada pelo autor

c) Operadores de comparao
Tabela 2.3: Tabela com os operadores de comparao disponibilizados pelo PHP Operador == != <> > < >= <= igual a no igual no igual maior do que inferior maior ou igual a inferior ou igual a Descrio 5! = 8 retorna true 5 < > 8 retorna true 5> 8 retorna falso 5 < 8 retorna true 5> = 8 retorna false 5 < = 8 retorna true Exemplo 5 = = 8 retorna false

Fonte: Elaborada pelo autor

<Ateno: Traduzindo da lngua inglesa, True quer dizer Verdadeiro e False, Falso.>

d) Operadores lgicos

Tabela 2.4: Tabela com os operadores lgicos disponibilizados pelo PHP Operador && Descrio e Exemplo x6= y=3 (X <10 && y> 1) retornar true x6= y=3 (X == 5 | | y == 5) retorna false

||

ou

33

! Fonte: Elaborada pelo autor

no

x6= y=3 ! (X == y) retorna true

Resumo Estudamos aqui sobre os conceitos, origens e evolues da linguagem PHP, seus criadores e colaboradores. Vimos a respeito das caractersticas bsicas de funcionamento da linguagem e suas necessidades para ser executada. Entendemos a respeito a estrutura sinttica de seus scripts ou cdigos fontes. Entendemos como criar, nomear e atribuir valores s variveis, bem como as regras de utilizao. Estudamos os seus operadores aritmticos, de atribuio, de comparao e lgicos. Ao longo desta aula, aplicamos exemplos de scripts, com visualizao dos resultados gerados a partir desses scripts. Atividades de aprendizagem: 1. Pesquise e responda se verdadeiro (V) ou Falso (F) para as questes abaixo: a) Pode-se escrever scripts PHP que rodem do lado do cliente? Verdadeiro. Falso. b) Para rodar o PHP necessrio um servidor Web? Verdadeiro. Falso. c) O uso de short-tags, tais como <? e ?> mais benfico do que as outras tags porque assim perco menos tempo em escrever o cdigo? Verdadeiro. Falso. d) PHP mantido por uma comunidade de programadores da internet e est acessvel a toda as pessoas? Verdadeiro. 34

Falso. e) PHP uma linguagem de programao compilada? Verdadeiro. Falso. f) PHP uma linguagem de programao link-editada? Verdadeiro. Falso. g) PHP faz questo do uso de ( ; ) como finalizador de linha de comando? Verdadeiro. Falso. h) PHP uma linguagem que prima por exigir a declarao de tipos de variveis? Verdadeiro. Falso. i) PHP uma linguagem, tipo script, que executa o programa no seu computador e envia o resultado para um servidor? Verdadeiro. Falso. j) Para executar o PHP, de qualquer jeito, eu preciso de um servidor web rodando, como, por exemplo, o Apache? Verdadeiro. Falso. 2.. O script abaixo apresenta vrios erros. Indique o erro e a linha correspondente: 1 <html> 2 3 <?php 4 Sstatus = "FALSE"; 5 $x + $y = $k; 6 $_ = 10 + 3.14; 35

7 $dia semana = "quinta-feira"; 8 45 = $a; 9 $expression= 1 10 </script> 11 12<body> 13 14</body> 15</html> Linha Erro

<Atividades de aprendizagem Poste os resultados dos exerccios propostos nesta aula no frum criado para esta finalidade.>

36

Aula 3 PHP: conceitos II

Objetivos Conhecer os operadores da linguagem e as funes Strings..

3.1 Variveis do tipo String


Uma varivel string usada para armazenar e manipular texto. Tambm so usadas para guardar valores que contm caracteres. Neste tpico, vamos olhar para as funes mais comuns e os operadores usados para manipular strings em PHP. Uma string pode ser usada diretamente em uma funo ou ele pode ser armazenado em uma varivel. Abaixo, o script PHP atribui o texto "Ol Mundo" para uma varivel string chamada $txt: <?php $txt="Ei mame, olha eu na web!"; echo $txt; ?> O comando echo promove a sada ou impresso do contedo da varivel $txt, conforme abaixo: Ei mame, olha eu na web! Agora, vamos tentar usar algumas funes e operadores diferentes para manipular a sequncia de caracteres.

3.1.1 Operador de concatenao


Existe apenas um operador de string em PHP. O operador de concatenao (.) ponto usado para colocar dois valores de string juntos. Para concatenar (ou juntar) duas variveis strings, use o operador de concatenao. Vejamos o exemplo abaixo que concatena duas strings: $txt1 e $txt2.

37

<?php $txt1=" Ei mame"; $txt2=", olha eu na web!"; echo $txt1 . " " . $txt2; ?> A sada do cdigo acima ser: Ei mame, olha eu na web! Se olharmos o cdigo acima veremos que usamos o operador de concatenao duas vezes. Isso se d porque tivemos que inserir uma terceira string (espao), para separar as duas outras strings ($txt1 e $txt2).

3.1.2 Funo strlen()


A funo strlen() usada para retornar o comprimento de uma sequncia de caracteres. No exemplo abaixo podemos descobrir o comprimento de uma string. <?php echo strlen("Ei mame, olha eu na web!"); ?> A sada do cdigo acima ser: 25 O comprimento de uma sequncia frequentemente usado em scripts ou outras funes, quando importante saber quando a sequncia termina. (Ou seja, em um loop ou lao de repetio, ns iramos querer parar o loop aps o ltimo caractere da sequncia).

3.1.3 Funo strpos()


A funo strpos() usada para pesquisar dentro de uma sequncia de caracteres. Se uma correspondncia for encontrada, esta funo ir retornar a posio da sequncia 38

que se est procurando. Se nenhuma correspondncia for encontrada, ela ir retornar FALSE. Vamos ver se conseguimos encontrar a sequncia "mame" em nosso texto: <?php echo strpos("Ei mame, olha eu na web!","mame"); ?> A sada do cdigo acima ser: 3 A posio inicial da palavra "mame" encontrada em nossa sequncia 3. A razo de ser 3 (e no 4), que a primeira posio na sequncia inicia-se de 0, e no de 1.

3.1.4 Relao das funes string


As funes String permitem manipular cadeias de caracteres e para isto no h necessidade de qualquer instalao extra para se utilizar estas funes; elas j fazem parte do compilador da linguagem. Abaixo se encontra um quadro com vrias funes mais utilizadas do PHP com as respectivas verses de funcionalidade no PHP.
Tabela 3.1: Tabela de funes String mais utilizadas em PHP Funo bin2hex() chr() chunk_split() count_chars() explode() fprintf() Converte uma seqncia Descrio de caracteres ASCII com valores Verso PHP 3

hexadecimais Retorna um caractere a partir de um valor ASCII especificado Divide uma string em vrias partes menores Retorna quantas vezes um caractere ASCII ocorre dentro de uma sequncia e retorna a informao Quebras de uma string em um array Grava uma string formatada para um fluxo de sada especificado 3 5 4 3 3 4 3 3 4

html_entity_decode() Converte entidades HTML em caracteres htmlentities() implode() localeconv() Converte caracteres em entidades HTML Retorna uma string a partir dos elementos de um array Retorna localidade informao numrica e monetria formatao

39

ltrim() nl2br() number_format() ord() print() printf() rtrim() similar_text() soundex() sscanf() str_ireplace() str_rpeat() str_replace() str_shuffle() str_split() str_word_count() strcasecmp() strchr() strcmp() strip_tags() stripos() strlen() strncmp() strpos() strrchr() strripos()

Tiras em branco do lado esquerdo de uma string Insere quebras de linha HTML antes de cada nova linha em uma string Formata um nmero com os milhares agrupados Retorna o valor ASCII do primeiro caractere de uma string Sadas de uma string Sadas de uma string formatada Tiras em branco do lado direito de uma string Calcula a similaridade entre duas seqncias Calcula a chave soundex de uma string Interpreta a entrada de uma string de acordo com um formato Substitui alguns caracteres em uma string (maisculas e minsculas) Repete uma seqncia um determinado nmero de vezes Substitui alguns caracteres em uma string (maisculas e minsculas) Aleatoriamente embaralha todos os caracteres em uma string Divide uma string em um array Contar o nmero de palavras em uma string Compara duas seqncias (maisculas e minsculas) Localiza a primeira ocorrncia de uma string dentro de outra string (apelido para strstr()) Compara duas seqncias de caracteres (case-sensitive) Tiras de tags HTML e PHP de uma string Retorna a posio da primeira ocorrncia de uma string dentro de outra seqncia de caracteres (maisculas e minsculas) Retorna o comprimento de uma string String comparao dos primeiros n caracteres (case-sensitive) Retorna a posio da primeira ocorrncia de uma string dentro de outra seqncia de caracteres (case-sensitive) Localiza a ltima ocorrncia de uma string dentro de outra string Encontra a posio da ltima ocorrncia de uma string dentro de outra seqncia de caracteres (maisculas e minsculas) Encontra a posio da ltima ocorrncia de uma string dentro de outra seqncia de caracteres (case-sensitive)

3 3 3 3 3 3 3 3 3 4 5 4 3 4 5 4 3 3

3 3 5

3 4 3

3 5

strrpos()

40

strstr() strtok() strtolower() strtoupper() substr() substr_count() substr_replace() trim() vfprintf()

Localiza a primeira ocorrncia de uma string dentro de outra seqncia de caracteres (case-sensitive) Divide uma string em strings menores Converte uma string para letras minsculas Converte uma string para letras maisculas Retorna uma parte de uma string Conta o nmero de vezes que ocorre uma substring em uma string Substitui parte de uma string com outra string Retira brancos de ambos os lados de uma seqncia de caracteres Grava uma string formatada para um fluxo de sada especificado

3 3 3 3 4 4 3 5

Fonte: Elaborada pelo autor

Para exemplificar, vamos ver, a seguir, a utilizao de algumas funes string. a) bin2hex() - a funo bin2hex() converte uma seqncia de caracteres ASCII em valores hexadecimais. A sequncia pode ser convertida de volta usando a funo pack(). Sintaxe bin2hex(string)
Tabela 3.2: Tabela de parmetro da funo bin2hex()

Parmetro
string Fonte: Elaborada pelo autor

Descrio
Parmetro obrigatrio. a string a ser convertida.

No exemplo, a seguir, vamos converter um valor de sequncia de binrio para hexadecimal e vice-versa: <?php $var = "Ei mame!"; echo bin2hex($var) . "<br>"; echo pack("H*",bin2hex($var)) . "<br>"; ?> A sada do cdigo acima ser: 4569206d616de36521 Ei mame! 41

b) chr() - o chr() retorna um caractere do valor ASCII especificado. Sintaxe chr(valor)


Tabela 3.3: Tabela de parmetro da funo chr()

Parmetro
valor Fonte: Elaborada pelo autor

Descrio
Parmetro obrigatrio. um valor ASCII

<Ateno: O parmetro valor pode ser especificado em decimal, octal ou hexadecimal. Valores octais so definidas por um 0 esquerda, enquanto os valores hexadecimais so definidas por um 0x.> Exemplo <?php echo chr(65)."<br>"; echo chr(065)."<br>"; echo chr(0x65)."<br>"; ?> A sada do cdigo acima ser: A 5 e c) count_chars() - o count_chars() retorna quantas vezes um caractere ASCII ocorre dentro de uma sequncia e retorna a informao.

Sintaxe count_chars(string,mode)
Tabela 3.4: Tabela de parmetros da funo count_chars()

Parmetro
string

Descrio
Parmetro obrigatrio. a seqncia a ser verificada. Parmetro opcional. Ele especifica os modos que sero retornados. 0 o padro. Os modos diferentes de retorno so: 0 - um array com o valor ASCII como chave e nmero de ocorrncias como o valor; 1 - um array com o valor ASCII como chave e nmero de ocorrncias como valores, apenas lista ocorrncias maior do que zero; 2 - um array com o valor ASCII como chave e nmero de ocorrncias como valores, apenas lista as ocorrncias iguais a zero so listados; 3 - uma string com todos os personagens diferentes usados;

Modo

42

4 - uma string com todos os caracteres no utilizados. Fonte: Elaborada pelo autor

Exemplo 1 Neste exemplo, usaremos a funo count_chars() com um dos modos que verifica a cadeia. O modo 1 ir retornar um array com o valor ASCII como chave e quantas ocorrncias houveram (como no exemplo abaixo, o valor ASCII para as letras "a" e e ocorrem duas vezes, cada uma). Nesse exemplo, a letra e representada pelo cdigo 101. <?php $var = "ei mame!"; print_r(count_chars($var,1)); ?> A sada do cdigo acima ser: Array ( [32] => 1 [33] => 1 [97] => 1 [101] => 2 [105] => 1 [109] => 2 [227] => 1) Exemplo 2 Neste prximo exemplo, usaremos o count_chars() com o modo 3 para verificar a cadeia. Este modo ir retornar uma string com todos os caracteres utilizados, sem repetio: <?php $var = "ei mame!"; echo count_chars($var,3); ?> A sada do cdigo acima ser: !aeim

d) explode() - a funo explode() quebra uma string em um arrays. Sintaxe explode(separator,string,limit)


Tabela 3.5: Tabela de parmetros da funo count_explode()

43

Parmetro
separador string limite

Descrio
Obrigatrio. Especifica o caractere onde ocorre a quebra. Obrigatrio. Contem a sequncia a ser quebrada. Opcional. Especifica o nmero mximo de retorno de elementos da matriz.

Fonte: Elaborada pelo autor

<Ateno: O parmetro separador no pode ser uma sequncia vazia.> Exemplo Neste exemplo, vamos quebrar uma string em um array, tendo como parmetro das quebras o caractere de espao ( ): <?php $var = "Ei mame. Olha eu na web!"; print_r (explode(" ",$var)); ?> A sada do cdigo acima ser: Array ( [0] => Ei [1] => mame. [2] => Olha [3] => eu [4] => na [5] => web! ) e) str_repeat() - o str_rpeat() funo repete uma seqncia de um determinado nmero de vezes. Sintaxe str_repeat(string,vezes)
Tabela 3.6: Tabela de parmetros da funo str_repeat()

Parmetro
string vezes

Descrio
Obrigatrio. Especifica a sequncia a ser repetida. Obrigatrio. Especifica o nmero de vezes que a sequncia ser repetida. Deve ser maior ou igual a 0.

Fonte: Elaborada pelo autor

Exemplo <?php 44

echo str_repeat("*",5); ?> A sada do cdigo acima ser: *****

f)

strlen()- a funo strlen() retorna o comprimento de uma string e j foi explicada no subtpico 3.1.2.

g) strtoupper() - a funo strtoupper() converte uma string em maisculas. Sintaxe strtoupper(string)


Tabela 3.7: Tabela de parmetro da funo strtoupper()

Parmetro
string Fonte: Elaborada pelo autor

Descrio
Obrigatrio. Especifica a sequncia de caracteres para converter.

Exemplo <?php echo strtoupper("Ei Mame!"); ?> A sada do cdigo acima ser: EI MAME!

h)substr() - o substr() retorna uma parte de uma cadeia. Sintaxe substr(string,incio, tamanho)
Tabela 3.8: Tabela de parmetro da funo strtoupper()

Parmetro
string

Descrio
Obrigatrio. Especifica a cadeia de voltar uma parte da Obrigatrio. Especifica onde comear na cadeia: Um nmero positivo que indica uma posio especfica, dentro da cadeia; Um nmero negativo indica o iniciar uma posio especificada a partir do final da string;

incio

45

0 - Inicia no primeiro caractere da string; Opcional. Especifica o comprimento da string retornada. O padro para o final da string: comprimento Fonte: Elaborada pelo autor Um nmero positivo - O comprimento a ser retornado a partir do parmetro indicado em incio; Nmero Negativo - O comprimento a ser retornado a partir do final da string;

<Ateno: Se o parmetro incio for um nmero negativo e o parmetro comprimento for menor ou igual ao parmetro incio, o parmetro comprimento inicia em 0.> Exemplo 1 <?php echo substr("Ei mame!",3); ?> A sada do cdigo acima ser: mame! Exemplo 2 <?php echo substr("Ei mame!",3,3); ?> A sada do cdigo acima ser: mam

Resumo Nesta aula contextualizamos todas as funcionalidades de objetos do tipo String. Definimos e estudamos acerca de seus operadores. Alm de nos instruir sobre a maioria de suas funes, estudamos vrias dessas funes com exemplos e visualizaes dos resultados de suas respectivas aplicaes prticas, tais como: funo strlen() e strpos().

46

Atividades de aprendizagem

1) Digite todos os cdigos exemplos desta aula e execute-os, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) Escolha cinco funes da tabela de funes de String que no foram citadas nos exemplos e escreva scripts em PHP que demonstrem as suas respectivas funcionalidades. <Atividades de aprendizagem: Poste os resultados das questes desta atividade no frum criado para esta finalidade.>

47

3. Aula 4 PHP: conceitos III

Objetivos Conhecer as funes sobre matemticas e matrizes.

4.1 Funes matemticas


As funes matemticas podem lidar com valores dentro da faixa de tipos inteiros e float. Estas funes fazem parte do ncleo do PHP (internos) e no h nenhuma instalao necessria para utilizar estas funes. A seguir, foram relacionadas as funes mais comumente utilizadas.

Tabela 4.1: Tabela de funes matemticas do PHP. Funo abs() acos() acosh() asin() asinh() atan() atan2() atanh() base_convert() bindec() ceil() cos() cosh() decbin() dechex() decoct() deg2rad() exp() expm1() floor() Descrio Retorna o valor absoluto de um nmero Retorna o arco cosseno de um nmero Retorna o cosseno hiperblico inverso de um nmero Retorna o arco seno de um nmero Retorna o seno hiperblico inverso de um nmero Retorna o arco tangente de um nmero como um valor numrico entre PI/2 e +PI/2 radianos Retorna o ngulo theta de um ponto (x, y) como um valor numrico entre -PI e +PI radianos Retorna a tangente hiperblica inversa de um nmero Converte um nmero de uma base para outra Converte um nmero binrio para um nmero decimal Retorna o valor de um nmero arredondado para o nmero inteiro mais prximo Retorna o cosseno de um nmero Retorna o cosseno hiperblico de um nmero Converte um nmero decimal para um nmero binrio Converte um nmero decimal para um nmero hexadecimal Converte um nmero decimal para um nmero octal Converte graus em radiano Retorna o valor de E Retorna o valor de E
x x-1

Verso PHP 3 3 4 3 4 3 3 4 3 3 3 3 4 3 3 3 3 3 4 3

Retorna o valor de um nmero arredondado para baixo para o nmero

48

inteiro mais prximo fmod() hexdec() hypot() is_finite() is_infinite() is_nan() lcg_value() log() log10() max() min() mt_getrandmax() octdec() pi() pow() rad2deg() rand() round() sin() sinh() sqrt() srand() tan() Retorna o resto (mdulo) de uma diviso Converte um nmero hexadecimal em decimal Retorna o comprimento da hipotenusa de um tringulo retngulo Retorna true se um valor um nmero finito Retorna true se um valor um nmero infinito Retorna true se um valor no um nmero Retorna um nmero pseudo-aleatrio no intervalo de (0,1) Retorna o logaritmo natural (base e) de um nmero Retorna o logaritmo de base 10 de um nmero Retorna o nmero com o valor mais elevado de dois nmeros especificados Retorna o nmero com o menor valor de dois nmeros especificados Retorna o maior valor possvel que pode ser devolvido por mt_rand() Converte um nmero octal em um nmero decimal Retorna o valor de PI Retorna o valor de x para a potncia de y Converte um nmero em radianos para um grau Retorna um inteiro aleatrio Arredonda um nmero para o inteiro mais prximo Retorna o seno de um nmero Retorna o seno hiperblico de um nmero Retorna a raiz quadrada de um nmero Semeia o gerador de nmeros aleatrios Retorna a tangente de um ngulo 4 3 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4

tanh() Retorna a tangente hiperblica de um ngulo Fonte: Elaborada pelo autor

Relao das constantes matemticas.


Tabela 4.2: Tabela de constantes matemticas do PHP. Constante M_E M_EULER M_LNPI M_LN2 M_LN10 M_LOG2E M_LOG10E M_PI M_PI_2 Retorna e (aprox. 2,718) Retorna a constante de Euler (aproximadamente 0,577) Retorna o logaritmo natural de PI (aproximadamente 1,144) Retorna o logaritmo natural de 2 (aproximadamente 0,693) Retorna o logaritmo natural de 10 (aprox. 2.302) Retorna o logaritmo de base 2 de E (aproximadamente 1,442) Retorna o logaritmo de base 10 de E (aproximadamente 0,434) Retorna PI (aproximadamente 3.14159) Retorna PI / 2 (aproximadamente 1,570) Descrio Verso PHP 4 4 4 4 4 4 4 3 4

49

M_PI_4 M_1_PI M_2_PI M_SQRTPI M_2_SQRTPI M_SQRT1_2 M_SQRT2

Retorna PI / 4 (cerca de 0,785) Retorna 1/PI (aproximadamente 0,318) Retorna 2/PI (aproximadamente 0,636) Retorna a raiz quadrada de PI (aproximadamente 1,772) Retorna 2/ raiz de PI (aproximadamente 1,128) Retorna a raiz quadrada de 1 / 2 (aproximadamente 0,707) Retorna a raiz quadrada de 2 (aprox. 1.414)

4 4 4 4 4 4 4 4

M_SQRT3 Retorna a raiz quadrada de 3 (aprox. 1,732) Fonte: Elaborada pelo autor

A seguir seguem quatro exemplos de uso de funes matemticas. Abs() A funo abs() retorna o valor absoluto de um nmero. Sintaxe abs(x)
Tabela 4.3: Tabela de parmetro da funo abs().

Parmetro
x

Descrio

Obrigatrio. Valor numrico. Se o nmero do tipo float, o tipo de retorno tambm float, se no, retorna inteiro Fonte: Elaborada pelo autor

Exemplo <?php echo(abs(3.14) . "<br>"); echo(abs(-4) . "<br>"); echo(abs(7)); ?> A sada do cdigo acima ser: 3.14 4 37 deg2rad() A funo deg2rad() converte graus em radianos. Sintaxe 50

deg2rad(nmero de graus)
Tabela 4.4: Tabela de parmetro da funo deg2rad().

Parmetro
Nmero de graus Fonte: Elaborada pelo autor

Descrio
Obrigatrio. Especificar o grau a converter

Exemplo 1 <?php echo deg2rad("30") . "<br>"; echo deg2rad("45") . "<br>"; echo deg2rad("60") . "<br>"; echo deg2rad("360"); ?> A sada do cdigo acima ser: 0.5235987755983 0.78539816339745 1.0471975511966 6.2831853071796 Exemplo 2 <?php $g = 90; $r = deg2rad($g); echo "$go Graus = $r radianos"; ?> A sada do cdigo acima ser: 90 Graus = 1.5707963267949 radianos cos() A funo trigonomtrica cos() retorna o cosseno de um nmero. Sintaxe cos(x)
Tabela 4.5: Tabela de parmetro da funo cos().
o

Parmetro
x Obrigatrio. Um nmero Fonte: Elaborada pelo autor

Descrio

51

<Ateno: Observe: 1- A funo cos() retorna um valor numrico entre -1 e 1, que representa o cosseno do ngulo. 2 - as funes trigonomtricas recebem como parmetros nmeros radianos.> Exemplo No exemplo a seguir iremos retornar o cosseno de nmeros diferentes: <?php echo(cos(1) . "<br>"); echo(cos(-1) . "<br>"); echo(cos(0) . "<br>"); echo(cos(M_PI) . "<br>"); echo(cos(2*M_PI)) // vide tabela das constantes matemticas ?> A sada do cdigo acima ser: 0.54030230586814 0.54030230586814 1 -1 1 sqrt() A funo sqrt() retorna a raiz quadrada de um nmero. Sintaxe sqrt(x)
Tabela 4.6: Tabela de parmetro da funo sqrt().

Parmetro
r Fonte: Elaborada pelo autor

Descrio
Obrigatrio. Um nmero qualquer >= 0

<Ateno: A funo sqrt() ir retornar -1.#IND ou NAN se o parmetro r um nmero negativo.> Exemplo Neste exemplo vamos obter a raiz quadrada de nmeros diferentes: <?php echo(sqrt(0) . "<br>"); echo(sqrt(16) . "<br>"); echo(sqrt(27) . "<br>"); echo(sqrt(0.64) . "<br>"); echo(sqrt(-5)) 52

?> A sada do cdigo acima ser: 0 4 5.1961524227066 0.8 NAN pow() A funo pow() levanta o primeiro argumento para o poder do segundo argumento, e retorna o resultado. Sintaxe pow(b,e)
Tabela 4.7: Tabela de parmetro da funo pow().

Parmetro
b e Obrigatrio. o expoente

Descrio
Obrigatrio. o nmero base da potncia

Fonte: Elaborada pelo autor

Exemplo <?php echo pow(2,2) . "<br>"; echo pow(3,2) . "<br>"; echo pow(-3,2) . "<br>"; echo pow(-5,-2) . "<br>"; echo pow(16,0.5); //Obs: qualquer nmero inteiro elevado a 0.5 = sua raiz quadrada ?>

4.2 Matrizes
Um array uma matriz ou vetor que pode armazenar vrios valores em uma nica varivel. Se voc tem uma lista de itens (de uma lista de autores de livros, por exemplo), armazenando os livros em simples variveis, poderia ser semelhante a esta: $liv1 = "Drumond"; 53

$liv2 = "Bandeira"; $liv3 = "Linspector"; Uma matriz pode conter todos os valores variveis sob um nico nome. E voc pode acessar os valores referentes ao nome da matriz indicando apenas seu ndice ou posio que ele se encontra dentro dessa matriz. Cada elemento da matriz tem o seu prprio ndice, para que possa ser facilmente acessados. No PHP, existem trs tipos de matrizes:

matriz numrica - Uma matriz com um ndice numrico matriz associativa - Uma matriz onde cada chave ID est associada a um valor matriz multidimensional - Uma matriz contendo um ou mais arrays

4.2.1 Matrizes numricas


Matrizes numricas armazenam cada elemento da matriz com um ndice numrico. Existem dois mtodos para se criar uma matriz numrica: 1. No exemplo a seguir os ndices so automaticamente atribudos (o ndice comea em 0): $liv = array("Drumond","Bandeira","Linspector","Oliveira"); 2. No exemplo a seguir vamos atribuir o ndice manualmente: $liv[0] = "Drumond"; $liv[1] = "Bandeira"; $liv[2] = Linspector"; $liv[3] = "Oliveira"; Exemplo No exemplo abaixo voc acessa os valores por referncia ao nome da matriz e do ndice: <?php $liv[0]="Drumond"; $liv[1]="Bandeira"; $liv[2]="Linspector"; $liv[3]="Oliveira"; echo $liv[0] . ", " . $liv[1] . " e ".$liuv[3]. so autores homens, enquanto .liv[2]. 54

uma autora; ?> O cdigo acima ir mostrar: Drumond, Bandeira e Oliveira so autores homens, enquanto Linspector uma autora

4.2.2 Matrizes associativas Em um array associativo, cada chave ID est associada a um valor. Armazenar dados especficos sobre valores associativos, uma matriz numrica nem sempre a melhor maneira de faz-lo. Com arrays associativos, podemos usar os valores como chaves de busca e atribuir-lhes valores. Exemplo 1 Neste exemplo, usamos uma matriz de cidades atribudas aos respectivos estados: <?php $cidades = array("MG"=>"Belo Horizonte", "PR"=>"Curitiba", "PE"=>"Recife"); echo $cidades['PR']; ?> Exemplo 2 Este exemplo o mesmo do exemplo 1, mas mostra uma maneira diferente de criao da matriz: $cidades['MG'] = "Belo Horizonte"; $cidades['PR'] = "Curitiba"; $ages['JPE'] = "Recife"; As chaves de identificao podem ser usadas em um script: <?php $cidades['MG'] = "Belo Horizonte"; $cidades['PR'] = "Curitiba"; $ages['JPE'] = "Recife"; 55

echo "A capital de PR : " . $ages['PR]"; ?> O cdigo acima ir mostrar: Curitiba

4.2.3 Matrizes multidimensionais


Em uma matriz multidimensional, cada elemento na matriz principal tambm pode ser um array. E cada elemento no sub-array pode ser uma matriz, e assim por diante. Exemplo 1 Neste exemplo, vamos criar uma matriz multidimensional, com chaves de identificao atribuda automaticamente: $familias = array ("Sallum"=>array ("Mayumi", "Seiji", "Harumi" ), "Silva"=>array ("Jos" , Maria)); A tabela acima, ao ser impressa, ficaria conforme abaixo: Array ( [Sallum] => Array ( [0] => Mayumi [1] => Seiji [2] => Harumi ) [Silva] => Array ( [0] => Jos [1] => Maria ) ) Exemplo 2 Vamos tentar apresentar um nico valor a partir da matriz acima: echo "A " . $familias['sallum'][1] . " parte da famlia Sallum."; O cdigo acima ir imprimir: A Harumi parte da famlia Sallum.

56

As funes de matriz permitem manipular matrizes e, como vimos, o PHP suporta arrays simples e multidimensional. H tambm funes especficas para preencher arrays de consultas a banco de dados. Assim como as outras funes j faladas aqui, as funes de matriz so parte do ncleo do PHP e no necessitam de nenhuma instalao para utiliz-las. O quadro abaixo relaciona as funes de array mais comumente utilizadas.
Tabela 4.8: Tabela de funes de Array do PHP. Funo array() array_change_key_case() array_chunk() array_combine() array_count_values () array_diff() array_diff_assoc() array_diff_key() array_key_exists() array_keys() array_merge() array_merge_recursive() array_product() array_push() array_rand() array_reduce() array_reverse() array_search() array_shift() array_slice() array_splice() array_sum() array_unique() array_unshift() array_values () arsort() asort() count() Cria uma matriz Retorna uma matriz com todas as chaves em maisculas ou minsculas Divide um array em pedaos de matrizes Cria um array usando um array para chaves e outro para valores Retorna uma matriz com o nmero de ocorrncias para cada valor Compara a matriz de valores e retorna as diferenas Compara as chaves de matriz e valores, e retorna as diferenas Compara as chaves de matriz, e retorna as diferenas Verifica se a chave especificada existe na matriz Retorna todas as chaves de um array Funde um ou mais arrays em um array Funde um ou mais arrays em um array Calcula o produto dos valores de um array Insere um ou mais elementos no final de uma matriz Retorna um ou mais chaves aleatrias de uma matriz Retorna uma matriz como uma string, usando uma funo definida pelo usurio Retorna um array na ordem inversa Procura um array para um determinado valor e retorna a chave Remove o primeiro elemento de uma matriz e retorna o valor do elemento removido Retorna partes selecionadas de um array Remove e substitui elementos especficos de um array Retorna a soma dos valores de um array Remove o valores duplicados de um array Adiciona um ou mais elementos ao incio de um array Retorna todos os valores de um array Ordena um array em ordem decrescente mantendo a associao entre o ndice Ordena um array mantendo a associao entre ndices Conta os elementos de um array, ou propriedades de um objeto Descrio Verso PHP 3 4 4 5 4 4 4 5 4 4 4 4 5 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3

57

current() each() end() extract() In_array() key() krsort() ksort() list() natcasesort() natsort() next() pos() prev() range() reset() rsort() shuffle() sizeof() sort() uasort() uksort() usort() Fonte: Elaborada pelo autor

Retorna o elemento corrente em um array Retorna o par chave / valor corrente de um array Define o ponteiro interno de um array para o seu ltimo elemento Importaes de variveis para a tabela de smbolos a partir de uma matriz Verifica se um valor especificado em uma matriz Retorna uma chave de um array Ordena um array pelas chaves em ordem decrescente Classifica um array pelas chaves Atribui variveis como se fossem uma matriz Ordena um array utilizando o case-sensitive "ordem natural" algoritmo Ordena um array utilizando uma "ordem natural" algoritmo Avana o ponteiro interno de um array Sinnimo de current() Retrocede o ponteiro interno do array Cria um array contendo uma faixa de elementos Define o ponteiro interno de um array para o primeiro elemento Ordena um array em ordem inversa Embaralha um array Sinnimo de count() Ordena um array Ordena um array utilizando uma funo definida pelo usurio e manter a associao entre ndices Ordena um array pelas chaves utilizando uma funo definida pelo usurio Ordena um array pelos valores utilizando uma funo definida pelo usurio

3 3 3 3 4 3 3 3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3

A seguir, sero exemplificadas quatro funes de arrray para ilustrar a utilizao desta instruo. array_search() A funo array_search() pesquisa uma matriz atravs de um valor e retorna a sua respectiva chave. Sintaxe array_search(valor,array,obs)
Tabela 4.9: Tabela de parmetros da funo array_search().

58

Parmetro
valor matriz

Descrio

Obrigatrio. Especifica o valor a pesquisar Obrigatrio. Especifica a matriz que ser feita a pesquisa Opcional. Valores possveis: true obs false - Padro Quando definido como true, o nmero 5 ser tomado tal como informado (quanto a sua tipologia) (ver exemplo 2) Fonte: Elaborada pelo autor

Exemplo 1 <?php $chave=array("1"=>"Amarelo","2"=>"Azul","3"=>"Branco"); echo array_search("Amarelo",$chave); ?> A sada do cdigo acima ser: 1 Exemplo 2 <?php $chave=array("1"=>"9","2"=>9,"3"=>"9"); echo array_search(9,$chave,true); ?> A sada do cdigo acima ser: 2 array_reverse() A funo array_reverse() retorna um array na ordem inversa. Sintaxe array_reverse(matriz,preserva)
Tabela 4.10: Tabela de parmetros da funo reverse().

Parmetro
matriz

Descrio

Obrigatrio. Especifica uma matriz Opcional. Os valores possveis: true preserva false Especifica se a funo deve preservar as chaves do array ou no. Fonte: Elaborada pelo autor

Exemplo 1 59

<?php $chave=array("1"=>"amarelo","2"=>"Azul","3"=>"Branco"); print_r(array_reverse($chave)); ?> A sada do cdigo acima ser: Array ( [0] => Branco [1] => Azul [2] => amarelo ) Exemplo 2 <?php $chave=array("1"=>"amarelo","2"=>"Azul","3"=>"Branco"); print_r(array_reverse($chave,true)); ?> A sada do cdigo acima ser: Array ( [3] => Branco [2] => Azul [1] => amarelo ) Observe no exemplo 2 que as chaves foram preservadas. count() A funo count() retorna a quantidade de elementos de um array ou propriedades de um objeto. Sintaxe count(matriz,modo)
Tabela 4.11: Tabela de parmetros da funo count().

Parmetro
matriz

Descrio

Obrigatrio. Especifica a matriz ou objeto para contar. Opcional. Especifica o modo da funo. Valores possveis: 0 - padro. No detecta matrizes (interna) modo 1 - Detecta matrizes Nota: Este parmetro foi adicionado no PHP 4.2 Fonte: Elaborada pelo autor

60

<Ateno: A funo count() pode retornar 0 se a varivel no est definida, mas tambm pode retornar 0 se uma varivel contm um array vazio. A funo isset() pode ser usada para testar se uma varivel definida.>

Exemplo <?php $chave=array("1"=>"amarelo","2"=>"Azul","3"=>"Branco"); echo count($chave); ?> A sada do cdigo acima ser: 4 sort() A funo sort() ordena um array pelos valores. Esta funo define novas chaves para os elementos do array e chaves existentes sero removidos. Essa funo retorna TRUE se tudo foi sorteado ou FALSE se houve falhas. Sintaxe sort(matriz,tipo)
Tabela 4.12: Tabela de parmetros da funo sort().

Parmetro
matriz

Descrio
Obrigatrio. Especifica a matriz a ser ordenada Opcional. Especifica como ordenar os valores da matriz. Os valores possveis so: SORT_REGULAR - Padro. Trata os valores como so (no modifica o tipo) SORT_NUMERIC - Tratar valores numericamente SORT_STRING - Trate os valores como strings SORT_LOCALE_STRING - Trate os valores como strings, baseado em configuraes locais

tipo

Fonte: Elaborada pelo autor

Exemplo <?php $chave=array("1"=>"amarelo","2"=>"Azul","3"=>"Branco"); sort($chave); print_r($chave); ?> A sada do cdigo acima ser: 61

Array ( [0] => Amarelo [1] => Azul [2] => Branco ) ) array_sum() O array_sum() retorna a soma de todos os valores na matriz. Sintaxe array_sum(matriz)
Tabela 4.13: Tabela de parmetro da funo sum().

Parmetro
matriz Obrigatrio. Especifica uma matriz Fonte: Elaborada pelo autor

Descrio

Exemplo <?php $valores=array(0=>"10",1=>"33",2=>"47"); echo array_sum($valores); ?> A sada do cdigo acima ser: 90

Resumo Nesta aula tivemos a oportunidade de trabalhar e entender sobre as funcionalidades de objetos do tipo Array. Vimos que estes objetos so objetos que objetivam o armazenamento, manuteno e disponibilizao de dados conseguintes em duas dimenses (ndice e dados). Definimos e estudamos acerca de sua estrutura de armazenamento e mtodos de acesso e demais operaes. Alm de nos instruir sobre a maioria de suas funes, estudamos vrias dessas funes com exemplos e visualizaes dos resultados de suas respectivas aplicaes prticas. Compreendemos sobre tais aplicaes nas trs formas de apresentao desses objetos que so: arrays numricos, que armazenam dados em ndices numricos; arrays 62

associativos, que armazenam dados com ndices mistos e criados pelo programador ou pelo prprio sistema e, por fim, arrays multidimensionais, que so elaborados em qualquer das duas formas anteriores, para trabalhar em mais de duas dimenses.

Atividades de aprendizagem: 1) O aluno deve digitar todos os cdigos exemplos deste captulo e execut-los, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) O aluno deve escolher cinco funes de cada tabela listada neste captulo (matemtica e matriz) que no foram citadas nos exemplos e escrever scripts em PHP que demonstrem as suas respectivas funcionalidades, utilizando chamadas a funes com passagem de parmetros. <Atividades de aprendizagem: Ao final das atividades, o aluno deve postar os cdigos digitados e testados no frum criado para esta atividade, relatando quaisquer divergncias e/ou dificuldades encontradas.>

63

4. Aula 5 PHP: conceitos IV


Objetivos Conhecer as funes sobre datas. Compreender as estruturas condicionais if..else e switch...case.

5.1 Funes de Data e Hora


As funes de data e hora permitem extrair e formatar a data e a hora no servidor. Elas so parte do ncleo do PHP e nenhuma instalao necessria para as suas utilizaes. <Ateno: Estas funes dependem das configuraes locais do servidor! O comportamento das Funes de Data / hora afetado pelas configuraes no arquivo php.ini.> Abaixo, encontra-se uma tabela descrevendo as funes mais comumente utilizadas em Data e Hora.
Tabela 5.1: Tabela de funes Date do PHP. Funo checkdate() Date_default_timezone_get() Date_default_timezone_set() Date_sunrise() Date_sunset() Date() getdate() gettimeofday() IDATE() localtime() microtime() strftime() strptime() Time() Fonte: Elaborada pelo autor Descrio Valida uma data Gregoriana Retorna o fuso horrio padro Define o fuso horrio padro Retorna a hora do nascer do sol para um determinado dia / local Retorna a hora do pr do sol para um determinado dia / local Formata uma hora / data Retorna uma matriz que contm as informaes de data e hora para um timestamp Unix Retorna uma matriz que contm informao de tempo atual Formata uma hora / data como inteiro Retorna uma matriz que contm os componentes de tempo de um timestamp Unix Retorna o microssegundos para a hora atual Formata uma hora / data de acordo com as configuraes locais Analisa uma data / hora gerada com strftime() Retorna o tempo atual como um timestamp Unix Verso PHP 3 5 5 5 5 3 3 3 5 4 3 3 5 3

64

<Glossrio: Timestamp o momento em que um evento registrado por um computador e no o tempo do evento em si. representado em segundos passados desde 1/1/1970> A seguir, esto exemplificadas trs funes de Data e Hora para ilustrar as funcionalidades desta instruo. data() A funo data() formata hora e data. Sintaxe Date(formato) Acompanhe a Tabela 5.2 as diversas formataes, aceitas pela funo data().
Tabela 5.2: Tabela de parmetro da funo Date().

Parmetro

Descrio
Obrigatrio. Especifica como retornar o resultado: d - O dia do ms (01-31) D - Uma representao textual de um dia (trs letras) j - dia do ms sem zeros (1-31) l ('L' minsculo) - Uma representao textual de um dia N - A norma ISO-8601 uma representao numrica do dia (1 para segundafeira a 7 para domingo) S - O sufixo Ingls ordinal para o dia do ms (2 caracteres, nd, rd ou th Funciona bem com j). w - Uma representao numrica do dia (0 para domingo a 6 para sbado) z - O dia do ano (de 0 a 365) W - O nmero de semana ISO-8601 do ano (semanas a partir de segunda-feira) F - Uma representao textual de um ms (janeiro a dezembro) m - A representao numrica de um ms (de 01 a 12) M - Uma representao textual curta de um ms (trs letras) n - A representao numrica de um ms, sem zeros (1-12) t - O nmero de dias do ms em questo L - Se um ano bissexto (1 se for um ano bissexto, 0 caso contrrio) o - O nmero do ano ISO-8601 Y - Uma representao de quatro dgitos de um ano Y - Uma representao de dois dgitos do ano a - Minsculas am ou pm A - Maisculas AM ou PM B - Swatch tempo Internet (000-999) g - Formato 12-horas de uma hora (1-12) G - Formato 24-horas de uma hora (0-23) h - formato 12-horas de uma hora (01 a 12) H - formato 24-horas de uma hora (00 a 23) i - Minutos com zeros esquerda (00-59) s - Segundos, com zeros esquerda (00-59) e - O fuso horrio identificador (Exemplos: UTC, Atlntico / Aores)

formato

65

I (i capital) - Se a data est no horrio de luz do dia (1 se horrio de vero, 0 caso contrrio) O - Diferena para Greenwich time (GMT) em horas (exemplo: 0100) T - o fuso horrio configurao da mquina PHP (exemplos: EST, MDT) Z - o fuso horrio deslocamento em segundos. O oeste de UTC negativo, e o deslocamento leste da UTC positivo (-43.200-43.200) c - A norma ISO-8601 data (por exemplo, 2004-02-12T15: 19:21 +00:00) R - O RFC 2822 data formatada (por exemplo, Thu, 21 dez 2000 16:01:07 +0200) U - o segundo desde a Era Unix (January 1 1970 00:00:00 GMT) Fonte: Elaborada pelo autor

Exemplo <?php echo("Operaes utilizando date():<br>"); echo(date("l") . "<br>"); echo(date("l dS \of F Y h:i:s A") . "<br>"); echo("28 de Maio de 1961 caiu num(a) ".date("l", mktime(0,0,0,5,28,1961))."<br>"); echo(date(DATE_RFC822) . "<br>"); echo(date(DATE_ATOM,mktime(0,0,0,5,28,1961)) . "<br><br>"); echo("Operaes utilizando gmdate():<br>"); echo(gmdate("l") . "<br>"); echo(gmdate("l dS \of F Y h:i:s A") . "<br>");
echo("28 de Maio de 1961 caiu num(a) ".gmdate("l", mktime(0,0,0,5,28,1961))."<br>");

echo(gmdate(DATE_RFC822) . "<br>"); echo(gmdate(DATE_ATOM,mktime(0,0,0,5,28,1961)) . "<br>"); ?> A sada do cdigo acima poderia ser algo como a listagem abaixo: Operaes utilizando date(): Wednesday Wednesday 16th of March 2011 12:36:51 PM 28 de Maio de 1961 caiu num(a) Sunday Wed, 16 Mar 11 12:36:51 -0300 1961-05-28T00:00:00-03:00 Operaes utilizando gmdate(): Wednesday Wednesday 16th of March 2011 03:36:51 PM 28 de Maio de 1961 caiu num(a) Sunday Wed, 16 Mar 11 15:36:51 +0000 1961-05-28T03:00:00+00:00 A seguir so exemplificadas duas formas de utilizao da instruo de Data e Hora. microtime() 66

A microtime() retorna o timestamp atual em microsegundos. <Glossrio: timestamp o nmero de segundos desde 1 de janeiro 1970 00:00:00 GMT> Sintaxe $s=microtime(get_as_float)
Tabela 5.3: Tabela de parmetro da funo microtime().

Parmetro
get_as_float

Descrio
Opcional. Quando definido para true, especifica que a funo deve retornar um float, em vez de uma seqncia de nmeros inteiros.

Fonte: Elaborada pelo autor

<Ateno: Se o opcional get_as_float definida para TRUE ento um float (em segundos) retornado.> <Ateno: O parmetro get_as_float foi adicionado ao PHP 5!> Exemplo <?php // Captura o tempo neste instante $time_start = microtime(true); // Aguarda 1 s (microsegundo ~= 0,000001 usleep(1000000); // Captura o tempo apos 1 microsegundo $time_end = microtime(true); // Mostra a diferenca entre a captura anterior e a atual $time = $time_end - $time_start; echo "J se passaram $time segundos\n"; ?> A sada do cdigo acima poderia ser: J se passaram 1.0000171661377 segundos time() A funo time() retorna o tempo atual como um timestamp Unix

Sintaxe 67

time(void) <Ateno: Chamar essa funo idntica a chamar a funo mktime() sem parmetros, ou a data com parmetro "U".> Exemplo <?php $t=time(); echo($t . "<br />"); //Traduz o dia da semana (Ingls/Portugus) switch(date("D")) { case "Sun": $semana = "Domingo "; break; case "Mon": $semana = "Segunda-feira "; break; case "Tue": $semana = "Tera-feira "; break; case "Wed": $semana = "Quarta-feira "; break; case "Thu": $semana = "Quinta-feira "; break; case "Fri": $semana = "Sexta-feira "; break; case "Sat": $semana = "Sbado "; break; } echo $semana . (date("d F Y",$t)); ?> A sada do cdigo acima poderia ser: 1300446023 Sexta-feira 18 March 2011 Note que o nome do ms ficou em Ingls. Entretanto, se desejar, pode-se traduzir, bastando para isto criar uma estrutura switch-case, como a construda para os dias da semana.

5.2. Estrutura condicional if ... else


Declaraes condicionais so usadas para executar aes diferentes, baseadas em diferentes condies. Muitas vezes, quando escrevemos algum cdigo, desejamos executar aes diferentes para diferentes decises. 68

Podemos usar a declarao condicional em seu cdigo para fazer isso. Assim, em PHP, temos as seguintes declaraes condicionais:

if - use esta instruo para executar um cdigo somente se uma condio especificada for verdadeira ... Else if - usar essa instruo para executar algum cdigo se uma condio for verdadeira e um outro cdigo se a condio falsa ... Elseif .... else se - usar esta instruo para selecionar um dos vrios blocos de cdigo a ser executado Instruo switch - use esta instruo para selecionar um dos muitos blocos de cdigo a ser executado (como veremos no prximo tpico)

5.2.1 A estrutura if Use a instruo if para executar um cdigo somente se uma condio especificada for verdadeira. Sintaxe if (condio) cdigo a ser executado se condio verdadeira; O exemplo a seguir ir imprimir "Oba!!! Hoje sexta-feira!" se o dia atual uma sexta-feira: <html> <body> <?php $d=date("D"); if ($d=="Fri") echo " Oba!!! Hoje sexta-feira!"; ?> </body> </html> Observe que no existe uma condio FALSA (else) nesta sintaxe. O cdigo executado apenas se a condio especificada for VERDADEIRA.

69

5.2.2 A declarao if ... else


Use a instruo if ... else para executar algum cdigo se uma condio for verdadeira e um outro cdigo se uma condio falsa. Sintaxe if (condio) codigo a ser executado se condio verdadeira; else codigo a ser executado se condio falsa; Exemplo O exemplo a seguir ir imprimir "Oba!!! Hoje sexta-feira!" se o dia atual uma sexta-feira, caso contrrio ele vai de sada "Tenha um bom dia!": <html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Oba!!! Hoje sexta-feira!"; else echo " Tenha um bom dia!"; ?> </body> </html> Se mais de uma linha deve ser executada, tanto se a condio for verdadeira ou falsa, as linhas devem ser colocadas dentro de chaves { e }: <html> <body> <?php $dia=date("D"); if ($dia == "Fri") { echo "Bom dia!<br>"; echo "Hoje sexta-feira!"; echo "Vamos fazer um Happy Hour?"; } ?> </body> 70

</html>

5.2.3 A instruo elseif ...


Use a instruo composta: if .... elseif ... else para selecionar um dos vrios blocos de cdigo a ser executado. Sintaxe if (condio 1) codigo a ser executado se condio1 verdadeira; else codigo a ser executado se condio1 falsa; elseif (condio 2) codigo a ser executado se condio2 verdadeira; else codigo a ser executado se condio2 falsa; Exemplo O exemplo a seguir ir imprimir "Oba!!! Hoje sexta-feira!" se o dia atual uma sexta-feira, e "Hoje domingo!" se o dia atual for domingo. Caso contrrio, a sada ser "Bom dia a todos!": <html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Oba!!! Hoje sexta-feira!"; elseif ($d=="Sun") echo "Hoje domigo!"; else echo "Bom dia a todos!"; ?> </body> </html>

71

5.2.4 Utilizando operador tercirio como estrutura de deciso Outra forma de controle refere-se ao uso do operador ternrio (veja operadores de comparao) que pode ser usado da seguinte maneira:
<? Php $v=1; $ R = ( 1 == $ v )? 'Sim' : 'No' ; // em outras palavras: if($v ==1) echo Sim; else echo No // onde $R = Sim $ R = ( 3 == $ v )? 'Sim' : 'No'; // em outras palavras: if($v ==1) echo Sim; else echo No // onde $R = No echo ( 1 == $ v )? 'Sim' : 'No' , // "sim" ser impresso // Outra forma: $ V = Qualquer Valor" ; $ R = ( $V )? "nenhum valor": ; $ V = ; echo ( $V )? "nenhum valor": ; // "nenhum valor" ser impresso porque $V FALSE ?>

Como podemos observar no cdigo anterior, ao escrevermos, por exemplo, ($var = = 1)? $V = 0: $V = 1; significa estabelecer a questo: Se varivel $var igual a 1, ento $V recebe 0; seno, $V recebe 1. Como sabemos, possvel ter ifs "aninhados" dentro de uma nica declarao, utilizando parnteses adicionais. Por exemplo, em vez de termos: <? Php if ( $ a == 1 || $ a == 2 ) { if ( $ b == 3 || $ b == 4 ) { if ( $ c == 5 || $ d == 6 ) { / / Bloco de cdigo, aqui. } } } ?> Podemos simplesmente escrever: <?php if (( $ a == 1 | | $ a == 2 ) & & ( $ b == 3 | | $ b == 4 ) & & ( $ c == 5 | | $ c == 6 )) { / / Bloco de cdigo, aqui. } ?>

72

5.3 Instruo switch


Como dito anteriormente, as declaraes condicionais so usadas para executar aes diferentes baseadas em diferentes condies. Com a instruo switch no diferente. Assim, use essa para selecionar um dos muitos blocos de cdigo para ser executado. Sintaxe switch (n) { case label1: cdigo a ser executado se n for igual a label1; break; case label2: cdigo a ser executado se n for igual a label2; break; default: cdigo a ser executado se n for diferente de todas as opes; } O cdigo anterior executado da seguinte forma: primeiro ns temos uma nica expresso n (na maioria das vezes uma varivel), que avaliada uma vez. O valor da expresso ento comparado com os valores para cada caso na estrutura. Se houver uma correspondncia, o bloco de cdigo associado a esse processo executado. <Ateno: Ateno: use o comando break para evitar que o prximo cdigo no seja executado automaticamente. A instruo default usada se nenhuma correspondncia nos cases for encontrada.> Exemplo <html> <body> <?php switch ($valor) { case 1: echo "valor igual a 1"; break; case 2: echo "valor igual a 2"; break; case 3: echo "valor igual a 3"; break; 73

default: echo "valor diferente de 1, 2 e 3"; } ?> </body> </html>

Resumo O objetivo dessa aula foi tratar a respeito do objeto de Data e hora. Tivemos, aqui, a oportunidade de visualizar a maioria das funes e atributos do objeto Date. Estudamos sobre como criar instncias de data e hora e manipul-las conforme nossas necessidades. Vimos sobre as diversas atribuies e atributos de operaes dos objetos. Aprendemos, tambm, sobre as estruturas condicionais if... else e swith... case. Estudamos como utiliz-los e estrutur-los atravs de exemplos e visualizaes de resultados.

Atividades de aprendizagem: 1) O aluno deve digitar todos os cdigos exemplos deste captulo e execut-los, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) O aluno deve escolher cinco funes da tabela listada neste captulo (data) que no foram citadas nos exemplos e escrever scripts em PHP que demonstrem as suas respectivas funcionalidades, utilizando chamadas a funes com passagem de parmetros. 3) Utilizando a estrutura de deciso if..else, crie um programa em PHP que analise 4 variveis numricas ($a, $b, $c e $d, por exemplo) e mostre seus respectivos contedos (utilizando instruo echo) em ordem crescente, independente do valor que cada varivel possa ter. 4) Atribua 3 valores quais as variveis $a, $b e $c. Esses valores representam os coeficientes da equao de segundo grau dada por: ax2 + bx + c. Elabore um script em PHP que, inicialmente, verifique se os valores lidos formam uma equao do 2o grau (a != 0), e, posteriormente, se formarem, calcule as respectivas razes da equao, mostrando-as com o comando echo. 5) Atribua 3 valores quais as variveis $a, $b e $c. Esses valores representam os comprimentos dos lados de um tringulo. Crie um programa em PHP que verifique se estes valores formam um tringulo. Para formar um tringulo, um lado no pode ser maior que a soma dos outros dois. Depois, verifique que tipo de tringulo : 74

a. Equiltero = trs lados iguais; b. Issceles = dois lados iguais e um diferente; c. Escaleno = trs lados diferentes. <Atividades de aprendizagem: O aluno de postar os cdigos aqui desenvolvidos no frum criado para esta atividade, bem como um breve relatrio descrevendo os resultados das respectivas execues.>

75

5. Aula 6 PHP: conceitos V

Objetivos Entender as estruturas de repetio while e for. Conhecer sobre a criao e manipulao de funes externas. Construir funes e entender seu funcionamento. Saber como incluir arquivos PHP dentro das pginas..

6.1 A estrutura de repetio


O comando while executar um bloco de cdigo um nmero especificado de vezes ou enquanto uma condio especificada for verdadeira. Normalmente, quando escrevemos blocos de cdigos, desejamos que eles sejam executados vrias vezes seguida. Em vez de adicionar vrias linhas iguais e repetidas em um script, podemos usar loops para realizar uma tarefa como essa, em poucas linhas. Em PHP, temos as seguintes declaraes de looping:

while - percorre um bloco de cdigo enquanto uma condio especificada for verdadeira do ... while - percorre um bloco de cdigo uma vez e depois repete o ciclo enquanto a condio especificada for verdadeira for - percorre um bloco de cdigo um determinado nmero de vezes foreach - percorre um bloco de cdigo para cada elemento em uma matriz

6.1.1 O lao while


O lao while executa um bloco de cdigo enquanto uma condio for verdadeira. Sintaxe while (condio) { 76

cdigo a ser executado; } Exemplo O exemplo abaixo define um loop que comea com $i = 1, aumentando de 1 em 1, termina com $i = 10. <html> <body> <?php $i=1; while($i <= 10) { echo "linha " . $i . "<br>"; $i++; } ?> </body> </html> A sada ser: linha 1 linha 2 linha 3 linha 4 linha 5 linha 6 linha 7 linha 8 linha 9 linha 10

6.1.2 O lao do ... while


O lao do ... while, sempre ir executar o bloco de cdigo uma primeira vez. Em seguida ele ir verificar a condio e repetir o loop enquanto a condio for verdadeira. Sintaxe do { Cdoigo a ser executado;; } 77

while (condio);

Exemplo O exemplo abaixo define um loop que comea com $i = 1. Assim, a sada linha1 ser mostrada e as demais linhas sero mostradas enquanto a condio dor verdadeira. <html> <body> <?php $i=1; do { $i++; echo "linha " . $i . "<br>"; } while ($i<=10); ?> </body> </html> A sada ser: linha 1 linha 2 linha 3 linha 4 linha 5 linha 6 linha 7 linha 8 linha 9 linha 10

6.1.O Looping for


Loops for executam um bloco de cdigo um nmero especificado um nmero de vezes e usado quando voc sabe de antemo quantas vezes o script deve ser executado. Sintaxe 78

for (inicializao; condio; incremento) { cdigo a ser executado; } Parmetros (separadas por vrgula):

inicializao : Geralmente usado para definir um contador (inicializao da varivel de controle) condio : avalia para cada iterao do loop. Se for avaliado como TRUE, o loop continuar a ser executado. Se for avaliado como FALSE, o loop termina. incremento : Geralmente usado para incrementar um contador (mas pode ser qualquer cdigo a ser executado no final do loop)

<Ateno: Cada um dos parmetros acima pode ser vazio ou ter mltiplas expresses > Exemplo O exemplo abaixo define um loop que comea com $i = 1. O loop vai continuar a funcionar enquanto $i for inferior ou igual a 10. o contador $i vai aumentar de 1 em 1 cada iterao ou lopping, conforme exemplo ilustrada a seguir: <html> <body> <?php for ($i=1; $i<=10; $i++) { echo "Linha " . $i . "<br>"; } ?> </body> </html> A sada ser: linha 1 linha 2 linha 3 linha 4 linha 5 linha 6 linha 7 linha 8 linha 9 linha 10

6.1.4 O lao foreach


79

O loop foreach usado para percorrer matrizes. Sintaxe foreach ($matriz as $valor) { cdigo a ser executado;; } Para cada iterao, o valor do elemento da matriz atual atribudo a $valor (e o ponteiro do array movido de um elemento) - para a prxima iterao do lao, voc estar olhando para o valor do elemento seguinte da matriz. Exemplo O exemplo a seguir demonstra um loop que ir imprimir os valores da matriz de dados: <html> <body> <?php $mat=array("Amarelo","Azul","Branco"); foreach ($mat as $valor) { echo $valor . "<br>"; } ?> </body> </html> A sada dever ser a seguinte: Amarelo Azul Branco

6.2

Funes
O verdadeiro poder do PHP vem de suas funes. Nele, existem mais de 700

funes embutidas.

80

6.2.1 Funes internas


Existe uma infinidade de funes j construdas no PHP. <Saiba mais: Funes complementares podem ser visualizadas atravs do site oficial do PHP: http://br.php.net/manual/pt_BR/ >

6.2.2 A criao de funes


Neste captulo vamos mostrar como criar suas prprias funes. As funes so normalmente executadas por uma chamada direta a elas em qualquer parte do corpo da pgina. Sintaxe function functionName() { cdigo a ser executado; } Orientaes sobre a criao de funes no PHP:

d um nome a funo que reflita o que a funo faz; o nome da funo pode comear com uma letra ou um sublinhado (no um nmero); nomes de funes no devem conter caracteres especiais, tais como: acentos e pontuaes

Exemplo Uma funo que escreve um nome quando ela chamada: <html> <body> <?php function meuNome() { echo " William Sallum"; } echo "Meu nome : "; meuNome(); ?> </body> </html> 81

A sada respectiva ser: Meu nome : William Sallum

6.2.3 Adicionando parmetros s funes


Para adicionar mais funcionalidade funo, ns podemos adicionar parmetros. Um parmetro como uma varivel. Os parmetros so especificados aps o nome da funo, dentro dos parnteses, tal como visto nos exemplos a seguir. Exemplo 1 No exemplo a seguir so escritos vrios objetos na cor azul, com a passagem de um parmetro: <html> <body> <?php function meusObjetos($obj) { echo $obj . " Azul.<br>"; } $a = "O meu Carro "; meusObjetos ($a); $a = Minha casa "; meusObjetos ($a); $a = "Meu time "; meusObjetos ($a); ?> </body> </html> A sada ser: O meu Carro Azul. Minha casa Azul. Meu time Azul.. Exemplo 2 A seguinte funo trabalha com dois parmetros. Veja o exemplo. <html> <body> <?php 82

function areaRet($base,$altura) { $area = $base * $altura / 2; echo "O retngulo com base=$base e altura=$altura tem rea ".$area."<br>"; } areaRet (5,4); areaRet (7,3); areaRet (12.5,6); ?> </body> </html> A sada ser: O retngulo com base=5 e altura=4 tem rea 10 O retngulo com base=7 e altura=3 tem rea 10.5 O retngulo com base=12.5 e altura=6 tem rea 37.5 Para deixar uma funo retornar um valor, vamos utilizar a instruo return, conforme o exemplo a seguir. Exemplo 3 <html> <body> <?php function prod($x,$y) { $total=$x * $y; return $total; } echo "3 * 5 = " . prod(3,5); ?> </body> </html> A sada ser: 3 * 5 = 15

6.3 Incluindo arquivos - Server Side Includes (SSI)


O PHP permite inserir o contedo de um arquivo PHP em um outro arquivo PHP e para isto basta usarmos a funo include() ou a funo require(). 83

As duas funes so idnticas em todos os sentidos, exceto pela manipulao de erros:


include() gera um aviso, mas o script continuar a execuo require() gera um erro fatal, e o script para de executar Estas duas funes so usadas para criar funes, cabealhos, rodaps ou

elementos que sero reutilizados em vrias pginas. Estes comandos so muito teis no sentido de poupar reprogramao de scripts. Por exemplo, podemos criar um script de menu que poder ser utilizado por diversos outros scripts, bastando, para isto, que estes scripts faam a chamada (utilizando include() ou requeire()) a estas funes, em vez de atualizar os links em todas as suas pginas web.

6.3.1 A funo include()


A funo include() insere todo o contedo de um arquivo especificado no arquivo atual. Se ocorrer um erro, a funo include() gera um aviso, mas o script continuar a execuo. Exemplo 1 Suponha que voc tenha um arquivo de cabealho padro, chamado "cabec.php". Para incluir o arquivo de cabealho em uma pgina, use a funo include(): <html> <body> <?php include("cabec.php"); ?> <p>Esta pgina possui um cabealho padro, incorporado pelo arquivo cabec.php </p> </body> </html> Exemplo 2 Suponha que temos um arquivo de menu padro, chamado "menu.php" e que deve ser usado em todas as pginas. Este arquivo pode ser do tipo, assim: <a href="/index.php">Home</a> 84

<a href="/cabec_cefetmg.php">CEFET-MG</a> <a href="/cabec_ufmg.php">UFMG</a> <a href="/cabec_etec.php">e-TEC</a> <a href="/contato.php">Contato</a> Todas as pginas do site deve incluir este arquivo menu. Aqui est como isso pode ser feito: <html> <body> <div class="leftmenu"> <?php include("menu.php"); ?> </div> <p>Esta pgina possui um menu padro, incorporado pelo arquivo menu.php </p> </body> </html> Se verificarmos o cdigo fonte da pgina acima em um navegador, ele ser parecido com o abaixo ilustrado: <html> <body> <div class="menu_menu"> <?php <a href="/index.php">Home</a> <a href="/cabec_cefetmg.php">CEFET-MG</a> <a href="/cabec_ufmg.php">UFMG</a> <a href="/cabec_etec.php">e-TEC</a> <a href="/contato.php">Contato</a> ?> </div> <p>Esta pgina possui um menu padro, incorporado pelo arquivo menu.php </p> </body> </html>

6.3.2 A funo require()


A funo require() idntica a include(), exceto pelo fato dela lidar com os erros de forma diferente. 85

Se ocorrer um erro durante a execuo do script, a funo include() gerar um aviso, mas o script continuar a execuo. Entretanto, a funo require() gerar um erro Em suma, recomenda-se usar a funo require() ao invs de include(), pois os scripts no devem continuar aps um erro.

Resumo Aprendemos nesta aula sobre como estruturar e operar as estruturas de repetio tais como do lao (ou looping) while, que pode manter iteraes mediante uma condio lgica verdadeira; do lao do... while, semelhante a estrutura while, diferenciando apenas no fato que na lao do... while, sempre ser executada a primeira iterao independentemente da condio lgica ser ou no verdadeira; do lao for que executa iteraes finitas, mediante incio e fim numericamente determinados e do lao foreach que executa iteraes conforme o nmero de elementos dentro de um objeto. Estudamos tambm sobre com criar funes personalizadas, conforme necessidades estabelecidas pelo programador. Vimos como trabalhar nas assinaturas (estrutura nica que identifica cada funo) das funes. Conhecemos sobre a tcnica de se criar funes com ou sem parmetro de entrada, bem como seu corpo de execuo e os retornos de valores como resultado da operao dos parmetros de entrada e das instrues do corpo da funo. Finalmente, Estudamos como incluir arquivos ou pedaos de cdigos fontes PHP externos a um programa, utilizando as instrues de insero de arquivos: include() e require() e qual a diferena entre uma e outra.

Atividades de aprendizagem: 1) O aluno deve digitar todos os cdigos exemplos deste captulo e execut-los, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) Faa uma funo PHP que receba um nmero inteiro, calcule e imprima a tabuada multiplicativa desse nmero. 3) Crie uma funo em PHP que, utilizando estrutura de repetio, receba como parmetro um nmero inteiro positivo qualquer, apure todos os nmeros primos que existirem entre esse nmero e o nmero 1 e mostre-os. 86

<Atividades de aprendizagem: O aluno de postar os cdigos aqui desenvolvidos no frum criado para esta atividade, bem como um breve relatrio descrevendo os resultados das respectivas execues.>

87

6. Aula 7 PHP: conceitos VI


Objetivos Utilizar formulrios e os tipos de transferncias de dados entre pginas utilizando os Operadores $_GET e $_POST.

7.1 Manipulao de formulrios


O PHP utiliza das variveis de ambiente: $_GET e $_POST para recuperar informaes de formulrios produzidas pelos usurios. O mais importante a se notar, quando se lida com formulrios HTML e PHP, que qualquer elemento de formulrio de uma pgina HTML, automaticamente estar disponvel para seus scripts PHP.

Exemplo O exemplo a seguir contm um formulrio HTML com dois campos de entrada e um boto de envio: <html> <body> <form action="pag_entrada.php" method="post"> Nome: <input type="text" name="ID" > Ms_Nascimento: <input type="text" name="ms" > <input type="submit" > </form> </body> </html> Uma vez preenchido o formulrio acima e se clicando no boto enviar, os dados desse formulrio sero enviados para um arquivo PHP, chamado "pag_entrada.php", tal como identificado como atributo do form acima. Agora vamos mostrar como o programa que dever receber estes dados pode se parecer: <html> <body> Ol <?php 88

echo $_GET["ID"]; ?> !<br> Voc nasceu em <?php echo $_GET["mes"]; ?> </body> </html> Supondo que nos campos ID e ms do formulrio sejam preenchidos como William Sallum e Maio, respectivamente, a sada poderia ser algo assim: Ol William Sallum! Voc nasceu em Maio. A forma de se passar dados de formulrios HTML para programas do PHP conforme mostrado acima. No PHP as variveis especiais $_GET e $_POST sero explicadas nos prximos captulos.

7.1.1 Validao de Formulrio


As entradas de formulrios do usurio devem ser validadas no browser, sempre que possvel (atravs de scripts tal como utilizando JavaScript). A validao dos dados no navegador mais rpida e reduz a carga do servidor. Voc deve considerar a validao no servidor se a entrada do usurio ser inserida em um banco de dados; e mesmo assim,. A validao deve ser considerada no prprio cliente (browser local). Uma boa maneira de validar um formulrio no servidor enviar o formulrio para si, em vez de saltar para uma pgina diferente. O usurio vai ento receber as mensagens de erro na mesma pgina do formulrio. Isto torna mais fcil descobrir o erro. Enviar os dados para si significa, ou colocar o nome do seu programa no atributo de formulrio, action (por exemplo: se seu arquivo de programa, onde contm o formulrio a ser enviado, se chama meuProg.php) tal como action=meuPorg.php, ou atribuir o smbolo # no lugar do prprio nome do arquivo, tal como: action=#.

7.1.2 A funo $_GET


A varivel super global $_GET usada para coletar os valores de um formulrio com o method = "get". 89

A informao enviada num formulrio com o mtodo GET visvel para todos (que ser exibido na barra de endereos do navegador) e tem limites para a quantidade de informao a enviar. Veja o exemplo a seguir. Exemplo <form action="pag_entrada.php" method="get"> Name: <input type="text" name="ID" /> Mes: <input type="text" name="mes" /> <input type="submit" value=Enviar /> </form> Quando o usurio clica no boto "Enviar", a URL enviada para o servidor poderia ser algo parecido como isto: http://www.cefetmg.br/pag_entrada.php?ID=William&mes=Maio O arquivo "pag_entrada.php" agora pode usar a varivel super global $_GET para coletar os dados do formulrio (os nomes dos campos do formulrio ser automaticamente as chaves do array $_GET): Ol <?php echo $_GET["ID"]; ?> !<br> Voc nasceu em <?php echo $_GERT["mes"]; ?>

7.1.3 Usando method = "get"?


Quando usamos o mtodo = "GET" em formulrios HTML, todos os nomes de variveis e valores so exibidos no URL. <Ateno: Este mtodo no deve ser usado quando o envio de senhas ou outras informaes sigilosas!> No entanto, isso pode ser til em alguns casos, tal como didaticamente no ensino da linguagem. <Ateno: O mtodo GET no adequado para valores de variveis muito grandes. No devem ser usados com valores superiores a 2000 caracteres.> 90

7.1.4 A funo $_POST


A funo interna $_POST usada para coletar os valores de um formulrio com o method = "POST". A informao enviada num formulrio com o mtodo POST invisvel para os outros e no tem limites para a quantidade de informao a enviar. <Ateno: No entanto, por padro, existe um tamanho mximo de 8 Mb para o mtodo POST e que pode ser alterado pela configurao de post_max_size no arquivo php.ini.> Exemplo <form action="pag_entrada.php" method="post"> Name: <input type="text" name="ID" /> Mes: <input type="text" name="mes" /> <input type="submit" value=Enviar /> </form> Quando o usurio clica no boto "Enviar", o URL ser parecido com este: http://www.cefetmg.br/pag_entrada.php Note que neste URL, diferente do exemplo apresentado em $_GET, as variveis e respectivos contedos no aparecem na linha de endereo. O arquivo "pag_entrada.php" agora podem usar a funo $_POST para coletar dados do formulrio (os nomes dos campos do formulrio ser automaticamente as chaves do array $_POST): Welcome <?php echo $_POST["fname"]; ?>!<br> You are <?php echo $_POST["age"]; ?> years old.

7.1.5 Usando o parmetro method = "POST"?


A informao enviada num formulrio com o mtodo POST invisvel para os outros e no tem limites para a quantidade de informao a enviar. No entanto, porque as variveis no so exibidas na URL, no possvel registrar a pgina.

91

7.2 Upload de arquivos


Com o PHP, possvel fazer upload de arquivos para o servidor. O PHP permiti que os usurios faam upload de arquivos de um formulrio o que muito til em vrias circunstncias. Observe o seguinte formulrio HTML para upload de arquivos: <html> <body> <form action="arq_upload.php" method="post" enctype="multipart/form-data"> Arquivo para Up-load: <input type="file" name="arq" id="arq" > <br> <input type="submit" name=" Enviar" value="Enviar" /> </form> </body> </html> Observe o seguinte, sobre o formulrio HTML acima:

O atributo enctype do <form> especifica qual tipo de contedo ser usado ao enviar o formulrio. O atributo "Multipart / form-data" utilizado quando um formulrio enviar dados binrios, tais como imagens, vdeos, sons, etc. O atributo type = "file" da tag <input> especifica que a entrada deve ser processada como um arquivo. Por exemplo, quando visualizados em um navegador, haver um boto ao lado do campo de entrada que, ao ser pressionado, disponibilizar a janela do Windows Explorer com finalidade de que o usurio procure e selecione o arquivo a ser enviado (upload).

<Ateno: Permitir que os usurios faam upload de arquivos um grande risco segurana. importante analisar as condies de permisses para permitir que apenas os usurios de confiana possam realizar o upload de arquivos.> Abaixo se encontra a pgina que dever ser apresentada conforme o HTML descrito anteriormente:

92

Figura 7.1: Janela resultado de formulrio HTML com utilizao de campo FILE. Fonte: Elaborado pelo autor e visualizado pelo Internet Explorer verso 9.0

Nesse exemplo, em especfico, podemos observar que o arquivo selecionado o logo_cefet.gif, que se encontra no endereo: C:\Users\Sallum\Documents\, da mquina do usurio.

7.2.1 Criando script que recebe upload de arquivo de envio


O arquivo "arq_upload.php" contm o cdigo que faz upload de um arquivo, conforme abaixo: <?php if ($_FILES["arq"]["error"] > 0) { echo "Erro: " . $_FILES["arq"]["error"] . "<br>"; } else { echo "Arquivo para Upload: " . $_FILES["arq"]["name"] . "<br >"; echo "Tipe: " . $_FILES["arq"]["type"] . "<br>"; echo "Tamanho: " . round(($_FILES["arq"]["size"] / 1024), 2) . " Kb<br>"; echo "Local de armazenamento: " . $_FILES["arq"]["tmp_name"]; } ?> Usando a matriz global representada pela varivel global $_FILES, pode mos carregar arquivos de um computador cliente para o servidor remoto. Nesse script, o primeiro parmetro o nome do formulrio de entrada, o segundo o "tipo" do arquivo, o terceiro o "Tamanho" do arquivo (em bytes) e, finalmente, o quarto, o local de destino "tmp_name", onde este arquivo dever ser armazenado Assim, a relao destas palavras chaves, com suas respectivas sintaxes :

$_FILES ["Arquivo"] ["name"] - o nome do arquivo enviado $_FILES ["Arquivo"] ["type"] - o tipo do arquivo enviado $_FILES ["Arquivo"] ["size"] - o tamanho em bytes do arquivo enviado 93

$_FILES ["Arquivo"] ["tmp_name"] - o nome da cpia temporria do arquivo armazenado no servidor $_FILES ["Arquivo"] ["error"] - o cdigo de erro resultante do upload de arquivos

<Ateno: como visto anteriormente, a funo round(), aqui apresentada, arredonda o nmero em 2 casas decimais.> Aps clicar no boto Enviar, a seguir encontra-se ilustrada a sada produzida pelo script PHP, conforme mostrado no quadro anterior.

Figura 7.2: Janela refletindo o resultado do upload. Fonte: Elaborado pelo autor e visualizado pelo Internet Explorer verso 9.0

Esta uma maneira muito simples de se fazer upload de arquivos. Por razes de segurana, voc deve adicionar restries sobre o que o usurio tem permisso para enviar.

7.2.2 Restries em upload


As vezes, por medida de segurana e administrao de espao fsico nos servidores, faz-se necessrio determinar regras e/ou restries dos uploads. Da, apresentamos a seguir, um script, exemplo, com esta finalidade. Neste roteiro, acrescentamos algumas restries para a execuo de upload do arquivo. Aqui, o usurio s pode fazer upload de arquivos GIF ou JPEG e o tamanho do arquivo deve ser inferior a 20 kb. Observe o script abaixo: <?php if ((($_FILES["arq"]["type"] == "image/gif") || ($_FILES["arq"]["type"] == "image/jpeg") || ($_FILES["arq"]["type"] == "image/pjpeg")) && ($_FILES["arq"]["size"] < 20000)) { if ($_FILES["arq"]["error"] > 0) { echo "Erro: " . $_FILES["arq"]["error"] . "<br>"; } else { echo "ARQUIVO PARA UPLOAD: " . $_FILES["arq"]["name"] . "<br>"; 94

echo "TIPO: " . $_FILES["arq"]["type"] . "<br />"; echo "TAMANHO: " . round(($_FILES["arq"]["size"] / 1024), 2) . " Kb<br>"; echo "LOCAL DE ARMAZENAMENTO: " . $_FILES["arq"]["tmp_name"]; } } else { echo "Arquivo invlido!"; } ?> <Ateno: Para o Internet Explorer reconhecer jpg, o tipo deve ser pjpeg, para o Firefox deve ser jpeg.>

7.2.3 PHP: gravando o arquivo transferido


Os exemplos acima criar uma cpia temporria dos arquivos enviados na pasta temporria do Apache no servidor, que neste nosso exemplo : C:\xampp\tmp\ Os arquivos temporrios copiados desaparecem quando o script termina. Para armazenar o arquivo enviado preciso copi-lo para um local diferente. Nesse sentido desenvolvemos os scripts abaixo: <?php if ((($_FILES["arq"]["type"] == "image/gif") || ($_FILES["arq"]["type"] == "image/jpeg") || ($_FILES["arq"]["type"] == "image/pjpeg")) && ($_FILES["arq"]["size"] < 20000)) { if ($_FILES["arq"]["error"] > 0) { echo "Return Code: " . $_FILES["arq"]["error"] . "<br />"; } else { echo "ARQUIVO PARA UPLOAD: " . $_FILES["arq"]["name"] . "<br>"; echo "TIPO: " . $_FILES["arq"]["type"] . "<br />"; echo "TAMANHO: " . round(($_FILES["arq"]["size"] / 1024), 2) . " Kb<br>"; echo "ARQUIVO TEMPORRIO: " . $_FILES["arq"]["tmp_name"]; if (file_exists($_FILES["arq"]["name"])) { echo "<br>O ARQUIVO: ". $_FILES["arq"]["name"] . " J EXISTE. "; } else { move_uploaded_file($_FILES["arq"]["tmp_name"], $_FILES["arq"]["name"]); echo "<br>ARMAZENADO COMO: " . $_FILES["arq"]["name"]; } } } else { echo "ARQUIVO INVLIDO!"; 95

} ?> O script acima verifica se o arquivo j existe, se no, ele copia o arquivo para a pasta a pasta que representa www, local. A pgina gerada pelo script acima assim ilustrada:

Figura 7.3: Janela refletindo o resultado do Upload conforme cdigo-fonte anterior. Fonte: Elaborado pelo autor e visualizado pelo Internet Explorer verso 9.0.

Resumo Vimos nesta aula o poder que os formulrios HTML assumem transformando-se de simples formulrios estticos formulrios dinmicos. Estudamos aqui a criao e manipulao de formulrios, tal como vistos nas aulas de HTML. Para tal, aprendemos como transport-los entre pginas. Como vimos e dentro desse contexto, esta transao de dados somente tornou-se possvel com a utilizao das funes $_GET e $_POST. Estudamos a tcnica de se fazer upload de arquivos utilizando formulrios e a funo $_FILE. Esta funo permite disponibilizar em matriz os dados bsicos de arquivos selecionados para sua transferncia. Assim, estudamos que utilizando a funo move_uploaded_file(), podemos transferir um arquivo de um lugar para outro.

Atividade de aprendizagem: 1) O aluno deve digitar todos os cdigos exemplos deste captulo e execut-los, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) Ao clicar no boto Enviar do formulrio HTML abaixo ilustrado, o mesmo transfere todos os dados desse formulrio para o arquivo mostra_dados.php. Escreva o programa mostra_dados.php que dever receber estes dados e, em seguida, mostr-los utilizando a tag de cabealho <h3>. 96

Figura 7.4: Modelo de formulrio. Fonte: Elaborado pelo autor e visualizado pelo Internet Explorer verso 9.0.

Eis, abaixo, o cdigo fonte (apenas da parte do formulrio) acima ilustrado:

Figura 7.5: Cdigo-fonte PHP que elabora o formulriuo visualizado na figura anterior. Fonte: Elaborado pelo autor.

<Atividades de aprendizagem: Ao final desta atividade, o aluno de postar os cdigos aqui desenvolvidos no frum criado para este fim.>

97

7. Aula 8 PHP: conceitos VII


Objetivos Compreender a conexo com banco de dados. Entender a manipulao e armazenamento de dados.

8.1 Conexo de Banco de Dados com PHP


O MySQL um sistema de bando de dados gratuito o qual muito utilizado com a linguagem PHP. MySQL o sistema mais popular de banco de dados open-source j existente. E como sistema de banco de dados, os dados do MySQL so armazenadas em objetos de banco de dados chamado de tabelas bidimensionais. Uma tabela bidimensional uma coleo de entradas de dados relacionados e que consiste em colunas e linhas. Bancos de dados so teis quando o armazenamento de informaes se d de forma categrica, ou seja, por categoria. Por exemplo: uma empresa pode ter um banco de dados com as seguintes tabelas: "Funcionrios", "Produtos", "Clientes" e "Pedidos".

8.1.1 Uma tabela de Banco de Dados


Um banco de dados, na maioria das vezes, contm uma ou mais tabelas. Cada tabela identificada por um nome (por exemplo, "turmas" ou "alunos"). As tabelas contm registros (linhas) contendo dados pertinentes aos contextos dessas tabelas, pou seja: as respectivas finalidades delas. Abaixo se encontra um exemplo de uma tabela chamada "alunos":
Tabela 8.1: Tabela Exemplo de registros de pessoas. Entrada 2010 2011 Nome Jos A.W. C. Maria K. J. Endereo R. das flores, 34 Av. imaginria, 123 R. da invenso, 10 Formiga Cajuru Cidade Belo Horizonte

2011 Antonio L. Fonte: Elaborada pelo autor

A tabela anterior contm trs registros dispostos em 3 linha (um para cada aluno) e quatro colunas (Entrada, Nome, Endereo e Cidade).

98

Consultas Uma consulta uma pergunta (ou um pedido de informao), formulada atravs de linguagem prpria do Banco de Dados; no caso do MySQL a prpria SQL Structured Query Language, ou Linguagem de Consulta Estruturada. A SQL uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das caractersticas originais do SQL foram inspiradas na lgebra relacional. Outras informaes a respeito dessa magnfica linguagem podem ser obtidas em: http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/sql.html Com o MySQL, podemos consultar um banco de dados para obter informaes especficas e ter um conjunto de registros retornado, mediante uma consulta prvia. Como exemplo de utilizao da linguagem SQL no Banco de Dados MySQL, vejamos a seguinte consulta: SELECT Nome FROM alunos A consulta acima selecionar todos os dados de "Nome" da coluna da tabela de alunos, e ir retornar um conjunto de registros como este:
Tabela 8.2: Tabela com listagem de nomes. Nome Jos A.W. C. Maria K. J. Antonio L. Fonte: Elaborada pelo autor

8.1.2 Criando uma conexo com um Banco de Dados MySQL


Antes de acessar dados em um banco de dados, necessrio que estabeleamos uma conexo com este banco. No PHP, isso feito com a funo mysql_connect (parmetros). Sintaxe mysql_connect(servidor, usurio, senha); Tabela 8.3: Tabela com parmetros da funo mysql_connect(). Parmetro Servidor Descrio Opcional. Especifica o servidor a se conectar. O valor padro "localhost: 3306" ou seja: computador (localhost) e porta de conexo (3306 que padro do MySQL) 99

usurio senha

Opcional. Especifica a identificao do usurio para login. O valor padro o nome do usurio cadastrado previamente no servidor. Opcional. Especifica a senha para login. O padro "" (vazio)

Fonte: Elaborada pelo autor

<Ateno: Existem outros parmetros, mas os listados acima so os mais importantes. > <Saiba mais: Visite o endereo a seguir para mais referncias a respeito: http://br.php.net/manual/pt_BR/function.mysql-connect.php > Exemplo No exemplo a seguir ns armazenamos a conexo em uma varivel ($conexao) para uso posterior no script. A funo interna "die()" ser executada se a conexo falhar e a funo msql_erro() dever informar o tipo de erro ocorrido: <?php $conexo = mysql_connect("localhost","sallum",""); if (!$conexao) { die(Falha na conexo: . mysql_error()); } ?>

8.1.3 Finalizando uma conexo


A conexo ser fechada automaticamente quando o script terminar. Para fechar a conexo antes, usaremos a funo mysql_close(): <?php $conexao = mysql_connect("localhost","sallum",""); if (!$conexao) { die(Falha na conexo! . mysql_error() . mysql_close($conexo)); } ?> Observe que a funo mysql_close() necessita de um parmetro que identifica a conexo a ser encerrada. Se nada for informado, mysql_close encerrar a conexo corrente.

8.1.4 Inserindo dados no MySQL


A instruo INSERT INTO utilizada para inserir novos registros em uma tabela do tipo SQL, como o caso do MySQL. 100

Sintaxe possvel escrever a instruo INSERT INTO de duas formas: a primeira forma no especifica o nome da coluna onde os dados sero inseridos, apenas os seus valores: INSERT INTO nome_tabela VALUES (valor1, valor2, valor3,...) A segunda forma especifica tanto os nomes das colunas quanto os valores a serem inseridos: INSERT INTO nome_tabela (coluna1, coluna2, coluna3,...) VALUES (valor1, valor2, valor3,...) Para o PHP executar as instrues acima, devemos usar a funo mysql_query(). Esta funo utilizada para enviar uma consulta ou um comando a uma conexo com o MySQL. Exemplo No captulo anterior criamos uma tabela chamada "alunos", com quatro colunas: entrada, nome, endereo e cidade". Vamos usar a mesma tabela, neste exemplo. O exemplo a seguir adiciona dois novos registros para a tabela de "alunos": <?php $conexao = mysql_connect("localhost","sallum",""); if (!$conexao) { die('Falha na conexo: ' . mysql_error()); } // Solicita conexo

mysql_select_db(Turma", $conexao); //Seleciona o BD Turma em localhost //Os comando abaixo inserem 2 registro na tabela alunos mysql_query("INSERT INTO alunos (entrada, nome, endereo, cidade) VALUES ('2011', 'Joana A. B.', 'Av. Sbio Salamo, 35', Divinpolis)"); mysql_query("INSERT INTO alunos (entrada, nome, endereo, cidade) VALUES ('2010', 'Andrea A.', 'Av. Sol, 33', Betim); mysql_close($conexao); // finaliza a conexo com o BD ?> A nossa tabela ficar como a seguir:
Tabela 8.4: Tabela listagem de registros de nomes. Entrada 2010 Nome Jos A.W. C. Endereo R. das flores, 34 Cidade Belo Horizonte

101

2011 2011 2011 2010

Maria K. J. Antonio L. Joana A. B. Andrea A.

Av. imaginria, 123 R. da invenso, 10 Av. Sbio Salomo, 35 Av. Sol, 33

Formiga Cajuru Divinpolis Betim

Fonte: Elaborada pelo autor.

8.1.5 Inserindo dados de formulrio em um BD


Agora vamos criar um formulrio HTML que pode ser usado para adicionar novos registros para a tabela alunos. <html> <body> <form action="insere_dados.php" method="post"> Dada de Entrada: <input type="text" name="f_data"> : <input type="text" name="f_nome"> Endereo: <input type="text" name="f_ender"> Cidade:<input type=text name=f_cidade> <input type="Enviar"> </form> </body> </html> Ao clicarmos no boto Enviar do formulrio HTML, no exemplo acima, os dados sero enviados para o programa "insere_dados.php". O arquivo "insere_dados.php" recupera os dados enviados por $_POST e se conecta ao banco de dados Turma, no servidor localhost. Da, este programa utiliza a funo mysql_query() para inserir os dados recebidos de $_POST e armazena-os na tabela alunos. Eis a seguir o programa "insere_dados.php": <?php $conexao = mysql_connect("localhost","sallum",""); if (!$conexao) { die(Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Comando abaixo insere os dados capturados $insere="INSERT INTO alunos(Entrada, Nome, Endereo, Cidade) VALUES ('$_POST[f_data]','$_POST[f_nome]','$_POST[f_ender]', '$_POST[f_cidade]')"; 102

if (!mysql_query($insere, $conexao)) { // Efetua a insero e testa se houve xito die('Erro: ' . mysql_error()); } echo "1 registro inserido."; // Se passou pelo teste anterior, mostra mensagem mysql_close($conexao); //finaliza conexo com servidor ?>

8.1.6 Selecionando dados em um BD


A instruo SELECT usada para selecionar dados de um banco de dados. Sintaxe SELECT coluna(s) FROM nome_tabela Para executar a instruo acima, devemos usar a funo mysql_query(). Esta funo til para enviar uma consulta ou um comando a uma conexo com o MySQL. Exemplo O exemplo a seguir seleciona todos os dados armazenados na tabela alunos (O caractere * seleciona todas as colunas da tabela): <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Efetua consulta de todos os dados de todas as colunas $resultado = mysql_query("SELECT * FROM alunos"); // Varre linha a linha cada registro recurado, mostrando apenas os nomes e cidades while($linha = mysql_fetch_array($resultado)) { echo $linha['Nome'] . " " . $linha['Cidade']; echo "<br>"; } mysql_close($conexao); //Finaliza conexo com servidor ?> 103

O exemplo acima armazena os dados retornados pela funo mysql_query() na varivel $resultado. Em seguida, usamos a funo mysql_fetch_array() para retornar as linhas do conjunto de registros. Este comando funciona como uma matriz. Cada chamada para mysql_fetch_array() retornar a prxima linha no conjunto de registros. Cada iterao produzida pelo lao while, recuperar a prxima linha do conjunto de todos os registros recuperados. Para imprimir o valor de cada linha, usamos a varivel $linha['Nome'] e $linha['cidade']. A sada do cdigo acima ser:
Tabela 8.5: Tabela listagem de registros de nomes e respectivas cidades. Nome Jos A.W. C. Maria K. J. Antonio L. Joana A. B. Andrea A. Fonte: Elaborada pelo autor. Belo Horizonte Formiga Cajuru Divinpolis Betim Cidade

8.1.7 Utilizando tabela HTML para receber os resultados da pesquisa


O exemplo a seguir seleciona os mesmos dados do exemplo acima, mas vai exibi-los em uma tabela HTML: <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Efetua consulta de todos os dados de todas as colunas $resultado = mysql_query("SELECT * FROM alunos"); // Varre linha a linha cada registro recurado, mostrando apenas os nomes e cidades while($linha = mysql_fetch_array($resultado)) { echo $linha['Nome'] . " " . $linha['Cidade']; echo "<br>"; } echo "<table border='1'> <tr> <th>Nome</th> <th>Cidade</th> 104

</tr>"; while($linha = mysql_fetch_array($resultado)) { echo "<tr>"; echo "<td>" . $linha['FirstName'] . "</td>"; echo "<td>" . $linha['cidade'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($conexao); ?> A sada do cdigo acima ser:

Tabela 8.6 Tabela listagem de registros de nomes e respectivas cidades dentro de tabela Nome Jos A.W. C. Maria K. J. Antonio L. Joana A. B. Andrea A. Fonte: Elaborada pelo autor. Belo Horizonte Formiga Cajuru Divinpolis Betim Cidade

8.1.8 Utilizando a clusula WHERE


A clusula WHERE usada para filtrar registros mediante algum critrio de seleo. Em outras palavras, esta clusula usada para extrair apenas os registros que satisfazem a algum critrio especificado. Sintaxe SELECT coluna(s) FROM nome_tabela WHERE coluna operador valor Para executarmos a instruo acima, devemos utilizar a funo mysql_query(). Esta funo utilizada para enviar uma consulta ou um comando a uma conexo com o MySQL. Exemplo 105

O exemplo a seguir seleciona todas as linhas da tabela alunos com o seguinte critrio: ONDE "Entrada = '2011': <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Seleciona todos os dados de todas as colunas onde Entrada se deu em 2011 $resultado = mysql_query("SELECT * FROM alunos") WHERE Entrada = '2011'"); while($linha = mysql_fetch_array($resultado)) { echo $linha['Entrada'] . " " . $linha['Nome']; echo "<br>"; } ?> A sada do cdigo acima ser:
Tabela 8.7: Tabela listagem de registros mediante critrio de seleo Entrada 2011 2011 2011 Fonte: Elaborada pelo autor. Maria K. J. Antonio L. Joana A. B. Nome

Note que na tabela resultado acima, so listados apenas os registros cujas entradas se deram em 2011. Note, tambm, que do dado 2011 colocado entre aspas simples, pois uma string da coluna (ou campo) Entrada.

8.1.9 Ordenando registros pela palavra chave


A palavra-chave ORDER BY utilizada para classificar os dados em um conjunto de registros por ordem crescente ou decrescente do campo chave da tabela. Entretanto, a palavra-chave ORDER BY classifica os registros em ordem crescente por padro. Mas, se desejarmos classificar os registros em ordem decrescente, podemos usar a palavra chave DESC a frente da palavra-chave ORDER BY, conforme sintaxe apresentada a seguir. 106

Sintaxe SELECT coluna(s) FROM nome_tabela ORDER BY coluna(s) ASC | DESC Exemplo O exemplo a seguir seleciona todos os dados armazenados na tabela alunos e classifica-os pela coluna nome, colocando-os em ordem alfabtica crescente (A-Z): <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Seleciona todos os dados de todas as colunas, ordenados por Nome descrescente $result = mysql_query("SELECT * FROM alunos ORDER BY Nome ASC"); while($linha = mysql_fetch_array($resultado)) { echo $linha['Entrada'] . " " . $linha['Nome'] . " " . $linha['Endereco'] . " " . $linha['Cidade']; echo "<br>"; } ?> A sada do cdigo acima ser:
Tabela 8.8: Tabela listagem de registros mediante ordem alfabtica dos nomes. Entrada 2010 2011 2011 2010 2011 Nome Andrea A. Antonio L. Joana A. B. Jos A.W. C. Maria K. J. Av. Sol, 33 R. da invenso, 10 Av. Sbio Salomo, 35 R. das flores, 34 Av. imaginria, 123 Endereo Betim Cajuru Divinpolis Belo Horizonte Formiga Cidade

Fonte: Elaborada pelo autor.

<Ateno: Observe que a tabela resultado acima, lista os dados ordenados por nome, onde cada coluna ou caracterstica adjacente acompanha o seu respectivo nome.>

107

8.1.20 Alterando os dados de uma tabela


A instruo UPDATE utilizada para modificar e atualizar os dados existentes em uma tabela. Sintaxe UPDATE nome_tabela SET coluna1=valor, coluna2=valor2,... WHERE coluna = valor <Ateno:: Observe a clusula WHERE no UPDATE. A clusula WHERE especifica o registo ou registos que devem ser atualizadas. Se omitirmos a clusula WHERE, todos os registros sero atualizados! > Para executar a instruo acima, devemos usar a funo mysql_query(). Como j sabemos, esta funo utilizada para enviar uma consulta ou um comando a uma conexo com o MySQL. Exemplo Anteriormente, criamos uma tabela chamada "alunos". Vamos utiliz-la para visualizar o exemplo que atualiza alguns dados na tabela alunos, conforme a seguir: <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Seleciona todos os dados de todas as colunas, ordenados por Nome descrescente mysql_query("UPDATE alunos SET Cidade = 'Divinpolis' WHERE Entrada = '2011); while($linha = mysql_fetch_array($resultado)) { echo $linha['Entrada'] . " " . $linha['Nome'] . " " . $linha['Endereco'] . " " . $linha['Cidade']; echo "<br>"; } ?> Aps a atualizao, a tabela "alunos" ficar assim:
Tabela 8-9: Tabela listagem de registros mediante ordem alfabtica dos nomes com dados atualizados. Entrada 2010 Nome Andrea A. Av. Sol, 33 Endereo Betim Cidade

108

2011 2011 2010 2011

Antonio L. Joana A. B. Jos A.W. C. Maria K. J.

R. da invenso, 10 Av. Sbio Salomo, 35 R. das flores, 34 Av. imaginria, 123

Divinpolis Divinpolis Belo Horizonte Divinpolis

Fonte: Elaborada pelo autor.

Como podemos observar na tabela resultado anteriormente listada, todos os registros de alunos com entrada em 2011, tiveram suas cidades de origem alteradas para Divinpolis.

8.1.21 Como excluir dados em um banco de dados


A instruo DELETE usada para excluir registros em uma tabela. Sintaxe DELETE FROM nome_tabela WHERE coluna = valor <Ateno: Observe a clusula WHERE na sintaxe DELETE. A clusula WHERE especifica o registro ou registros que devem ser excludos. Mas ateno: Se omitirmos a clusula WHERE, todos os registros sero excludos! > Para executarmos a instruo acima, devemos usar a funo mysql_query(). Exemplo Utilizando a nossa tabela de alunos, vamos mostrar um exemplo, conforme a seguir, sobre a excluso de alunos, onde entrada = '2010': <?php $con = mysql_connect("localhost","sallum",""); if (!$conexao { die('Falha na conexo: ' . mysql_error()); } mysql_select_db("Turma", $conexao); // Seleciona BD Turma do servidor Localhost // Deleta todos os dados que tm Entrada igual 2010 mysql_query("DELETE FROM alunos WHERE Entrada='2010'"); mysql_close($conexao); ?> Depois da eliminao, a tabela ficar assim:
Tabela 8.10: Tabela listagem de registros mediante ordem alfabtica com registros DELETADOS..

109

Entrada 2011 2011 2011

Nome Antonio L. Joana A. B. Maria K. J.

Endereo R. da invenso, 10 Av. Sbio Salomo, 35 Av. imaginria, 123

Cidade Divinpolis Divinpolis Divinpolis

Fonte: Elaborada pelo autor.

8.1.22 Configurando o MySQL para execuo no PHP


O comportamento das funes MySQL afetado pelas configuraes no arquivo php.ini. A tabela a seguir fornece algumas opes de configurao do MySQL:
Tabela 8.11: Tabela de opes de configurao do MySQL.

Nome mysql.allow_persistent mysql.max_persistent

Default "1" "-1"

Descrio Habilita ou persistentes no conexes

Varivel de ambiente PHP_INI_SYSTEM

Estabelece o nmero mximo de conexes persistentes por PHP_INI_SYSTEM processo Quando ajustado para "1", os avisos e erros do SQL sero PHP_INI_ALL exibidos. Disponvel desde o PHP 4.3 O nmero padro da porta TCP PHP_INI_ALL a ser utilizada

mysql.trace_mode

"0"

mysql.default_port mysql.default_socket mysql.default_host mysql.default_user

NULL

O nome padro do socket para NULL utilizar. Disponvel desde o PHP_INI_ALL PHP 4.0.1 NULL Define o servidor padro (no PHP_INI_ALL se aplica em SQL safe mode)

Define o nome de usurio NULL padro (no se aplica em SQL PHP_INI_ALL safe mode) Define uma senha padro (no PHP_INI_ALL se aplica em SQL safe mode) Determina o tempo limite de PHP_INI_ALL conexo em segundos

mysql.default_password NULL mysql.connect_timeout


Fonte: Elaborada pelo autor.

"60"

110

A tabela a seguir lista as funes mais utilizadas em MySQL, atravs do PHP.


Tabela 8.12: Tabela de funes mais utilizadas em MySQL.

Funo mysql_affected_rows() mysql_change_user() mysql_client_encoding() mysql_close() mysql_connect() mysql_create_db() mysql_data_seek() mysql_db_name() mysql_db_query() mysql_drop_db() mysql_errno() mysql_error() mysql_escape_string()

Descrio

PHP

Retorna o nmero de linhas afetadas na operao 3 anterior do MySQL Em desuso. Modifica o usurio para a conexo 3 atual MySQL Retorna o nome do conjunto de caracteres para a 4 conexo atual Fecha uma conexo no-persistente MySQL Abre uma conexo no-persistente MySQL 3 3

Em desuso. Cria um novo banco de dados MySQL. 3 Use mysql_query() ao invs Move o ponteiro de registro 3 Retorna um nome de banco de dados de uma 3 chamada para mysql_list_dbs() Em desuso. Envia uma consulta MySQL. Use 3 mysql_select_db() e mysql_query() ao invs Em desuso. Exclui um banco de dados MySQL. 3 Use mysql_query() ao invs Retorna o nmero de erro da operao MySQL 3 passado Retorna a descrio de erro da operao MySQL 3 passado Em desuso. Escapa uma string para uso com o mysql_query. Use mysql_real_escape_string() ao 4 invs Retorna uma linha de um conjunto de registros como uma matriz associativa e / ou uma matriz 3 numrica Retorna uma linha de um conjunto de registros 4 como uma matriz associativa Retorna informaes da coluna de um conjunto de 3 registros como um objeto Retorna o comprimento do contedo de cada 3 campo em uma linha do resultado Retorna uma linha de um conjunto de registros 3 como um objeto Retorna uma linha de um conjunto de registros 3 como uma matriz numrica Retorna os flags associados a um campo em um 3 conjunto de registros 111

mysql_fetch_array() mysql_fetch_assoc() mysql_fetch_field() mysql_fetch_lengths() mysql_fetch_object() mysql_fetch_row() mysql_field_flags()

mysql_field_len() mysql_field_name() mysql_field_seek() mysql_field_table() mysql_field_type() mysql_free_result() mysql_get_client_info() mysql_get_host_info() mysql_get_proto_info() mysql_get_server_info() mysql_info() mysql_insert_id() mysql_list_dbs() mysql_list_fields() mysql_list_processes() mysql_list_tables() mysql_num_fields() mysql_num_rows() mysql_pconnect() mysql_ping() mysql_query() mysql_real_escape_string() mysql_result() mysql_select_db() mysql_stat() mysql_tablename()

Retorna o comprimento mximo de um campo em 3 um conjunto de registros Retorna o nome de um campo em um conjunto de 3 registros Move o ponteiro do resultado para um campo 3 especificado Retorna o nome da tabela que o campo 3 especificado esta Retorna o tipo de um campo em um conjunto de 3 registros Free resultado da memria Retorna informao sobre o cliente MySQL Retorna informaes do servidor MySQL Retorna informaes do protocolo MySQL Retorna informaes sobre o servidor MySQL Retorna informaes sobre a ltima consulta 3 4 4 4 4 4

Retorna o ID AUTO_INCREMENT gerado pela 3 operao INSERT anterior bases de dados listas disponveis em um servidor 3 MySQL Em desuso. listas campos de tabela MySQL. Use 3 mysql_query() ao invs Lista os processos MySQL 4 Em desuso. listas tabelas em um banco de dados 3 MySQL. Use mysql_query() ao invs Retorna o nmero de campos de um recordset 3 Retorna o nmero de linhas em um conjunto de 3 registros Abre uma conexo persistente MySQL 3 Pings conexo um servidor ou reconecta se no 4 houver conexo Executa uma consulta em um banco de dados 3 MySQL Escapa uma string para usar em SQLs 4 Retorna o valor de um campo em um conjunto de 3 registros Define o banco de dados MySQL ativos 3 Retorna o status atual do sistema do servidor 4 MySQL. Em desuso. Retorna o nome da tabela do campo. 3 112

Use mysql_query() ao invs mysql_thread_id() mysql_unbuffered_query()


Fonte: Elaborada pelo autor.

Retorna a identificao da thread atual

Executa uma consulta em um banco de dados 4 MySQL (sem extraco / buffering o resultado)

A funo mysql_fetch_array() usa uma constante para os diferentes tipos de matrizes de resultado. A tabela a seguir lista as constantes definidas:
Tabela 8.13: Tabela de constantes definidas do MySQL. Constante MYSQL_ASSOC MYSQL_BOTH MYSQL_NUM Descrio As colunas so retornadas na matriz com o nome do campo como ndice da matriz As colunas so retornadas na matriz tendo ambos ndices, numrico e o nome do campo como ndice da matriz As colunas so retornadas na matriz tendo um ndice numrico (ndice comea em 0)

Fonte: Elaborada pelo autor.

Resumo Estudamos nesta aula sobre a conexo ao banco de dados MySQL. Vimos como estabelecer conexo com um servidor de Banco de Dados e como criar tabelas de dados neste servidor utilizando instrues PHP. Entendemos com esta aula como inserir, alterar, excluir e selecionar dados mediante os vrios critrios de nossa escolha. Finalmente, vimos com configurar o gerenciador de Banco de Dados, MySQL para sua execuo no PHP.

Atividade de aprendizagem: 1) O aluno deve digitar todos os cdigos exemplos deste captulo e execut-los, comparando os resultados obtidos com as respectivas sadas aqui ilustradas. 2) Suponha que exista no MySQL o Banco de Dados chamado de TESTE e que neste banco exista a tabela CLIENTES. Suponha, tambm, que esta tabela possua os seguintes campos (colunas): Nome, Sexo e Peso. Crie um programa em PHP que tenha as seguintes 4 funes para operaes em Banco de Dados: a. funo de conexo com um Banco de Dados, que receba os seguintes parmetros: i. Nome do servidor; 113

ii. Nome do usurio; iii. Senha. b. funo que efetue consulta a tabela e que receba os seguintes parmetros: iv. Nome do Banco de Dados (TESTE) v. Nome da tabela (CLIENTES) vi. Condio de seleo para consulta. Por exemplo: WHERE Sexo=F c. funo que exclua registros na tabela e receba os seguintes parmetros: vii. Nome do Banco de Dados (TESTE) viii. Nome da tabela (CLIENTES) ix. Condio de seleo para excluso. Por exemplo: WHERE Peso > 100 d. funo que feche e encerre a conexo com o Banco de Dados.

Figura 8.1: Estrutura do cdigo-fonte para elaborao das funes do exerccio Fonte: Elaborada pelo autor.

<Atividades de aprendizagem: O cdigo mostrado na figura anterior inicia o processo solicitado nesta questo. Desenvolva os corpos das funes solicitadas (a, b, c e d) e poste-as no frum criado para esta atividade, juntamente com os cdigos desenvolvidos na questes 1.>

114

Referncias
MELO, Alexandre Altair; NASCIMENTO, Maurcio. PHP Profissional. So Paulo: Editora Novatec, 2007. DEITEL, Harley M. e Deitel, Paul J. Internet e World Wide Web: Como Programar. 2 Ed. So Paulo: Bookman, 2009. BHON, Daniela. Sites Dinmicos com Dreamweaver, PHP e MySQL. Florianpolis: Visual Books, 2004. FRAIZER, Colin. API JAVA: Manual de referncia. So Paulo: Makron books, 1997. SOARES, Walace. Programao em PHP: conceitos e aplicaes. So Paulo: rica, 2000. BLACK, Roger. Web Sites que Funcionam. So Paulo: Quark, 2007. COOMBS, Ted; Coombs, Jason; Crowder, David e Honda, Crowder. Como Criar Sites na Internet, Rio de Janeiro: Campus, 2009. DAMASCENO Jr., Amrico. Aprendendo Java Programao na Internet. So Paulo: rica, 2009. MARCONDES, Christin A., Programando em HTM., So Paulo: rica, 1998. THOMAS. Michael D. Programando em Java para a Internet. So Paulo: Makron, 2002. HUGHES, Sterling. PHP: Guia do Desenvolvedor. So Paulo: Berkeley, 2001. ANSELMO, Fernando. PHP 4 e MySql. Florianpolis: Editora Visual Books, Apndice A e D, 2002.

115

Currculo do professor-autor William Geraldo Sallum professor da disciplina de AW1 ou Aplicativos para Web I, deste curso. Encontra-se doutorando
.

em Ensino de Cincias e Matemtica pela UNICSUL. Possui mestrado em Tecnologia da Informao pelo CEFET-MG Centro Federal de Educao Tecnolgica de Minas Gerais (2002). Especialista (Lato Sensu) em Anlise de Sistemas pelo Cenex (1990). Graduado em matemtica pela Faculdade de Filosofia Cincias e Letras de Belo Horizonte (UNIBH). Possui tambm habilitao para o ensino de Fsica e Desenho. Atualmente encontra-se como Professor do CEFETMG, no curso de Informtica. membro titular da CPPD Comisso Permanente de Pessoal Docente do CEFET-MG e atua como sub-coordenador do curso de Psgraduao do CEFET-MG, no Campus II. Tem experincia na rea de Cincia da Computao, com nfase em Sistemas de Informao, atuando principalmente nos seguintes temas: Recuperao de Informao em documentos textuais semi-estruturados e estruturados; desenvolvimento de sistemas para rea acadmica e comercial; e desenvolvimento de aplicativos para web.

116