16050514 apostila programacao php e mysql exatasweb

Upload: eder-zeique

Post on 18-Oct-2015

13 views

Category:

Documents


0 download

TRANSCRIPT

  • PHP e MySQL

    PHP e

    MySQL

    Autor: Leandro Correa dos [email protected]

    1

  • PHP e MySQL

    SumrioReviso de HTML.....................................................................................................8

    Estrutura HTML...................................................................................................8Atributos.............................................................................................................9Principais Tag's HTML........................................................................................10

    .......................................................................................................10............................................................................................................10.............................................................................................................10...............................................................................................................10 ..............................................................................................................10..........................................................................................................11.........................................................................................................11..............................................................................................................11.............................................................................................................11

    Formulrios.......................................................................................................12Mtodo GET...................................................................................................12Mtodo POST.................................................................................................12Formulrios usando GET e POST...................................................................13Elementos do Formulrio..............................................................................13Campo de Texto............................................................................................13Campo de Senha...........................................................................................13rea de Texto................................................................................................13Listbox e Combobox......................................................................................14Checkbox.......................................................................................................14Boto radio....................................................................................................14Botes Submit e Reset..................................................................................15

    Exerccios:.........................................................................................................15PHP.......................................................................................................................16

    O que PHP?....................................................................................................16Caractersticas do PHP......................................................................................16ASP X PHP.........................................................................................................16Requisitos..........................................................................................................16

    Instalao do PHP.................................................................................................17Ambiente Windows........................................................................................17Ambiente Linux.............................................................................................17

    Scripts Client-Side e Server-Side.......................................................................18Sintaxe PHP.......................................................................................................18Comentrios .....................................................................................................19

    Comentrios de uma linha............................................................................19Comentrios de vrias linhas........................................................................19

    Variveis em PHP..................................................................................................19Tipos de variveis.........................................................................................19Atribuindo valor uma varivel....................................................................20Exibindo o contedo na tela..........................................................................21 Arrays...........................................................................................................21Arrays superglobais.......................................................................................22

    2

  • PHP e MySQL

    Operaes aritmticas......................................................................................23Operaes com Strings e Atribuio.................................................................23

    Operador ...................................................................................................23Operador .= .............................................................................................23Operadores ++ e --...............................................................................24Operadores += e -=...............................................................................24Operadores *= e /=................................................................................24Operador %=.............................................................................................24

    Operadores de comparao..............................................................................24Operadores lgicos...........................................................................................25 Operaes lgicas............................................................................................25

    Operao AND...............................................................................................26Operao OR.................................................................................................26Operao XOR...............................................................................................27Operao NOT...............................................................................................27

    Exerccios..........................................................................................................27Blocos de comandos.............................................................................................28

    Estruturas de controle.......................................................................................28Estrutura if....................................................................................................28Estrutura while..............................................................................................29Estrutura do...while.......................................................................................30Estrutura for..................................................................................................30Estrutura foreach..........................................................................................30 Comandos break e continue........................................................................32Estrutura switch............................................................................................32

    Funes.............................................................................................................33Valor de retorno............................................................................................33Argumentos ou parmetros..........................................................................34Passagem de parmetros por referncia......................................................34

    Variveis globais e locais..................................................................................35Processando Formulrios com PHP.......................................................................35

    Array superglobal $_GET...................................................................................36 Array Superglobal $_POST...............................................................................37Formatao de dados........................................................................................37

    Funo htmlspecialchars()............................................................................37funes addslashes() e stripslashes()...........................................................38funes urlencode() e urldecode()................................................................38funes intval() e doubleval().......................................................................39funes trim(), ltrim() e chop().....................................................................39

    Validao de formulrios com javascript..........................................................39Validao com PHP............................................................................................41

    Espaos em branco.......................................................................................41Quantidade mnima de caracteres................................................................41Correo automtica.....................................................................................41 Valores numricos........................................................................................42

    Arquivos de texto..............................................................................................45Manipulando Arquivos ......................................................................................45

    Abertura........................................................................................................45

    3

  • PHP e MySQL

    Fechamento..................................................................................................46Leitura...........................................................................................................46Escrita...........................................................................................................48

    Funes Require e Include................................................................................49MySQL e PHP.........................................................................................................49

    Estrutura de um Banco de Dados.....................................................................50Acessando MySQL.............................................................................................50Comandos sql...................................................................................................50

    Comando create............................................................................................50Chave primria e chave estrangeira.............................................................52Criando tabelas.............................................................................................52Comando insert.............................................................................................53Clusula where..............................................................................................54Comando update...........................................................................................54Comando alter table.....................................................................................54 Comando delete...........................................................................................55Comando select............................................................................................55Chaves estrangeiras.....................................................................................58Tipos de tabelas ...........................................................................................58

    Relacionando tabelas................................................................................60Relacionamentos entre tabelas.....................................................................60

    Configurando usurios no MySQL.....................................................................61Sistema de privilgios...................................................................................61Concedendo privilgios comando GRANT..................................................62

    Conectando-se ao MySQL com o PHP...............................................................62Conexo........................................................................................................63Executando query's SQL...............................................................................63Organizando os dados da consulta...............................................................64Retornando o nmero de linhas....................................................................64Fechando a conexo.....................................................................................65

    Aplicaes em PHP e MySQL.................................................................................66Mdulo de cadastro.......................................................................................67Mdulo de excluso.......................................................................................67Mdulo de pesquisa parte 1.......................................................................68Mdulo de pesquisa parte 2.......................................................................69Mdulo de alterao......................................................................................70

    Cookies e Sesses - Autenticao.....................................................................73Cookies..........................................................................................................73Sesses.........................................................................................................73

    PHP Orientado a Objetos......................................................................................77Principais componentes ...................................................................................77

    Classes, atributos e mtodos........................................................................77Mtodos construtores e destrutores.............................................................81

    Modificadores de Acesso...................................................................................82Modificador public.........................................................................................82Modificador private.......................................................................................82Modificador protected...................................................................................83Herana.........................................................................................................83

    4

  • PHP e MySQL

    Sobrescrever mtodos..................................................................................84Glossrio de funes do PHP................................................................................85

    Datas.................................................................................................................85Date()............................................................................................................85Getdate.........................................................................................................86Gmmktime()..................................................................................................86Gmstrftime()..................................................................................................86Microtime()....................................................................................................86Mktime()........................................................................................................87Strftime().......................................................................................................87Time()............................................................................................................88

    Diretrios..........................................................................................................88Chdir()...........................................................................................................88Closedir().......................................................................................................88Opendir().......................................................................................................88Readdir().......................................................................................................88

    Execuo de Programas....................................................................................88Escapeshellcmd()..........................................................................................88Exec()............................................................................................................89Passthru()......................................................................................................89System()........................................................................................................89

    Sistema de arquivos do servidor ......................................................................89Basename()...................................................................................................89Chgrp()..........................................................................................................90Chmod()........................................................................................................90Chown().........................................................................................................90Copy()............................................................................................................90Delete().........................................................................................................90Dirname()......................................................................................................90Fclose()..........................................................................................................90Feof().............................................................................................................90File()..............................................................................................................91File_exists()...................................................................................................91Filesize()........................................................................................................91Filetype().......................................................................................................91Fopen()..........................................................................................................91Fputs()...........................................................................................................92Fread()...........................................................................................................92Fwrite()..........................................................................................................92Readfile().......................................................................................................92Rename().......................................................................................................93

    Matemtica.......................................................................................................93Abs()..............................................................................................................93Base_convert()..............................................................................................93Max().............................................................................................................93Min()..............................................................................................................93Mt_rand().......................................................................................................93Pi().................................................................................................................93

    5

  • PHP e MySQL

    Pow().............................................................................................................93Rand()...........................................................................................................93Round()..........................................................................................................94Sin()...............................................................................................................94Sqrt().............................................................................................................94Tan()..............................................................................................................94

    Funes diversas...............................................................................................94Eval().............................................................................................................94Die()..............................................................................................................94Exit()..............................................................................................................94Mail().............................................................................................................94Pack()............................................................................................................95Sleep()...........................................................................................................95

    Tratamento de sesses.....................................................................................95Session_decode()..........................................................................................95Session_destroy()..........................................................................................95Session_encode()..........................................................................................96Session_start()..............................................................................................96Session_is_registered()..................................................................................96Session_module_name()...............................................................................96Session_name().............................................................................................96Session_register()..........................................................................................96Session_unregister()......................................................................................96

    Strings...............................................................................................................96Addslashes()..................................................................................................96Chop()...........................................................................................................97Crypt()...........................................................................................................97Echo()............................................................................................................97Explode().......................................................................................................97Htmlentities()................................................................................................97Htmlspecialchars()........................................................................................97Implode().......................................................................................................97Ltrim()...........................................................................................................98Md5().............................................................................................................98Parse_str().....................................................................................................98Strcmp()........................................................................................................98Strip_tags()....................................................................................................98Stripslashes()................................................................................................98Strlen()..........................................................................................................98Strrev()..........................................................................................................99Strtolower()...................................................................................................99Strtoupper()..................................................................................................99Str_replace()..................................................................................................99Trim().............................................................................................................99Ucfirst().........................................................................................................99Ucwords()......................................................................................................99

    Variveis.........................................................................................................100Doubleval()..................................................................................................100

    6

  • PHP e MySQL

    Empty().......................................................................................................100Gettype().....................................................................................................100Intval().........................................................................................................100Is_array().....................................................................................................100Is_double()...................................................................................................100Is_float()......................................................................................................100Is_int().........................................................................................................100Is_object()....................................................................................................101Is_real().......................................................................................................101Is_string()....................................................................................................101Isset()..........................................................................................................101Settype().....................................................................................................101Strval()........................................................................................................101

    Referncias Bibliogrficas...................................................................................102

    7

  • PHP e MySQL

    Reviso de HTML

    HTML significa Hiper Text Markup Language Linguagem de Marcao de Hiper Texto. Com ela, podemos formatar documentos inteiros para exibio na Internet, transformado textos simples em hipertexto.

    A Internet nada mais do que uma grande rede de computadores, formada por outras redes menores, compartilhando informaes. Para que essas informaes sejam compartilhadas entre os mesmos, preciso que sejam disponibilizadas de forma que todo e qualquer computador possa interpretar. HTML uma linguagem padro para divulgao de documentos na rede, portanto, qualquer computador deve ser capaz de interpret-lo.

    Um documento escrito em HTML , em geral, chamado de pgina web. O conjunto dessas pginas forma um site (lugar, em ingls). Seu contedo chamado de hipertexto, pois pode ser compreendido por qualquer computador, enquanto que o texto comum pode ser visto em um computador de uma forma e em outro de outra forma. Um site pode conter quaisquer informaes que se queira disponibilizar via internet, mas para que ele seja visto, preciso que seja publicado. Para isso, existem os servidores web. Trata-se de computadores que armazenam e disponibilizam esses sites para visitao, a custos relativamente baixos.

    Alm disso, deve-se usar um programa capaz de interpretar o cdigo HTML da pgina, aplicar sua formatao ao documento e exibir o resultado. Este programa chamado de browser ou navegador. Os navegadores mais conhecidos so o Mozilla Firefox, Internet Explorer, Opera e Netscape.

    HTML uma linguagem esttica, ou seja, uma vez escrito, sua estrutura permanece inalterada.

    Estrutura HTML

    HTML composto por tag's, que so marcaes delimitadas pelos smbolos , usados para indicar uma formatao. Ex: Todo documento HTML deve iniciar com a tag e terminar com a tag . Essas tags delimitam o documento, sendo que o que estiver fora delas no ser considerado um documento HTML, e portanto no ser interpretado como hiper texto, e sim como texto comum. Ex:

    ...pginaweb...

    Um documento HTML formado basicamente por cabealho e corpo. No cabealho, fornecemos informaes, como o nome da pgina, autor, palavras-chave para pesquisa, etc. Essas informaes no ficam expostas no navegador do usurio.

    Cabealhos iniciam com a tag e terminam com . A maioria tas tags HTML possuem incio e final.

    Dentro do cabealho da pgina definimos o ttulo da mesma. O ttulo da pgina ser

    8

  • PHP e MySQL

    o contedo entre as tags e . Esse ttulo aparecer na barra de ttulo do navegador. Vejamos nosso exemplo:

    MinhaPginaWeb!!!...

    Digite o cdigo acima e salve como pagina.html e abra-o usando o navegador de sua preferncia.

    Agora, definiremos o corpo da pgina. Todo seu contedo ser visualizado dentro do navegador. O corpo da pgina comea com a tag e termina com .

    MinhaPginaWeb!!!...

    Altere o arquivo pagina.html para que fique como o cdigo acima, depois salve. J temos a estrutura de um documento HTML. Agora, vamos adicionar contedo a esta pgina.

    Atributos

    A grande maioria das tag's HTML possuem atributos, que so valores passados a elas para que as mesmas assumam uma formatao diferente. Exemplo: Se quisermos o corpo da pgina azul, podemos alterar o atributo bgcolor da tag body, alterando seu valor para blue.

    MinhaPginaWeb!!!...

    9

  • PHP e MySQL

    Principais Tag's HTML

    Vamos agora conhecer as tag's mais utilizadas na criao de uma pgina HTML e seus principais atributos. H uma vasta quantidade de tag's que podem ser utilizadas, dependendo do resultado desejado. Aqui, faremos apenas um breve resumo das principais, mas sinta-se vontade para pesquisar e descobrir novas tag's e atributos para adicionar sua pgina web.

    Digite os exemplos dentro do corpo da pgina do exemplo acima. Salve, depois abra-o no navegador de sua preferncia, ou atualize o navegador usando a tecla F5.

    Usados para indicar um comentrio. comentrios no so exibidos no navegador. So utilizados para uma melhor orientao pelo cdigo HTML.

    Define um ttulo. n pode ser qualquer valor entre 1 e 6. Quanto maior o nmero, menor o tamanho do ttulo.Ttulo tamanho 1Ttulo tamanho 2

    Adiciona uma quebra de linha ao texto. forando-o a continuar na linha de baixo. Mesmo que o texto dentro do documento ocupe apenas uma linha, o navegador far a quebra de linha sempre que encontrar a tag .Este um texto que recebeu uma quebra de linha aqui

    Inicia um novo pargrafo, separando assim, blocos de texto distintos. Iniciei um pargrafo. Dentro dele, posso adiconar qualquer contedo e usar quebra de linha para que no ocupe apenas uma linha. Quando o pargrafo terminar, eu posso simplesmente iniciar outro Pargrafos no precisam ser encerrados, pois o incio do prximo o final do anterior.

    Essa tag indica a presena de um link. Links so ligaes entre documentos HTML. Eles direcionam o navegador para um ponto dentro do documento, para outro documento

    10

  • PHP e MySQL

    HTML, para outro arquivo ou at para outro site. Seu principal atributo href, que determina para qual documento o link direcionado. O contedo contido entre as tag's e torna-se o link em si. Pode ser uma frase, uma imagem ou um campo do documento.Pagina 2Abre uma imagem no navegadorDirecionaparaoutrosite

    Usada para formatar texto do documento. Seus principais atributos so:

    face: Nome da fonte;

    size: tamanho da fonte;

    color: cor da fonte;Texto Formatado

    Tabelas so estruturas utilizadas para organizar e posicionar os elementos na pgina. Tabelas contm linhas, que por sua vez, contm clulas. Dentro das clulas, adicionamos o contedo da pgina. Seus principais atributos so:

    bgcolor: cor de fundo

    width: largura (pode ser indicada em pixels ou em percentuais)

    height: altura

    border: espessura da borda

    Marca o incio de uma linha da tabela

    Marca o incio de uma clula dentro de uma linha. Seus principais atributos so:

    cellspacing: espao entre as clulas

    cellpadding: distncia entre o contedo e a borda da clula

    colspan: indica que a clula ocupa o espao de n clulas (colunas)

    rowspan: ocupa o espao de n linhas

    ClulaRosaClulaAzul

    11

  • PHP e MySQL

    ClulaVermelhaClulaVerde

    FormulriosFormulrios so estruturas usadas para que o visitante possa interagir com o site,

    enviando informaes para o site. Essas informaes so processadas por scripts que capturam as informaes enviadas e as processam, retornando um resultado, gravando-as no banco de dados do site, etc....

    O campo pertencente ao formulrio delimitado pelas tag's e . Dentro dessas tag's inserimos os elementos do formulrio (campos de texto, botes, etc). Esses elementos iro capturar a informao fornecida pelo visitante e enviar ao script para processamento. Cada elemento possui um nome que referenciado pelo script na captura de informaes.

    Os principais atributos da tag form so:

    action: indica o script que ir processar as informaes enviadas pelo formulrio

    method: indica o mtodo de envio das informaes

    As informaes de um formulrio podem ser enviadas atravs de dois mtodos: GET e POST.

    Mtodo GET

    Usado para enviar pequenas quantidades de informao, visto que sua capacidade de envio limitada. O mtodo GET usa a barra de endereos do navegador para enviar informaes para o servidor. Possui um limite de 256 caracteres, sendo que o excedente pode ( e acaba) se perdendo durante a transmisso. o mtodo de envio mais rpido e tambm o menos seguro, pois as informaes enviadas atravs deste mtodo ficam explicitamente visveis na barra de endereos, o que o torna um mtodo pouco seguro, visto que informaes confidenciais (senhas, nmeros de cartes, etc) tornam-se visveis a qualquer pessoa. A URL do site assume o seguinte aspecto:http://www.sitequalquer.com?informao1=valor1&informao2=valor2

    O sinal ? indica que o fim do endereo do site e o incio das informaes que sero enviadas atravs do mtodo GET. Informao1 e Informao2 so as variveis, que contm os valores que sero enviados para o servidor. Valor1 e valor2 so os valores das respectivas variveis. O sinal & usado para separar uma varivel da outra.

    Mtodo POST

    Oposto ao anterior, as informaes so enviadas de forma mais segura, possibilitando o uso de criptografia e outros recursos de segurana. No h um limite para a quantidade de informaes que pode ser enviada atravs deste mtodo, porm, o mais lento. Para us-lo.

    12

  • PHP e MySQL

    Formulrios usando GET e POST

    Para utilizar qualquer um dos dois mtodos mencionados acima para enviar informaes de um formulrio, devemos declar-lo dentro da tag , como nos exemplos a seguir:

    Elementos do Formulrio

    A seguir, veremos os principais elementos de um formulrio. Os elementos do formulrio possuem um atributo comum chamado name. Ele indica o nome de cada elemento. Este nome ser tratado pelo script como uma varivel (algo que contm uma informao), portanto, cada elemento deve ter um atributo name distinto, para que seja diferenciado pelo script.

    Campo de Texto

    Permite a entrada de texto pelo usurio. Usado para preenchimento de nomes, endereos e outras informaes simples. Seus principais atributos so:

    name: nome do campo de texto

    value: valor padro para o campo

    size: tamanho do campo

    maxlenght: quantidade mxima de caracteres aceitos pelo campoNome:

    Note que usamos a tag . Esta tag pode assumir formas diversas, como campos de texto, senhas, botes, etc. O que torna-a um campo de texto o valor do atributo type. Quando indicamos o valor text, a tag input tornou-se um campo de texto. Outras formas desta tag sero vistas a seguir.

    Campo de Senha

    Semelhante ao campo de texto, porm no aceita o atributo value. Utilizado para a digitao de informaes confidenciais, principalmente senhas.Senha:

    rea de Texto

    Abre uma rea para digitao de texto. Devemos informar o nmero de linhas e colunas que a rea de texto ir ocupar. Isto feito atravs dos atributos rows (linhas) e cols (colunas). Comentrio: comentrio:

    13

  • PHP e MySQL

    Listbox e Combobox

    Cria uma lista de opes para serem selecionadas. O combobox mostra apenas um valor de cada vez em um menu tipo cortina, enquanto o listbox mostra mais de um valor, em forma de lista. Ambos utilizam a mesma tag (), porm, o listbox recebe o atributo size, informando quantos valores sero mostrados por ele. Ambos recebem o atributo multiple, que permite a seleo de mltiplos valores.

    GuairaUmuaramaLovatCascavelCianorte

    GuairaUmuaramaLovatCascavelCianorte

    Checkbox

    Cria caixas de seleo, possibilitando ao visitante selecionar mais de uma opo. O atributo checked faz com que a opo aparea marcada no formulrio. O atributo value obrigatrio.Selecione uma cidade:

    UmuaramaGuairaCuritiba

    Obs: Note que o atributo name possui em seu valor, o nome pesquisa, seguido de colchetes. Isso ser discutido mais adiante...

    Boto radio

    Semelhante ao Checkbox, porm, permite a seleo de apenas uma opo dentre as oferecidas. (Diferencia-se do checkbox pelo formato arredondado).Enquete:Que nota voc daria ao nosso formulrio?

    OtimoBomRegularRuimPssimo

    14

  • PHP e MySQL

    Obs: Note que o atributo name de cada boto radio possui o mesmo valor. Isso ser discutido mais adiante...

    Botes Submit e Reset

    O boto submit envia as informaes do formulrio para o script indicado, utilizando o mtodo indicado (GET ou POST). O boto reset apaga tudo o que foi digitado no formulrio. indicado colocar um boto reset no formulrio, caso o usurio desista de enviar o formulrio ou no queira manter suas informaes no computador (Ex: quando estiver usando um computador pblico).

    O atributo name opcional, mas pode ser usado, caso haja necessidade de se ter mais de um boto submit ou reset dentro de um mesmo formulrio.

    Exerccios: Monte o layout do seu site. Use tabelas para organizar o contedo. O site deve ter

    um banner na parte superior, uma coluna para o contedo, outra coluna para o menu de navegao do usurio e um rodap contendo seu nome;

    No espao destinado ao contedo, monte seu curriculum vitae.

    Na coluna ao lado, crie uma tabela contendo 3 linhas e uma coluna. Abaixo dela, crie um formulrio de enquete e pea para que o visitante d uma nota ao seu site

    Abaixo de seu curriculum, crie outro formulrio para que o visitante possa adicionar comentrios ao contedo do site. O visitante deve informar o nome, localidade, e-mail de contato, uma nota para o contedo e um comentrio.

    15

  • PHP e MySQL

    PHP

    O que PHP?PHP (Hypertext PreProcessor) uma linguagem de programao de scripts para

    manipulao de pginas HTML. Criada por Rasmus Lerdorf em 1994, amplamente utilizada na programao de web sites dinmicos, especialmente para manipulao de banco de dados.

    Caractersticas do PHP PHP gratuito: Distribudo sob a licena GPL, possui seu cdigo-fonte (cdigo

    utilizado para sua criao) aberto, o que facilita a correo de eventuais erros no cdigo, permitindo seu rpido desenvolvimento

    PHP multiplataforma: Inicialmente foi desenvolvido para ser usado em servidores Unix/Linux (que compreendem 70% dos servidores web), ganhando uma verso para Windows e para Macintosh posteriormente. Isso faz do PHP uma linguagem capaz de ser executada independente da plataforma utilizada.

    PHP compatvel com a a maioria dos servidores web disponveis no mercado, tendo suporte nativo para o servidor Apache (atualmente o mais utilizado no mercado).

    PHP suporta banco de dados: Possui suporte nativo ao MySQL, porm pode utilizar outros sistemas de gerenciamento de banco de dados (SGBD), dentre eles, Oracle, Sybase, mSQL, Firebird, PostgreSQL e DB2. Permite tambm o uso de mais de um banco de dados na mesma aplicao.

    PHP suporta uma grande variedade de protocolos, dentre eles, IMAP, POP3, SMTP, XML, LDAP, HTTP e FTP.

    ASP X PHPA linguagem ASP foi desenvolvida sob os mesmos objetivos do PHP, porm, por ter

    sido desenvolvida pela Microsoft, funciona apenas em plataformas Microsoft, exigindo que seu servidor tenha Windows 2003 Server instalado, por exemplo. Isso faz do ASP invivel, devido a custos de licena, podendo variar entre US$2.500,00 e US$10.000,00. Alm disso, o fato do ASP ter seu cdigo fechado dificulta seu desenvolvimento e a correo de bugs, tornando a linguagem suscetvel a erros.

    RequisitosPHP exige apenas a instalao de um servidor web compatvel. Caso queira utilizar

    um banco de dados, instale um que seja compatvel. Recomendamos a utilizao do Servidor web Apache e do banco de dados MySQL, por terem suporte nativo ao PHP.

    16

  • PHP e MySQL

    Instalao do PHP

    Ambiente Windows

    A instalao em ambiente Windows simples. O instalador ir configurar o ambiente completo para o PHP. Voc s dever informar o nome do servidor (na dvida, deixe localhost, seu nome e seu e-mail para contato.

    Existe um instalador para Windows que contm o servidor Apache, o PHP e o banco de dados MySQL, alm de outros recursos para administrao de sites. Trata-se do Xampp. O instalador pode ser baixado em www.xampp.org.

    Para saber se a instalao foi concluda com sucesso, abra o editor de texto de sua preferncia e adicione as seguintes linhas:

    Salve com o nome de info.php e coloque-o na pasta C:\xampp\htdocs. Abra seu navegador de internet preferido e digite na barra de endereos: http://localhost/info.php. O resultado ser uma lista detalhada da configurao do PHP em seu computador. Esta lista gerada pelo prprio php. Este script ser explicado mais adiante.

    Ambiente Linux

    Ao contrrio do que muita gente pensa, a instalao em ambiente Linux pode ser to simples quanto a instalao em ambiente Windows, especialmente se houver conexo com a internet. Sistemas operacionais Linux so baseados em pacotes, ou seja, cada programa um pacote ou um conjunto de pacotes que podem ser instalados, atualizados e removidos atravs de comandos simples ou utilitrios grficos, como o Synaptic. A instalao atravs da linha de comando varia em cada caso. Se voc usa um sistema baseado em Debian, como Ubuntu, Kurumin ou Knoppix, voc pode utilizar o comando apt da seguinte forma:

    Abra o terminal;

    Digite su e aperte Enter para poder logar-se como administrador do sistema;

    Digite a senha do administrador;

    Digite o seguinte comando:apt-get install apache2 php5 mysql5 mysqladmin phpmyadmin

    Caso seu sistema seja baseado em Red Hat, como Fedora, Mandriva ou CentOS, substitua o apt-get do comando acima por Yum. Caso use Mandriva, substitua-o por urpmi.

    yum install apache2 php5 mysql5 mysqladmin phpmyadminurpmi install apache2 php5 mysql5 mysqladmin phpmyadmin

    Este comando far com que o sistema instale o servidor Apache, o PHP, o banco de dados MySQL, o administrador do MySQL e o PhpMyAdmin, usado para administrar remotamente o site.

    17

  • PHP e MySQL

    Caso prefira uma maneira mais fcil de realizar esta tarefa, basta usar o gerenciador de pacotes Synaptic. Se sua distribuio no o possui, ele pode ser instalado atravs do mtodo acima. O Synaptic est disponvel para qualquer distribuio Linux. Aps instalado, abra-o, digite a senha do Administrador (root), marque, clicando com o mouse, os pacotes que voc quer instalar. Depois clique em aplicar. Ele ir baixar os pacotes necessrios e instalar em seu sistema. Para saber se a instalao foi concluda com sucesso, abra o editor de texto de sua preferncia e digite o seguinte cdigo:

    Em seguida, salve com o nome de info.php e mova-o para a pasta /var/www. Em seguida, abra o navegador de sua preferncia e digite o seguinte endereo: http://localhost/info.php. O resultado ser uma lista detalhada da configurao do PHP em seu computador. Esta lista gerada pelo prprio php. Este script ser explicado mais adiante.

    Scripts Client-Side e Server-SideScripts Client-Side (Lado-Cliente) so executados no computador do prprio cliente,

    por exemplo, o cdigo HTML, que executado direto no navegador. So muito utilizados para o processamento de pequenas tarefas, tirando essa responsabilidade do servidor web, que fica livre para executar os scripts Server-Side (Lado-Servidor), que so, por exemplo, os scripts PHP. Quando o usurio clica em um boto de busca, o pedido de busca enviado ao servidor, que encontra o script responsvel pela busca e o processa. O resultado colocado em pacotes e enviado de volta ao computador que requisitou a pesquisa. Um servidor pode ter muitos clientes realizando requisies desse tipo, portanto, recomendado que pequenas verificaes e tarefas menores sejam executadas por aplicaes Client-Side, deixando as requisies mais importantes (como conferir senhas por exemplo) para o Servidor. PHP uma linguagem Server-Side, ou seja, sempre ser o servidor que ir executar. Se sua pgina contm muitos scripts PHP desnecessrios, pode acabar prejudicando o servidor, tornando a conexo mais lenta. Use o PHP com cuidado ;-)

    Sintaxe PHPA linguagem PHP pode ser usada de duas formas: incorporado ao HTML ou de forma

    pura, em scripts separados das pginas HTML. Em ambos sua sintaxe a mesma. Todo cdigo PHP delimitado por tags de abertura e fechamento (como o html), como mostrado abaixo:

    Estilo php 'longo' Estilo php 'curto' Estilo Javascript Estilo ASP

    ...

    Tudo que estiver dentro dessas tag's PHP ser considerado script PHP, e no HTML. Cdigo PHP digitado fora das tag's ser interpretado como erro.

    18

  • PHP e MySQL

    Obs: Cada linha de cdigo PHP deve terminar com ; para que a linguagem reconhea o fim de uma linha de comando e o comeo de uma nova.

    Comentrios Comentrios no PHP podem ser de duas formas:

    Comentrios de uma linha

    Usamos duas barras ou asterisco para iniciar um comentrio de uma linha. Tudo o que for digitado aps estes caracteres (incluindo cdigo PHP) no ser interpretado pelo servidor, lembrando que comentrios do cdigo sero visveis apenas dentro do cdigo, ou seja, o navegador no imprime um comentrio na tela.

    Comentrios de vrias linhas

    Usados quando o comentrio ocupa mais de uma linha, so delimitados pelos sinais '/*' e '*/'. Tudo que estiver entre estes dois sinais ser considerado comentrio e no ser interpretado pelo servidor.

    Variveis em PHPVariveis so recipientes, com a funo de armazenar dados a fim de serem

    utilizados a qualquer momento pelo programa. Diferente de muitas linguagens de programao, no necessrio declarar a existncia de uma varivel, ou mesmo o tipo de informao que ela armazenar. Variveis no PHP so identificadas pelo sinal $ antes de seu nome. Os nomes de variveis no podem possuir caracteres especiais (espaos, acentos, etc), com exceo do underline (_). De preferncia, use nomes que indiquem o tipo de informao que a varivel ir armazenar. Exemplo de nomes vlidos:$nome, $endereco, $idade, $data_inscricao, $20assustar, $123;

    PHP Case Sensitive, ou seja, diferencia maisculas e minsculas. A varivel $a diferente da varivel $A.

    Tipos de variveis

    Variveis devem armazenar um determinado tipo de informao. PHP no exige que este tipo seja informado, pois reconhece-o automaticamente. Os tipos so:

    Nmeros inteiros (int ou integer): Nmeros naturais positivos e negativos. Ex: 25, -7;

    19

  • PHP e MySQL

    Nmeros Fracionrios (float, double ou real): Nmeros fracionrios, tambm chamados de ponto flutuante ou dupla preciso. Ex: 3,14;

    Caracteres alfanumricos (String): Valores literais. Ex: Joo da Silva. Valores do tipo String devem estar dentro de aspas ou apstrofos. Mesmo valores numricos, se informados como strings, sero tratados como tal;

    Valores booleanos (bool): So do tipo Verdadeiro ou Falso. PHP interpreta Verdadeiro como 1 e Falso como 0. Valores booleanos sero vistos mais adiante;

    Vetores (array): Vetores so um conjunto ordenado de variveis. Cada varivel possui um ndice, que pode ser numrico ou literal (no caso de array associativo). Ex: $lista[]. Os colchetes servem para que determinada posio do vetor seja referenciada. Ex: $lista[2]. Vetores no PHP iniciam em 0.

    Objeto (objetc): Utilizados na programao orientada a objetos, onde definimos uma classe, e dentro dela as variveis e funes que estaro disponveis aos seus objetos. Uma varivel do tipo objeto pode conter uma classe com diversas variveis e funes para serem utilizadas. Este conceito ser visto mais adiante;

    Atribuindo valor uma varivel

    Como vimos anteriormente, variveis podem guardar qualquer tipo de valor, mas para isso preciso que indiquemos o valor que deve ser guardado dentro delas. Para isso, utilizamos um operador responsvel por inserir na varivel um determinado valor. Trata-se do sinal =. Ex:$salario = 700,00;

    Na linha acima, a varivel salrio recebe o valor 700,00 que do tipo float (fracionrio). Cada linha de cdigo do PHP (como em muitas linguagens de programao) termina com o sinal ;. Ele indica o fim de uma linha de cdigo.

    Voc pode forar a varivel a receber um tipo especfico de valor, indicando o tipo desejado entre parnteses, antes da atribuio. Ex: Se quisermos que a varivel $salario receba o valor como uma String em vez de um inteiro, podemos realizar a converso do valor para String da seguinte forma:$salario = (string) 700,00;

    Dessa forma, o contedo da varivel $salario no ser um valor numrico e sim um valor literal, ou seja, no h mais o valor 700,00 e sim a string 700,00.

    Para atribuir a uma varivel um valor do tipo String, deve-se colocar este valor entre aspas ou apstrofo (aspas simples). Valores dentro destes sinais so considerados Strings (as diferenas entre elas sero comentadas adiante). Ex:$nome = SENAC;$nome = 'senac';

    20

  • PHP e MySQL

    Exibindo o contedo na tela

    Podemos exibir o contedo de uma varivel na tela com o uso do comando echo. Ele imprime na tela o contedo de uma varivel. Tambm pode ser usado para imprimir cdigo HTML. Sua sintaxe :echo conteudo $variavel ;No exemplo acima, imprimimos um valor literal, o valor de uma varivel e uma tag html. Tambm podemos utilizar apstrofos no lugar de aspas, porm, apstrofos mostram o nome de uma varivel em vez de seu contedo. Ex:$variavel = qualquer;echo 'Valor $variavel';

    O exemplo acima imprimir na tela: Valor: $variavel em vez do valor contido na varivel. Para contornar este problema, podemos utilizar o operador de concatenao Ponto (.). Sua funo concatenar (unir) as expresses s variveis. Dessa forma, o exemplo acima ficaria:echo 'Valor '.$variavel;

    Dessa forma, $variavel fica unida ao comando echo, que imprime seu valor na tela. Com o uso da concatenao, a varivel no precisa ficar entre apstrofo ou aspas. O resultado ser:Valor qualquer

    Arrays

    Array (ou Vetor) um conjunto ordenado de variveis. Em um array, todas as variveis possuem um ndice, que pode ser um nmero ou texto. O ndice deve aparecer entre [ e ], logo aps o identificador do array. Ex: $lista[] ou $lista[0].

    No PHP, os arrrays iniciam-se em zero. Diferente de outras linguagens, voc no precisa definir um nmero limite de posies dentro de um array, pois ele se expande dinamicamente.

    Caso o vetor no seja indicado entre os colchetes, o PHP ir procurar pelo ltimo elemento do array e atribuir o novo valor na posio seguinte.$lista[]; //isso indica que a varivel lista um array$lista[0] = 10; //valor 10 na posio zero; a primeira posio do array$lista[1] = 11; //valor 11 na posio 1$lista[] = 12; //valor 12 colocado logo em seguida, na posio 2$lista[] = 13; //valor 13 colocado na posio 3$lista[7] = 14; //valor 14 colocado na posio 7, deixando as anteriores vazias$lista[] = 15; //valor 15 colocado na posio 8 do array

    Podemos utlizar a funo array para atribuir valore a um vetor. Os valores devem estar entre parnteses e separados por vrgula. Ex:$lista = array(10, 11, 12, 13, 14, 15);

    Tambm possvel utilizar nomes em vez de nmeros para referenciar um array, criando assim um array associativo. Ex:$usuario['nome'] = Joo;$usuario['idade'] = 25;$usuario['cidade'] = Guaira;

    21

  • PHP e MySQL

    $usuario['estado'] = Paran;Podemos utilizar a funo array para arrays associativos, indicando uma

    chave e um valor, separados pelo sinal => (igual e maior, formando uma seta). Ex:$usuario = array(nome => Joo, idade => 25, cidade => Guaira, estado =>Parana);Cada posio do array possui um nome, em vez de um valor numrico. Podemos exibir seu contedo dessa forma:echo O usurio .$usuario['nome']., de .$usuario['idade']. anos mora em . $usuario['cidade']. - .$usuario['estado']..;

    O resultado do exemplo acima ser:

    O usurio Joo, de 25 anos mora em Guara Paran

    Podemos utilizar mais de um ndice em um array, tornando-o um array multidimensional (Matriz). Uma matriz pode ser comparada a uma tabela, formada de linhas e colunas. Ex:$tabela[0][0];$tabela[0][1];$tabela[0][2];$tabela[1][0];$tabela[1][1];$tabela[1][2];

    No exemplo acima, teramos uma tabela com 3 linha e 3 colunas. Podemos tambm combinar ndices associativos matriz. Ex: Uma lista de times de futebol de cada cidade de cada estado:

    $time['MG']['BeloHorizonte'] = Atletico Mineiro;$time['SP']['SaoPaulo'] = Corinthians;$time['RS']['PortoAlegre'] = Gremio;$time['PR']['Curitiba'] = Coritiba;

    Arrays superglobais

    So arrays pertencentes ao PHP, entre eles esto o array $_GET e $_POST que armazenam o valor das variveis enviadas pelos formulrios atravs dos respectivos mtodos GET e POST. Alm deles, temos o array $GLOBALS, que armazena variveis globais definidas no script e os arrays $_SESSION e $_COOKIE, utilizados em sesses. Todos eles sero vistos em detalhes mais adiante. A sintaxe para a utilizao destes array :

    $ARRAY['variavel_ou_valor'];

    Onde ARRAY o nome do array superglobal que ser utilizado e 'variavel_ou_valor' o nome da varivel ou do valor a ser extrado do array.

    22

  • PHP e MySQL

    Operaes aritmticasPara realizar operaes aritmticas no PHP utilizamos os seguintes operadores:

    * para o exemplo abaixo, consideramos $a contendo o valor 4 e $b o valor 2

    Operao Operador Exemplo Resultadoadio + $a + $b 6

    subtrao - $a - $b 2multiplicao * $a * $b 8

    diviso / $a / $b 2mdulo (resto da diviso) % $a % $b 0

    Podemos realizar uma operao aritmtica e de atribuio em uma nica linha. Para isso, precisamos apenas fazer com que uma varivel receba o valor da operao. Ex:$resultado = $a + $b * 2;

    Lembrando que voc tambm pode usar sinais como parnteses para indicar a ordem de procedncia na operao aritmtica. Ex: Qual a metade de dois mais dois? O resultado pode ser diferente, conforme a ordem de procedncia dos operadores. $valor = 2+2/2; /* nesse caso, a diviso possui procedncia na operao, sendo executada antes da adio. O resultado ser 3 */$valor = (2+2)/2; /* j neste caso, o que est entre parnteses possui procedncia maior do que a diviso, ou seja, deve ser realizado primeiro. Neste caso, o resultado ser 2 */

    Operaes com Strings e Atribuio

    Operador .

    Utilizamos o operador . para concatenar (unir) dois valores (geralmente Strings). Ex: quando queremos unir o valor de uma varivel a uma string qualquer. echo Meu nome .$nome. e moro em .$cidade. desde .$data..;

    Operador .=

    Utilizamos operadore de atribuio para adicionar a uma varivel um novo contedo, sem que o contedo antigo seja perdido. Ex: Atribumos varivel $nome o nome do usurio. $nome = Leopoldo;

    O contedo da varivel Leopoldo. Agora, queremos adicionar o sobrenome varivel, mas devemos fazer isso sem que o nome seja perdido. Para isso, utilizamos o operador .=, que tem a funo de atribuir o valor varivel, sem que seu contedo seja perdido.$nome .= da Silva;

    23

  • PHP e MySQL

    Agora, o contedo da varivel $nome Leopoldo da Silva.

    Operadores ++ e --

    O operador ++ tem a funo de incrementar em 1 o valor da varivel. Utilizado em variveis contadoras, equivalente expresso $varivel = $varivel + 1. Em oposio, o operador -- decresce o valor da varivel em 1. Ex: iniciamos a varivel $contador como tendo o valor 1 e utilizamos os operadores ++ e --. O resultado :$contador = 1; //varivel $contador possui valor 1$contador++; //agora, $contador vale 2$contador++; //$contador passa a valer 3$contador--; //$contador volta a valer 2$contador--; //$contador vale 1

    Operadores += e -=

    Sua funo incrementar ou decrementar varivel o valor de outra varivel. Equivalente expresso $variavel1 = $variavel1 + $variavel2 e $variavel1 = $variavel1 variavel2, respectivamente. Ex:$valor1 = 1; //inicia variveis $valor2 = 2;$valor3 = 3;$cont = $valor3; //$cont agora vale 3$cont += $valor2 //$soma $cont o valor em $valor2. $cont vale 5$cont -= $valor1 //subtrai de $soma o valor de $valor1. $cont vale 4

    Operadores *= e /=

    Semelhante aos anteriores, porm o operador *= multiplica o valor das variveis, enquanto o operador /= divide-os. Ex:$valor1 = 4;$valor2 = 2;$cont = valor1; //$cont vale 4$cont *= $valor2; //equivale a $cont = $cont * $valor2. $cont vale 8$cont /= $valor1; //equivale a $cont = $cont / $valor1. $cont vale 2

    Operador %=

    Como podemos supor, semelhante aos anteriores, porm, o valor acrescentado varivel o resto da diviso. Ex:$valor1 = 2;$valor2 = 4;$cont = $valor2; //$cont vale 4$cont %= $valor1 /*o resto da diviso entre $cont e $valor1 (4 e 2) acrescentado $cont, ou seja. $cont = $cont + ($cont % $valor1). Como o resto da diviso entre 4 e 2 zero, a expresso seria equivalente a $cont = $cont + 0; */

    Operadores de comparaoSo utilizados para comparar dois valores ou duas expresses. Retorna o valor 1 em

    caso verdadeiro e 0 em caso de falso. atravs dos operadores de comparao que

    24

  • PHP e MySQL

    construmos testes lgicos e estruturas de deciso, que permitem ao script executar determinada funo se determinada condio for satisfeita. So operadores de comparao:

    Operao operador Sintaxeigual == $a == $b //retorna verdadeiro se forem iguais

    diferente != $a != $b //retorna verdadeiro se forem diferentesmaior/menor < ou > $a > $b //verdadeiro se $a maior que $b

    maior ou igual/menor ou

    igual

    >= ou = $b //verdadeiro se $a for maior ou igual a $b

    A operaes de comparao utilizando os dois ltimos exemplos deve ser utilizada com cuidado. Ex: Se possumos duas variveis $a e $b contendo o mesmo valor (ex: o valor 10), as seguintes operaes retornaro resultados diferentes:

    operao resultado $a == $b verdadeiro$a != $b falso$a > $b falso$a < $b falso

    $a >= $b verdadeiro$a

  • PHP e MySQL

    a condio e se for verdadeira, executa determinada(s) funo(es); Caso seja falsa, executa funo(es) diferentes. Porm, existem casos em que mais de uma condio deve ser avaliada. Para isso, utilizamos operaes lgicas. Elas avaliam duas ou mais condies e, atravs de operaes lgicas, determinam qual ser o resultado das condies avaliadas. O programa, ento, ir utilizar este valor para determinar o que fazer. Existem basicamente, quatro operaes lgicas chamadas: AND, OR, XOR e NOT (E, OU, OU EXCLUSIVO e NO). Operaes lgicas permitem que o programa avalie se uma condio verdadeira ou falsa e execute funes especficas com base nos resultados. Veremos agora as principais operaes lgicas:

    Operao AND

    O operador AND retorna verdadeiro apenas quando todas as condies forem verdadeiras. Uma tabela de possveis resultados mostrada abaixo.

    condio 1 AND condio 2 resultado V AND V VV AND F FF AND V FF AND F F

    Podemos comparar a operao lgica AND a uma multiplicao. Substituindo o Verdadeiro por 1 e Falso por 0, teremos o AND funcionando como um operador de multiplicao.

    valor 1 * valor 2 Resultado 1 * 1 11 * 0 00 * 1 00 * 0 0

    Operao OR

    A operao OR no to rgida. O resultado ser verdadeiro caso uma das condies seja verdadeira. Seria idntico uma operao de adio, porm com uma exceo: Na operao OR, a soma 1 + 1 igual a 1. Vejamos a tabela:

    condio 1 OR condio 2 resultadoV OR V VV OR F VF OR V VF OR F F

    26

  • PHP e MySQL

    Transformando Verdadeiro em 1 e Falso em 0, teremos:

    condio 1 + condio 2 resultado1 + 1 11 + 0 10 + 1 10 + 0 0

    Lembrando que no h o valor 2 na operao, portanto, 1 + 1 torna-se 1.

    Operao XOR

    A operao XOR (OU EXCLUSIVO) tem uma particularidade: Seu resultado ser verdadeiro apenas se e somente se uma das condies for verdadeira, retornando falsa caso as duas tenham o mesmo valor.

    condio 1 XOR condio 2 Resultado V XOR V FV XOR F VF XOR V VF XOR F F

    Operao NOT

    Trata-se da mais simples de todas: Ela apenas inverte o resultado de uma operao, ou seja, verdadeiro torna-se falso e vice-versa.

    condio NOT resultado V NOT FF NOT V

    Exerccios Escreva um script php que armazene em variveis o nome e a idade de uma pessoa.

    Depois escreva na tela, em uma nica mensagem, o nome e a idade da pessoa.

    Escreva um script que mostre o valor de 3 variveis numricas. Depois atribua primeira varivel o valor das outras duas variveis. Logo aps, acrescente 1 ao valor da segunda varivel e decresa em 1 o valor da terceira varivel.

    Escreva um script que armazene em variveis o seu nome e o nome de 5 cores (em ingls). Utilizando apenas o comando echo, escreva seu nome 5 vezes na tela. Cada ocorrncia do nome deve ser de uma das cores previamente armazenadas nas variveis. Utilize a tag para formatar os nomes.

    27

  • PHP e MySQL

    Blocos de comandosBlocos so um conjunto de linhas de cdigo delimitadas pelos sinais { e }. Seu

    objetivo agrupar comandos responsveis por determinada funo. Vejamos como blocos de comando podem ser utilizados:

    Estruturas de controleUtilizamos estruturas a fim de executar determinados blocos de comandos quando

    necessrio, possibilitando a reutilizao do cdigo. Existem 3 tipos de estruturas:

    Estruturas de Deciso: Utilizadas pelo programa para possibilitar a execuo de determinado bloco de comandos caso uma condio seja satisfeita. Dessa forma, o programa executa tarefas baseado em condies pr-estabelecidas. Ex: Escrever uma mensagem na tela, caso um valor seja par e outra mensagem caso seja mpar.

    Estruturas de Repetio: Possibilitam a execuo de um determinado bloco de comandos em uma quantidade de vezes pr-determinada. Isso evita que o mesmo bloco de comandos seja reescrito diversas vezes, facilitando a compreenso do cdigo. Estruturas de deciso podem ser combinadas estrutura de repetio para tornar a execuo mais dinmica.

    Funes: Blocos de comandos e estruturas podem ser colocadas dentro de funes e chamadas pelo programa principal quando necessrias, tornando o programa principal mais rpido, limpo e organizado. Tambm facilita sua posterior manuteno. Cada funo deve possuir um nome nico, que segue as mesmas regras de um nome de variveis.

    Vamos agora conhecer as estruturas que podemos utilizar no PHP:

    Estrutura if

    A estrutura if (do ingls: se) executa um determinado bloco, caso uma condio seja verdadeira. Sua sintaxe :

    A utilizao dos delimitadores { e } obrigatria, exceto se o bloco contiver apenas uma linha de cdigo. Podemos colocar quantas linhas de cdigo precisarmos dentro da estrutura. Ex:

    No exemplo acima, a estrutura executar os comandos quando o valor da varivel $valor1 for igual a 2.

    28

  • PHP e MySQL

    Existem casos em que precisamos que a estrutura execute um determinado bloco de comandos caso uma condio seja verdadeira e outro caso seja falsa. Para isso existe uma variao da estrutura if chamado de if...else (se...ento).Essa estrutura executa um determinado bloco caso a condio seja verdadeira e outro caso seja falsa. Ex:

    A condio a ser avaliada pela estrutura if faz um teste na varivel $a. Caso o resultado seja verdadeiro ($a igual a $b), a estrutura executar o primeiro bloco de comandos. Caso seja falsa, ela ir direto para o segundo bloco de comandos, ou seja, ir pular a primeira parte da estrutura. Isso evita que o teste seja feito novamente, deixando o programa duas vezes mais rpido.

    Estrutura while

    A estrutura while uma estrutura de repetio. Ela avalia a expresso e executa o bloco de comandos enquanto a condio for verdadeira. caso a condio retorne falsa, o while deixa de execut-la. Sua sintaxe :

    Devemos ter um cuidado especial a utilizar estruturas de repetio, como while. Temos que ter certeza de que h uma chance da expresso avaliada retornar o valor Falso, do contrrio, ir se tornar um lao infinito, ou seja, no vai parar de executar.

    Ex:

    Na estrutura acima, definimos o valor de $cont como sendo 1. O lao while executar um pequeno bloco de comandos enquanto o valor de $cont for menor que 10. O bloco do while escrever uma frase informando o valor de $cont, depois ir acrescentar 1 ao seu valor. Assim, o valor de $cont ir aumentar at chegar a 10, encerrando a execuo do while.

    29

  • PHP e MySQL

    Estrutura do...while

    A estrutura do...while semelhante a while, porm, enquanto a estrutura while avalia a condio antes de executar, a estrutura do...while executa o bloco antes de fazer o teste. Ex:

    Estrutura for

    A utilizao do for idntica a do while, entretanto, sua sintaxe diferenciada. Nele, definimos uma varivel contadora, uma condio para o final da repetio e uma regra de modificao do contador. Sua sintaxe :

    Na inicializao, definimos e inicializamos o contador. Depois, criamos uma condio para o trmino da execuo do for. Em seguida definimos o parmetro de atualizao da varivel de controle do for. Ex:

    No exemplo acima, definimos dentro do for uma varivel $cont e atribumos o valor 0 a ela. Em seguida, dizemos ao for para executar o bloco de comandos enquanto o valor de $cont for menor que 10. Por ltimo, dizemos que cada vez que a estrutura for executada, a varivel $cont receber + 1 (em virtude do operador ++). Aps a atribuio, a condio testada novamente (como no while) at que a condio para o trmino do for seja satisfeita.

    Estrutura foreach

    Esta estrutura oferece uma maneira mais simples de percorrer os elementos de um array. Possui duas sintaxes:

    ou

    30

  • PHP e MySQL

    No primeiro exemplo, a estrutura vai do primeiro ao ltimo elemento do array, e a cada iterao o valor corrente do array atribuido a varivel $elemento, e o ponteiro interno do array avanado. Dessa forma, podemos manipular os valores de $array atravs da varivel $elemento.Ex:

    A estrutura foreach atribui a $v o valor da primeira posio de $valor e o imprime na tela. Em seguida, vai segunda posio de $valor, atribui seu contedo a $v e o imprime novamente. Por isso o comando echo mostra o contedo em $v, em vez do contedo em $valor. No caso de um array associativo, teramos:

    O exemplo acima imprime a chave associativa e o valor de cada posio do array. O resultado ser:

    $a[um] => 1

    $a[dois] => 2

    $a[tres] => 3

    $a[quatro] => 4

    31

  • PHP e MySQL

    Comandos break e continue

    O comando break utilizado para parar a execuo de um determinado script, bloco ou funo. Ao encontrar o comando break, PHP ir direto ao final do bloco, deixando a estrutura. Ao contrrio, o comando continue faz com que o PHP mantenha a execuo do script. Ex:

    O resultado ser:

    executando: Valor de $i => 0executando: Valor de $i => 1executando: Valor de $i => 2executando: Valor de $i => 3executando: Valor de $i => 4$i == 5! Parou de executar!

    Estrutura switch

    Essa estrutura executa um determinado bloco de instrues de acordo com o valor obtido pela expresso avaliada. Sua sintaxe :

    Se a condio retornar o valor1, executar o comando1, ento no precisar conferir as demais condies, podendo deixar a estrutura. Para isso, utiliza-se o comando break entre cada condio. Caso a condio no retorne nenhum dos valores contidos na estrutura, ser executada a opo default. Ex:

  • PHP e MySQL

    break;default : echo escolha uma cor;

    break;} ?>

    Caso o valor de $cor seja vermelho, a frase cor vermelha ser escrita na tela, ento o comando break termina a execuo da estrutura, visto que a condio foi satisfeita. Em caso contrrio, far a prxima verificao. Se nenhuma das condies for satisfeita, executar a opo default, escrevendo na tela: escolha uma cor. O uso do default no obrigatrio no switch, nem mesmo o uso de break, visto que a ltima verificao a ser feita.

    FunesFunes so blocos de cdigos destinados a executar uma determinada tarefa. A

    sintaxe de uma funo :

    Qualquer cdigo PHP vlido pode ser colocado dentro de uma funo. Ex:

    Aps criarmos uma funo, podemos fazer com que o script a execute com uma simples chamada. Ex:

    Quando o PHP encontra a chamada funo, interrompe a execuo do script atual e inicia a execuo da funo chamada. Quando terminar de execut-la, retornar ao ponto onde a funo foi chamada e continuar a execuo do script.

    Valor de retorno

    Uma funo pode ou no retornar um valor. Para isso necessrio usar o comando return no final da funo, indicando o valor que ser retornado.Ex:

  • PHP e MySQL

    }$valor = 3; //varivel inicializadaecho "\$valor => $valor"; //valor antes da funcao$valor = retorna_valor(); //$valor recebe o retorno da funoecho "\$valor => $valor"; //valor depois da funcao?>

    Argumentos ou parmetros

    So valores passados funo para serem manipulados pela mesma. A passagem de parmetros no obrigatria. Os parmetros devem ser declarados entre parnteses, aps o nome da funo. Os parmetros sero recebidos de acordo com a ordem de passagem e transformados em variveis locais para que a funo possa utiliz-los. Ex:

    No exemplo acima, a funo imprime() recebe como argumento a varivel $argumento para que seja manipulada. Dentro da funo, o valor do argumento agora torna-se a varivel $parametro, que impressa na tela atravs do comando echo. O argumento passado funo no precisa necessariamente estar dentro de uma varivel. Ex: a chamada imprime(frase pra imprimir) tambm vlida para o exemplo acima.

    Passagem de parmetros por referncia

    Os exemplos anteriores mostram a passagem de parmetros por valor, ou seja, o valor da varivel passado funo, porm, quando a funo termina de executar, o valor da varivel passada funo como parmetro permanece inalterado. Para que uma funo possa alterar o valor de uma varivel (ou mais de uma), necessrio fazer a passagem de parmetros por referncia, ou seja, a funo ir receber a prpria varivel como parmetro e poder assim alterar seu valor. Ex:

    O resultado do script acima ser 5, pois houve uma passagem de parmetro por valor para a funo soma10(). Neste caso, o valor de $a foi copiado e enviado funo, porm, o contedo de $a foi mantido pelo PHP. Para que a funo possa alterar o valor de $a, a varivel deve ser passada por referncia, ou seja, o endereo de memria da varivel deve ser passado para a funo (afinal, variveis so endereos de memria que armazenam determinado valor). A passagem por referncia feita utilizando o sinal &. Veja o exemplo acima utilizando a passagem por referncia:

    34

  • PHP e MySQL

    O resultado agora ser 15.

    Variveis globais e locaisO escopo de uma varivel a poro do script em que ela pode ser utilizada. Em

    geral, as variveis tem escopo global, ou seja, podem ser utilizadas em qualquer poro do script, porm, quando declaramos funes, criado um escopo local e a funo passa a utilizar apenas as variveis declaradas dentro dela. Uma varivel global no pode ser utilizada dentro de uma funo sem que seja declarada. Ex:

    A varivel $frase dentro da funo mostra_frase() considerada uma varivel diferente da que foi declarada anteriormente. Para que a funo possa utilizar a varivel $frase declarada fora dela, devemos declar-la dentro da funo como uma varivel global, para que a funo possa reconhec-la. O exemplo acima ficaria assim:

    Outra forma de acessar uma varivel global no PHP recorrendo ao array $GLOBALS. Este array parte do prprio PHP (uma constante) e registra todas as variveis globais declaradas no script. Podemos utilizar o array $GLOBALS da seguinte forma:

    O valor dentro de [ e ] o nome da varivel global a ser utilizada.

    Processando Formulrios com PHPA linguagem PHP muito utilizada para o tratamento de formulrios. Como visto

    35

  • PHP e MySQL

    anteriormente, formulrios so utilizados para que o usurio possa enviar informaes pgina, como seu endereo de e-mail, ou um nome a pesquisar. As informaes so enviadas pelo formulrio atravs dos mtodos GET ou POST, processadas pelo servidor e armazenadas em arquivos ou bancos de dados. Muitas vezes, esse processamento retorna um resultado (Ex: uma pesquisa) que enviado ao usurio. A linguagem HTML no capaz de manipular essas informaes, exigindo para isso o uso de scripts, como o PHP. Para compreendermos melhor o funcionamento do PHP no tratamento de formulrios, vamos construir um exemplo simples. Faremos uma pgina chamada info.html, onde colocaremos um formulrio que enviar informaes do visitante para o servidor. Faremos tambm um script PHP que ir receber as informaes enviadas pelo formulrio e far um processamento simples, retornando uma mensagem ao usurio. O cdigo para o formulrio mostrado abaixo:

    informaes do usurio

    Nome: E-mail:

    A pgina info.html contm um formulrio que pede ao usurio para que digite seu nome e seu endereo de e-mail. Note que especificamos na tag o atributo action como info.php. Este o nome do script que ir processar as informaes enviadas pelo formulrio. Tambm atruibumos tag method o valor GET, indicando que este ser o mtodo utilizado para o envido das informaes ao servidor. Se nenhum valor for atribudo a essa tag, o mtodo GET ser utilizado.

    Como vimos anteriormente, o mtodo GET envia informaes ao servidor atravs de uma cadeia de variveis, indicada logo aps o endereo de destino. Isso impe um limite no tipo e na quantidade de informaes que podem ser enviadas ao servidor (Ex: no possvel enviar fotos via mtodo GET), alm de tornar visveis as informaes enviadas, sendo assim um mtodo pouco seguro de envido de dados.

    Array superglobal $_GETO PHP disponibiliza o array $_GET para tratar as informaes enviadas pelo mtodo

    GET. As informaes enviadas so mantidas dentro destes arrays e o nome dos campos utilizado como chave associativa para que o script possa acessar os valores. No nosso exemplo, seria $_GET['nome'] e $_GET['mail'].

    Vamos agora escrever o script info.php que ir tratar as informaes enviadas pelo formulrio. O script de info.php mostrado a seguir:

  • PHP e MySQL

    //mostra as informaes na telaecho Meu nome $nome;echo Meu e-mail $mail;?>

    O script acima captura as informaes enviadas pelo formulrio e as armazena dentro de variveis, para facilitar seu processamento. Em seguida, os valores das variveis so mostrados ao usurio. Caso os campos do formulrio sejam preenchidos com os valores Umuarama e umuarama@senac, a URL ser:

    http://localhost/info.php?nome=umuarama&mail=umuarama%40senac

    Onde:

    http://localhost/: o endereo do site;

    info.php o script que processa as informaes do formulrio;

    ? indica o incio das variveis do formulrio;

    nome=umuarama : varivel nome contendo o valor 'umuarama' ;

    & : usado para separar uma varivel da outra;

    mail=umuarama%40senac : varivel mail contendo o valor umuarama%40senac. Note que o smbolo @ foi substitudo pelo smbolo %40, para que possa ser transmitido atravs do mtodo GET.

    Array Superglobal $_POSTSemelhante ao GET, o array superglobal $_POST armazena informaes enviadas

    atravs do mtodo POST. Para utilizar o mtodo POST no exemplo anterior, devemos fazer pequenas alteraes no formulrio e no script. Ex:

    Isso far com que o formulrio envie as informaes atravs do mtodo POST, em vez do GET. Agora, basta alterar o script info.php para que possa capturar as informaes do array $_POST:

    Formatao de dados

    Funo htmlspecialchars()

    Os dados enviados por formulrios no possuem nenhum tipo de controle ou formatao, permitindo que ocorram diversos erros e/ou situaes indesejadas. Ex: Voc cria um web site para seu comrcio e disponibiliza um espao para que os visitantes comentem sobre seu trabalho. Um belo dia voc encontra entre os recados, um banner da concorrncia. Isso aconteceu porque no foi implantado nenhum tipo de controle ou formatao das mensagens, permitindo assim que o visitante adicionasse HTML

    37

  • PHP e MySQL

    mensagem. Para evitar esse tipo de transtorno, utilizamos a funo htmlspecialchars, que converte HTML para texto simples, exibindo-o em forma de texto comum. No caso, o banner do concorrente apareceria como . Ex:

    O primeiro comando echo mostrar o link que levar pgina correspondente. o segundo mostrar o cdigo html contido na varivel.

    funes addslashes() e stripslashes()

    Em alguns casos, o usurio pode digitar caracteres especiais em um campo onde eles no devam ser utilizados. Ex: Um usurio pode preencher o campo nome do formulrio como Jos da Silva, popular Zezinho. As aspas contidas no campo podem causar erros na gravao e/ou interpretao das informaes. Para evitar isso, utilizamos a funo addslashes, que adiciona uma \ antes de cada ocorrncia de caracteres especiais. O campo ficaria: Jos da Silva, popular \Zezinho\. A presena da \ faz com que as aspas sejam interpretadas como caracteres especiais, e no sejam executadas como parte do script (Ex: poderia causar problemas com o comando echo). Utilizamos addslashes da seguinte forma:$nome = addslashes($nome);

    Para reverter o efeito da funo addslashes, utilizamso a funo stripslashes, que remove os caracteres de controle adicionados pela funo addslashes, fazendo com que a string volte sua composio original. Ex:$nome = stripslashes($nome);

    Dessa forma, o nome volta a ser Jos da Silva, popular Zezinho.

    funes urlencode() e urldecode()

    Ao utilizar o mtodo GET, caracteres especiais so substitudos pelo seu cdigo hexadecimal correspondente, precedido de % (Ex: espaos em branco so substitudos por %40). Para que os cdigos sejam convertidos para os caracteres especiais que representam, usamos urldecode. Para realizar a operao inversa, utilizamos a funo urlencode. Ex:

    Isso far com que os cdigos hexadecimais sejam removidos, mostrando na tela: http://localhost/?nome=Jose Silva. Em seguida, a funo urlencode aplicada e o link volta ao seu estado normal. Isso pode ser til caso o script precise retransmitir o link.

    38

  • PHP e MySQL

    funes intval() e doubleval()

    Muitas vezes precisamos que o usurio fornea um valor numrico para o formulrio, porm os campos aceitam apenas texto. Para a devida converso, podemos utilizar as funes intval() e doubleval() que, respectivamente convertem o valor da varivel em inteiro e em double. Ex: No formulrio html temos:

    O script PHP deve tratar os dois valores como inteiro e double, respectivamente. Para isso podemso ter o seguinte cdigo:

    funes trim(), ltrim() e chop()

    Freqentemente, usurios preenchem formulrios colocando espaos em branco antes e depois dos valores. Para o formulrio, isso no significa muito, mas para o script (ex: no momento de gravar as informaes em um banco de dados) isso pode se tornar um problema, pois espaos em branco so interpretados como valor. Para evitar problemas, podemos remover os espaos em excesso que o usurio envia utilizando uma das funes citadas acima. Apesar de possurem o mesmo objetivo, essas funes possuem pequenas diferenas: A funo chop() remove espaos apenas no final da string. A funo ltrim() remove espaos no incio da string e a funo trim() remove espaos no incio e no final da string. A utilizao depende do resultado desejado. Ex:

    Validao de formulrios com javascriptAt agora, nossos formulrios no receberam nenhum tipo de validao, nada que

    impedisse o envio de informaes incorretas ou campos em branco. Criar funes PHP para fazer esse tipo de validao perfeitamente possvel, no entanto, exige muito processamento do servidor, tornando o acesso lento e o retorno demorado. Para evitar esse tipo de transtorno, faremos com que uma parte das validaes necessrias seja feita no navegador do cliente, usando Javascript.

    Javascript uma linguagem de programao que funciona diretamente no navegador do cliente (por isso chamado de tecnologia cliente). Um script javascript pode ser escrito em meio ao cdigo html dentro da tag ou fora, em documentos de texto separados. Javascript s precisa de um editor de texto para ser escrito e um navegador para ser executado. Apesar dos grandes esforos para que ele seja executado de forma padro, apenas o navegador netscape executa-o com preciso.

    No nos aprofundaremos em javascript, pois no o foco deste documento. Conheceremos apenas o bsico para a validao de formulrios.

    39

  • PHP e MySQL

    Vamos criar a funo que ir validar os campos do formulrio. Essa funo deve ser escrita no cabealho do cdigo html da pgina do formulrio. Todo o cdigo deve estar dentro da tag , que indicar que o cdigo javascript dessa forma:

    function valida(nomeform){

    ...}

    ...

    Na tag , devemos indicar que o formulrio dever passar pela funo valida antes de ser enviada para o servidor. Essa condio definida configurando o atributo onsubmit da seguinte forma:

    O formulrio utilizar o mtodo POST para envio das informaes. o script que ir tratar as informaes do formulrio o form.php. O atributo onsubmit (ao enviar) desviar a sada do formulrio para a funo valida. A palavra this indica que ser este formulrio que ser tratado pela funo. A palavra return indica que a funo retornar um valor (no caso, booleano). Se a funo retornar falso, o formulrio no ser enviado.

    Vamos implementar a funo valida com as devidas validaes a serem feitas. Vamos comear fazendo com que o formulrio no seja enviado caso o campo nome no tenha sido preenchido, ou seja, seu valor nulo:if(formulario.nome.value==)

    alert(Nome no foi preenchido);Se o valor no campo nome do formulrio no possuir nada, uma janela de alerta ser

    mostrada na tela com a mensagem Nome no foi preenchido. O formulrio no ser enviado.

    Para descobrir se o usurio digitou o @ no campo de e-mail:if(formulario.email.value.indexOf('@',0) == -1)

    alert(E-mail invlido);Para limitar o nmero de caracteres mnimo e mximo para o campo de senha:

    if(formulario.senha.value.lenght15)alert(senha deve ter entre 5 e 15 caracteres);Agora vamos unir as condies de teste dentro da funo valida:

    function valida(formulario){ if(formulario.nome.value==){

    alert(Nome no foi preenchido);return false;

    } if(formulario.email.value.indexOf('@',0)== -1){

    alert(E-mail incorreto!);return false;

    } if(formulario.senha.value.lenght15){

    alert(Senha deve conter entre 5 e 15 caracteres);return false;

    40

  • PHP e MySQL

    } return true;{

    Antes de ser enviado ao servidor, os valores do formulrio so submetidos funo valida. Caso alguma irregularidade seja encontrada, a funo retorna false e o formulrio no enviado ao servidor. Caso contrrio, a funo retorna true e o formulrio enviado.

    Validao com PHPMuitas vezes, a validao feita com javascript no suficiente (ex: o cdigo foi

    modificado pelo cliente), exigindo assim uma segunda validao atravs do PHP. Vamos adaptar o script form.php para fazer a validao do formulrio. Vejamos as validaes mais importantes a serem feitas:

    Espaos em branco

    Em muitos casos, devemos evitar que o usurio envie espaos em branco dentro do campo (ex: campo de e-mail ou senha). Para remover os espaos em branco, utilizamos a funo strstr(), que busca a ocorrncia de um caracter dentro de uma string. Ex:

    A funo strstr buscou por espaos em branco na varivel $senha. Em caso de haver espaos, uma mensagem de alerta enviada ao usurio (O cdigo tambm pode ser adaptado para que mostre uma janela de alerta, usando javascript).

    Quantidade mnima de caracteres

    Para verificar se um nmero mnimo de caracteres foi digitado, usamos a funo strlen(), que retorna o nmero de caracteres de uma string. Ex:

    Correo automtica

    Em muitos casos, especialmente no campo de e-mail, alguns caracteres so digitados incorretamente, como vrgula no lugar de ponto, espaos antes e depois do @, etc. O script PHP pode corrigir automaticamente estes erros com a funo str_replace(). Sua sintaxe :str_replace(caracter_antigo,caracter_novo,string).Ex: para substituirmos os hfens por underlines, temos:

    Isso far com que toda ocorrncia de hfen dentro da varivel $mail seja substituda por underline. Se quisermos remover um caracter (ex: espao em branco), basta indicar que o novo caracter ser 'nada'. Ex:

    41

  • PHP e MySQL

    Valores numricos

    Para saber se um campo recebeu apenas valores numricos (ex: idade, telefone, CEP), podemos utilizar a funo is_numeric(). Ela retorna 'verdadeiro' se o campo for numrico. Ex:

    Aps as devidas validaes, as informaes podem ser tratadas (ex: gravadas em um banco de dados). O cdigo completo do formulrio de cadastro (cadastro.html) e seu script PHP (cadastro.php) so mostrados a seguir:

    Cadastro

    function valida(form){ if(form.nome.value==){ alert(Nome no foi preenchido);

    return false; } if(form.mail.value== || form.mail.value.indexOf('@',0) == -1 || form.value.indexOf('.',0) == -1){

    alert(Campo de e-mail invlido);return false;

    } if(form.estado.selectedIndex == 0){

    alert(Selecione um estado);return false;

    } if(form.login.value.lenght15){

    alert (Login deve conter entre 5 e 15 caracteres);return false;

    } if(form.senha.value.lenght15){

    alert(Senha deve conter entre 5 e 15 caracteres);return false;

    } if(form.senha.value.indexOf(' ',0)!= -1){

    alert(Senha no deve conter espaos em branco);return false;

    } if(form.senha.value != form.confirmasenha.value){

    alert(senhas no conferem);return false;

    } return true;}

    42

  • PHP e MySQL

    Nome: E-mail: Estado: AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO Login: Senha: Confirma Senha:

    Quando o usurio clicar no boto enviar, as informaes do formulrio sero enviadas para a funo valida(), que verifica o preenchimento correto dos campos e retorna um valor booleano. Caso seja encontrada uma irregularidade, a funo retorna false (falso) e os dados no sero enviados ao servidor. Caso todas as informaes estejam corretas, a funo retorna true (verdadeiro) e o formulrio enviado para o servidor.

    Vamos agora ao script cadastro.php: