Sei sulla pagina 1di 55

DESENVOLVIMENTO e

APLICAES WEB
Prof. Cida Atum

CONTEDO Apresentao 1 INTRODUO O que PHP? Pra que serve o PHP? Como Funciona o PHP? EXERCCIOS PROPOSTOS 2 COMO INSTALAR O EASYPHP 3 CONFIGURANDO O EASYPHP 4 PROGRAMANDO O PHP 5 VARIVEIS E CONSTANTES As Variveis Atribuies Converses Explcitas Tipos Primitivos Constantes EXERCCIOS PROPOSTOS 6 OPERADORES Operadores aritmticos Operadores de incremento/decremento Pr-incremento e ps-incremento Operadores Binrios (Parte I) Operadores Binrios (Parte II) Operadores de Atribuio Operadores Relacionais Operadores Lgicos Operador Ternrio Ordem de Precedncia dos Operadores EXERCCIOS PROPOSTOS 7 ESTRUTURAS DE CONTROLE I Estruturas Condicionais Comando if (instruo simples) Comando if (instruo estendida) Comando if (instrues completas) Comando if (instrues aninhadas) Comando switch 8 ESTRUTURAS DE CONTROLE II Estruturas Iterativas Instruo while Instruo do..while Instruo for Quebras de Fluxo Break Continue EXERCCIOS PROPOSTOS 9 FORMULRIOS HTML Mtodos de Envio Tag <FORM> Caixas de Texto Caixas de Senha Botes de Rdio Caixas de Seleo Campos Escondidos reas de Texto Botes de Envio e Reinicializao EXERCCIOS PROPOSTOS

10 MANIPULANDO DADOS DE FORMULRIO 11 USANDO O PHPMyAdmin 12 ABRINDO UM BANCO DE DADOS MySQL Funes para MySQL EXERCCIOS PROPOSTOS 13 SINTAXE SQL Comando SELECT Instruo SELECT EXERCCIOS PROPOSTOS 14 SINTAXE SQL Comandos INSERT, UPDATE e DELETE EXERCCIOS PROPOSTOS REFERNCIAS

APRESENTAO Prezados alunos, Sejam bem-vindos disciplina de Desenvolvimento de Aplicaes Web, que tem como principal objetivo promover um primeiro contato com uma das linguagens mais populares do momento: o PHP. O PHP nos permite a criao de contedos dinmicos para sites na Internet ou at mesmo para ambientes corporativos, em suas Intranets. Fundamentado na filosofia do software livre, o PHP tornou-se uma tima opo para o desenvolvimento de sistemas baseados em Web. Boa aula!

1 INTRODUO O que PHP? PHP significa Personal Home Page ou Hypertext PreProcessor, uma linguagem de script Open Source, criada por Rasmus Lerdorf em 1994 para ser usado em seu site. O PHP no precisa ser compilado, executado no servidor e processado na hora que a pgina for executada. Pra que serve o PHP? Para o desenvolvimento de aplicaes Web ou sistemas intranet. O PHP conecta com diversos bancos de dados e tambm faz sistemas de controles estatsticos, bate papos, frum, portais, enquetes, blogs, entre outros sistemas conhecidos. Como Funciona o PHP? O PHP funciona sendo executado por um programa servidor web configurado com o PHP como CGI ou filtro Isapi e o PHP processa a pgina e envia apenas o resultado do processo em HTML para o usurio. CGI - Commom Gateway Interface (Interface Comum de Gateway) uma interface definida de maneira a possibilitar a execuo de programas sob um servidor ISAPI uma DLL personalizada que est no mesmo espao de memria que o servidor Web, e chamado pelo servidor da web em resposta a cada solicitao HTTP. Enquanto outras linguagens, como o JavaScript, o processo denominado cliente side, vamos entender como funciona estes dois conceitos. Imagine que temos um computador ligado Internet, e desse computador acessaremos um servidor, que contm uma pgina em HTML. Quando acessamos outros sites via Web, dizemos que o nosso computador o Cliente e, ao digitarmos a URL, o nosso navegador envia pela rede uma solicitao de acesso ao site. O servidor que contm o documento HTML requisitado receber a solicitao feita pelo nosso navegador, onde imediatamente uma cpia do documento HTML enviada para o cliente. Entra em ao o navegador, que ser o responsvel por interpretar as marcas (tags) do documento HTML. Analisando o cdigo HTML, o navegador descobrir quais so os anexos adicionais que so necessrios (fotos, imagens, sons) e solicitar ao servidor. Note que nessa tecnologia, quem desempenha a funo de processamento o cliente, por isso chamada client-side. A funo do servidor somente fornecer os arquivos solicitados. Como exemplos de tecnologias client-side podemos citar: HTML, Linguagens script (JavaScript, JScript, VBScript), Java Applet, VRML e Flash. Em uma tecnologia desse tipo, normalmente precisaremos instalar programas adicionais ou plug-ins em nosso navegador, j que o cliente quem far o processamento.

Vejamos agora uma outra situao. Queremos acessar um site desenvolvido em linguagem PHP. Como ser que o cliente reagir? A solicitao exatamente igual a outra. O servidor agora contm um arquivo PHP com um programa escrito na linguagem. Se uma cpia desse arquivo for enviada ao cliente, nada poder ser feito. No servidor existe um programa chamado Apache, que consegue interpretar as instrues em PHP. Esta no a nica funo do Apache, mas para ns a que mais interessa no momento. Todos os cdigos em PHP so interpretados pelo Apache e a sada totalmente convertida em cdigo HTML, que pode perfeitamente ser interpretado pelo cliente. Dessa vez ficou claro que o responsvel pelo processamento o servidor. Tecnologias que exigem processamento de cdigo por parte do servidor so chamadas de server-side. Como exemplos de tecnologias server-side podemos citar: PHP, ASP e JSP. Em uma tecnologia desse tipo, o cliente no possui nenhum requisito de software adicional, j que ele receber o resultado em HTML e precisar apenas do navegador para interpret-lo. Ao construir um site utilizando uma linguagem server-side, podemos criar contedos dinmicos e personalizados. Nenhuma tecnologia client-side teria a capacidade para tanto! Client-side ou Server-side? Qual escolher para construir meu site? A resposta simples: ESCOLHA OS DOIS? Hoje em dia, os sites aplicam vrios tipos de tcnicas. Para cada situao, um deles se aplica melhor que o outro, sendo assim, no descarte a possibilidade de aprender Java, JavaScript, ActionScript ou qualquer outra tecnologia do mercado de desenvolvimento de sites Bem, voc est prestes a iniciar os estudos em uma nova linguagem de programao, e tudo depender da sua disponibilidade e dedicao. Considere esse material como uma breve introduo aos conceitos fundamentais da linguagem PHP e busque sempre aprender mais atravs da leitura de livros em sites especializados. Alm do mais, s a prtica poder trazer a experincia necessria. Faa os exerccios propostos e crie seus prprios problemas. EXERCCIOS PROPOSTOS 1 - 7 O que a) b) c) d) e) significa PHP? Hypertext Preprocessor. PostScrip Home Processor. Preprocessor Home Personal. Personal Home Page. As alternativas a e d esto corretas.

Para que serve a linguagem PHP? a) uma interface definida de maneira a possibilitar a execuo de programas sob um servidor. b) chamado pelo servidor da web em resposta a cada solicitao HTTP. c) Para o desenvolvimento de aplicaes Web ou sistemas intranet.

d) Para dar assistncia ao servidor do Windows. e) N.D.A. uma interface definida de maneira a possibilitar a execuo de programas sob um servidor. Sobre o que se refere a citao? a) Ao IIS - (Internet Information Server) b) Ao CGI - Commom Gateway Interface (Interface Comum de Gateway) c) Ao filtro ISAPI d) Ao server-side e) N.D.A. Todos os cdigos em PHP so interpretados e a sada totalmente convertida em cdigo HTML. Esta a funo do: a) Apache b) Navegador c) EasyPHP d) Computador e) N.D.A. Quando o navegador desempenha a funo de processamento dizemos que essa tecnologia : a) Client-side b) Server-side c) Cliente-servidor d) ISAPI e) N.D.A. Qual das linguagens abaixo no utiliza a tecnologia client-side? a) HTML b) ASP c) Java Applet d) Flash e) VBScript. Tecnologias que exigem processamento de cdigo por parte do servidor so chamadas de: a) Client-side b) Server-side c) Cliente-servidor d) ISAPI e) N.D.A. 2 COMO INSTALAR O EASYPHP Nessa aula, veremos como instalar o pacote EasyPHP, para que possamos programar em PHP. Mas voc deve estar se perguntando No o Apache que tem que ser instalado? O EasyPHP nada mais do que um pacote gratuito contendo as principais ferramentas para o desenvolvimento PHP. Com este pacote so instalados o Apache, o MySQL e o MyPHPAdmin (mais tarde veremos a funo de cada software). Ele serve como simulador de um servidor. Digite na barra de endereos, a URL www.easyphp.org. Depois pressione enter.

