Académique Documents
Professionnel Documents
Culture Documents
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.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
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
Fonte: Elaborada pelo autor. ..................................................................................................... 110 Fonte: Elaborada pelo autor. ..................................................................................................... 113 Fonte: Elaborada pelo autor. ..................................................................................................... 113
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
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
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
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.
Rever os conceitos trabalhados ao longo da disciplina e integrar todas as tecnologias e tcnicas para elaborao de pginas web completas.
11
60
10
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.
12
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
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
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
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.
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>
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:
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
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.
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.
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.
Cdigo Normal <?php Cdigo do PHP ?> Cdigo Estendido <script language="php>" Cdigo PHP </script>
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.
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.
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.
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.
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).
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
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
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
<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
no
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
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).
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.
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
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
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
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
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.
<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.
Exemplo <?php 44
f)
strlen()- a funo strlen() retorna o comprimento de uma string e j foi explicada no subtpico 3.1.2.
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
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
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
49
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
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
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
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
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
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.
<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.
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
</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
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
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..
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
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
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
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
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
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
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
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.
<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>
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
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.
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"]; ?>
91
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.
$_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.
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.>
} ?> 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.
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
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
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)
<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()); } ?>
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
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 ?>
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
</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
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.
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
<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
108
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.
109
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"
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
"60"
110
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_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
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)
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