Prog_Web Apostila Completa - Curso Téc. Informática Fac. Joaquim Nabuco

Embed Size (px)

Citation preview

  • Curso Tcnico em Informtica

    Programao para WebJean Eduardo Glazar

  • Programao para Web

    Jean Eduardo Glazar

    2011IFES Instituto Federal do Esprito Santo

  • Presidncia da Repblica Federativa do Brasil

    Ministrio da Educao

    Secretaria de Educao a Distncia

    Equipe de ElaboraoInstituto Federal do Esprito Santo IFES

    Coordenao InstitucionalGuilherme Augusto de Morais Pinto/IFESJoo Henrique Caminhas Ferreira/IFES

    Coordenao CursoAllan Francisco Forzza Amaral/IFES

    Professor-autorJean Eduardo Glazar/IFES

    Comisso de Acompanhamento e ValidaoUniversidade Federal de Santa Catarina UFSC

    Coordenao InstitucionalAraci Hack Catapan/UFSC

    Coordenao do ProjetoSilvia Modesto Nassar/UFSC

    Coordenao de Design InstrucionalBeatriz Helena Dal Molin/UNIOESTE e UFSC

    Coordenao de Design GrficoAndr Rodrigues/UFSC

    Design InstrucionalJuliana Leonardi/UFSC

    Web MasterRafaela Lunardi Comarella/UFSC

    Web DesignBeatriz Wilges/UFSCMnica Nassar Machuca/UFSC

    DiagramaoAndr Rodrigues/UFSCBrbara Zardo/UFSCJuliana Tonietto/UFSCMarlia C. Hermoso/UFSC

    RevisoJlio Csar Ramos/UFSC

    Projeto Grficoe-Tec/MEC

    Instituto Federal do Esprito SantoEste Caderno foi elaborado em parceria entre o Instituto Federal do Esprito Santo e a Universidade Federal de Santa Catarina para o Sistema Escola Tcnica Aberta do Brasil e-Tec Brasil.

    G553p Glazar, Jean Eduardo

    Programao para web : Curso tcnico em informtica / Jean Eduardo Glazar. Colatina: IFES, 2011. 102 p. : il. ISBN: 978-85-62934-37-7 1. PHP (Linguagem de programao de computador). 2. Banco de dados. 3. Sites da Web Desenvolvimento. I. Glazar, Jean Eduar-do. II. Instituto Federal do Esprito Santo. III. Ttulo. CDD: 005.133

  • e-Tec Brasil33

    Apresentao e-Tec Brasil

    Prezado estudante,

    Bem-vindo ao e-Tec Brasil!

    Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica

    Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007,

    com o objetivo de democratizar o acesso ao ensino tcnico pblico, na mo-

    dalidade a distncia. O programa resultado de uma parceria entre o Minis-

    trio da Educao, por meio das Secretarias de Educao a Distancia (SEED)

    e de Educao Profissional e Tecnolgica (SETEC), as universidades e escolas

    tcnicas estaduais e federais.

    A educao a distncia no nosso pas, de dimenses continentais e grande

    diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao

    garantir acesso educao de qualidade, e promover o fortalecimento da

    formao de jovens moradores de regies distantes, geograficamente ou

    economicamente, dos grandes centros.

    O e-Tec Brasil leva os cursos tcnicos a locais distantes das instituies de en-

    sino e para a periferia das grandes cidades, incentivando os jovens a concluir

    o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino

    e o atendimento ao estudante realizado em escolas-polo integrantes das

    redes pblicas municipais e estaduais.

    O Ministrio da Educao, as instituies pblicas de ensino tcnico, seus

    servidores tcnicos e professores acreditam que uma educao profissional

    qualificada integradora do ensino mdio e educao tcnica, capaz de

    promover o cidado com capacidades para produzir, mas tambm com auto-

    nomia diante das diferentes dimenses da realidade: cultural, social, familiar,

    esportiva, poltica e tica.

    Ns acreditamos em voc!

    Desejamos sucesso na sua formao profissional!

    Ministrio da Educao

    Janeiro de 2010

    Nosso contato

    [email protected]

  • e-Tec Brasil5

    Indicao de cones

    Os cones so elementos grficos utilizados para ampliar as formas de

    linguagem e facilitar a organizao e a leitura hipertextual.

    Ateno: indica pontos de maior relevncia no texto.

    Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao

    tema estudado.

    Glossrio: indica a definio de um termo, palavra ou expresso utilizada no texto.

    Mdias integradas: sempre que se desejar que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos,

    filmes, jornais, ambiente AVEA e outras.

    Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa

    realiz-las e conferir o seu domnio do tema estudado.

  • e-Tec Brasil7

    Sumrio

    Palavra do professor-autor 9

    Apresentao da disciplina 11

    Projeto instrucional 13

    Aula 1 A linguagem PHP 151.1 O que PHP? 15

    1.2 Instalao 16

    1.3 Sintaxe bsica 19

    1.4 Como testar uma pgina em PHP 21

    1.5 Variveis e tipos 23

    1.6 Operadores 24

    1.7 Estruturas de controle 25

    1.8 Array 28

    1.9 Funes 29

    Aula 2 Recebendo dados do formulrio 312.1 Mtodos GET e POST 31

    2.2 Obtendo e validando os dados 32

    2.3 Upload de arquivos 36

    2.4 Headers 39

    Aula 3 Acesso, insero e listagem no banco de dados MySQL 43

    3.1 Criando o banco de dados 44

    3.2 Conectando ao banco de dados 44

    3.3 Inserindo dados 47

    3.4 Listando os dados 52

    3.4.1 Formulrio dinmico 54

    Aula 4 Consulta, excluso e alterao no banco de dados MySQL 57

    4.1 Consultando no banco de dados MySQL 57

    4.2 Excluindo no banco de dados MySQL 60

    4.3 Alterando no banco de dados MySQL 62

  • Aula 5 Gerenciando sesses 735.1 Criando uma sesso 74

    5.2 Manipulando as variveis de uma sesso 74

    5.3 Excluindo a sesso 75

    5.4 Caso de uso: autenticando usurios 75

    5.4.3 Fazer logout 78

    Aula 6 Caso de uso: aplicao utilizando o padro MVC 796.1 O que MVC? 79

    6.2 Estrutura do MVC 80

    6.3 Alterando nosso sistema para o MVC 81

    Referncias 89

    Currculo do professor-autor 90

    Programao para Webe-Tec Brasil 8

  • e-Tec Brasil9

    Palavra do professor-autor

    Ol! Estudante!

    um prazer t-lo conosco.

    Apesar de se tratar de um curso a distncia, voc no est sozinho nesta jor-

    nada. importante que voc conhea toda a equipe envolvida neste curso:

    coordenadores, professores especialistas, tutores a distncia e tutores presen-

    ciais, porque quando precisar de algum tipo de ajuda saber a quem recorrer.

    Alm disso, temos nossa disposio um ambiente virtual cheio de recursos

    que podem nos auxiliar neste processo.

    A Educao a Distncia (EaD), pela sua caracterstica de amplitude e pelo uso

    de tecnologias modernas, representa uma nova forma de aprender, respei-

    tando sempre o ritmo de aprendizado de cada aluno.

    Na EaD voc o grande responsvel pelo sucesso da aprendizagem. Seu

    desempenho ser mais proveitoso medida que for resolvendo os exerccios

    propostos e participando das discusses com os tutores e demais colegas de

    curso. Aprender programao requer dedicao e tempo; portanto, organize

    seu plano de estudo reservando um tempo todos os dias para os estudos,

    para que as atividades no acumulem.

    Desejo-lhe sucesso e dedicao!

    Um grande abrao!

    Prof. MSc. Jean Eduardo Glazar

  • e-Tec Brasil11

    Apresentao da disciplina

    Nesta disciplina estudaremos programao para web sob o enfoque do servi-dor, ou seja, depois de enviado algum dado a partir de uma pgina em HTML.

    Esta disciplina uma continuao de Fundamentos do Desenvolvimento Web (FDW).

    Vrias so as linguagens para criao de sistemas web. Vamos nos focar na linguagem PHP, por ser uma linguagem de fcil aprendizado, comparada

    com as demais, e bastante popular.

    Como uma linguagem de programao, todos os conceitos aprendidos

    at agora sero bastante utilizados. Tambm trabalharemos com banco de

    dados, armazenando e manipulando as informaes via pginas web. Nesse momento, ser muito til o conhecimento adquirido da disciplina Banco de Dados (BD).

    Por fim, veremos uma arquitetura para sistemas web como forma de orga-nizarmos melhor as pginas de um sistema, com a finalidade de obtermos

    produtividade no desenvolvimento e facilitarmos a manuteno posterior.

    Lembre-se, a melhor forma de aprender programao praticando!

  • e-Tec Brasil13

    Disciplina: Programao para Web (carga horria: 60 h).

    Ementa: Linguagem para estilos. Metalinguagem. Construo de pginas

    dinmicas. Integrao com banco de dados.

    AULA OBJETIVOS DE APRENDIZAGEM MATERIAISCARGA

    HORRIA(horas)

    1. A Linguagem PHP

    Comparar as vantagens e desvantagens do PHP em relao a outras linguagens.

    Instalar e configurar o ambiente de desenvolvimento web.

    Conhecer a sintaxe da linguagem PHP.

    Construir pginas web com PHP.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Sites dos programas de instalao:http://www.php.net/downloadshttp://www.apache.orghttp://www.wampserver.comhttp://www.easyphp.orghttp://netbeans.org

    10

    2. Recebendo da-dos do formulrio

    Entender como os dados de um formu-lrio so manipulados em um servidor com PHP.

    Aprender e exercitar o envio de um arquivo para o servidor a partir de uma pgina web.

    Conhecer a forma de gerenciar as infor-maes de uma conexo com o servidor.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Ambiente de programao web (NetBeans).

    10

    3. Acesso, insero e listagem no banco de dados MySQL

    Conhecer como o PHP interage com o banco de dados.

    Construir pginas web para inserir dados em um banco de dados.

    Construir pginas web para recuperar informaes do banco de dados.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Ambiente de programao web (NetBeans).

    Gerenciador de banco de dados (MySQL).

    10

    Projeto instrucional

  • AULA OBJETIVOS DE APRENDIZAGEM MATERIAISCARGA

    HORRIA(horas)

    4. Consulta, exclu-so e alterao no banco de dados MySQL

    Aprender como realizar uma consulta filtrando por determinado campo.

    Aprender a excluir e a alterar um registro no banco de dados a partir de pginas web em PHP.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Ambiente de programao web (NetBeans).

    Gerenciador de banco de dados (MySQL).

    10

    5. Gerenciando sesses

    Aprender para que serve uma sesso em um sistema web e como program-la.

    Aprender a como utilizar a sesso para autenticar usurios.

    Construir pginas web para autenticar os usurios.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Ambiente de programao web (NetBeans).

    Gerenciador de banco de dados (MySQL).

    10

    6. Caso de uso: desenvolvendo uma aplicao utilizando o padro MVC

    Conhecer o padro de desenvolvimento de sistemas web MVC.

    Construir um sistema web no padro MVC.

    Caderno impresso.

    Ambiente Virtual de Ensino--aprendizagem (AVEA).

    Ambiente de programao web (NetBeans).

    10

    Programao para Webe-Tec Brasil 14

  • e-Tec Brasil

    Aula 1 A linguagem PHP

    e-Tec BrasilAula 1 A linguagem PHP 15

    Objetivos

    Comparar as vantagens e desvantagens do PHP em relao a ou-

    tras linguagens.

    Instalar e configurar o ambiente de desenvolvimento web.

    Conhecer a sintaxe da linguagem PHP.

    Construir pginas web com PHP.

    1.1 O que PHP?PHP uma linguagem que permite criar sites web dinmicos, fundamentada nos dados submetidos pelo usurio e derivada dos dados contidos no ban-

    co de dados, que so alterados frequentemente. Vamos pegar o exemplo

    de uma loja virtual. Os produtos esto sempre sofrendo alteraes, seja no

    preo, na quantidade em estoque, nos produtos em promoes, nos lana-

    mentos, etc. Hoje, quando voc entra em uma loja virtual, ver alguns pro-

    dutos em promoo, outros em lanamentos, com um determinado preo.

    Na prxima semana que voc visitar o site, pode ser que os preos estejam mais baixos, por causa de novas promoes, ou aquele produto que voc

    tinha visto no se encontre mais em estoque, j tenha sido vendido.

    Passaremos a programar para web sob a viso do servidor. Para isso, utiliza-remos a linguagem PHP. Como pr-requisito, necessrio o conhecimento

    de HTML, principalmente de formulrio, que ser utilizado para enviar dados

    para o servidor. Portanto extremamente importante que voc revise o con-

    tedo visto em Fundamentos do Desenvolvimento Web.

    O cdigo PHP executado no servidor, sendo enviado para o cliente apenas

    HTML. Dessa maneira possvel interagir com bancos de dados e aplicaes exis-

    tentes no servidor, com a vantagem de no expor o cdigo fonte para o cliente.

  • Programao para Webe-Tec Brasil 16

    O PHP foi criado em 1995 por Rasmus Lerdorf com o nome de Personal Home Page Tools (Ferramentas Para Pgina Pessoal), para auxiliar no desenvolvimen-to de pginas simples. Como teve boa aceitao e muitos programadores

    utilizando-as, novas verses foram desenvolvidas com cada vez mais recursos.

    Existem outras linguagens de programao que podemos utilizar para criar

    as pginas dinmicas, como Java, Perl, ASP, etc.

    1.2 InstalaoPara testar as pginas PHP, no basta dar um duplo clique nos arquivos.

    php, como se faz com os .htm ou .html. necessrio ter um servidor web configurado para isso. Um dos servidores web mais utilizados o Apache.

    1.2.1 Instalao no WindowsVoc pode instalar o Apache e o PHP separados. Para isso basta pegar os

    arquivos de instalao nos respectivos sites oficiais.

    Porm, configuraes manuais devero ser feitas para os dois funcionarem

    perfeitamente.

    A forma mais fcil de instalar utilizar pacotes que instalam e configuram

    todos os programas necessrios para o desenvolvimento de pginas web de uma nica vez. Um conjunto muito utilizado consiste do Apache (servidor web), MySQL (banco de dados) e PHP (linguagem para as pginas web dinmicas), conhecido como AMP (inicial de cada produto). Quando esses produtos so instalados no Linux, chamamos de LAMP. Quando so instala-

    dos no Windows, chamamos de WAMP.

    1.2.2 Instalao no Linux (Ubuntu)No Ubuntu tambm podemos instalar os programas separados, usando al-

    gum instalador, como o apt-get. Na mesma linha de comando possvel instalar todos os pacotes necessrios, basta digitar:

    sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql php5-mysql

    Nas verses mais novas do Ubuntu, tambm possvel instalar um pacote

    com todos os programas. O comando :

    sudo tasksel install lamp-server

    Pesquise sobre as outras linguagens de programao

    web e discuta com os colegas e tutores, no ambiente virtual

    de ensino-aprendizagem, destacando as vantagens e

    desvantagens de cada uma.

    servidor web um programa de computador responsvel por aceitar pedidos

    HTTP de clientes, geralmente os navegadores, e servi-los

    com pginas de respostas (em HTML) incluindo dados, imagens,

    sons e links. Esse programa disponibiliza um local especfico

    no computador servidor (site) para armazenar e processar as

    pginas de resposta.

    Apache o resultado de um esforo

    coletivo de vrios colaboradores, para o desenvolvimento de um

    software gratuito, robusto e com qualidade, para a implementao de um servidor HTTP. o servidor

    web mais usado no mundo. capaz de executar cdigos em

    PHP, Perl, Shell Script, ASP, dentre outros. Sua utilizao mais

    conhecida a que combina o Apache com a linguagem PHP e

    o banco de dados MySQL.

    Para mais detalhes sobre o Apache, acesse o site oficial:

    http://www.apache.org

    Os principais instaladores so: WAMP5 (http://www.

    wampserver.com) e EasyPHP (http://www.easyphp.org).

    Faa o download do Apache e instale o software em seu

    computador: http://www.apache.org

    Aps instalar o Apache, faa o download do PHP e instale-o:

    http://www.php.net/downloads

  • e-Tec BrasilAula 1 A linguagem PHP 17

    Depois da instalao ser necessrio reinicializar o Apache. Para isso digite:

    sudo /etc/init.d/apache2 restart

    1.2.3 Testando o ambienteEm qualquer instalao, seja no Windows ou no Linux, um diretrio especfico

    ser criado para colocar as pginas em PHP, chamado www. Quando o Apache recebe uma solicitao para exibir uma pgina, ele ir buscar nesse diretrio.

    No Windows, o diretrio www fica dentro do diretrio de instalao do produto. Por exemplo, se voc usou o EasyPHP, o diretrio :

    C:\Arquivos de programas\EasyPHP-5.3.2\www

    O diretrio EasyPHP pode mudar de nome de acordo com a verso instalada.

    No Linux, o diretrio :

    /var/www

    Podem ser criados subdiretrios dentro do diretrio www. at recomen-dado que se faa isso, para organizar melhor as pginas.

    Para testar o ambiente, primeiro devemos verificar se os programas esto

    em execuo. Voc pode configur-los para iniciar automaticamente, quan-

    do o computador for ligado, ou manualmente. Tanto o WAMP5 quanto o

    EasyPHP colocam um cone prximo ao relgio que contm as opes para

    inicializar (start) ou parar (stop) os processos. No WAMP5, o cone parecido com um velocmetro de um carro. No EasyPHP, o cone o desenho de letra

    E. Na Figura 1.1 vemos o exemplo do WAMP5 e na Figura 1.2 vemos o

    exemplo do EasyPHP.

    Figura 1.1: Exemplo do menu de opes do WAMP5Fonte: WAMP5 (2010) instalado no Microsoft Windows XP

    Para mais detalhes sobre instalao no Linux: https://help.ubuntu.com/community/ApacheMySQLPHP

  • Programao para Webe-Tec Brasil 18

    Figura 1.2: Exemplo do menu de opes do EasyPHPFonte: EasyPHP 5.3.2 (2010) instalado no Microsoft Windows XP

    Agora vamos criar um arquivo com extenso .php (teste.php, por exemplo)

    na pasta base www. Abra-o com qualquer editor de texto e digite:

    Salve-o e em seguida digite em seu navegador favorito o seguinte endereo:

    http://localhost/teste.php.

    teste.php o nome do arquivo PHP que voc criou. localhost significa que o seu navegador ir procurar o arquivo no seu prprio computador, no dire-

    trio www configurado na instalao. Na internet, como o servidor est em outro local, substitui-se localhost pelo endereo web da empresa, como por exemplo: http://www.empresaxyz.com.br/cadastro.php

    Se a instalao estiver correta, uma tela com informaes sobre a configura-

    o do PHP dever ser exibida, como indicado pela Figura 1.3 a seguir.

    Figura 1.3: Instalao do PHP com sucessoFonte: EasyPHP 5.3.2 instalado no Microsoft Windows XP, exibido pelo Mozilla Firefox 3.5

  • e-Tec BrasilAula 1 A linguagem PHP 19

    1.3 Sintaxe bsicaO cdigo do PHP embutido dentro de um arquivo HTML, quando for ne-

    cessrio algum processamento pelo servidor. Depois que o servidor processar

    o cdigo PHP, apenas o que for gerado em HTML ser enviado de volta para

    o usurio; assim, o usurio no conseguir ver o cdigo em PHP, que ficar

    apenas no servidor. A Figura 1.4 ilustra o funcionamento de uma pgina

    web dinmica.

    Navegador HTTP

    HTML

    Executa Banco deDados

    Mdulo PHPPginas .PHP

    Servidor WebAPACHE

    12

    4

    3

    5

    Figura 1.4: Funcionamento de uma pgina dinmica PHPFonte: Equipe produo CEAD/IFES (2011)

    Passo 1 O usurio em seu navegador solicita uma pgina em PHP, por exemplo, consulta.php. Essa solicitao enviada pelo protocolo HTTP ao servidor web da empresa (por exemplo, o Apache).

    Passo 2 O Apache chama a pgina PHP que foi solicitada e a executa.

    Passo 3 A pgina PHP pode ou no fazer acesso ao banco de dados.

    Passo 4 Ao final da execuo do programa PHP, uma pgina de resposta em HTML enviada ao Apache.

    Passo 5 O Servidor web Apache repassa a pgina de resposta para o na-vegador que a solicitou, que a exibe.

    Para diferenciar o cdigo PHP dentro da pgina em HTML, podem ser utili-

    zados os delimitadores descritos na Figura 1.5 a seguir.

    1)

    2)

    3) Comandos;

    4)

    Figura 1.5: Delimitadores de cdigo em PHPFonte: Elaborada pelo autor

  • Programao para Webe-Tec Brasil 20

    O primeiro delimitador da Figura 1.5 o padro. O segundo uma simpli-

    ficao do primeiro. Esses so os mais usados. O terceiro segue o estilo de

    scripts em HTML. O quarto segue o estilo do ASP.

    Para utilizar a forma simplificada, bem como o estilo ASP, o arquivo de configu-

    rao php.ini deve ser alterado, pelos campos short_open_tags e asp_tags, respectivamente.

    A Figura 1.6 mostra a estrutura de uma pgina HTML com o cdigo PHP

    embutido.

    Figura 1.6: Exemplo de estrutura de uma programao de uma pgina em PHPFonte: Elaborada pelo autor

    Pode haver vrios blocos de PHP misturados com vrios trechos de HTML.

    1.3.1 Gerando cdigo em HTMLComo o cdigo PHP processado no servidor e apenas o HTML enviado

    como resposta, utilizaremos o comando echo para gerar esse HTML. Veja o exemplo da Figura 1.7 a seguir.

    Figura 1.7: Exemplo de programa utilizando o comando echoFonte: Elaborada pelo autor

    comando echo a instruo que envia para a pgina de sada, em HTML, as

    informaes processadas em PHP, podendo ser texto, nmeros ou variveis. Essas informaes,

    na maioria das vezes, so mescladas com os comandos

    HTML.

  • e-Tec BrasilAula 1 A linguagem PHP 21

    1.4 Como testar uma pgina em PHPExistem vrios editores de PHP. Dentre os gratuitos, recomenda-se o PHPEditor.Porm, vamos utilizar um ambiente de desenvolvimento mais moderno, que

    engloba vrias linguagens e que est sempre em atualizao, o NetBeans.

    Para verificar se o seu NetBeans possui o mdulo PHP instalado, basta aces-

    sar Ferramentas->Plug-ins e verificar, na aba Instalado, se o PHP se encontra ativado; seno, ative-o.

    Se no estiver na aba Instalado, procure-o na aba Plug-ins disponveis e instale-o ( preciso estar conectado internet).

    Todos os arquivos devem ser salvos com a extenso .php no diretrio www da instalao do servidor web. Crie subdiretrios dentro do www para me-lhor organizar seus arquivos.

    Os subdiretrios dentro do diretrio www devem ter permisso de gravao e escrita.

    O primeiro passo abrirmos o NetBeans e criarmos um novo projeto. Para

    isso, realize os seguintes passos:

    1. Clique em Arquivo > Novo Projeto.

    2. Dentre as opes Categorias da janela aberta, escolha PHP. Dentro de Projetos, escolha Aplicativo PHP. Clique em Prximo.

    3. Escolha um nome para o projeto (por exemplo, MeuSitePHP).

    4. Na Pasta de cdigos-fonte, escolha o diretrio www, ou algum subdiretrio dentro deste, por exemplo, C:/Arquivos de Programas/EasyPHP/www/ProgWeb. No Linux seria /var/www/ProgWeb. Cli-que em Finalizar.

    Aps criarmos o projeto, ele passa a ser exibido na aba Projetos, que fica no canto esquerdo do NetBeans. Para criar os arquivos em PHP, siga os

    seguintes passos:

    Para mais detalhes sobre o NetBeans e para fazer o download da sua instalao, acesse: http://netbeans.org

  • Programao para Webe-Tec Brasil 22

    1. Na aba de Projetos, clique com o boto direito do mouse no nome de nosso projeto.

    2. Escolha as opes Novo > Pgina da Web do PHP.

    3. Escolha um nome para a pgina com a extenso .php (por exemplo, PrimeiraPagina.php). Clique em Finalizar.

    PRONTO!!! Voc j pode programar em PHP. A Figura 1.8 apresenta um trecho da tela mostrada aps a realizao dos passos acima.

    Figura 1.8: Criando uma pgina PHP no NetBeansFonte: NetBeans IDE 6.8 instalado no Microsoft Windows XP

    Voc tambm pode, e deve, criar subdiretrios dentro do seu projeto, para

    organizar melhor as suas pginas.

    Para criar subdiretrios no NetBeans, siga os passos:

    1. Clique com o boto direito do mouse no nome do projeto.

    2. Escolha as opes Novo > Diretrio.

    3. Escolha um nome para o diretrio. Clique em Finalizar.

    Quando for criar novas pginas PHP, clique em cima do diretrio no qual

    deseja colocar as pginas.

    Uma arquitetura para desenvolvimento web que

    organiza a programao das pginas de um sistema, com o objetivo de aumentar a produtividade e facilitar a

    manuteno, ser vista na Aula 6.

  • e-Tec BrasilAula 1 A linguagem PHP 23

    Depois de programar e salvar o arquivo, vamos test-lo. Para isso, abra seu na-

    vegador favorito e digite: http://localhost/nomedoarquivo.php, em que:

    localhost corresponde ao seu computador local; e

    nomedoarquivo.php nome que voc deu no seu arquivo PHP (no nosso exemplo, PrimeiraPagina.php).

    Se o servidor web estiver em outro computador, ento troque localhost pelo IP (ou hostname) desse servidor.

    Caso tenha criado subdiretrios, ento acrescente no endereo do navegador

    os subdiretrios criados. Exemplo: http://localhost/ProgWeb/cadcliente.php

    Nesse exemplo foi criado o subdiretrio ProgWeb e dentro dele foi colocada a pgina cadcliente.php.

    1.5 Variveis e tiposAs variveis em PHP no precisam ser declaradas. Quando atribumos algum

    valor para elas, o tipo automaticamente reconhecido. Os tipos suportados so:

    Inteiros (integer ou long);

    Reais (float ou double);

    Strings;

    Array (vetores);

    Objetos*.

    * Como se trata de um curso bsico, a programao orientada a objetos em

    PHP no ser vista.

    Os nomes das variveis devem ser criados com um $ seguido de uma string que deve ser inicializada por uma letra ou _. Exemplos:

    $x = 10.4;

    $frase = Exemplo de varivel string;

    $_cont = 0;

  • Programao para Webe-Tec Brasil 24

    O PHP case sensitive, ou seja, letras maisculas so diferentes de minscu-las. Portanto, para facilitar, criem as variveis sempre em minsculo.

    Os comentrios podem ser de uma linha, utilizando o smbolo //, ou de mais linhas, delimitado pelos smbolos /* e */. Exemplos:

    $cont = 0; // Exemplo de comentrio de uma linha

    /* Exemplo de comentrio com mais de uma linha. Preste ateno nos

    smbolos delimitadores. */

    1.6 OperadoresOs principais operadores em PHP esto descritos nos quadros a seguir: os

    operadores aritmticos podem ser vistos no Quadro 1.4, os operadores lgicos esto descritos no Quadro 1.5, os operadores de comparao so mostrados no Quadro 1.6 e demais operadores importantes esto no

    Quadro 1.7 a seguir.

    Quadro 1.4: Operadores aritmticos

    + Adio

    - Subtrao

    * Multiplicao

    / Diviso

    % Mdulo (resto da diviso)Fonte: Elaborado pelo autor

    Quadro 1.5: Operadores lgicos

    And E

    Or Ou

    Xor Ou exclusivo

    ! Negao

    && E

    || OuFonte: Elaborado pelo autor

  • e-Tec BrasilAula 1 A linguagem PHP 25

    Quadro 1.6: Operadores de comparao

    == Igual a

    != Diferente de

    < Menor que

    > Maior que

    = Maior ou igual aFonte: Elaborado pelo autor

    Quadro 1.7: Outros operadores importantes

    Concatenao de strings

    = Atribuio

    ++ Incremento (soma 1)

    -- Decremento (subtrai 1)Fonte: Elaborado pelo autor

    1.7 Estruturas de controleAs estruturas de controle servem para controlar a ordem de execuo das

    instrues de um programa. As principais so as de seleo e repetio.

    1.7.1 Comandos de seleoOs comandos de seleo servem para escolher um determinado bloco de

    comandos a partir da avaliao de uma expresso. Os comandos de seleo

    so: if (e suas variaes) e o switch.

    Um bloco de comandos delimitado pelos smbolos: { e }.

    if executa um bloco de comando caso a expresso seja verdadeira (se..ento). Veja um exemplo na Figura 1.9.

    Figura 1.9: Exemplo do comando if Fonte: Elaborada pelo autor

    if...else executa o primeiro bloco de comandos se a expresso for verda-deira e o bloco do else caso a expresso seja falsa. (se...ento...seno). A Figura 1.10 mostra um exemplo.

  • Programao para Webe-Tec Brasil 26

    Figura 1.10: Exemplo do comando if...else Fonte: Elaborada pelo autor

    if...elseif...else o elseif utilizado quando vrias condies precisam ser analisadas. Para cada elseif, uma nova expresso deve ser analisada. Quan-do todas as expresses forem falsas, ento o ltimo bloco else ser executa-do. Exemplo na Figura 1.11 a seguir.

    Figura 1.11: Exemplo do comando if... elseif... else Fonte: Elaborada pelo autor

    switch funciona semelhante a vrios if juntos. Uma expresso ou varivel analisada e, de acordo com o valor, um entre vrios blocos de comandos

    executado. Diferentemente do if, cuja expresso somente retorna verdadeiro ou falso, no switch o valor retornado pode ser diverso. A expresso compa-rada com cada uma das clusulas case at que uma coincida. Quando isso acontece, o bloco de comandos correspondente executado at encontrar o

    comando break, que interrompe a execuo daquele bloco e finaliza o swi-tch. Se nenhuma clusula coincidir, ento o bloco delimitado pelo comando default executado. Na Figura 1.12 temos um exemplo do switch.

    Figura 1.12: Exemplo do comando switchFonte: Elaborada pelo autor

  • e-Tec BrasilAula 1 A linguagem PHP 27

    1.7.2 Comandos de repetioOs comandos de repetio servem para executar repetidas vezes o mesmo

    bloco de comandos, at que uma condio de parada seja atingida. Os co-

    mandos so: while,do...while e for. A diferena entre eles est na condi-o de parada das repeties e no contador de iterao.

    while a condio de parada testada no incio da iterao. Se for verda-deira, repete o bloco de comandos; se for falsa, interrompe as repeties.

    Exemplo na Figura 1.13.

    Figura 1.13: Exemplo do while Fonte: Elaborada pelo autor

    do...while funciona de maneira semelhante ao while; a diferena que a condio testada depois do bloco de comandos. Isso garante que pelo

    menos uma vez o bloco de comandos ser executado. Veja um exemplo na

    Figura 1.14 a seguir.

    Figura 1.14: Exemplo do do...while Fonte: Elaborada pelo autor

    for utilizado quando se conhece a quantidade total de iteraes ou quando se pretende contar essas iteraes. Sua sintaxe :

    for (inicializao; condio; incremento) { . . }

    Em que:

    Inicializao uma instruo de atribuio executada apenas uma vez, no incio do lao. Geralmente utilizada para inicializar a varivel que

    ir controlar o nmero de repeties do lao.

    Condio a expresso que controla a parada das repeties. Se for ver-dadeira, o bloco de comandos executado novamente; se for falsa, termina.

  • Programao para Webe-Tec Brasil 28

    Incremento define a maneira como a varivel de controle do lao ser alterada a cada vez que o lao for repetido. Ela executada ao final da

    execuo de cada repetio do corpo do lao.

    Veja exemplo na Figura 1.15 a seguir.

    Figura 1.15: Exemplo do forFonte: Elaborada pelo autor

    Atividades de aprendizagem 1.1: Crie um cdigo em PHP que exiba uma

    sequncia de nmeros de 1 a 100. Os nmeros pares devem ser formatados

    em negrito e os nmeros mpares em itlico.

    1.8 ArrayOs arrays so estruturas para armazenar valores que precisam ser indexados. Diferentemente do C, em que os ndices so apenas nmeros inteiros e con-

    secutivos, em PHP os ndices podem ser de vrios tipos. Mesmo se forem in-

    teiros no precisam ser consecutivos. Os valores armazenados no precisam

    ser do mesmo tipo. Veja um exemplo na Figura 1.16, onde print_r mostra todos os elementos do array.

    Figura 1.16: Exemplo do arrayFonte: Elaborada pelo autor

    Perceba que podemos trabalhar com ndices diferentes em um mesmo array. Outra forma semelhante para inicializar o array pode ser vista na Figura 1.17, que idntica a da Figura 1.16 a seguir.

  • e-Tec BrasilAula 1 A linguagem PHP 29

    Figura 1.17: Outra forma de inicializar o array Fonte: Elaborada pelo autor

    Crie um array e preencha com alguns estados, indexados pela sigla, como no programa na Figura 1.16. Faa uma funo que receba esse array e uma sigla como parmetro e mostre o nome do estado.

    1.9 FunesAs funes em PHP seguem o mesmo princpio das de outras linguagens. A

    diferena que como no precisamos declarar os tipos, a lista de parmetros

    possui apenas o nome das variveis. As funes que retornam valor tambm

    no precisam informar o tipo de retorno. A sintaxe :

    function nome_funo (lista de parmetros) { ... }

    Para organizar melhor o cdigo, as declaraes das funes ficam dentro do

    bloco , em uma pgina HTML. As chamadas das funes ficam no

    . Veja exemplos de funes na Figura 1.18 a seguir.

    Figura 1.18: Exemplos de funesFonte: Elaborada pelo autor

    Para mais detalhes sobre funes para manipulao de arrays, consulte: SOARES, Walace. PHP 5: conceitos, programao e integrao com banco de dados. 3 ed. So Paulo: rica, 2007.

  • Programao para Webe-Tec Brasil 30

    Por definio, a passagem de parmetros por valor. Caso se queira passar

    os parmetros por referncia, para alterar uma varivel dentro da funo,

    utiliza-se o smbolo & antes do parmetro. Veja a Figura 1.19 a seguir.

    Figura 1.19: Exemplo de funo com passagem de parmetro por refernciaFonte: Elaborada pelo autor

    Com os conceitos e comandos aprendidos nesta aula possvel criar pginas

    web bsicas em PHP. O conhecimento desses comandos de extrema im-portncia para os demais recursos que sero abordados nas prximas aulas.

    Portanto, somente passe para a prxima aula se todos esses conceitos e

    comandos foram entendidos e bem praticados.

    ResumoNesta primeira aula vimos como instalar e configurar o servidor web Apache e o mdulo PHP. Aprendemos a sintaxe do PHP e com isso criamos nossa

    primeira pgina web, ainda sem muitos recursos e sem interatividade. Na prxima aula entenderemos como os dados de um formulrio so manipu-

    lados em um servidor com PHP, aprenderemos a enviar um arquivo para o

    servidor a partir de uma pgina web e conheceremos a forma de gerenciar as informaes de uma conexo com o servidor.

    Atividade de aprendizagem1. Pesquise nos livros os comandos para pegar a data do sistema. Faa uma

    funo de saudao da sua pgina. Essa funo dever pegar a hora

    corrente e mostrar na tela a mensagem abaixo, com sua respectiva for-

    matao.

    0

  • e-Tec Brasil

    Aula 2 Recebendo dados do formulrio

    Objetivos

    Entender como os dados de um formulrio so manipulados em

    um servidor com PHP.

    Aprender e exercitar o envio de um arquivo para o servidor a partir

    de uma pgina web.

    Conhecer a forma de gerenciar as informaes de uma conexo

    com o servidor.

    Aps o conhecimento da sintaxe dos comandos em PHP, vamos agora criar

    as pginas dinmicas tratando as informaes obtidas de outras pginas,

    como por exemplo, de formulrios.

    A partir de um formulrio em HTML em um navegador, o usurio envia da-

    dos para uma pgina no servidor. Aprenderemos os comandos em PHP para

    capturar esses dados e fazer sua validao.

    extremamente importante que vocs revisem o contedo de formulrios

    HTML vistos na disciplina Fundamentos do Desenvolvimento Web.

    2.1 Mtodos GET e POSTNa definio de um formulrio em HTML, trs atributos sero importantes

    para a criao de pginas em PHP no servidor: action, method e enctype. Vejamos um exemplo na Figura 2.1 a seguir.

    Figura 2.1: Exemplo de definio de um formulrio em HTML Fonte: Elaborada pelo autor

    e-Tec BrasilAula 2 Recebendo dados do formulrio 31

  • name nome do formulrio. til para referncia em funes javascript.

    action arquivo no servidor que ser chamado para tratar os dados do formulrio. A pgina em HTML com o formulrio ir passar os dados para

    o programa PHP especificado por este campo.

    method mtodo de envio de dados para o servidor. Dois tipos so per-mitidos GET e POST. Mais detalhes a seguir.

    enctype define o formato de como os dados sero enviados para o ser-vidor. Necessrio para o envio de arquivos, que ser tratado mais adiante.

    Por enquanto, nem precisamos especificar nada. O exemplo acima mos-

    tra o valor padro, que pode ser omitido.

    A diferena entre GET e POST est na forma como os dados so enviados

    para o servidor. No mtodo POST, os dados so enviados ocultos. o mtodo

    recomendado quando se utiliza formulrio.

    J no mtodo GET, os dados so enviados de forma aberta, na URL, na forma do

    par campo=valor. Para isso, utiliza-se o smbolo ? depois do nome do arqui-vo. Os pares campo=valor so separados pelo smbolo &. Essa forma de envio utilizada quando temos poucas informaes a serem passadas, e elas podem

    ser especificadas direto na URL. Utiliza-se principalmente quando queremos pas-

    sar dados atravs de um link, sem os campos de um formulrio. Exemplo:

    http://www.xxx.com/cons.php?nome=Joo&cidade=Colatina

    Nesse exemplo foi utilizado o mtodo GET, que chama o programa cons.php, passando o campo nome igual a Joo e o campo cidade igual a Colatina.

    2.2 Obtendo e validando os dadosPara enviar dados para o servidor, vamos criar um formulrio como o da

    Figura 2.2 a seguir. Preste ateno no nome de cada campo. Esse nome ser

    usado no programa PHP. Veja tambm o atributo action do , ele informa o nome do arquivo PHP.

    Um exemplo mais real pode ser visto no site do Google.

    Depois que voc fizer uma pesquisa qualquer, verifique

    o endereo que aparece. Perceba que existem vrios pares campo=valor que

    so passados para o servidor, mas que no tm formulrio

    para digitar.

    Programao para Webe-Tec Brasil 32

  • Figura 2.2: Exemplo de formulrio para envio dos dados Fonte: Elaborada pelo autor

    e-Tec BrasilAula 2 Recebendo dados do formulrio 33

  • Seja passando os dados via POST ou GET, o programa no servidor para cap-

    turar e tratar os dados ser o mesmo. Os dados enviados para o programa

    PHP sero transformados em um array, $_POST, se o mtodo de envio for o POST, e $_GET, se o mtodo de envio foi o GET. Esses vetores so indexados pelos nomes dos campos.

    Se o mtodo de envio for o POST, os nomes dos campos sero aqueles in-

    formados no atributo name dos comandos HTML. Se o envio for por GET, ento o nome dos campos sero aqueles especificados no endereo pelo

    par campo=valor.

    Vamos agora criar um arquivo PHP com o mesmo nome dado no action do formulrio (no exemplo cadcliente.php). Nessa pgina, vamos capturar os da-dos enviados e mostrar uma pgina de resposta com esses dados. Para pegar

    cada campo, devemos informar qual o array que contm os dados ($_POST ou $_GET) e entre colchetes [ ] o nome do campo, definido no formulrio HTML.

    Depois de pegar os dados, podemos verificar se foram preenchidos e se

    esto corretos. Por exemplo: verificar se o campo foi preenchido, verificar

    datas, validar CPF, verificar se o e-mail vlido, etc.

    A Figura 2.3 mostra o cdigo que recebe os dados e verifica se alguns cam-

    pos esto preenchidos; caso no estejam, mostra uma mensagem de erro e,

    por ltimo, exibe na tela os dados informados. Mais adiante aprenderemos

    a inserir esses dados no banco de dados.

    Programao para Webe-Tec Brasil 34

  • Figura 2.3: Pgina PHP que recebe os dadosFonte: Elaborada pelo autor

    A Figura 2.4 mostra a pgina exibida pelo programa acima, com os valores

    digitados no formulrio.

    Figura 2.4: Resultado do envio de dadosFonte: Pgina exibida pelo Mozilla Firefox 3.5

    Funes para validar datas, CPF, e-mail, etc. so facilmente encontradas na internet. Veja alguns links:http://codigofonte.uol.com.br/codigos/php/validacao

    http://www.revistaphp.com.br

    http://www.criarweb.com/php

    http://phpbrasil.com

    http://www.codigofonte.net/scripts/php.

    e-Tec BrasilAula 2 Recebendo dados do formulrio 35

  • Note que os valores dos campos do tipo ComboBoxe ListBox so os valores definidos no atributo value da opo escolhida () e no o nome que aparece no formulrio. No exemplo acima, o estado ES.

    O valor do campo do tipo RadioButton tambm o valor do atributo va-lue. No exemplo acima, o sexo M ou F.

    Campos do tipo CheckBox retornam true(verdadeiro) se foram marcados e false (falso), caso contrrio.

    Pesquise na internet as funes para validar data e CPF. Acrescente essas

    funes ao programa da Figura 2.3 para validar nosso campo CPF e data de

    nascimento. Informe as mensagens de erro em vermelho.

    2.3 Upload de arquivosPara enviar um arquivo para o servidor, como por exemplo uma foto, pre-

    cisamos inserir um campo apropriado no formulrio. Esse campo exibe um

    boto Procurar que abre a janela para escolher um arquivo. O comando :

    Para testar, vamos acrescentar um campo ao formulrio da Figura 2.2 para

    fazer o upload de uma foto. Precisamos mudar a tag , adicionando o atributo enctype e colocar mais uma linha, depois da confirmao da senha, para fazer o upload da foto. Os comandos alterados e acrescentados esto na Figura 2.5 a seguir.

    Para o upload funcionar necessrio acrescentar o atributo enctype dentro da tag , assim: enctype=multipart/form-data.

    Figura 2.5: Formulrio com campo para upload de arquivo Fonte: Elaborada pelo autor

    Programao para Webe-Tec Brasil 36

  • Quando o arquivo enviado para o servidor, vrias informaes so armazena-

    das em um vetor chamado $_FILES, como o nome, o tipo, o tamanho, etc. Para obter esses dados, devemos informar o nome do campo entre colchetes, assim:

    $arquivo = $_FILES[nome_do_campo];

    A varivel $arquivo foi utilizada para receber o arquivo. A partir desse comando, sempre que pretendermos trabalhar com o arquivo, utilizaremos a varivel $ar-quivo. Diversas informaes podem ser obtidas a partir dessa varivel, como: cdigos de erros, se ocorrerem, tamanho, tipo e o nome temporrio do arquivo.

    Se ocorrer algum erro no upload, o cdigo de erro fica armazenado no atri-buto error. O cdigo zero significa que no ocorreu nenhum erro. Para obter esse cdigo, utilize o seguinte comando:

    $arquivo[error]

    As verificaes que podemos fazer so em relao ao tamanho, ao tipo do

    arquivo, etc. No nosso exemplo, vamos verificar se o arquivo uma imagem

    (gif, jpg, png, bmp) e se o tamanho menor que 100.000 bytes. Os coman-dos para pegar o tipo e o tamanho do arquivo, respectivamente, so:

    $arquivo[type] e $arquivo[size]

    O arquivo, propriamente dito, quando chega ao servidor, colocado em um

    diretrio temporrio, configurado no arquivo php.ini. Para mover para o diretrio definitivo, usa-se o seguinte comando:

    move_uploaded_file($arquivo[tmp_name], destino)

    em que:

    $arquivo[tmp_name] pega o nome do arquivo temporrio; edestino diretrio de destino do arquivo.

    O diretrio de destino deve existir e com permisso para escrita.

    Se a cpia for realizada com sucesso, esse comando retorna true. Caso ocor-ra algum erro, como por exemplo, o diretrio de destino no existe ou no

    tem permisso de gravao, essa funo retornar false.

    e-Tec BrasilAula 2 Recebendo dados do formulrio 37

  • A ltima etapa mostrar a foto que foi enviada. Para isso basta colocar a tag

    com o diretrio destino para onde o arquivo foi copiado. A Figura 2.6

    mostra o trecho de cdigo para lidar com o upload do arquivo. Esse cdigo deve ser colocado no programa da Figura 2.3, antes da parte que mostra os dados na

    tela. A Figura 2.7 mostra o resultado do envio dos dados com a imagem.

    Figura 2.6: Pgina PHP que trata um arquivo recebido Fonte: Elaborada pelo autor

    Programao para Webe-Tec Brasil 38

  • Figura 2.7: Resultado do envio de dados com fotoFonte: Pgina exibida pelo Mozilla Firefox 3.5

    Teste o programa da Figura 2.6.

    2.4 HeadersOs headers servem para o gerenciamento da conexo entre o PHP e o navegador do usurio, podendo trocar informaes contidas no cabealho

    HTTP de uma pgina.

    Os headers so informaes trocadas entre o navegador e o servidor de maneira transparente ao usurio, e podem conter dados sobre o tipo e a

    verso do navegador, a pgina de onde partiu a requisio (link), os tipos de arquivos aceitos como resposta, e uma srie de outras informaes.

    e-Tec BrasilAula 2 Recebendo dados do formulrio 39

  • A sintaxe da funo header:

    header(cabealho)

    Em que: cabealho um comando j definido para indicar o tipo de cabe-alho HTTP a ser usado.

    Por exemplo, o cabealho HTTP/ indica que um cdigo de retorno envia-

    do para o navegador do cliente. O exemplo na Figura 2.8 mostra o envio de

    uma mensagem de Pgina no encontrada:

    Figura 2.8: Exemplo do envio de uma mensagem usando o headerFonte: Elaborada pelo autor

    Uma segunda forma de usar o header para redirecionar para outra pgina. Esse comando muito til para, ao final de uma pgina puramente em PHP,

    redirecionar para outra pgina padronizada de resposta ou de erro. Usa-se o

    comando Location e logo em seguida o nome da pgina que se pretende redirecionar. Veja um exemplo na Figura 2.9:

    Figura 2.9: Exemplo de redirecionamento de pgina usando o headerFonte: Elaborada pelo autor

    O comando header deve ser usado antes de qualquer comando de exibio (echo, tags HTML, include).

    Usaremos o header mais adiante como forma de redirecionamento de pgina.

    Com os conhecimentos desta aula voc tem a capacidade de criar pginas web dinmicas, nas quais, a partir de um formulrio em HTML em um navegador, o

    usurio possa enviar dados para um programa no servidor e receber uma men-

    sagem. Esse fluxo de informao a base de todas as pginas web dinmicas.

    Programao para Webe-Tec Brasil 40

  • ResumoNesta aula programamos nossa primeira pgina dinmica com recebimento

    e validao de dados. Tambm aprendemos a enviar um arquivo junto com

    os dados. Porm, nossas pginas ainda no esto completas. Falta salvar os

    dados para que eles no se percam. Para isso preciso acessar banco de

    dados a partir no PHP, que ser nossa prxima Aula.

    Atividade de aprendizagemAcrescente no formulrio da Figura 2.2 mais um campo para fazer o upload de um arquivo do tipo PDF, como se fosse o envio do currculo da pessoa.

    Altere o programa da Figura 2.3 para receber esse arquivo, fazer as suas va-

    lidaes (tipo e tamanho) e coloque um link para esse arquivo, com o nome da pessoa, para quando clicar no link, abrir o arquivo PDF.

    Leituras complementares:

    SOARES, Walace. PHP 5: conceitos, programao e integrao com banco de dados. 3 ed. So Paulo: rica, 2007.

    GUTMANS, Andi; BAKKEN, Stig Saether; RETHANS, Derick. HP 5: programao ponderosa. Rio de Janeiro: Alta Books, 2005.

    MELO, Alexandre Altair de; NASCIMENTO, Maurcio G. F. PHP profissional. 2 ed. So Paulo: Novatec, 2007.

    e-Tec BrasilAula 2 Recebendo dados do formulrio 41

  • e-Tec Brasil

    Aula 3 Acesso, insero e listagem no banco de dados MySQL

    Objetivos

    Conhecer como o PHP interage com o banco de dados.

    Construir pginas web para inserir dados em um banco de dados.

    Construir pginas web para recuperar informaes do banco de dados.

    At agora j aprendemos a criar pginas dinmicas que recebem e validam os

    dados, mas essas informaes esto se perdendo. Precisamos armazen-las

    em algum lugar. Esse local o banco de dados.

    Como pr-requisito, fundamental que voc revise a linguagem SQL, estudada

    na disciplina de Banco de Dados, por ser essa a linguagem universal dos ban-cos de dados. por meio dela que o PHP ir conversar com o banco de dados.

    A maioria dos sites dinmicos acessa algum banco de dados. Em alguns casos, somente para tarefas simples, como cadastrar usurios e senhas. Em

    outros casos, o banco de dados vital para o funcionamento do sistema

    web, como uma loja virtual.

    Com o PHP podemos acessar diversos banco de dados, como o MySQL,

    PostgreSQL, Oracle, SQL Server, Firebird, Sysbase, Informix, SQLite e outros

    mais. Para os bancos de dados que o PHP no tem um mdulo especfico,

    podemos utilizar os drivers ODBC.

    Um dos bancos de dados mais utilizados com o PHP o MySQL. O PHP pos-

    sui um mdulo especfico para esse banco. Utilizaremos o MySQL em nossos

    exemplos por ser um banco simples de operar e utilizar pouco processamen-

    to e memria, em comparao com os outros.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 43

  • 3.1 Criando o banco de dadosAntes de construir o site, devemos modelar os dados a serem manipulados pelas pginas, porque assim teremos uma melhor viso das informaes a

    serem acessadas em cada pgina. Veja a seo sobre Modelagem de Da-

    dos da disciplina Banco de Dados.

    Para usarmos em nossos exemplos, vamos criar um banco de dados no MySQL

    com o nome ProgWebBD e construir as tabelas descritas na Figura 3.1 a seguir.

    ClientesidClientes: INTEGEREstados_sigla: CHAR(2) (FK)nome: VARCHAR(100)

    sigla: CHAR(2)nome: VARCHAR(50)

    cpf: VARCHAR(14)Rel_01 Estadosendereo: VARCHAR(100)

    dtNasc: DATEsexo: CHAR(1)login: VARCHAR(20)senha: VARCHAR(50)cinema: TINYINT(1)musica: TINYINT(1)info: TINYINT(1)

    Figura 3.1: Tabelas a serem utilizadas nos exemplosFonte: Equipe produo CEAD/IFES (2011)

    O campo idClientes do tipo autoincremento.

    Os campos cinema, musica e info armazenam 1 se aquela opo foi mar-cada, e 0 caso contrrio.

    3.2 Conectando ao banco de dadosEm uma pgina PHP, o primeiro passo conectar com o banco de dados.

    Utilizaremos o comando mysql_connect para criar essa conexo.

    A conexo a estrada por onde trafegaro os dados da sua pgina at o

    banco de dados, e vice-versa.

    Programao para Webe-Tec Brasil 44

  • mysql_connect abre a conexo de uma pgina em PHP com o banco de dados. Sua sintaxe :

    mysql_connect(servidor, usurio, senha)

    onde:

    servidor IP (ou hostname) a porta do servidor onde est o banco de dados, no formato servidor: porta. Se o banco de dados estiver no mesmo computador, pode usar localhost. Se a porta no for informada, ser utilizada a porta padro, que no MySQL a 3306.

    Usurio e senha cadastrados no banco de dados.

    Podem ocorrer alguns erros ao se tentar abrir a conexo. Os casos mais co-

    muns so: no encontrar o servidor ou o usurio e a senha no terem permis-

    so de acesso ao banco. Caso ocorra algum erro, o ideal seria mostrar uma

    mensagem de erro e interromper a execuo da pgina, j que sem a conexo

    no poderemos acessar o banco de dados. Para isso usaremos a funo die.

    die funo que exibe uma mensagem e interrompe a execuo da pgina. Sua sintaxe :

    die(mensagem)

    A mensagem pode ser concatenada com a funo mysql_error, que infor-ma a mensagem original do erro. Exemplo:

    die(Erro ao conectar. . mysql_error() );

    O ponto . serve para juntar as duas mensagens, ou seja, ele o operador que concatena strings.

    O die pode ser usado junto com outra funo. Se der erro nessa funo, o die chamado automaticamente. Utiliza-se o operador or para associar o die a alguma funo. O exemplo abaixo chama a funo mysql_connect; se der erro, automaticamente o die executado para mostrar a mensagem e interromper a execuo da pgina.

    mysql_connect(localhost,root,root) or die(Erro ao conectar. . mysql_error() );

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 45

  • Caso a abertura da conexo ocorra normalmente, o segundo passo escolher o

    nome do banco de dados que ser utilizado. Em um servidor de banco de dados

    podem existir vrios bancos. Usaremos para isso a funo mysql_select_db.

    mysql_select_db seleciona o banco a ser utilizado no servidor conectado anteriormente. Sua sintaxe :

    mysql_select_db(nome_banco)

    Exemplo: Selecionar o banco de dados criado anteriormente para os exemplos.

    mysql_select_db(ProgWebBD);

    O programa da Figura 3.2 mostra o exemplo de conexo com o nosso banco

    de dados de exemplo. O servidor de banco de dados MySQL est no servi-

    dor com IP 172.16.43.10, usurio root, senha root e o nome do banco

    criado foi ProgWebBD.

    Figura 3.2: Exemplo de conexo com o banco de dados Fonte: Elaborada pelo autor

    Cada pgina que necessitar acessar o banco de dados dever ter esses dois

    comandos no incio.

    Como um sistema web geralmente possui vrias pginas, replicar esses co-mandos no ser uma boa soluo. Caso tenha que mudar algum parme-

    tro, como por exemplo o IP do servidor, todas as pgina sofrero modifica-

    es. Um trabalho e tanto!

    Para evitar esse trabalho de manuteno, colocam-se os comandos de cone-

    xo com o banco em um nico arquivo e todas as pginas fazem acesso a

    esse arquivo utilizando o comando:

    Programao para Webe-Tec Brasil 46

  • include ou include_once

    include insere pedaos de cdigos PHP de um determinado arquivo na pgina atual.

    include_once a diferena que este comando verifica se o arquivo j foi inserido anteriormente, ou seja, insere somente uma nica vez.

    Sua sintaxe :

    include(nome_arquivo.php) ou include_once(nome_arquivo.php)

    Ento, o cdigo da Figura 3.2 ficar em um arquivo, por exemplo, conexao-bd.php, e todas as outras pginas incluiro esse cdigo da seguinte forma:

    include_once(conexaobd.php)

    PRONTO!!! Uma vez conectado com o banco de dados, podemos realizar todas as operaes para manipulao dos dados: inserir, pesquisar, alterar e excluir. O

    que precisaremos saber para realizar essas operaes sobre a linguagem SQL.

    Uma conexo estabelecida com o comando mysql_connect encerrada, automaticamente, ao final da execuo da pgina. Caso queira encerr-la

    antes disso, deve ser utilizado o comando mysql_close.

    mysql_close fecha a conexo com o banco de dados. Sua sintaxe :

    mysql_close(identificador)

    em que: identificador a varivel que indica a conexo criada. Se o iden-tificador no for fornecido, a ltima conexo estabelecida ser encerrada.

    3.3 Inserindo dadosA linguagem padro de comunicao com os bancos de dados a lingua-

    gem SQL. Para fazer com que o PHP execute os comandos SQL no banco de

    dados MySQL, utiliza-se a funo mysql_query.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 47

  • mysql_query funo que executa um comando SQL no banco de dados MySQL. Retorna verdadeiro (true) em caso de sucesso e falso (false) caso contrrio. Sua sintaxe :

    mysql_query(comando, conexao)

    em que:

    comando o comando na linguagem SQL, como: INSERT, SELECT, UPDATE, DELETE, etc.

    conexo parmetro opcional que indica a conexo com o banco de dados. Se no for informada, utiliza a ltima conexo aberta.

    Portanto, para inserir os dados no banco, o comando em SQL que utilizado

    o INSERT. Para testarmos, vamos criar duas pginas: uma em HTML com o

    formulrio para digitar os dados e a outra em PHP, que ir receber os dados,

    verificar se esto corretos e depois inserir no banco.

    O formulrio conter os mesmos campos que a tabela Clientes do nosso banco de dados de teste da Figura 3.1. Esse formulrio ser o mesmo utiliza-

    do na Figura 2.2, da Aula 2, com a incluso de mais um campo para o login, chamado txtLogin. Esse formulrio enviar os dados para a pgina em PHP

    no servidor chamada cadclientebd.php (atributo action da tag ).

    O programa em PHP no servidor ser semelhante ao programa da Figura

    2.3, da Aula 2. A diferena ficar por conta da incluso dos dados no banco,

    ao invs de mostrar os dados na pgina. Para isso, vamos criar uma varivel

    ($sql) que receber o comando INSERT com os dados do formulrio. Logo

    aps, essa varivel ser passada para o mysql_query.

    Na sintaxe do INSERT, a parte do VALUES em que passamos os valores para

    o banco de dados. nesse ponto que usaremos as variveis com os valores

    obtidos dos formulrios. A Figura 3.3 apresenta este comando:

    Figura 3.3: Exemplo de montagem do comando SQL Fonte: Elaborada pelo autor

    Programao para Webe-Tec Brasil 48

  • Lembre-se que na linguagem SQL, os campos do tipo string e data devem estar entre aspas simples ( ). No exemplo acima, os campos $cinema, $mu-sica e $info no esto entre aspas porque so do tipo inteiro.

    Logo em seguida chamaremos o comando em PHP para executar esse SQL no

    banco de dados. Esse comando o mysql_query e pode ser visto na Figura 3.4.

    Figura 3.4: Exemplo de chamada para executar o comando SQL no MySQLFonte: Elaborada pelo autor

    Os campos no banco de dados do tipo autonumerao (ou autoincre-

    mento) no devem ser passados para o comando INSERT.

    Verifique que em nossa tabela de exemplo, o campo idClientes um campo autoincremento e ele no foi passado para o INSERT.

    Caso queira obter o ltimo nmero inserido de um campo autoincremen-

    to, utiliza-se a funo mysql_insert_id.

    mysql_insert_id retorna o ltimo nmero inserido de um campo do tipo autoincremento. Sua sintaxe :

    mysql_insert_id(conexao)

    em que: conexo um parmetro opcional que indica a conexo com o banco de dados. Se no for informada, utiliza a ltima conexo aberta.

    Em nosso exemplo, poderamos criar a varivel $cod para receber o cdigo

    do cliente inserido, conforme exemplo na Figura 3.5 a seguir.

    Figura 3.5: Obtendo o ltimo cdigo autoincremento inseridoFonte: Elaborada pelo autor

    Os campos do formulrio do tipo checkbox enviam para a pgina PHP o valor true se estiverem marcados e (vazio) se no estiverem marcados. Portanto, antes de passar essa varivel para o comando INSERT, devemos substituir o

    (vazio) por zero, j que em nosso banco esses campos armazenam 0 ou 1.

    O valor true corresponde ao 1; portanto, no teria problema ao passar para o SQL.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 49

  • Os comandos para substituir o (vazio) por zero pode ser visto na Figura 3.6:

    Figura 3.6: Substituindo o (vazio) por zeroFonte: Elaborada pelo autor

    3.3.1 Inserindo datas no bancoO MySQL trabalha com o tipo data no formato americano, ou seja, ano-ms-

    -dia. Portanto preciso converter o nosso formato de data (dia-ms-ano)

    para o formato americano, antes de passar a data para o comando INSERT.

    Admitindo que a data recebida esteja no formato dd/mm/aaaa, sepa-ram-se os campos dia, ms e ano utilizando a funo substr.

    substr retorna uma parte de uma string. Sua sintaxe :

    substr(texto, pos_inicial, tamanhoonde:

    texto string original.

    pos_inicial posio onde inicia o pedao da string que se deseja. A primeira letra est na posio zero.

    tamanho da substring a partir da posio inicial.

    Logo, o dia o pedao da data que inicia na posio 0 e tem tamanho 2. O ms

    o pedao da data que inicia na posio 3 e tem tamanho 2. O ano o pedao

    da data que inicia na posio 6 e tem tamanho 4. O exemplo da Figura 3.7 mos-

    tra o cdigo em PHP, em que $dtNasc a varivel com a data a ser modificada.

    Figura 3.7: Exemplo de separao dos campos de uma data Fonte: Elaborada pelo autor

    Em seguida, concatenam-se os campos no formato desejado, no nosso caso

    ano-ms-dia, como mostrada na Figura 3.8 a seguir.

    Figura 3.8: Concatenando a data no padro do MySQL: ano-ms-diaFonte: Elaborada pelo autor

    Programao para Webe-Tec Brasil 50

  • Podemos tambm verificar se essa uma data vlida. Para isso, usa-se o

    comando checkdate.

    checkdate retorna verdadeiro (true) se a data vlida e falso (false) caso contrrio. Sua sintaxe :

    checkdate(mes, dia, ano)

    Para testar nossa data, o exemplo ficaria conforme Figura 3.9 a seguir.

    Figura 3.9: Funo que verifica se uma data vlida Fonte: Elaborada pelo autor

    O programa da Figura 3.10 mostra todo o cdigo da pgina cadclientebd.php, que recebe os dados do formulrio, verifica se os campos esto corretos, conver-

    te e verifica a data e depois insere no banco de dados.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 51

  • Figura 3.10: Pgina em PHP que insere os dados do cliente no banco Fonte: Elaborada pelo autor

    Crie a tabela Produtos no banco de dados MySQL com os seguintes campos:

    idProduto inteiro autoincremento (chave primria)

    descrio varchar(100)

    preo float

    qtdeEstoque inteiro

    dataValidade date

    Crie o formulrio para entrar com esses dados e a pgina em PHP para rece-

    ber, validar e inserir os dados no banco de dados.

    3.4 Listando os dadosAps inserir os dados no banco, temos a possibilidade de recuper-los e

    mostr-los para o usurio. O comando em SQL que faz isso o SELECT.

    O comando em PHP para recuperar os dados o mesmo usado no inserir, o

    mysql_query. O que muda o comando SQL passado para o banco, que agora o SELECT.

    O retorno de um SELECT no banco um conjunto de registros. Precisamos

    percorrer todos esses registros, pegando o primeiro, passando para o pr-

    ximo, e assim por diante at ao ltimo. O comando em PHP que faz isso

    o mysql_fetch_assoc.

    Programao para Webe-Tec Brasil 52

  • mysql_fetch_assoc retorna um registro de uma consulta e aponta para o prximo registro. Retorna false quando no existir mais registros, ou seja, quando chegar ao ltimo. Retorna o registro em forma de array, em que os ndices so os nomes das colunas da tabela no banco de dados. Sua sintaxe :

    mysql_fetch_assoc(identificador)

    em que: identificador o resultado do SELECT, ou seja, o conjunto de registros.

    Como o mysql_fetch_assoc retorna um registro por vez, e para quando chegar ao ltimo (false), podemos coloc-lo como condio de parada em um comando while, para percorrer todos os registros.

    O registro retornado a cada lao do while guardado em uma varivel do tipo array. Cada posio do array um campo da tabela. Para pegar o valor, usa-se como ndice do array o nome do campo definido na tabela do banco, desta forma:

    $variavel_registro[nome_campo]

    O nome do campo deve ser o mesmo usado no banco de dados. Letras mai-

    sculas so diferentes de minsculas.

    Para saber o total de registros retornados por uma consulta ao banco, usa-

    mos o comando mysql_num_rows.

    mysql_num_rows retorna a quantidade de registros da ltima consulta ao banco. Sua sintaxe :

    mysql_num_rows(identificador);

    em que: identificador o resultado do SELECT, ou seja, o conjunto de registros.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 53

  • O programa da Figura 3.11 mostra o exemplo de uma pgina que consulta

    todos os dados da tabela Clientes, do nosso banco de dados de teste. Para cada registro obtido, uma linha de uma tabela em HTML criada para mos-

    trar os resultados. Perceba que dentro do while ficam apenas os comandos para criar uma linha da tabela (). Os comandos para abrir e fechar a ta-

    bela ficam antes e depois do while, respectivamente ( e ). A primeira linha da tabela, com os nomes dos campos, tambm fica fora do

    while, porque no pode ser repetida.

    Figura 3.11: Pgina em PHP que exibe todos os clientes Fonte: Elaborada pelo autor

    3.4.1 Formulrio dinmicoO procedimento de listar todos os registros pode ser til quando queremos pre-

    encher algum objeto da pgina com os dados da tabela, como por exemplo,

    preencher as opes de um combobox a partir do banco de dados. Nesse caso,

    o formulrio dinmico, porque qualquer alterao no banco de dados, auto-

    maticamente, refletida no formulrio. Situaes nas quais isso pode ocorrer

    so inmeras, como: preencher um combobox com todos os cursos cadastrados

    no banco; ou exibir as opes cadastradas no banco de dados para que um

    cliente possa escolher a cor de um produto; ou selecionar uma das cidades ca-

    dastradas para realizar a prova de um concurso; e assim por diante.

    Todos esses exemplos podem ser obtidos com o procedimento do progra-

    ma da Figura 3.11. Dentro do while que ficam os comandos HTML para cada opo desejada.

    Programao para Webe-Tec Brasil 54

  • Como exemplo, vamos mostrar como preencher o combobox do campo

    listEstado do nosso formulrio da Figura 2.2, da Aula 2. Naquele formu-lrio, as opes foram definidas no prprio cdigo HTML. Vamos agora ler

    os estados a partir do nosso banco de dados.

    Utilizaremos o programa da Figura 3.11 dentro do formulrio da Figura 2.2,

    da Aula 2, na regio onde montado o combobox listEstados. Nosso SELECT ser na tabela Estados (veja Figura 3.1). Dentro do while vamos colocar os comandos para criar as opes do combobox, que o . Para cada

    registro da tabela ser criado um comando , mostrando o nome do

    estado. Para o atributo value, ser usada a sigla do estado. Quando o usurio escolhe uma opo de um combobox, apenas o atributo value enviado para o servidor; em nosso caso, somente a sigla do estado ser enviada. A Figura

    3.12 mostra o trecho de programa alterado do formulrio para cadastro.

    Figura 3.12: Montando um formulrio dinmico Fonte: Elaborada pelo autor

    Toda pgina que contiver cdigos em PHP deve ter a extenso .PHP. Portan-to, o formulrio de cadastro de clientes que antes era apenas HTML, deve ser

    renomeado para a extenso PHP.

    Antes de testar, voc deve preencher a tabela Estados com algumas informaes.

    Com o conhecimento adquirido at agora, voc capaz de criar sites que armazenam dados em um banco de dados. Voc tambm tem a capacidade

    de recuperar as informaes do banco de dados e mostr-las para o usurio.

    A grande maioria dos sites utiliza algum banco de dados para manipular as informaes. Vimos um exemplo com o banco de dados MySQL, mas voc

    pode trabalhar com qualquer banco de dados.

    e-Tec BrasilAula 3 Acesso, insero e listagem no banco de dados MySQL 55

  • Essa a base de toda a interao de pginas web com o banco de dados. Portanto, pratique! Teste os exemplos apresentados e faa os exerccios pro-

    postos. A prxima aula depender muito destes conceitos. Somente passe

    para a prxima aula quando no existir mais nenhuma dvida.

    ResumoNesta aula aprendemos a conectar com o banco de dados e a realizar as

    operaes para inserir e listar dados. Para realizar essas operaes, vimos

    exemplos de pginas web dinmicas com os comandos PHP. Na prxima aula continuaremos trabalhando com bancos de dados. Aprenderemos a alterar

    e excluir dados do banco.

    Atividades de aprendizagem1. Crie uma pgina em PHP para listar todos os produtos da tabela criada na

    terceira Atividade de aprendizagem ( Atividade 3.1) desta aula.

    2. Crie a tabela Vendas no banco de dados MySQL com os seguintes campos:

    idVenda inteiro autoincremento (chave primria)

    idCliente chave estrangeira da tabela Clientes

    idProduto chave estrangeira da tabela Produtos

    qtdeVendida inteiro

    preoTotal float

    dataVenda date

    formaPagto inteiro (pode ser chave estrangeira de outra tabela com as formas de pagamento)

    Crie o formulrio para entrar com os dados de uma venda. Preencha um

    combobox com todos os clientes cadastrados e outro com os produtos.

    Lembre-se de colocar no atributo value o id do cliente e do produto. Os demais campos sero do tipo texto.

    Se a forma de pagamento estiver em uma tabela separada, coloque um

    combobox para ela tambm.

    Depois crie uma pgina em PHP para receber os dados do formulrio e inserir

    na tabela Vendas

    Leituras complementaresDAVIS, Michele E.; PHILLIPS, Jon A. Aprendendo PHP e MySQL. Rio de Janeiro: Alta

    Books, 2008.

    MILANI, Andr. Construindo aplicaes web com PHP e MySQL. So Paulo: Novatec,

    2010.

    NIEDERAUER, Juliano. Desenvolvendo websites com PHP. 2 ed. So Paulo: Novatec,

    2004.

    WELLING, Luke; THOMSON, Laura. PHP e MySQL:

    desenvolvimento web. 3 ed. Rio de Janeiro: Elsevier, 2005.

    Programao para Webe-Tec Brasil 56

  • e-Tec Brasil

    Aula 4 Consulta, excluso e alterao no banco de dados MySQL

    e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 57

    Objetivos

    Aprender como realizar uma consulta filtrando por determinado

    campo.

    Aprender a excluir e a alterar um registro no banco de dados a

    partir de pginas web em PHP.

    Vamos continuar interagindo com o banco de dados. Como pr-requisito,

    fundamental que vocs tenham assimilado o contedo da aula anterior; sem

    ele no ser possvel se conectar com o banco de dados.

    4.1 Consultando no banco de dados MySQLEm muitas situaes, listar todas as informaes de uma tabela do banco de

    dados no uma boa opo. Tabelas que possuem grande quantidade de

    dados aumentam o trfego da internet para trazer todas essas informaes

    para a pgina.

    Vamos aprender agora como filtrar os dados de um consulta. Podemos rea-

    lizar uma consulta no banco de dados escolhendo qualquer um dos campos

    para pesquisar, ou uma combinao deles. Por exemplo, podemos listar to-

    dos os clientes que nasceram em um determinado ms, ou listar todos os

    funcionrios com salrio maior que um determinado valor, ou ainda, listar

    todas as vendas do ltimo ms que ainda no foram pagas.

    Para selecionar determinadas informaes do banco de dados, usaremos

    a clusula WHERE dentro do SELECT, como vocs j viram na disciplina de

    Banco de Dados. O que veremos aqui como pegar os campos de um formulrio para fornecer como limite para a consulta e exibir a resposta na

    mesma pgina.

    Ento, a nossa pgina ter o formulrio em HTML para a consulta, e outra

    parte com o cdigo em PHP para exibir o resultado, que pode ser em forma

    de tabela.

  • Programao para Webe-Tec Brasil 58

    Como exemplo, nosso formulrio ter um combobox para escolher o tipo de

    consulta, chamado comboTipo. As opes sero por nome ou por ms de aniversrio. Ter tambm um campo para digitarmos o valor que queremos pes-

    quisar, chamado txtPesquisa. Ao enviar os dados, esse formulrio chamar a mesma pgina, para que o PHP possa exibir os dados da pesquisa. Portanto o

    atributo action do apontar para o mesmo arquivo. O programa da Figura 4.1 mostra essa pgina, que chamaremos de pesqclientes.php.

    Figura 4.1: Programa de um formulrio para pesquisar os clientes (pesqclientes.php)Fonte: Elaborada pelo autor

    Quando o usurio clicar no boto Enviar, os dados para pesquisar sero en-viados para a mesma pgina, que agora executar o PHP na parte de baixo

    e mostrar o mesmo formulrio, mais a tabela de resposta.

    Porm, na primeira vez que chamarmos essa pgina, o PHP no pode ser

    executado. Ele somente ser executado da segunda vez em diante, ou seja,

    quando ele receber os dados para a pesquisa. Para distinguir quando uma

    pgina est recebendo uma informao ou no, usaremos o comando isset.

    isset retorna verdadeiro (true) se uma certa varivel j foi declarada, e falso (false), em caso contrrio. Sua sintaxe :

    isset(variavel)

    Na primeira vez que a pgina chamada, no temos nenhuma varivel. Na se-

    gunda vez em diante, a pgina recebe as variveis comboTipo e txtPesquisa do formulrio (via mtodo POST ou GET). Podemos utilizar qualquer uma dessas

    duas variveis para testar quando o PHP ser executado.

    Dentro do PHP, obtm-se o tipo de pesquisa que ser feita, por nome ou por

    ms (comboTipo), e monta-se o SQL correspondente com o valor digitado em txtPesquisa. O resultado mostrado em forma de tabela. O programa da Fi-gura 4.2 mostra o cdigo completo da pgina de pesquisa pesqclientes.php.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 59

    Figura 4.2: Programa de uma pgina para pesquisar os clientes (pesqclientes.php)Fonte: Elaborada pelo autor

    Quando a pesquisa com um campo do tipo string, como o nome do exem-plo anterior, usa-se a palavra LIKE no lugar da igualdade, dentro da clusula

    WHERE do SELECT. O smbolo % dentro do valor a ser pesquisado serve como curinga. Significa que pode vir qualquer caracter naquela posio. O

    exemplo anterior busca no banco de dados qualquer cliente que comea

    com o valor digitado pelo usurio.

    O que muda de uma pesquisa para outra so os campos e as tabelas do

    banco de dados, como, por exemplo, pesquisar produtos, vendas, locaes,

    reservas, etc. Portanto, as modificaes no cdigo para realizar outro tipo de

    pesquisa seriam alterar o SELECT e a forma de exibir os dados.

    Crie uma pgina em PHP para pesquisar os produtos da tabela criada na Atividade de aprendizagem da aula 3. Voc deve permitir pesquisar pela

    descrio, cdigo e data de validade.

  • Programao para Webe-Tec Brasil 60

    4.2 Excluindo no banco de dados MySQLNa grande maioria dos sistemas, no se usa muito excluir informaes do

    banco de dados, porque isso faz com que a empresa perca o histrico dos

    dados. O que se faz colocar um campo na tabela que informa o estado

    da informao como, por exemplo: ativo, inativo, em andamento,

    finalizado, aguardando resposta, etc.

    Em vez de excluir o cliente do banco de dados, a empresa pode apenas

    mudar seu estado para inativo, para que no futuro possa realizar alguma

    campanha para recuperar os clientes perdidos.

    Mesmo no sendo muito utilizado, em algumas situaes pode ser necess-

    rio excluir informaes do banco. Ento vamos aprender a fazer isso: para a

    operao de excluir do banco, mais uma vez o que muda o comando SQL.

    Os comandos em PHP so os mesmos: abrir a conexo, selecionar o banco e

    executar o comando SQL.

    Na maioria dos sistemas, ao excluir, necessrio conhecer pelo menos um

    dado da tabela. Dificilmente iremos excluir vrios dados de uma vez. O ideal

    seria obter a informao que corresponde chave primria da tabela, por ser

    uma informao nica. Uma das formas de fazer isso usar algum mecanis-

    mo de pesquisa para escolher a informao a ser pesquisada.

    Em nosso exemplo, vamos utilizar a pgina j criada de pesquisa. Na tabela

    que exibe as informaes, podemos colocar em cada linha uma palavra, uma

    imagem ou algum outro objeto que, quando clicado, chama a pgina em

    PHP para excluir. A Figura 4.3 mostra a pgina resultante da pesquisa com

    uma imagem que corresponde operao de excluir.

    Para facilitar a visualizao da imagem, alguns campos da tabela de resulta-

    dos foram omitidos. Para o seu teste, use todos os campos da tabela.

    Essa imagem possui um link (tag do HTML) que aponta para a pgina do excluir, chamada em nosso exemplo de excluircliente.php. Em cada imagem devemos passar o cdigo da informao que ser excluda. Usare-

    mos o mtodo GET para envio de informaes para a outra pgina (vejam

    a seo 2.1). O dado que passaremos ser o cdigo do cliente. Essa varivel

    ser chamada de codigo. O programa da Figura 4.4 mostra a pgina pesqclientes.php alterada para adicionar na tabela de resultado, mais uma coluna, que corresponde a imagem para a operao excluir. Percebam

    que em cada linha da tabela, o link passar via GET, a varivel codigo, que receber o id de cada cliente no banco de dados.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 61

    Figura 4.3: Exemplo de pesquisa com uma imagem para o excluirFonte: Pgina exibida pelo Mozilla Firefox 3.5

    Figura 4.4: Resultado da pesquisa com link para o excluircliente.phpFonte: Elaborada pelo autor

    Altere e execute a pgina pesqclientes.php, para colocar o link para o excluir cliente, como mostrado acima. Ao passar o mouse em cima da ima-gem do excluir, mas sem clicar, olhe na barra de status, na parte de baixo do navegador, o link de cada imagem. Perceba que o que muda de um para o outro o cdigo do cliente.

    A pgina excluircliente.php ser a responsvel por executar o comando SQL no banco de dados. Essa pgina recebe o cdigo passado via GET, pelo

    link da imagem excluir, e executa o comando DELETE no banco, com a clu-sula WHERE informando o id do cliente que ser excludo. Ao final, a pgina redirecionada novamente para a pgina de pesquisa (voc poderia redire-

    cionar para qualquer outra pgina do seu sistema). O programa da Figura

    4.5 mostra o cdigo PHP completo dessa pgina.

    Figura 4.5: Programa em PHP para excluir um clienteFonte: Elaborada pelo autor

  • Programao para Webe-Tec Brasil 62

    Implemente a pgina excluircliente.php, como mostrada acima, e teste suas pginas.

    4.3 Alterando no banco de dados MySQLA operao de alterar dados no banco segue o mesmo princpio que as demais

    informaes. Novamente o que muda o comando SQL passado para o banco.

    Porm, o que torna uma pgina web um pouco mais trabalhosa para alterar dados, mas nem tanto, que devemos ter as informaes que sero altera-

    das. Essas informaes podem estar dispostas de diversas formas em uma

    pgina. O mecanismo mais fcil e apropriado para isso o formulrio em

    HTML. Ento, ao escolher uma determinada informao para alterar, vamos

    chamar uma pgina com o formulrio j preenchido com as informaes

    anteriores. O usurio altera no formulrio os dados que deseja e depois os

    envia para outra pgina em PHP que atualizar o banco de dados.

    Antes de chamar o formulrio com os dados, na maioria das vezes, interes-

    sante usar algum mecanismo de busca, como uma pgina de pesquisa. Em

    nosso exemplo, vamos utilizar trs passos para alterar os dados de um cliente:

    Passo 1 usar a pgina pesqclientes.php para pesquisar o cliente de quem queremos modificar os dados. Colocar um link em cada cliente para que, ao clicar, a pgina formaltcli.php seja chamada, enviando o cdigo do cliente via GET;

    Passo 2 a pgina formaltcli.php exibir um formulrio j preenchido com os dados do cliente escolhido. Aps alterar os dados clicaremos em um

    boto para envi-los para a pgina alterarclibd.php;

    Passo 3 a pgina alterarclibd.php atualizar o banco de dados com as informaes atuais oriundas do formulrio. Ao final, ser redirecionado para

    a pgina com o formulrio, que exibir a mensagem de sucesso ou erro.

    A Figura 4.6 mostra o diagrama de navegao desse mecanismo.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 63

    Pesquisar

    Formulrio PHP para alterar

    Banco deDados

    GET(cdigo)

    POST

    GET(mensagem)

    UPDATE

    Figura 4.6: Diagrama de navegao das pginas para alterar dadosFonte: Equipe produo CEAD/IFES (2011)

    4.3.1 Passo 1 link no pesquisarAssim, como colocamos um link para a pgina que exclui os dados, vamos fazer de forma semelhante para a operao de alterar. Colocaremos um link no nome de cada cliente, que chamar a pgina com o formulrio, passando

    o cdigo do cliente via GET.

    Poderamos tambm usar uma imagem ou qualquer outro mecanismo para

    chamar o formulrio, desde que passe o cdigo do cliente que se deseja alterar.

    A linha na pgina pesqclientes.php que ser alterada o comando echo que monta cada linha da tabela, dentro do while. Perceba que a coluna re-ferente ao nome passa a ter um link para o formulrio do alterar e a coluna referente imagem do excluir continua com o link para a pgina de excluir. Ambos os links passam o cdigo do cliente via mtodo GET. A nova linha mostrada na Figura 4.7 a seguir.

    Figura 4.7: Comando com o link no campo nome para chamar o alterar Fonte: Elaborada pelo autor

    4.3.2 Passo 2 exibir o formulrioNa pgina formaltcli.php, antes de exibir o formulrio, necessrio ob-

    ter os demais dados do banco, uma vez que temos somente o cdigo do

    cliente passado como GET. Ento, executaremos o SELECT para isso. Aps,

    colocaremos os dados do banco em variveis PHP que sero utilizadas para

    preencher o formulrio.

    O campo do tipo data, obtido no banco de dados, est no formato Y-m-d (padro do MySQL). Ento temos que convert-lo para o nosso formato

    d/m/Y, para exibir no formulrio. Usaremos para isso duas funes, a strtotime e a date.

  • Programao para Webe-Tec Brasil 64

    strtotime converte uma data no formato string para o formato timestamp (usado pelo PHP). Sua sintaxe :

    strtotime(string_data)

    date converte uma data no formato timestamp para algum formato em string. Sua sintaxe :

    date(formato, timestamp)

    Portanto, para converter de Y-m-d para d/m/Y usaremos os seguintes comandos:

    $varData = date(d/m/Y, strtotime($varData));

    Em que: $varData a data no formato Y-m-d.

    Em cada campo do formulrio colocaremos a varivel PHP, correspondente

    ao dado obtido do banco. Como temos campos de tipos diferentes, cada um

    ter uma forma diferente de preencher os dados. Em todas elas, alternare-

    mos entre cdigos HTML e PHP.

    a) Campos do tipo text

    Coloca o atributo value e, entre aspas duplas, abre o PHP e pega a varivel correspondente com o echo. Veja a Figura 4.8 desta forma:

    Figura 4.8: Atribuindo valor para campos do tipo textFonte: Elaborada pelo autor

    A expresso abre o cdigo em PHP, pega a varivel $nome com o dado obtido do banco e coloca no atributo value do campo do formulrio.

    Todo o cdigo PHP deve ficar dentro das aspas duplas do atributo value.

    b) Campos do tipo textarea

    O contedo desse campo fica entre as tags e . Ento, colocaremos o cdigo PHP com o valor a ser preenchido entre essas

    tags. Segue o exemplo na Figura 4.9 para o campo endereo.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 65

    Figura 4.9: Atribuindo valor para campos do tipo textarea Fonte: Elaborada pelo autor

    c) Campos do tipo radio e checkbox

    Coloca-se a palavra checked na opo que ficar marcada. Portanto, ne-cessrio testar com o comando if qual ser essa opo. O exemplo na Figura 4.10 com o campo sexo ficaria assim:

    Figura 4.10: Atribuindo valor para campos do tipo radio e checkbox Fonte: Elaborada pelo autor

    d) Campos do tipo combobox ()

    Nesses campos, a opo marcada recebe o atributo selected. Ento, uma das solues seria semelhante a dos campos do tipo radio. Testa com o if e coloca o atributo selected na opo correspondente. Porm, muitas vezes, as opes de uma caixa de seleo so obtidas do banco de dados. Nesse

    caso, no PHP que obtm as opes do banco, coloca-se o if para testar qual opo ser a selecionada. Se for a que queremos que fique marcada, ento

    o comando fica com o atributo selected, como o exemplo na Figura 4.11, com o campo que lista os estados.

    Figura 4.11: Atribuindo valor para campos do tipo comboboxFonte: Elaborada pelo autor

    A varivel $estado obtida da tabela de Clientes, ou seja, o estado que dever ficar marcado. A varivel $sigla obtida de cada registro da tabela com todos os estados.

    A partir do formulrio preenchido, o usurio poder alterar os dados que lhe

    convm. Ao clicar no boto para enviar os dados, o formulrio enviar as no-

    vas informaes para a pgina alterarclibd.php, que realizar o UPDATE

  • Programao para Webe-Tec Brasil 66

    no banco. Portanto, a declarao do formulrio () ficar como no

    exemplo na Figura 4.12 a seguir.

    Figura 4.12: Definio do action para a pgina alterarclibd.phpFonte: Elaborada pelo autor

    O valor da chave primria de uma tabela no pode ser alterado, porque pode

    causar inconsistncia nos dados. Porm, ela fundamental para o processo

    de alterar, porque ser por meio dela que o sistema identificar o registro a

    ser alterado.

    Em nosso exemplo, a chave primria o cdigo do cliente. Ento colocare-

    mos um campo no formulrio para esse cdigo. Para que o usurio no pos-

    sa alterar esse valor, esse campo ficar oculto. Para criar um campo oculto,

    basta usar o atributo type com o valor hidden, como no exemplo na Figura 4.13 a seguir.

    Figura 4.13: Campo oculto (hidden) com o cdigo do clienteFonte: Elaborada pelo autor

    e) Mensagem de erro

    Os dados sero enviados para a pgina PHP que atualizar o banco de da-

    dos. Para saber se ocorreu erro ou no, redirecionaremos para a pgina com

    o formulrio novamente, informando a mensagem de erro ou sucesso. Essa

    mensagem ser enviada via o mtodo GET, com o nome mensagem. Ento, em nossa pgina com o formulrio, colocaremos o cdigo PHP abaixo para

    pegar a mensagem, caso tenha, e exibir junto com os dados. A Figura 4.14

    mostra esta programao.

    Figura 4.14: Exibindo a mensagem de respostaFonte: Elaborada pelo autor

    O programa da Figura 4.15 mostra o cdigo completo da pgina formaltcli.php.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 67

  • Programao para Webe-Tec Brasil 68

    Figura 4.15: Pgina com o formulrio preenchido (formaltcli.php)Fonte: Elaborada pelo autor

    4.3.3 Passo 3 atualizar o bancoA pgina alterarclibd.php receber os novos dados do formulrio do programa da Figura 4.15, via POST, e atualizar o banco de dados com o

    comando UPDATE. O programa da Figura 4.16 mostra essa pgina.

    A pgina para atualizar o banco semelhante de inserir. A diferena que

    utilizado o comando UPDATE, ao invs de INSERT. Tambm foram tirados

    os comandos echo e colocadas as mensagens em uma nica varivel, cha-mada $mensagem, que ser enviada para a pgina anterior mostr-la.

  • e-Tec BrasilAula 4 Consulta, excluso e alterao no banco de dados MySQL 69

    Figura 4.16: Pgina que atualiza o banco de dados (alterarclibd.php)Fonte: Elaborada pelo autor

    Aps realizar uma alterao no banco de dados, como por exemplo, com o

    comando UPDATE, possvel obter quantos registros foram alterados. Para

    isso basta utilizar a funo mysql_affected_rows.

    mysql_affected_rows retorna a quantidade de registros que foram afe-tados por um comando SQL, como por exemplo o UPDATE. Sua sintaxe :

    mysql_affected_rows(conexao)

    em que: conexo um parmetro opcional que indica a conexo com o banco de dados. Se no for informado, utiliza a ltima conexo aberta.

    Com isso, conclumos o assunto sobre banco de dados. Vimos que o proces-

    so de acesso e manipulao de dados independe da operao a ser feita. O

    que define a operao que faremos com o banco de dados o comando em

    SQL, como o INSERT, SELECT, UPDATE, DELETE e outros mais. Pronto! Agora

    voc capaz de criar um site completo, armazenando e recuperando dados do banco de dados.

  • Programao para Webe-Tec Brasil 70

    ResumoNesta aula aprendemos a realizar uma consulta filtrando por determinado

    campo, a excluir e a alterar um registro no banco de dados a partir de pgi-

    nas web em PHP. Na prxima aula aprenderemos a trabalhar com sesses, o que nos permitir, por exemplo, implementar a validao de usurio no

    sistema, bem como trocar dados entre as pginas de uma sesso.

    Encontra-se a seguir a Tabela 4.1 com o resumo dos comandos aprendidos

    at agora para manipulao do PHP com o banco de dados MySQL.

    Tabela 4.1: Resumo dos principais comandos

    FUNO DESCRIO PARMETROS

    mysql_connect Abre a conexo com o banco de dados.IP do servidor onde est o banco de dados.Usurio e senha com permisso de acesso ao banco de dados.

    mysql_select_db Seleciona o banco a ser utilizado. Nome do banco.

    mysql_close Fecha a conexo com o banco de dados. Conexo criada anteriormente.

    mysql_query

    Funo que executa um comando SQL no banco de dados MySQL. Retorna verdadeiro (true) em caso de sucesso e falso (false) caso contrrio.

    Comando na sintaxe SQL.

    mysql_insert_idRetorna o ltimo nmero inserido de um campo do tipo autoincremento

    Parmetro opcional que indica a conexo com o banco de dados.

    mysql_fetch_assoc

    Retorna um registro de uma consulta, em forma de array, e aponta p