Este o site do EasyPHP. Para baixar o pacote, devemos clicar na seo Downloads, e fazer download da ltima verso do EasyPHP, que est no topo da lista. Vrios hosts aparecero na tela. Uma boa opo o servidor da UFPR, se disponvel. Clique em Download nesse host. Agora s clicar no link de download que o host oferece e salvar o arquivo no seu desktop. Feito o download, feche o navegador e d um duplo clique no arquivo do EasyPHP no desktop para instalar o programa. Se ao executar o programa uma mensagem de erro aparecer como o Apache no pode ser iniciado: j existe um web server na mesma porta, no se preocupe. Isso normal, veremos como resolver esse problema no prximo tpico. 3 CONFIGURANDO O EASYPHP Nesta aula, veremos os procedimentos de configurao do EasyPHP, j que na aula anterior tivemos um problema ao iniciar o Apache. O erro anterior foi causado porque estamos utilizando o Windows XP com o IIS instalado. IIS - (Internet Information Server) - o servidor web incluso pela Microsoft no sistema operacional Windows NT Server. Como temos dois servidores (Apache e IIS) brigando pela mesma porta, vamos fazer com que o Apache utilize a porta 81, que est livre. Antes de mais nada devemos abrir o EasyPHP. Ao abrir, note que o cone do Apache est parado. Clique sobre o cone do EasyPHP no canto superior esquerdo da janela e escolha Configurao > Apache. O arquivo http.conf ser aberto no editor padro. Este o documento de configurao do Apache. Todos os smbolos de # so comentrios. Para configurar o Apache corretamente, vamos ter que alterar duas chaves. A primeira chave a Listen, que indica qual ser o endereo do host local. Pressione CTRL+F para abrir a janela de localizao e depois digite a chave 127. A linha encontrada, e note que sem a #. Sua tarefa alterar a porta do endereo, de 127.0.0.1:80 para 127.0.0.1:81 A segunda chave a ser alterada a Port, que indica a porta que o Apache utilizar. Digite Port 80 na janela de localizao. Sua tarefa gora alterar de Port 80 para Port 81. Salve o arquivo e reinicie o EasyPHP para que as alteraes surtam efeito. Agora que o Apache est funcionando corretamente, abra o navegador. Parta abrir o documento PHP pelo host local criado pelo Apache, voc pode utilizar o endereo: http://localhost:81 , outra opo pelo IP http://127.0.0.1:8. Se o Apache estiver funcionando corretamente, ser exibida um tela do EasyPHP. EXERCCIOS PROPOSTOS 2/3 - 3

O que vem a ser o EasyPHP? a) um programa, como outros no mercado, que instala um pacote gratuito de ferramentas administrativas para o desenvolvimento do PHP. b) um programa que simula um servidor atravs de um pacote de ferramentas. c) um programa que possibilita a execuo de scripts no localhost. d) Todas as alternativas anteriores esto corretas. Quais so as principais ferramentas para o desenvolvimento PHP? a) Internet Explorer, o MySQL, e o Bloco de Notas. b) Apache, o Microsoft Windows e o MyPHPAdmin. c) O Macromedia Dreamweaver, o EasyPHP e o Apache. d) Apache, o MySQL e o MyPHPAdmin. e) N.D.A. Por qual motivo necessrio alterar a porta do localhost depois de instalar o EasyPHP? a) Porque alguns programas no funcionam corretamente na Porta 80. b) Porque temos dois servidores (Apache e IIS) brigando pela mesma porta. c) Por causa da distribuio de portas administradas pelo Windows. d) Porque o Windows d suporte somente ao ASP. e) N.D.A. 4 PROGRAMANDO O PHP Para programar em PHP, precisaremos apenas de um editor de cdigos e um navegador web. Podemos usar qualquer editor de texto sem formatao, como por exemplo o Bloco de Notas do Windows ou o Macromedia Dreamweaver, que vem com colorizao de cdigo especfica para instrues PHP. Um documento PHP pode ser composto por tags HTML misturadas com os blocos programados na linguagem. Uma pgina em PHP tem que ter a extenso .php Mas como diferenciar instrues PHP de tags HTML? Entram em cena as SUPERTAGS. <html> <head> <title> Curso de PHP </title> </head> <?php> echo Ol Mundo!; ?> </body> </html> Para o Apache, tudo aquilo que estiver escrito entre as supertags <?php e ?> (ou <? e ?>) ser considerado instruo PHP. A instruo echo informa ao Apache que deve ser exibida uma mensagem. E as mensagens devem estar entre aspas, e podem conter qualquer caractere alfanumrico. Podemos tambm colocar tags HTML para compor a mensagem que ser exibida:

echo <h1>Ol Mundo!</h1>; E para indicar ao PHP que a instruo acabou, usamos um ponto-e-vrgula (;) Vamos ver agora em que lugar devemos salvar o documento PHP. Como estamos trabalhando com o EasyPHP, devemos salvar os documentos na pasta especfica do pacote. Em Salvar Como, acesse a pasta Arquivos de Programas > EasyPHP > www Vamos criar uma nova pasta chamada PHP_online, dentro da pasta www, onde gravaremos os nossos exerccios. Salvaremos nosso primeiro exemplo com o nome ex01.php, dentro da pasta PHP_online que acabamos de criar. Agora s abrir o navegador e acessar o servidor web. OBS.: Lembre-se que o programa EasyPHP deve estar em execuo. Na dvida veja se o cone E do programa est minimizado na barra de tarefas do Windows. Ao digitar http://localhost:81 note que a pasta PHP_online aparece na pasta inicial do EasyPHP que, ao acess-la, o arquivo ex01.php aparecer na lista. Clicando no arquivo ex01.php a mensagem Ol Mundo! aparece, inclusive formatada com cabealho <h1>.

Vejamos ento como funciona a interpretao do servidor web, analisando o cdigo fonte recebido. Clique a tela com o boto direito do mouse e escolha a opo Cdigo-fonte no menu. Quando o Apache recebeu uma solicitao, analisou o documento PHP e interpretou as instrues entre as supertags. Tudo aquilo que estava escrito em PHP foi completamente interpretado, gerando apenas texto e tags HTML. O resultado foi enviado ao navegador. E assim que o PHP funciona! EXERCCIOS PROPOSTOS 4 - 3 Qual a a) b) c) forma do Apache considerar um cdigo como instruo PHP? Tudo aquilo que estiver escrito entre as supertags <?php e ?> O cdigo deve sempre estar embutido no HTML. Deve ser solicitado ao servidor um cdigo de acesso.

d) As alternativas a e c esto corretas. e) N.D.A. Qual a a) b) c) d) funo da instruo echo? Avaliar o arquivo especificado durante a execuo do script. Dar suporte ao XML ou XHTML. Informa ao Apache que deve ser exibida uma mensagem. Ativar a opo de exibio de mensagens de erro ou alertas e avisos sobre alguma coisa que est errada. e) N.D.A.

Quando o Apache recebe a solicitao, analisa o documento PHP e interpreta as instrues entre as supertags, qual o resultado que ele envia ao navegador? a) Ele envia a interpretao do documento em PHP. b) Ordena que o navegador se encarregue de processar o restante das informaes. c) Tudo aquilo que estava escrito em PHP completamente interpretado, gerando apenas texto e tags HTML. d) As alternativas a e b esto corretas. e) N.D.A. 5 VARIVEIS E CONSTANTES As Variveis Os identificadores de variveis no PHP devem seguir algumas regras bsicas: Devem comear pelo smbolo de $ O segundo caractere deve ser uma letra ou o caractere underline _ Os demais caracteres podem ser letras, nmeros ou underline No so aceitos smbolos como !, @, &, ) e outros No utiliza caracteres acentuados, nem mesmo

Obs1: muito comum o programador iniciante esquecer de colocar o $ no incio do identificador de varivel. Com o tempo voc se acostuma. Obs2: O PHP case sensitive, por isso, $nome, $Nome, $NOME e $NoMe so variveis totalmente distintas para a linguagem! Atribuies Em programas desenvolvidos em PHP, no precisamos declarar as variveis, pois elas sero automaticamente criadas conforme elas forem utilizadas. O tipo de cada varivel pode ser definido de algumas maneiras, que veremos mais adiante. Para criarmos uma varivel para armazenar um nome, basta que faamos uma atribuio inicial. Por exemplo: $nome=Cida Atum; Ao executar a linha cima, o PHP criaria uma varivel String $nome, j que o contedo atribudo est entre aspas. De maneira anloga, consideremos as atribuies: $nota=3.5; $idade=15;

A varivel $nota seria do tipo Inteiro e a $idade seria Real. A definio automtica de tipos do PHP pode parecer um milagre, mas ela pode confundir o programador desavisado. Por exemplo, veja as linhas a seguir: $a=4; $b=101 Dlmatas; $s=a+b echo $s; Pergunto: Qual seria o resultado exibido na tela? A resposta certa 105! Mas como? O PHP interpretaria $s como a soma entre $a e $b. Como $b uma string que comea por um nmero, os caracteres sero ignorados e o valor somar com o valor de $a. Assim, o PHP calcularia 4+101=105. O principal deslize foi considerar que o operador + faria a concatenao de strings, mas essa tarefa realizada pelo operador . (ponto). Assim, se substituirmos: Concatenar significa juntar as variveis e no PHP usa-se o . ( ponto ) para juntar as variveis. $s=$a.$b; Teremos o resultado 4101 Dlmatas, concatenando as duas variveis. As converses necessrias seriam feitas automaticamente pelo PHP. Tipos Primitivos O PHP suporta alguns tipos primitivos de dados: Inteiro simples (integer ou int) Inteiro longo (long) Real preciso simples (float ou real) Real preciso dupla (double) String (string) Matriz (array) Objeto (object)

Obs.: o tipo lgico (boolean) apesar de presente nas verses mais recentes, tratado como valores inteiros (1-True ou vazio-False). Converses Explcitas Podemos tambm forar a converso de um valor para um determinado tipo primitivo, indicando-o antes da expresso, entre parnteses. Vejamos um exemplo: $x=3.5; $y=4.3; $z=9.9; $n1=(int)$x+$y; $n2=(int)($x+$y); $n3=(real)($y+$z);

echo Resultados: $n1,$n2,$n3; A mensagem exibida na tela seria: Resultados: 7.3, 7, 14.2 Alguma dvida? Vejamos... Na varivel $n1, apenas o valor de $x ser convertido para inteiro e somado com $y, que continua do tipo real. Assim: $n1=3+4.3=7.3 Na varivel $n2, o valor da soma entre $x e $y (note os parnteses) ser convertido para inteiro. Assim: $n2=(int)(3.8+4.3)=(int)(8.1)=8 Na varivel $n3, o valor da soma entre $y e $z ser mantida como real. Note que $z ser convertido automaticamente de string para real. Assim: $n3=4.3+9.9=14.2 Constantes Diferentes da maioria das demais linguagens de programao, as regras para nomear constantes em PHP so ligeiramente diferentes das utilizadas nos identificadores de variveis. As constantes PHP no comeam por $. O restante totalmente baseado nas regras para variveis. Para declarar uma constante, usamos a instruo define: define (pi, 3.1415926536); Para utilizar as constantes em nosso cdigo: $circ=(real) 2 * pi * $raio; Importante: na hora de exibir o contedo de uma constante, devemos lembrar que o PHP no ter como diferenciar o identificador da constante do restante do cdigo, portanto devemos usar o operador de concatenao (.) echo O valor de pi .pi; A instruo acima mostrar: O valor de pi 3.1415926536. Cuidado com exibio de variveis Considere o seguinte cdigo: $n=penta; echo O Brasil $ncampeo!; O que ser exibido? Acertou quem respondeu ERRO! Na verdade, O PHP vai procurar por uma varivel chamada $ncampeo. Este problema pode ser resolvido de duas maneiras: echo O Brasil .$n. campeo!; ou ainda

echo O Brasil ${n}campeo!; Trabalhar com variveis no PHP pode ser uma grande novidade para programadores experientes em linguagens tipicamente tipadas como o Delphi. Em caso de dvida, lembre-se de alguns detalhes: O nome da varivel sempre comea por $ O PHP case sensitive As converses sero automticas caso o programador no faa uma converso explcita O operador de concatenao . E no + Constantes no iniciam com $

EXERCCIOS PROPOSTOS 5 -11 O identificador $_nome : a) Vlido b) Invlido O identificador $12anos : a) Vlido b) Invlido O identificador $Sal_Lq : a) Vlido b) Invlido O identificador $Aumento% : a) Vlido b) Invlido O identificador $Casal20 : a) Vlido b) Invlido O identificador Cod_Produto : a) Vlido b) Invlido Considerando as instrues abaixo: $a=Casal 20; $b=10; $c=$a+$b; echo $c; Qual ser o resultado exibido na tela? a) Casal 2010 b) 30 c) 10 d) ERRO! Com a atribuio $pre=hiper; Qual das linhas abaixo mostrar a mensagem hipertexto? a) echo $pre.texto;

b) echo $pretexto; c) echo $pretexto; d) echo ${pr}texto; Considerando as instrues abaixo: $x=P; $y=H; $z=$x$y$x; echo $z; Qual ser o resultado exibido na tela? a) b) c) d) XYX PHP NADA ERRO!

Qual das opes abaixo faria a declarao de uma constante? a) b) c) d) define inc=2; define (inc,2); define ($inc,2; $inc=2;

6 OPERADORES Os operadores do PHP so muito parecidos com os utilizados em linguagem C. muito importante que o programador iniciante esteja bastante familiarizado com o uso de operadores. Operadores aritmticos Utilizados para clculos com variveis do tipo numrico. So os operadores mais semelhantes com as demais linguagens. Considerando: $a=5; $b=2; Op + * / % Funo Adio Subtrao Multiplicao Diviso Resto da diviso Exemplo $a+$b $a-$b $a*$b $a/$b $a%$b Resultado 7 3 10 2.5 1 (5/2, resta 1)

Operadores de incremento/decremento Uma das operaes mais utilizadas em programas o incremento ou decremento de uma varivel. No difcil encontrar em nossos cdigos expresses do tipo: $cont=$cont+1; No PHP, podemos realizar a mesma tarefa usando o operador de incremento: $cont++; De forma similar, podemos decrementar uma varivel: $x=$x-1; Podemos utilizar o operador de decremento:

$x--; A posio do operador pode gerar um pr-incremento ou um p-incremento. Veremos exemplos a seguir. Pr-incremento e ps-incremento Dependendo da posio do operador de incremento em uma expresso, o resultado final pode ser diferente. Vejamos: $a=3; $b=2; $s=(++ $a) + $b; echo $a, $b, $s; Resultado: 4, 2, 6 --------------------------------------------------------Exemplo 2: $a=3; $b=2; $s=($a ++) + $b; echo $a, $b, $s; Resultado: 4, 2, 5 Veja que o resultado final de $s foi diferente nos dois exemplos. No valor exemplo1, como foi utilizado o pr-incremento (++ $a), o valor inicial de $a foi incrementado antes da atribuio em $s. J no exemplo2, o uso do ps-incremento ($a++), far com que $s rece ba o valor inicial de $a somado com $b e s depois ser feito o incremento em $a. Os conceitos acima tambm podem ser usados com o operador de decremento. Operadores Binrios (Parte I) Para adentrarmos nas variveis de forma binria, necessrio relembrarmos como converter um valor na base decimal. Existe um mtodo muito simples para converter binrio em decimal, e vice-versa. | 128 | 64 | 32 | 16 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 |8|4| 1 0 1 0 0 0 1 0 2|1| 1 0 = 10 (2+8=10) = 00001010 0 0 = 24 (8+16=24) = 00011000 0 0 = 192 (64+128=192) = 11000000 1 0 = 186 (2+8+16+32+128=186) = 10111010 Exemplo 1:

192.168.0.1, como faramos para converter este nmero em binrio? Isto at parece uma tarefa difcil, porm muito simples pois cada posio do nmero binrio possui um valor como a tabela abaixo

A regra muito simples como em uma conta de adio onde o valor for 1 em binrio se acrescenta o respectivo valor, exemplo, o valor 192 em binrio seria como:

11000000 = 192, pois 128+64=192 e assim por diante e inversamente tambm, se voc tiver um valor em binrio como seria o seu equivalente, vejamos os valores: 10101010

128+32+8+2= 170, portanto 170 em decimal igual a 10101010. Outro exemplo: 168 em decimal queremos saber o equivalente em binrio.

Agora estou com a tabela em branco para praticarmos: 1) Preciso de 168, portanto vou utilizar o valor na 1 casa que 128, e adiciono o 1 na casa.

2) Precisvamos de 168, j utilizamos 128, desta forma 168 128 + 40, o valor mais prximo de 40 32, ento inserimos o 1 na casa do 32, pois estamos usando este valor, para quem estudou eletrnico isto bem simples pois como se estivssemos ligando a chave do 32.

3) Falta pouco, 128 + 32 = 160, para 168 faltam 8, coincidentemente temos o valor exato, em uma das posies, ento validamos o 1 na casa do 8.

4) Por ltimo os campos no utilizados devem ser completados com 0 (zero), ficando assim

Detalhe Muito Importante: Jamais deixe de representar as posies iniciadas com valor 0, para representar um octeto, simples se voc encontrou um valor decimal como 00101111 no represente como 101111, pois um OCTETO e deve ser representado pelos 8 Bits, sempre tem algum que por este simples detalhe erra no momento da prova !!! Para realizar as operaes das variveis, os valores so convertidos para a base binria e tratados bit a bit.

Op ~ | & ^ >> <<

Funo NO binrio OU binrio E binrio XOR binrio Deslocamento direita Deslocamento esquerda

Vamos ver um exemplo para entender melhor os operadores binrios. Operadores Binrios (Parte II) Considere as seguintes atribuies. Em verde so mostradas as devidas converses para a base binria. $x=14; $y=12; Expresso ~ $x $x & $y $x | $y $x ^ $y $x >> 2 $x << 2 //1110 //1100 ====Resultados===== Base 2 Base 10 0001 1 1100 12 1110 14 0010 2 0011 3 111000 56

Operadores de Atribuio Assim como a linguagem C, podemos utilizar operadores que substituem algumas expresses bastante utilizadas: Op += -= *= /= %= .= &= |= ^= >>= <<= Exemplo $a += $b $a -= $b $a *= $b $a /= $b $a %= $b $a .= $b $a &= $b $a |= $b $a ^= $b $a >>= $b $a <<= $b Corresponde a $a + $b $a - $b $a * $b $a / $b $a % $b $a . $b $a & $b $a | $b $a ^ $b $a >> $b $a << $b

Operadores Relacionais Op == === >= <= > < != <> Funo Igual a Idntico (igual E do mesmo tipo) Maior ou igual a Menor ou igual a Maior que Menor que Diferente de Diferente de

A grande peculiaridade da linguagem da linguagem PHP a presena do operador idntico a. Vejamos a diferena entre ele e o operador igual a. Igual ou Idntico? Veja o seguinte exemplo: Exemplo: $a=3; $b=3; if ($a==$b) echo A igual a B; else echo A no igual a B; if ($a===$b) echo A idntico a B; else echo A no idntico a B; Perceba que a varivel $a guarda o nmero 3, enquanto a varivel $b guarda a string 3. A maioria das linguagens tradicionais considerariam $a diferente de $b... Mas no o PHP! Como j vimos, o PHP tenta converter automaticamente os dados em uma expresso. Assim, a primeira condio mostraria a mensagem A igual a B. De forma diferente, a segunda condio mostraria A idntico a B. Isso acontece porque para serem idnticas, duas variveis devem ser iguais E do mesmo tipo (sem precisar de nenhum tipo de converso prvia). Operadores Lgicos O PHP reconhece os seguintes operadores lgicos: Op ! && || AND OR XOR Funo Negao Lgica E OU E OU OU EXCLUSIVO

Sei que voc j consegue identificar a diferena dos operadores lgicos, mesmo assim vamos ver uma pequena reviso e fazer uns exerccios. Operador ! (NOT) Nega o valor lgico de uma expresso. A tabela-verdade desse operador a mais simples de todas: x V F !x F V

Fica mais fcil perceber que, logicamente, uma coisa que no falsa verdadeira. De maneira similar, uma coisa que no verdadeira s pode ser falsa. Operador || (OR) Retorna verdadeiro caso pelo menos uma das premissas seja verdadeira. Vejamos a sua tabela-verdade: x V V V V F F F F y V V F F V V F F z V F V F V F V F x || y || z V V V V V V V F

Note que usando o operador OU, a expresso s vai retornar falso se todas as premissas tambm forem falsas. Operador && (AND) x V V V V F F F F y V V F F V V F F z V F V F V F V F x && y && z V F F F F F F F

Note que usando o operador E, a expresso s vai retornar verdadeiro se todas as premissas tambm forem verdadeiras. Operador XOR x V V V V F F F F y V V F F V V F F z V F V F V F V F x XOR y XOR z F V V V V V V F

Entenda o XOR como: OU uma OU outra, mas NUNCA em TODAS elas. Todos os Operadores Lgicos Antes de partirmos para um exerccio, vamos rever todos os operadores em uma s tabela: x V y V z V || V && V XOR F

V V V F F F F

V F F V V F F

F V F V F V F

V V V V V V F

F F F F F F F

V V V V V V F

S lembrando: && || XOR = = = AND (E) OR (OU) OU EXCLUSIVO

Operador Ternrio Utilizaremos o operador ?: para criar condies simples que realizam atribuies. Vejamos um exemplo utilizando a estrutura if: if ($m>3) $a=$a+1; else $a=$a-1; Podemos simplificar a programao utilizando o operador ternrio: $a=($m>3) ? ($a+1) : ($a-1); Se voc ainda no conhece a estrutura if, no se desespere! Veremos seus detalhes no prximo tpico. Ordem de Precedncia dos Operadores O PHP trata os operadores em determinada ordem dentro de uma expresso. Caso utilizemos os parnteses, foraremos uma ordem especfica, caso contrrio, a execuo se d na seguinte ordem:

bom voc ter essa ordem anotada (o que meio complicado) ou ento utilizar os parnteses para evitar problemas com os seus programas. O perfeito entendimento dos operadores do PHP a chave para um bom desenvolvimento lgico dos seus programas. Nosso prximo passo estudar as estruturas de controle.

EXERCCIOS PROPOSTOS 6 - 6 Considerando as instrues abaixo: $x=5; $y=4; $n1=(--$x)+$y; echo $n1; Qual ser o resultado exibido na tela? a) 8 b) 9 c) 4 d) 5 Considerando as instrues abaixo: $x=5; $y=4; $x+=$y; echo $x; echo $y; Quais sero os valores exibidos? a) b) c) d) 5e4 4e5 9e9 9e4

Considerando as instrues abaixo: $x=100 vergonha; $y=50; $z=2*$y; If ($x==$z) echo So iguais; else echo So diferentes; O que ser exibido pelo trecho do cdigo apresentado acima? a) b) c) d) So iguais So diferentes No ser exibido nada O PHP retornar ERRO

Considerando o trecho abaixo: $a=4; $b=8; $r=(($a==$b) || ($a+$b==12)); O valor lgico de $r : a) Verdadeiro b) Falso

Considerando o trecho abaixo: $a=4; $b=8; $r=(($a==$b) && ($a+$b==12)); O valor lgico de $r : a) Verdadeiro b) Falso Considerando o trecho abaixo: $a=5; $b=10; $r=(($a<=$b) XOR (2*$a==$b)); O valor lgico de $r : a) Verdadeiro b) Falso 7 ESTRUTURAS DE CONTROLE I Estruturas de controle so construes da linguagem que permitem que voc controle o fluxo do seu programa, nmero de vezes que ele ser executado, como e quando ele ser desviado... Enfim, as estruturas de controle esto entre as mais importantes implementaes das linguagens de programao, incluindo o PHP. Utilizadas na maioria das linguagens de programao, no PHP podem ser divididas em: Estruturas Condicionais (ou de Seleo ou de Deciso): o if o switch Estruturas Iterativas (ou de Repetio, Loops ou Laos): o while o do..while o for Quebra de Fluxo: o break o continue

Nosso objetivo nesta aula compreender e desenvolver exerccios prticos para uma perfeita compreenso de cada uma das estruturas. Estruturas Condicionais As estruturas condicionais suportadas pelo PHP so: if e switch

Obs.: lembre-se sempre que o PHP case-sensitive, isto faz com que as instrues IF, If, SWITCH, Switch sejam consideradas invlidas.

Comando if (instruo simples) Apenas executa um grupo de instrues se o resultado lgico de uma expresso for verdadeiro. Caso exista mais de uma instruo, ser necessrio criar um bloco. - Sintaxes Para uma nica instruo: if (<expresso lgica>) <instruo>; Para mais de uma instruo (bloco): if (<expresso lgica>) { <bloco>; } - Exemplo $num=3; if ($num2=1) $num++; echo $num; - Anlise Analisando o cdigo do exemplo apresentado, destacamos alguns pontos importantes: Note que a estrutura if no possui clusula then, como acontece com algumas outras linguagens. O operador % calcula o resto da diviso de $num por 2. S existe uma instruo a ser executada caso a expresso seja verdadeira (no ser necessrio criar um bloco). A instruo echo $num; sempre ser executada, pois est fora da estrutura if. A estrutura apresentada poderia ser substituda pela instruo ternria $num=($num%2=1)?$num+1; . O resultado exibido ser 4. Comando if (instruo estendida) Desvia logicamente o fluxo de instrues para um determinado bloco, de acordo com o resultado de uma expresso lgica. Quando temos apenas uma instruo para cada caso (verdadeiro ou falso), no necessrio criar blocos. - Sintaxe if (<expresso lgica>) <instruo V>; else <instruo F>;

- Exemplo $n1=6; $n2=4; $m=($n1+$n2)/2; if ($m>=7) $sit=Aprovado; else $sit=Reprovado; echo $sit; - Anlise Analisando o cdigo do exemplo apresentado, destacamos alguns pontos importantes: S existe uma instruo a ser executada caso $m>=7 (no ser necessrio criar um bloco). S existe uma instruo a ser executada caso $m<7 (no ser necessrio criar um bloco). As duas instrues internas devero terminar com ponto-e-vrgula. A instruo echo $sit; sempre ser executada, pois est fora da estrutura if. A estrutura apresentada poderia ser substituda pela instruo ternria $sit=($m>=7)?Aprovado;Reprovado; O resultado exibido ser Reprovado j que $m=5.

Comando if (instrues completas) Desvia logicamente o fluxo de instrues para um determinado bloco, de acordo com o resultado de uma expresso lgica. Quando temos mais de uma instruo para cada caso (verdadeiro ou falso), torna-se necessrio criar blocos. - Sintaxe if (<expresso lgica>) { <bloco V>; } else { <bloco F>; } - Exemplo $n1=6; $n2=4; $ap=0; $rp=0; $m=($n1+$n2)/2; if ($m>=7) { $sit=Aprovado; $ap++; } else { $sit=Reprovado;

$rp++; } echo $sit; - Anlise Analisando o cdigo do exemplo apresentado, destacamos alguns pontos importantes: Existem duas instrues a serem executadas caso $m>=7 (ser necessrio criar um bloco). Existem duas instrues a serem executadas caso $m<7 (ser necessrio criar um bloco). Todas as instrues internas devero terminar com ponto-e-vrgula. A instruo echo $sit; sempre ser executada, pois est fora dos blocos da estrutura if. O resultado exibido ser Reprovado.

Comando if (instrues aninhadas) Uma das maiores causas de dores de cabea em programadores o aninhamento de condies, que ocorrem quando temos um if dentro do outro. Graas ao PHP, voc est livre deste mal, pois existe a clusula elseif (assim mesmo, sem espaos). - Sintaxe if (<expresso lgica 1>) { <bloco A>; } elseif (<expresso lgica 2>) { <bloco B>; } else { <bloco C>; } - Exemplo $n1=6; $n2=4; $ap=0; $rp=0; $rc=0; $m=($n1+$n2)/2; if ($m>=7) { $sit=Aprovado; $ap++; } elseif ($m>=5 && $m<7) { $sit=Em recuperao; $rc++; } else {

$sit=Reprovado; $rp++; } echo $sit; - Anlise Analisando o cdigo do exemplo apresentado, destacamos alguns pontos importantes: Os blocos foram necessrios, pois existe mais de uma instruo para cada clusula. O && o operador lgico E. Podemos ter vrias clusulas elseif em uma mesma estrutura if. A instruo echo $sit; sempre ser executada, pois est fora dos blocos da estrutura if. O resultado exibido ser Em recuperao, j que $m=5.

Comando switch O switch (conhecido como case em algumas linguagens) atua de maneira semelhante a uma srie de comandos if na mesma expresso. Quando se precisa comparar uma mesma varivel com diversos valores (utilizando o operador de igualdade), pode se usar o switch, que acaba deixando o cdigo um pouco mais organizado. Comparem abaixo a diferena de sintaxe entre o switch e o if:

Obs.: veremos a instruo break no tpico Quebras de Fluxo do prximo captulo. 8 ESTRUTURAS DE CONTROLE II Estruturas Iterativas As estruturas iterativas, tambm conhecidas como estruturas de repetio, permitem que um bloco de comandos possa ser executado mais de uma vez, sem a necessidade de escrev-lo vrias vezes. O PHP possui trs estruturas de repetio:

while do..while for

Obs.: lembre-se que o PHP case-sensitive, isto faz com que as instrues While, WHILE e WhilE sejam consideradas invlidas. Instruo while So estruturas de repetio com teste lgico no incio da iterao. Isto significa que em primeiro lugar ser feito um teste lgico, para depois executar ou no o bloco de comandos. - Sintaxe (while) while (<expresso lgica>) { <bloco de instrues>; } - Exemplo 1 $a=0; while ($a<5) { echo Repetio $a <br>; $a++; } - Anlise A varivel $a numrica e far parte do teste lgico. Leremos a segunda linha como enquanto $a for menor que cinco. A instruo $a++ pode ser substituda por $a=$a+1, e far um incremento unitrio na varivel. O resultado ser: Repetio Repetio Repetio Repetio Repetio 0 1 2 3 4

- Exemplo 2 <? $n=0; $a=1; while ($n<=20) { echo Valor de N: $n; $n+=5; $a++; } echo Valor de A: $a ; ?> - Anlise

Vamos depurar um programa. Depurar significa verificar cada passo da lgica e seus valores gerados. Na tabela abaixo, cada linha significa uma iterao gerado pelo script do exemplo 2: $n=0; $a=1; while ($n<=20) echo Valor de N: $n; Na tela Valor de N: 0 Valor de N: 5

$n 0 5

$a 1 2

($n<=10)? True True

$n+=5; $a++; while ($n<=20) echo Valor de N: $n; A iterao seguiria assim em diante: 10 15 Concluindo: Essa foi a execuo depurada do cdigo PHP apresentado, e entender este conceito perfeitamente muito importante. Acostume-se sempre a depurar suas lgicas, pois servir para verificar se o programa funcionar corretamente. Instruo do..while So estruturas de repetio com teste lgico no final da iterao. Isto significa que em primeiro lugar o bloco ser executado, para depois fazer um teste lgico. Perceba a diferena desta estrutura e a estrutura while, pois da primeira vez, o cdigo ser executado independente da expresso lgica. - Sintaxe (do..while) do { <bloco de instrues>; } while (expresso lgica>); - Exemplo $a=0; do { echo Repetio $a <br>; $a++; } while ($a<5) - Anlise 3 4 True False Valor de N: 10 Valor de N: 4

A varivel $a numrica e far parte do teste lgico. Leremos a segunda linha e a quinta linha como faa...enquanto $a for menor que cinco. A instruo $a++ pode ser substituda por $a=$a+1, e far um incremento unitrio na varivel. O resultado exibido ser: Repetio Repetio Repetio Repetio Repetio 0 1 2 3 4

Tem diferena? Voc deve estar se perguntando: mas qual a diferena entre as estruturas while e do..while? Vamos responder a esta pergunta com dois exemplos. do $x=10; while ($x<10) { echo O valor $x; } E qual a diferena? Aparentemente so exemplos com a mesma lgica, mas elas se diferenciam por um pequeno detalhe: No primeiro exemplo, $x j vale 10, assim o bloco no ser executado, pois j no satisfaz a expresso lgica ($x<10). No segundo exemplo, primeiro ser executado o comando echo para s depois verificar a expresso lgica. do..while $x=10; do { echo O valor $x; } while ($x<10);

Resultado: No primeiro caso, nada ser exibido. J no segundo caso, seria exibida a mensagem O valor 10. Instruo for So estruturas de repetio com varivel de controle auto-incrementvel. So as estruturas iterativas mais utilizadas quando sabemos quantas repeties so necessrias para desempenhar determinada tarefa. - Sintaxe (for) for (<inicializao>; <condio>; <incremento>) { <bloco de instrues>; } - Exemplo for ($c=1; $c<20; $c+=2) { echo Valor: $c <br>; }

- Anlise A varivel $c numrica e far parte do teste lgico. Leremos a segunda linha como $c comea com valor 1, e enquanto for menor que 20, vai aumentando AUTOMATICAMENTE de 5 em 5. A instruo $c+=5 pode ser substituda por $c=$c+5, e far um incremento na varivel. O resultado exibido no navegador ser: Valor: Valor: Valor: Valor: 1 5 10 15

Obs.: O valor final de $c no ser exibido, pois na ltima iterao, $c igual a 20 e no menor que 20. Acostumar com as estruturas iterativas requer uma boa dose de prtica, e exercitar estes conceitos torna-se imprescindvel para qualquer pessoa que esteja disposta a se embrenhar pelos conhecimentos em uma determinada linguagem. Quebra de Fluxo Break O break uma instruo utilizada dentro das estruturas de repetio para causar a interrupo da execuo do lao de repetio. Quando o PHP encontra tal instruo, sai imediatamente do bloco de comandos, e as instrues que o seguem no sero executadas. Veja o exemplo: <?php for ( $i = 0 ; $i < 10 ; $i++ ) { if ( $i == 5 ) { break; } echo "O contador vale: " . $i . "<br>"; } ?> Veja que s impresso at que $i == 5, pois, quando esse teste verdadeiro, o PHP executa a instruo break, que indica que ele deve sair do lao de repetio. Essa instruo vale para qualquer estrutura de repetio. Continue O continue uma instruo utilizada dentro das estruturas de repetio para causar uma nova repetio, ou um novo ciclo. Assim que o PHP encontra a instruo continue ele vai direto para o teste lgico, para verificar se vai repetir o bloco de comandos novamente ou no. As instrues que estiverem aps o continue no sero executadas. Veja um exemplo: <?php for ( $i = 0 ; $i < 10 ; $i++ ) { echo "O contador vale: " . $i . "<br>"; continue; echo "Essa frase no ser impressa! <br>"; }

?> EXERCCIOS PROPOSTOS 8 - 4 No cdigo abaixo: <? $x=2; while ($x<=10) { $x+=2; } echo $x; ?> Que valor ser exibido na tela? a) 10 b) 8 c) 2 d) 0 Quantas vezes ser exibida na tela a mensagem Ol!, se executarmos o cdigo abaixo? for ($i=0; $i<=6; $i++) { echo Ol!; } a) b) c) d) 5 vezes 6 vezes 7 vezes nenhuma vez

Qual das estruturas abaixo possui incremento automtico por loop? a) b) c) d) while do..while for nenhuma delas

Qual das opes abaixo causar um loop com exatamente 10 iteraes? a) b) c) d) for ($i=0, $i<=10; $i++) for ($i=1, $i<10; $i++) for ($i=10, $i<=100; $i+=10) for ($i=10, $i<=10; $i++)

O que ser exibido no navegador aps a execuo do seguinte programa em PHP? <? $ast=1; for ($1=1, $1<=3; $1++) { for ($c=1, $c<=$ast; $c++) { echo * ; } echo <br> $ast+=2;

} ?> a) * *** ***** b) * *** ***** c) * *** ***** 9 FORMULRIOS HTML Os formulrios criados em HTML no possuem uma utilidade imediata quando estamos iniciando nossos estudos. O PHP far uso intensivo dos formulrios, criando interfaces que permitem a interao do usurio com o site. Vamos fazer uma breve reviso dos principais controles de formulrio HTML, para que possamos mais tarde interliga-lo com o PHP. Mtodos de Envio Antes de criarmos um formulrio, devemos decidir qual ser o mtodo de envio dos dados. Temos duas opes: GET: Envia os dados formatados na prpria URL. o mtodo mais simples e rpido, porm, menos seguro. POST: Envia os dados por pacotes, de maneira protegida. o mtodo mais seguro, o que faz com que ele seja um pouco mais lento.

Tag <FORM> <FORM> </FORM> Todos os controles para formulrios HTML devem estar entre as tags <FORM> e </FORM>. <FORM METHOD=GET> </FORM> O parmetro METHOD indica o mtodo de envio do formulrio. Podemos escolher os mtodos GET ou POST. <FORM METHOD=GET ACTION=receptor.php> </FORM> O parmetro ACTION indica o que ser feito com os dados do formulrio. Neste caso, enviaremos os dados para o arquivo receptor.php. Caixas de Texto <BR> Telefone: <INPUT TYPE=Text NAME=txtTel>

A tag INPUT serve para criar vrios objetos, configurados no parmetro TYPE. Todos os objetos de um formulrio devero ter um nome (NAME). Acostume-se com isso.

<BR> Telefone: <INPUT TYPE=Text NAME=txtTel SIZE=9 MAXLENGTH=9> O parmetro SIZE indica o tamanho fsico da caixa (largura). Isso no significa que o usurio s possa digitar um texto maior que a caixa. Para limitar o nmero mximo de caracteres aceitos, configuramos o parmetro MAXLENGTH.

<BR> Telefone: <INPUT TYPE=Text NAME=txtTel SIZE=9 MAXLENGTH=9 VALUE=0> O parmetro VALUE serve para preencher automaticamente a caixa de texto. Ao carregar o formulrio, os valores j aparecero preenchidos.

<BR> Telefone: <INPUT TYPE=Text NAME=txtTel SIZE=9 MAXLENGTH=9 VALUE=0 TITLE=Digite seu Telefone> O parmetro TITLE cria uma dica (hint) do controle. Basta parar o cursor do mouse sobre o objeto e aguardar alguns instantes.

Caixas de Senha <BR> Senha: <INPUT TYPE=Password NAME=txtSen SIZE=8 MAXLENGTH=8 TITLE=Digite sua Senha> As caixas de senha possuem os mesmos parmetros das caixas de texto, mas apresentam a entrada do usurio em forma de smbolos, mantendo o sigilo do campo. Para criar um campo para senha, basta utilizar o parmetro TYPE=Password.

Botes de Rdio <BR> Sexo: <BR><INPUT TYPE=Radio NAME=radSex VALUE=M>Masculino Um agrupamento de botes de rdio possue a caracterstica de permitir a seleo de apenas um item. O parmetro VALUE configura o valor que ser enviado caso o boto seja selecionado.

<BR> Sexo: <BR><INPUT TYPE=Radio NAME=radSex VALUE=M>Masculino <BR><INPUT TYPE=Radio NAME=radSex

VALUE=F>Feminino IMPORTANTE: Para que os botes participem de um mesmo agrupamento, eles devem ter o mesmo NAME, caso contrrio o usurio poder selecionar mais de um item.

Caixas de Seleo <BR> Interesses: <BR><INPUT TYPE=Checkbox NAME=chkCin VALUE=Cin>Cinema As caixas de seleo permitem que o usurio marque mais de uma opo de um mesmo grupo. Para criar um objeto deste tipo, configure o parmetro TYPE=Checkbox.

<BR> Interesses: <BR><INPUT TYPE=Checkbox NAME=chkCin VALUE=Cin>Cinema <BR><INPUT TYPE=Checkbox NAME=chkEsp VALUE=Esp CHECKED>Esportes O parmetro CHECKED j marca o item assim que o formulrio carregado.

<SELECT NAME=selLing> <OPTION VALUE=PHP>Zend PHP</OPTION> </SELECT>

Existem tambm caixas de seleo que criam uma caixa pop-up com vrias opes. Todos os itens da caixa de seleo devem estar entre as tags <SELECT> e </SELECT>.

<SELECT NAME=selLing> <OPTION VALUE=PHP> Zend PHP </OPTION> </SELECT> Cada item da caixa de seleo deve ser um elemento <OPTION>. O parmetro VALUE, assim como em botes de rdio, configura o valor que ser enviado caso o item seja selecionado. <SELECT NAME=selLing> <OPTION VALUE=CFM> Macromedia ColdFusion </OPTION> <OPTION VALUE=ASP> Microsoft ASP </OPTION> <OPTION VALUE=JSP> Sun JSP </OPTION> <OPTION VALUE=PHP SELECTED> Zend PHP </OPTION> </SELECT> O item que possui o parmetro SELECTED, j aparecer marcado quando o formulrio for carregado.

<SELECT NAME=selLing SIZE=3> <OPTION VALUE=CFM> Macromedia ColdFusion </OPTION> <OPTION VALUE=ASP> Microsoft ASP </OPTION> <OPTION VALUE=JSP> Sun JSP

</OPTION> <OPTION VALUE=PHP SELECTED> Zend PHP </OPTION> </SELECT> Para transformar a caixa de seleo do exemplo anterior para uma lista de seleo, basta acrescentar o parmetro SIZE tag SELECT. Se o nmero de itens for maior que a lista, ser exibida uma barra de rolagem.

Campos Escondidos <INPUT TYPE=Hidden NAME=hidVal VALUE=12345> Inicialmente, os campos ocultos podem parecer inteis, j que eles no aparecem na tela. Porm, mais tarde veremos que eles so fundamentais para os scripts PHP. reas de Texto <TEXTAREA NAME=txtMail ROWS=5 COLS=30> </TEXTAREA> As reas de texto permitem a entrada de vrias linhas de texto, recurso bastante utilizado em formulrios de e-mails e similares. Os parmetros ROWS e COLS indicam o tamanho da caixa.

IMPORTANTE: As tags <TEXTAREA> devem ser fechadas com </TEXTAREA>, muito comum esquecermos desse detalhe. Botes de Envio e Reinicializao <INPUT TYPE=Submit VALUE=Enviar> <INPUT TYPE=Reset VALUE=Limpar> Os botes de ao de um formulrio so configurados de acordo com os tipos Submit e Reset. O primeiro envia o formulrio para o destinatrio e o segundo limpa todos os campos, retornando aos valores padro.

EXERCCIOS PROPOSTOS 9 - 4 Qual a diferena entre os mtodos GET e POST utilizados na criao de um formulrio? a) Enquanto o POST anexa o valor URL que solicita a pgina, o GET incorpora os dados do formulrio na solicitao FTP. b) Enquanto o POST informa ao servidor o email, o GET informa um documento de linguagem de programao. c) Enquanto o GET anexa o valor URL que solicita a pgina, o POST incorpora os dados do formulrio na solicitao HTTP. d) Enquanto o GET informa ao servidor o email, o POST informa um documento de linguagem de programao. e) N.D.A. Submit ou Reset fazem parte de qual opo de objetos de formulrio? a) Caixas de seleo b) Botes de rdio c) reas de texto d) Botes de incio e reinicializao e) N.D.A. Qual das opes abaixo no verdadeira? a) As caixas de seleo permitem a obteno de vrias respostas em um nico grupo de opes. O usurio pode escolher quantas opes forem necessrias. b) Botes de rdio representam opes exclusivas. c) Menus de lista exibem valores de opo em uma lista de rolagem que permite aos usurios selecionar vrias opes. d) Campos de texto aceitam qualquer tipo de entrada de texto alfanumrico. e) N.D.A. Qual das opes abaixo no um objeto de formulrio? a) rea de texto b) Campo ocultos c) rea de Flash d) Caixa de senha e) Boto de rdio 10 MANIPULANDO DADOS DE FORMULRIO No captulo anterior, vimos como fazer formulrios HTML. Agora veremos como o PHP pode manipular esses dados e desempenhar tarefas com eles. Primeiramente, vamos propor um modelo de formulrio bastante simples, e utilizaremos o mesmo exemplo em todos os tpicos desta aula. Salve este arquivo html na pasta PHP_online do seu EasyPHP.

<form method=post action=recupera.php> Cdigo: <input type=text name=txtCod size=5 maxlength=5> <br>Nome: <input type=text name=txtNom size=20 maxlength=50> <br>Setor: <select name=selSet> <option value=adm>Administrao</option> <option value=ven>Vendas</option> <option value=alm>Almoxarifado</option> </select> <br><input type=checkbox name=chkInf> Participa do plano de sade. <br><input type=submit value=Enviar> <input type=reset value=Limpar> </form>

Como o PHP pega os dados? As primeiras coisas a saber so: qual o mtodo usado e para qual arquivo o formulrio envia os dados? Vamos ver um trecho do cdigo anterior: <form method=post action=recupera.php> Agora sabemos: o mtodo usado foi o POST e o arquivo o recupera.php. E os nomes... So importantes? Depois que demos o passo inicial, devemos identificar o nome dos controles. Tomaremos como exemplo uma caixa de texto. <input type=text name=txtCod size=5 maxlength=5> Para esta caixa, o nome txtCod. Para buscar os dados via PHP, podemos utilizar a seguinte instruo: $c=$_POST[txtCod]; Repetindo o cdigo do formulrio, veremos como seria o incio do arquivo recupera.php para recuperar o contedo de todos os campos: <?php $cod=$_POST[txtCod]; $nom=$_POST[txtNom]; $set=$_POST[selSet]; $pla=$_POST[chkInf];

... E para exibir os valores das variveis criadas, utilizaremos uma seqncia de sadas: ... echo echo echo echo ?> Cdigo: $cod<br>; Nome: $nom<br>; Setor: $set<br>; Plano de Sade? $pla;

Salve este arquivo php na pasta PHP_online do seu EasyPHP. Resultado: Aps preencher o formulrio e clicar no boto Enviar, ele enviado para o arquivo recupera.php.

Os campos Setor e Plano de Sade mostraram dados um tanto quanto estranhos, mas vamos resolver isso com um cdigo simples: Linha responsvel por mostrar o setor: echo Setor: $set<br>; Proposta de alterao: switch ($set) { case adm; $car=Administrador; break; case ven; $car=Vendedor; break; case alm; $car=Almoxarife; break; } echo Cargo: $car<br>; Proposta de alterao: if ($pla==on) $resp=SIM; else $resp=NO; echo Plano de Sade? $resp;

Linha responsvel por mostrar o plano de sade: echo Plano de Sade? $pla;

Resultado 2:

Aps preencher o formulrio e clicar no boto Enviar, ele enviado para o arquivo recupera.php.

Vejamos que agora os campos Setor e Plano de Sade mostraram dados mais claros. Portanto aconselhvel usar sempre cdigos adicionais para melhorar as sadas dos seus cdigos. E se o mtodo for outro? Vocs devem estar perguntando: E se o formulrio usar o mtodo GET? A resposta simples: se for GET, use a instruo $cod=$_GET[txtCod]; se for POST, use a instruo $cod=$_POST[txtCod]; s no esquecer que o PHP case-sensitive, e o comando $_GET (sempre em maisculas) e no $_get. 11 USANDO O PHPMyAdmin Antes de estudarmos como abrir um banco de dados em PHP, devemos antes TER um banco de dados. A funo dessa aula mostrar como criar um banco de dados no padro MySQL, um dos mais populares. Para iniciarmos nosso site, vamos criar uma tabela no MySQL. O pacote EasyPHP inclui o PHPMyAdmin, um script que facilita a criao de bancos de dados MySQL. Para acessar o PHPMyAdmin, basta digitar o endereo http://localhost/mysql/ no seu navegador. Obs.: No esquea de verificar se o EasyPHP est aberto. A tela inicial do PHPMyAdmin mostra vrias reas de configurao. Inicialmente, devemos descobrir os usurios que possuem permisso de acesso a bancos de dados MySQL: a seo Privilgios mostra quem tem permisses de acesso. IMPORTANTE: quem tem todas as permisses de acesso base de dados o usurio root, no servidor localhost, sem a necessidade de digitao de senha. Depois de conferirmos o usurio voltamos tela principal e vamos criar um novo banco de dados, chamado Loja. Digitaremos o nome e clicaremos no boto Criar.

Agora vamos criar uma nova tabela do nosso banco de dados chamada Secoes (assim mesmo, sem acentos), e configuramos quantos campos a tabela ter: na nossa tero 3 campos.

Nosso primeiro campo guardar o cdigo da seo, um valor numrico autonumerado que batizaremos de codsecao. Este campo tambm ser configurado como chave primria desta tabela.

Um campo do tipo INT que configurado como auto-increment sempre incrementado a cada registro includo. Definir o campo como chave-primria acionando o boto com o cone da chave.

O segundo nomesecao e o terceiro campo descricaosecao so do tipo VARCHAR, que guardam valores alfanumricos (string). Devemos ento definir os tamanhos do campo como 15 e 50 respectivamente. Por fim Clicamos em Salvar, e todas as alteraes sero armazenadas.

Agora devemos clicar na aba Insere para que possamos cadastrar novos registros na tabela atual Depois de preencher os dois registros iniciais, podemos escolher por adicionar mais registros. Para isso, selecionar esta opo antes de clicar em Executa.

Obs.: ao preencher os dados do registro, deixaremos o campo codsecao vazio, uma vez que ele um campo auto-increment. Cadastramos mais um registro e desta vez selecionaremos a opo Retornar, pois no somos obrigados a preencher os dois registros, e um deles fica marcado como Ignorado.

Na aba Visualiza teremos acesso aos registros que acabamos de adicionar. Agora vamos ver no prximo captulo como faremos para acessar esses dados pelo PHP. 12 ABRINDO UM BANCO DE DADOS MySQL Nesta aula veremos como abrir um banco de dados MySQL e mostrar o seu contedo na tela. Veremos tambm como tratar possveis erros ou falhas na abertura de bancos e tabelas. Na aula anterior criamos um banco de dados chamado Loja, com uma tabela chamada secoes. A estrutura da tabela a seguinte. Chave * Campo codsecao nomesecao descricaosecao Tipo int varchar(15) varchar(50) Extra auto-increment

Lembremos ainda que o usurio MySQL localhost e que a senha est vazia. Funes para MySQL Abrir um banco de dados pelo PHP tarefa extremamente simples j que cada padro possui suas prprias funes de manipulao de dados. No caso do padro MySQL, as funes iniciam sempre com a palavra mysql_. Funes so responsveis por realizar uma ou mais tarefas definidas ou no pelo programador. Consulte o site www.php.net para ver a lista de funes para usar bancos de outros padres. Vejamos agora como abrir o banco de dados criado ma aula anterior via PHP. Criando uma Conexo O primeiro passo fornecer uma ligao com o MySQL. A funo usada para isso o mysql_connect. <html> <head> <title> Abrindo o Banco de Dados </title>

<?php> $link = mysql_connect(localhost, root, ); ?> </head> <body> </body> </html> nesse ponto onde devemos lembrar os parmetros do MySQL que vimos na aula anterior: o nome do servidor localhost , o usurio root e a senha (como no temos senha configurada, deixaremos a string em branco). Enquanto $link ser o nome do objeto que servir como conexo com o banco de dados, e mysql_connect a funo que realizar esta conexo. E se tudo der errado? Se por acaso a conexo no puder ser feita, voc receber uma mensagem de erro do PHP. Se quiser, voc pode personalizar essa mensagem, usando o complemento or die, instruo adicionada para tratar situaes de erro ao criar a conexo. A funo mysql_error() retorna qual foi o erro na abertura da conexo: <html> <head> <title> Abrindo o Banco de Dados </title> <?php> $link = mysql_connect(localhost, root, ) or die (No foi possvel conectar: . mysql_error()); ?> </head> <body> </body> </html> Obs: o operador ponto serve como concatenador, juntando as duas mensagens. Abrindo o banco Depois de criarmos uma conexo com o MySQL, devemos abrir o banco de dados. Para isso utilizaremos a funo mysql_select_db, que escolhe qual banco de dados ser aberto: <html> <head> <title> Abrindo o Banco de Dados </title> <?php> $link = mysql_connect(localhost, root, ) or die (No foi possvel conectar: . mysql_error()); $banco = mysql_select_db(Loja, $link) or die (Erro ao abrir o banco de dadosr: . mysql_error()); ?> </head> <body> </body> </html>

$banco ser o objeto que servir como referncia ao banco de dados aberto, que, neste nosso exemplo, ser Loja. Alm do nome do banco de dados informamos tambm qual a conexo a ser utilizada, ou seja, $link. Selecionando os registros A conexo j foi estabelecida, o banco de dados est aberto. Falta agora selecionar os registros que faro parte da pgina. Para isso utilizaremos a funo myql_query, que far uma busca de registros especficos: <html> <head> <title> Abrindo o Banco de Dados </title> <?php> $link = mysql_connect(localhost, root, ) or die (No foi possvel conectar: . mysql_error()); $banco = mysql_select_db(Loja, $link) or die (Erro ao abrir o banco de dados: . mysql_error()); $busca = mysql_query(Select * From secoes) or die (Erro ao realizar busca : . mysql_error()); ?> </head> <body> </body> </html> O objeto $busca servir como referncia busca realizada. O comando Select * From secoes significa buscar todos os registros * da tabela secoes. Obs.: Se voc ainda no est familiarizado com a sintaxe do comando SELECT do SQL, no se preocupe, pois veremos detalhes da sintaxe dessa linguagem nos prximos captulos. Mostrando os dados na tela Finalmente, com esses comandos, abrimos uma conexo, o banco de dados Loja, a tabela secoes e todos os seus registros. O prximo passo mostrarmos todos os dados na tela: ... ?> </head> <body> <h3>Listagem de Dados Sees do Site</h3> <?php while ($reg = mysql_fetch_assoc($busca)) { echo <hr>; echo <br>Cdigo : . $reg[codsecao]; echo <br>Seo : . $reg[nomesecao]; echo <br>Descrio : . $reg[descricaosecao]; ?>

</body> </html> A funo mysql_fetch_assoc cria uma matriz, que no caso do exemplo se chamar $reg, e coloca nela todos os campos do registro atual. A instruo while executar um bloco enquanto existirem registros na tabela, preenchendo esta matriz, ou seja, exibir todos os campos atravs da sintaxe echo. Limpando a casa Depois de executar todas as tarefas desejadas com os registros, devemos ento fechar o banco de dados. Para isso, utilizaremos duas instrues simples: uma para esvaziar o resultado da busca mysql_free_result e outra para fechar a conexo aberta mysql_close:. ... <h3>Listagem de Dados Sees do Site</h3> <?php while ($reg = mysql_fetch_assoc($busca)) { echo <hr>; echo <br>Cdigo : . $reg[codsecao]; echo <br>Seo : . $reg[nomesecao]; echo <br>Descrio : . $reg[descricaosecao];

mysql_free_result($busca); mysql_close($link); ?> </body> </html> A funo mysql_free_result esvazia o resultado gerado pela busca realizada, fazendo com que os registros no fiquem desnecessariamente alocados na memria do servidor. E o comando mysql_close fecha a conexo com o banco de dados, eliminando a ligao entre o cdigo PHP e o banco MySQL. Como funciona tudo isso? Vamos ver o que acontecer quando executamos este script em um navegador. No se esquea de acessar via localhost, para que o Apache possa entender a solicitao:

Na prxima aula veremos melhor a sintaxe da instruo SELECT do SQL, importantssima para a realizao de buscas. EXERCCIOS PROPOSTOS 12 - 3 Identifique na instruo abaixo a senha do servidor MySQL: $con=mysql_connect(localhost, root, phpmysql): a) localhost b) root c) phpmysql d) $con Qual a instruo responsvel por tratar situaes de erros ou falhas durante a manipulao de banco de dados? a) my_sql_connect() b) my_sql_db() c) or die() d) $err Considere as seguintes instrues: <? $sql=mysql_query(Select * From Produtos); $tab=mysql_fetch_assoc($sql);?> Qual seria a sintaxe correta para referenciar o campo nome_fornecedor que est na tabela Produtos? a) $tab[nome_fornecedor] b) $tab(nome_fornecedor) c) $nome_fornecedor d) $reg[nome_fornecedor] 13 SINTAXE SQL Comando SELECT Instruo SELECT a instruo mais poderosa e mais utilizada da linguagem SQL. Permite que seja feita uma incurso ao banco de dados, retornando um conjunto de registros que satisfaam a uma determinada condio ou regra. Em outras palavras, a instruo SELECT permite a realizao de buscas em um determinado banco de dados. A estrutura do banco

Imagine que tenhamos um banco de dados com uma tabela cadastro que tenha os seguintes campos: Cdigo Nome Telefone Endereo Nmero Bairro CEP

SELECT Sintaxe Bsica SELECT nome, telefone FROM cadastro ORDER BY nome A instruo acima ser lida como: Selecione o nome e o telefone, da tabela cadastro e ordene a lista pelo nome das pessoas cadastradas. SELECT Busca Seletiva SELECT * FROM cadastro WHERE bairro=Lapa ORDER BY nome A instruo acima ser lida como: Selecione todos os campos (codigo, nome, telefone...), da tabela cadastro onde o bairro seja Lapa e ordene a lista pelo nome das pessoas cadastradas. SELECT Like SELECT * FROM cadastro WHERE nome Like A% ORDER BY nome A instruo acima ser lida como: Selecione todos os campos da tabela cadastro onde o nome se inicie pela letra A, seguida de qualquer coisa, e ordene a lista pelo nome das pessoas cadastradas. SELECT Like SELECT * FROM cadastro WHERE nome Like %Silva ORDER BY nome A instruo acima ser lida como: Selecione todos os campos da tabela cadastro onde o nome termine com Silva, tendo qualquer outra coisa antes, e ordene a lista pelo nome das pessoas cadastradas. SELECT Like SELECT * FROM cadastro WHERE bairro Like %s% ORDER BY nome

A instruo acima ser lida como: Selecione todos os campos da tabela cadastro onde o bairro contenha a letra S em qualquer posio e ordene a lista pelo nome das pessoas cadastradas. SELECT Busca Composta SELECT * FROM cadastro WHERE nome Like c% And bairro=Vila Mariana ORDER BY nome A instruo acima ser lida como: Selecione todos os campos da tabela cadastro onde o nome inicie com a letra C e o bairro seja Vila Mariana, e ordene a lista pelo nome das pessoas cadastradas. SELECT Usando campos numricos SELECT nome, endereco FROM cadastro WHERE numero BETWEEN 100 And 200 ORDER BY bairro A instruo acima ser lida como: Selecione nome e endereo da tabela cadastro onde o nmero esteja entre 100 e 200, e ordene a lista pelo bairro. Vimos aqui alguns exemplos de instrues SELECT que podem ser utilizados em banco de dados, mas ainda existe muito mais para aprender. Neste curso veremos apenas a sintaxe bsica do SELECT, para o tratamento de apenas uma tabela. Procure ler mais sobre JOINs e outros parmetros para tratamento de mais de uma tabela. Agora sabemos realizar alguns filtros para buscas. Veremos no prximo captulo como incluir, alterar e excluir um ou mais registros na nossa tabela. EXERCCIOS PROPOSTOS 13 - 4 No SQL, que parte da instruo SELECT indica a tabela de origem dos dados? a) SELECT b) FROM c) WHERE d) ORDER BY No SQL, qual o operador que verifica SEMELHANA entre valores? a) = b) BETWEEN c) LIKE d) AND No SQL, que comparao deveria completar o comando abaixo para que fossem mostrados todos os nomes que tenham DO em qualquer lugar? SELECT * FROM cadastro WHERE ???????????? ORDER BY nome

a) b) c) d)

nome Like DO nome Like DO% nome Like %DO nome Like %DO%

A instruo SQL abaixo mostra as pessoas com peso entre 80 e 120 Kg. Que alterao pode ser feita na parte destacada que NO ALTERA o sentido do comando? SELECT * FROM pessoas WHERE peso>=80 AND peso<=120 ORDER BY peso a) peso BETWEEN 80 AND 120 b) peso BETWEEN 80, 120 c) peso BETWEEN >=80 AND <=120 d) O comando no pode ser alterado 14 SINTAXE SQL Comandos INSERT, UPDATE e DELETE Neste captulo veremos os comandos INSERT, UPDATE e DELETE para completar as operaes que podemos fazer com banco de dados. A instruo INSERT utilizada para realizar incluses nas tabelas. Com um simples comando, podemos fazer com que um novo registro faa parte da tabela relacionada. A instruo UPDATE permite fazer alteraes nos dados de uma tabela. Podemos alterar de um simples campo em um registro at um conjunto de registros, realizando uma atualizao mltipla. A instruo DELETE realiza a excluso de um ou mais registros que atendam a uma determinada condio. Veja a sintaxe bsica de cada comando, utilizando a mesma tabela de exemplo da aula anterior. INSERT Sintaxe Bsica INSERT INTO cadastro (codigo, nome, telephone, endereco, numero, bairro, cep) VALUES (111, Jos, 3310-3322, Rua Marrocos, 311, Vila Mariana, 01540-000) Note que: No primeiro conjunto entre parnteses, indicamos os campos e no segundo grupo, indicamos os valores entre aspas. UPDATE Sintaxe Bsica UPDATE cadastro SET nome=Josivaldo, bairro=Tatuap WHERE codigo=111 O comando acima para ser lido da seguinte maneira: ATUALIZE a tabela cadastro, CONFIGURANDO o nome Josivaldo e o bairro para Tatuap ONDE o cdigo seja 111.

Ou seja: o registro da tabela cadastro com cdigo 111 ter seu nome alterado para Josivaldo. UPDATE Atualizaes Mltiplas Imagine a seguinte situao: Os correios mudaram o CEP da Rua Estados Unidos no Jardins, de 01540-000 para 01830-000. Como fazer essa alterao AUTOMATICAMENTE para todos os moradores cadastrados? UPDATE cadastro SET cep=01830-000 WHERE endereo Like %Estados Unidos% AND bairro=Jardins No exemplo acima, o CEP ser alterado para TODAS as pessoas cadastradas na rua Estados Unidos no Jardins, independente da forma em que ela for digitada. DELETE Sintaxe Bsica Devemos tomar cuidado com este comando pois ele apaga o(s) registro(s) sem nenhum questionamento prvio. DELETE FROM cadastro WHERE codigo=2 No exemplo acima, o registro que tem codigo=2 ser removido da tabela cadastro. A leitura do comando ficaria: APAGUE da tabela cadastro o registro ONDE o cdigo seja igual a 2. SQL uma linguagem poderosssima, que deve ser estudada at as suas ltimas instncias, pois isso facilitar o aprendizado de qualquer outra linguagem de programao. Atualmente, todas as linguagens modernas para desktop, portteis e para a web suportam instrues formuladas em SQL. Sendo assim, domin-la imprescindvel para o bom profissional. O que vimos aqui foi s a ponta do iceberg. Procure estudar mais sobre SQL e aprender novas coisas que facilitar seu desempenho como estudante e futuro programador. AT BREVE! EXERCCIOS PROPOSTOS 14 2 Em SQL, qual das opes abaixo a nica sintaxe correta INSERT? a) INSERT INTO cad WHERE cod=3 VALUES (Nome=Jos, Estado=SP) b) INSERT FROM cad (Nome, Email) WHERE (Maria, maria@uol.com.br) c) INSERT INTO cad WHERE (Nome, Site) VALUES (Maria, www.maria.com.br) d) INSERT VALUES cad (Nome, Estado) INTO (Maria, SP) Em SQL, qual dos comandos abaixo muda o preo de todos os carros fabricados antes de 1970 para R$ 1000?

a) b) c) d)

UPDATE cadastro SET Preco=1000 WHERE AnoFab<1970 UPDATE FROM cadastro WHERE AnoFab<1970 VALUE Preco=1000 UPDATE Preco=1000 FROM AnoFab<1970 WHERE cadastro UPDATE ALL FROM cadastro VALUE Preco=1000 AnoFab<1970

REFERNCIAS CONVERSE, T.; PARK, J. PHP: a bblia. 2 ed., Rio de Janeiro: Campus, 2003. NIEDERAUER, J. Desenvolvendo websites com PHP: aprenda a criar websites dinmicos e interativos com PHP e banco de dados. 2 ed., So Paulo: Novatec, 2004. NIEDERAUER, J. PHP para quem conhece PHP. 1 ed., So Paulo: Novatec, 2004. SILVA, G.G.F. da. Curso de PHP. Disponvel em: <http://www.guanabara.info>. Acesso em: 20 jul. 2008.

Potrebbero piacerti anche