Baixe o app para aproveitar ainda mais
Prévia do material em texto
Copyright © Portal Educação 2012 – Portal Educação Todos os direitos reservados R: Sete de setembro, 1686 – Centro – CEP: 79002-130 Telematrículas e Teleatendimento: 0800 707 4520 Internacional: +55 (67) 3303-4520 atendimento@portaleducacao.com.br – Campo Grande-MS Endereço Internet: http://www.portaleducacao.com.br Dados Internacionais de Catalogação na Publicação - Brasil Triagem Organização LTDA ME Bibliotecário responsável: Rodrigo Pereira CRB 1/2167 Portal Educação P842d Desenvolvimento web com PHP / Portal Educação. - Campo Grande: Portal Educação, 2012. 151p. : il. Inclui bibliografia ISBN 978-85-8241-240-4 1. PHP (Linguagem de programação). 2. HTML ( Linguagem de programação). I. Portal Educação. II. Título. CDD 005.133 SUMÁRIO 1 INTRODUÇÃO AO HTML 1.1 Por que aprender HTML antes de PHP? 2 INTRODUÇÃO 2.1 Linguagem de marcação 2.2 Linguagem Interpretada pelo próprio browser 2.3 Modelo Cliente / Servidor 2.4 Casos especiais: Firefox | Netscape | MS-Explorer 3 CONCEITOS INICIAIS 3.1 Extensão de um novo documento html 3.2 Vendo um documento HTML 3.3 Conceito de tags e de documento bem formado 3.4 Modificando parâmetros de tags 4 BASE DE UM DOCUMENTO 4.1 Definindo o documento principal 4.2 Definindo o cabeçalho do documento 4.3 Dando um título para o documento 4.4 Definindo o corpo principal 4.5 Alterando a cor de fundo 5 EXIBINDO INFORMAÇÕES 5.1 Escrevendo dados num documento 5.2 Criando cabeçalhos 5.3 Um parágrafo 5.4 Alterando o alinhamento de um texto 5.5 Mudando a cor do texto 5.6 Tornando o texto negrito 5.7 Tornando o texto itálico 5.8 Tornando o texto sublinhado 5.9 Quebrando linhas 5.10 Dividindo em seções 6 LIGAÇÕES ENTRE PÁGINAS 6.1 Conceitos de links entre páginas 6.2 Criando um novo link 7 INSERINDO IMAGENS 7.1 Inserindo uma imagem 8 TABELAS 8.1 Formatando dados usando tabelas 8.2 Mostrando as bordas 8.3 Incluindo uma nova linha 8.4 Incluindo uma nova célula 8.5 Mesclando linhas 8.6 Mesclando colunas 8.7 Alterando a cor de fundo de uma célula 8.8 Alterando o alinhamento de uma célula 9 LISTAS 9.1 Listas gerais 10 FORMULÁRIOS 10.1 Trabalhando com dados em HTML 10.2 Definindo um novo formulário 10.3 Opções de entrada de dados 10.4 Criando um novo campo 10.5 Criando um botão 10.6 Criando um botão de submissão 10.7 Criando um botão de limpeza 10.8 Criando uma checkbox 10.9 Criando um radiobutton 10.10 Criando um campo de senha 10.11 Caixas de seleção 10.12 Caixas de texto 11 JANELAS 11.1 Definição de janelas em HTML 11.2 Definição de janelas 12 INTRODUÇÃO AO PHP – PARTE 1 12.1 Linguagem Interpretada 12.2 Modelo Cliente/Servidor 12.3 Diferenças entre PHP e Java Script 12.4 Servidor Web 12.5 Casos específicos: Apache e MS-IIS 12.6 Instalando o Apache 12.7 Visualização dos resultados 13 CONCEITOS INICIAIS 13.1 Onde colocar o código 13.2 Mesclando PHP com HTML 13.3 As tags especiais 13.4 comando echo “TESTE” 14 TRABALHANDO COM DADOS 14.1 Tipos de dados 14.2 Declaração de variáveis 14.3 Declaração de constantes 14.4 Trabalhando com Vetores 14.5 Comentários 14.6 Comando de atribuição 14.7 Imprimindo conteúdo na tela 15 OPERADORES 15.1 Operadores matemáticos 15.2 Operadores relacionais 15.3 Operadores lógicos 15.4 Operador de concatenação de strings 15.5 Notação Pré-fixa e Pós-fixa 16 CONDICIONAIS 16.1 Bloco de Comandos 16.2 O condicional if 16.3 O condicional if/else 16.4 O condicional switch 17 REPETIÇÕES 17.1 Repetição usando while 17.2 Repetição usando for 17.3 Repetição usando do/while 17.4 Repetição usando foreach 18 DESVIOS INCONDICIONAIS 18.1 Desvio incondicional: return 18.20 Desvio incondicional: break 18.3 Desvio incondicional: continue 19 INTRODUÇÃO AO PHP – PARTE 2 19.1 Declarando uma função 19.2 Chamando uma função 19.3 Definindo um valor padrão para os parâmetros de entrada 20 INCLUINDO ARQUIVOS 20.1 Diretiva include 20.2 Diretiva require 20.3 Diretivas include_once e require_once 21 FORMULÁRIOS 21.1 Enviando dados entre arquivos 21.2 Cabeçalho de um formulário 21.3 Manuseando as informações passadas 21.4 Variáveis 21.5 O atalho 22 PHP E BANCO DE DADOS 22.1 Funções de Acesso a Bancos de Dados 22.2 Conectando com um banco de dados 22.3 Criando e executando uma consulta de dados 22.4 Tratando o retorno de uma consulta 23 GERENCIAMENTO DE SESSÕES 23.1 Introdução e Motivação 23.2 Criando uma sessão 23.3 Atribuindo informações a uma sessão 23.4 Acessando informações de uma sessão 23.5 Destruindo uma sessão 23.6 Cuidados necessários 24 ORIENTAÇÃO A OBJETOS 24.1 Introdução e Motivação 24.2 Classe e Objeto 24.3 Criando um objeto 24.4 Atributo e Estado 24.5 Método e Ação 24.6 Construtores 24.7 Herança 24.8 Métodos Estáticos 25 EXPRESSÕES REGULARES 25.1 Introdução e Motivação 25.2 Caracteres Normais e Caracteres Especiais 25.3 Listas de Caracteres 25.3 Repetições Definidas 25.5 Uso de Funções do PHP 26 CONTROLANDO O UPLOAD DE ARQUIVOS 26.1 Introdução e Motivação 26.2 Alterações Necessárias no Formulário 26.3 Tratamento no Servidor 4.26 Movendo um arquivo para um diretório 26.4 Salvando uma referência no Banco de Dados 27 TRATAMENTO DE EXCEÇÕES 27.1 Introdução e Motivação 27.2 Como Capturar uma Exceção 27.3 Como Lançar uma Exceção 27.4 Como Criar um Objeto de Exceção REFERÊNCIAS 1 INTRODUÇÃO AO HTML 1.1 Por que aprender HTML antes de PHP? Quando se está programando na perspectiva WEB, toda a interface gráfica, independente da tecnologia usada, faz uso do HTML para construção e exibição de suas interfaces. Então, ainda que o PHP controle o fluxo de execução da sua aplicação (como recuperar dados de um banco de dados ou iterar sobre uma lista de dados) será o HTML responsável por renderizar a página em si, desenhando os componentes gráficos, posicionando textos, tabelas e formulários. Por conta disso, a primeira parte deste material se propõe a introduzir e estabelecer todos os conceitos necessários para a construção de interfaces gráficas utilizando o HTML. 2 INTRODUÇÂO 2.1 Linguagem de marcação Linguagens de marcação são utilizadas para definir formatos e padrões dentro de um documento. Normalmente não possuem qualquer estrutura de controle como as linguagens de programação tradicionais (por exemplo, comandos condicionais ou de repetição). Dessa forma, servem basicamente para definir como um determinado conteúdo será exibido na tela. As linguagens de marcação se utilizam do conceito de marcador ou tag, que possuem significado quando forem visualizados por algum sistema, entendendo como esse conteúdo deve ser exibido. Por exemplo, suponha que se queira deixar todas as palavras começadas pela letra “A” em negrito; para executar essa operação em HTML, seria necessário colocar as palavras começadas por esta letra entre os símbolos <b> e </b>. Existem diversos tipos e padrões para linguagens de marcação e a HTML é apenas mais uma delas, mas que se popularizou por causa do advento da Internet, já que a maioria dos documentos que trafega na rede a utiliza para exibir suas informações. 2.2 Linguagem Interpretada pelo próprio browser O HTML possui um código com várias marcações, mas ao ser aberto como um documento texto, não mostra nada além de texto com essas marcas especiais em determinadospontos. Para que o real efeito do HTML ocorra, é preciso outro software, que pegue o documento fonte e interprete o que significa cada uma das marcações existentes. A função básica de um browser Web (como o Microsoft Internet Explorer e o Mozilla Firefox) é fazer exatamente isso; dado um documento com marcações HTML, ele está preparado para entendê- las e exibir o conteúdo aos usuários depois de terem interpretado suas tags, exibindo o real conteúdo de cada documento. Vale destacar ainda que o HTML não é compilado, como algumas linguagens de programação, transitando na rede de uma forma que o seu código fonte pode ser lido por qualquer pessoa. Ele também não tem nenhum processamento no lado do servidor, este apenas envia os arquivos para a máquina cliente, que fica responsável por fazer todo o processamento. 2.3 Modelo Cliente / Servidor O modelo básico de funcionamento da Internet é o chamado Cliente / Servidor, onde existe uma máquina central que tem armazenado os documentos que os usuários desejam ver e estes, por sua vez, são os chamados clientes. No caso da Internet, não existe um computador central, pois ela cresceu a tal ponto que fica impossível gerenciá-la desta maneira. Um servidor pode atender a requisições de diversos clientes ao mesmo tempo, cada um solicitando um documento, como uma página específica de um site, diferente ao mesmo tempo. Esse servidor normalmente possui uma capacidade de processamento bem maior, para garantir que isso possa ser feito sem demora para os clientes. Os computadores clientes, após receberem os documentos do servidor pela Internet, ficam responsáveis por realizar alguma operação sobre esses arquivos, como por exemplo, visualizar as informações de um determinado arquivo num browser ou ainda salvar o arquivo em algum diretório na máquina cliente (os populares downloads). 2.4 Casos especiais: Firefox | Netscape | MS-Explorer Os dois sistemas mais populares para visualização de páginas HTML, aquelas que são obtidas visitando sites na internet, são atualmente o Mozilla Firefox e o Microsoft Internet Explorer. O primeiro roda na maioria das plataformas existentes (e é baseado no antigo Netscape Navigator), e o segundo apenas em sistemas baseados no Microsoft Windows. O Netscape Navigator já foi o líder deste segmento de mercado de visualização de páginas internet, quando a Microsoft fez uma forte investida neste campo, disponibilizando seu browser direto no sistema operacional. Isso gerou diversos movimentos de acusação de concorrência desleal (deve-se levar em conta que o Microsoft Windows equipa a imensa maioria de computadores), porém o resultado foi a inversão da liderança entre os navegadores. Tecnicamente, eles são muito parecidos, ambos devem visualizar o conteúdo de um documento HTML na tela do computador. Teoricamente, o resultado deveria ser igual se os documentos fossem iguais (essa é uma das bases das linguagens de marcação), mas devido a diferentes entendimentos de algumas marcas de documento, a implementação de um e de outro pode mudar, o que acaba gerando resultados diferentes para documentos iguais. 3 CONCEITOS INICIAIS 3.1 Extensão de um novo documento: .html A extensão padrão para os documentos HTML é o .html, porém existe uma variação, o .htm. De modo geral, se um documento com esta extensão for criado e aberto num browser, este tentará mostrar o seu conteúdo como HTML, interpretando tags e tudo o mais. 3.2 Vendo um documento HTML Como já mencionado, a maneira de se ver o resultado de um documento HTML é abrindo-o num browser. Isso tanto pode ser feito abrindo o documento diretamente, como o colocando num servidor internet e acessando-o como mais uma página da internet. O resultado deve ser o mesmo. 3.3 Conceito de tags e de documento bem formado Já foi falado rapidamente o significado de tags ou marcadores no início deste documento. Uma tag é uma marca que deve ser colocada num documento e que determinados programas interpretam de alguma forma, dando um significado específico, como alterando a formatação do documento naquele ponto. Normalmente, o texto a ser modificado deve vir entre uma marca que indica o início e o fim da marcação. Essa tag deve ser alguma reconhecida pelo browser. Por exemplo: <i> Texto Modificado e Exibido em Itálico </i> No trecho acima, todas as palavras seriam mostradas em itálico, pois estão colocadas entre tags que possuem esse significado e alteram o texto desta forma quando interpretadas por um browser. A imensa maioria de tags da definição do HTML possui um abre e um fecha correspondente, daí vem a definição de documento bem formado, ou seja, sempre que existir um abre, deve existir um fecha correspondente a este. Figura 01: Resultado das tags para itálico. Se por algum motivo uma tag não for fechada, o documento continuará a ser exibido, eventualmente com algum erro na visualização, mas nenhum erro na execução será mostrado, diferente da maioria das linguagens de programação tradicionais, onde alguma saída de erro seria mostrada para o usuário. Uma última observação sobre documentos bem formados, é sobre o caso das tags que não possuem marca indicando o fechamento. Nesses casos, deve-se colocar uma barra no início da primeira tag e omitir a que seria de fechamento. O HTML já pode ser escrito dessa forma e a maioria dos browsers irá reconhecer o formato, contudo a padronização maior virá quando o XHTML (HTML extendido) se tornar um padrão mais difundido. 3.4 Modificando parâmetros de tags As tags também possuem modificadores que podem alterar parte do significado do conteúdo dela num determinado contexto. Por exemplo, o par de tags <body></body> define simplesmente o corpo de uma página HTML, porém no exemplo <body bgcolor = “blue”> ... </body> ela continua definindo o corpo de um documento HTML, mas modifica a sua cor de fundo para azul (a não colocação deste parâmetro implica que a cor de fundo continua branca). Existe uma infinidade de parâmetros para cada tag e apenas com uma referência do lado, consegue-se saber todas as suas opções ou funcionalidades. Figura 02: Página com fundo azul vista num browser. 4 BASE DE UM DOCUMENTO 4.1 Definindo o documento principal: <html></html> Antes de se escrever o conteúdo que um determinado documento deverá exibir na tela, deve- se identificar claramente que o documento em questão será entendido como um documento HTML e que tudo que estiver contido nele receberá um tratamento especial. Esse tipo de operação é feito utilizando-se as tags <html> e </html>, indicando que tudo dentro delas será interpretado como uma página Internet. 4.2 Definindo o cabeçalho do documento: <head></head> Todo documento HTML possui um cabeçalho onde são escritas definições gerais e de padrões a serem seguidos em todas as partes do documento, bem como a escrita de determinados trechos de código de programação ou ligação com documentos externos. A definição do título da página, (detalhada abaixo) também deve ser escrita entre as tags <head> e </head>. 4.3 Dando um título para o documento: <title></title> Por definição, todos os aplicativos executados sobre a plataforma Microsoft Windows (e uma grande variedade de outras plataformas) que possuem interação por janelas, possuem uma barra superior que mostra um título para o documento sendo exibido, ao mesmo tempo em que também fala qual o aplicativo que está sendo executado na janela corrente. Nas páginas da Internet, não é diferente em relação à existência desses elementos. Portanto, para colocarmos o título que desejarmos numa janela do browser utilizamos as tags <title></title>, que deve vir escrita entre as tags <head>e </head>. Podemos ter como exemplo: <head> <title> Título da minha Janela </title> </head> Nesse exemplo, será exibida uma janela com o título “Título da Janela”. Verifique as imagens acima e note o título de cada janela. 4.4 Definindo o corpo principal: <body></body> A partir da definição destas tags, que indicam o início do corpo principal do documento, ou seja, o que será mostrado na tela do monitor, pode-se começar a escrever o conteúdo da página em si, colocando-se diversas tags de formatação, definindo-se campos de formulários, mostrando textos e imagens, além de criar links entre diversos outros documentos. 4.5 Alterando a cor de fundo: atributo bgcolor Como já mencionado anteriormente, a grande maioria de tags HTML possui parâmetros modificadores que de alguma forma alteram a forma como o conteúdo que virá entre as tags será exibido. Um dos parâmetros existentes para a tag <body></body> é a que altera a cor de fundo de toda a janela. Veja o exemplo: ... <body bgcolor = “blue”> </body> ... Neste caso, toda a janela do browser ficará com a cor azul, porém, no lugar do azul, poderiam ser colocadas diversas outras cores, todas em inglês, que mudariam também o fundo. Além do nome por extenso, também poderia ser colocado o valor correspondente da cor em hexadecimal, precedido do símbolo sustenido: “#”. ... <body bgcolor = “#4D998F”> </body> ... Figura 03: Janela com a cor de fundo definida usando o valor #4D998F. 5 EXIBINDO INFORMAÇÕES 5.1 Escrevendo dados num documento Esta seção trata principalmente da forma como os dados serão exibidos na tela, alterando sua formatação, alinhamento e disposição na tela, sempre utilizando tags HTML para permitir isso. Por padrão, pode ser escrito qualquer coisa no documento, mesmo fora das tags, e mesmo assim o browser irá exibir o texto, com a diferença de que não se tem nenhum controle sobre o efeito. Daí a importância de sempre se utilizar tags para controlar a formatação, não apenas abrindo uma tag e colocando a informação, como também fechando a tag correspondente, para ao final gerar um documento HTML bem formado, ao mesmo tempo em que se tem um controle preciso do que um determinado browser irá exibir, e não deixar que ele tome decisões que vão distorcer o conteúdo. 5.2 Criando cabeçalhos: <hn></hn> A maneira mais simples de se definir um cabeçalho (ou título) num documento HTML, é através das tags <hn> e </hn>, onde o valor do “n” seria substituído por algum número entre 1 e 6, sendo que valores menores indicam que o tamanho da fonte exibida será maior e números menores indicam títulos de tamanho menor. Por exemplo: <h1> Comparando Tamanhos </h1> <h2> Comparando Tamanhos </h2> <h3> Comparando Tamanhos </h3> <h4> Comparando Tamanhos </h4> <h5> Comparando Tamanhos </h5> <h6> Comparando Tamanhos </h6> Figura 04: Tamanhos diferentes da tag <hn> e </hn>. 5.3 Um parágrafo: <p></p> Um texto normal, ou melhor, que seja encarado como normal e que apareça em diversos pontos da página, deve vir entre as tags <p> e </p>, que denotam a existência de um parágrafo. Para visualização de algum resultado, não é necessário que exista uma tag de fechamento, porém isso pode fazer com que versões mais antigas de browsers vejam o resultado de forma diferente. <p> Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto, Texto </p> Neste exemplo, será criado um parágrafo contendo o texto entre as tags. Caso sejam criados mais de um parágrafo, eles terão um pequeno espaçamento para indicarem que são elementos diferentes. Figura 05: Inserindo texto entre as tags <p> e </p>. 5.4 Alterando o alinhamento de um texto Dentro das tags que trabalham com texto, pode vir um modificador, também chamado de parâmetro, que altera o alinhamento do texto que vier entre as tags (daí a importância de fechar as tags, pois mostra explicitamente até onde vai o alinhamento proposto para uma determinada tag). Existem quatro alinhamentos possíveis: esquerdo, centralizado, direito e justificado. <p align=’left’> Texto à esquerda </p> <p align=’center’> Texto ao centro </p> <p align=’right’> Texto à direita </p> <p align=’justify’> Texto justificado </p> Figura 06: Alinhamento de texto. O texto com alinhamento à esquerda é o valor padrão, fazendo com que não seja necessário colocar explicitamente esse item quando estiver sendo declarado. O texto com alinhamento justificado, faz com que o texto fique alinhado tanto à esquerda, quanto à direita, distribuindo as palavras de uma forma homogênea. 5.5 Mudando a cor do texto: <font></font> As tags <font> e </font> servem para modificar a fonte, o tamanho e as cores utilizadas num trecho de texto de forma global, não apenas uma ou outra palavra. Com isso, tem-se um controle preciso da formatação que está se tentando alcançar. <font color=’red’ size=’20’><p> Exemplo! </p></font> Figura 07: Mudança da cor do texto. 5.6 Tornando o texto negrito: <b></b> Para dar um destaque maior a algum trecho de texto, podem-se usar as tags <b> e </b>, que destacam o texto que estiver contido entre elas. Elas podem ser colocadas dentro de outras tags, como nas de parágrafo ou de título, desde que o ocorra o devido fechamento. Segue um exemplo: <p> Texto normal, mas agora com <b> negrito </b> . </p> Figura 08: Texto em negrito. O início da frase está normal, porém existe uma palavra destacada. 5.7 Tornando o texto itálico: <i></i> Da mesma forma que se pode destacar algum trecho de um texto utilizando negrito, como mostrado acima, também se usam as tags <i> e </i> para mostrar um trecho de código em itálico, como alguma citação ou palavra estrangeira. O seu uso é idêntico ao caso da tag negrito. <p> Agora em <i> itálico </i> ... </p> Figura 09: Texto em itálico. 5.8 Tornando o texto sublinhado: <u></u> Por fim, o último dos modificadores padrão de textos é o de sublinhado, que deve ser utilizado da mesma forma que as tags exibidas anteriormente, de negrito e itálico. Ele deixa marcado com uma linha inferior, abaixo das palavras, todas as palavras entre elas. <p> Parte <u>deste</u> texto <u> será sublinhado </u>. </p> Figura 10: Texto em sublinhado. Vale destacar que pode ocorrer qualquer combinação destas tags mostradas até o momento, para se chegar ao efeito desejado. 5.9 Quebrando linhas: <br> Esta tag não possui fecha, ela é definida unicamente. Ela serve para inserir quebras de linhas no documento, fazendo com que o texto que vem abaixo seja ainda mais deslocado. É muito importante para arrumar a disposição dos elementos gráficos na tela, não havendo limite de quantidade. <h1> Linha 1 </h1> <br><br><br><br><br> <h1> Linha 2 </h1> Figura 11: Quebras de linha. Neste exemplo, apesar de todas as frases estarem na mesma linha, foram inseridas cinco quebras de linha, o que irá fazer com que o segundo texto seja deslocado em cinco linhas para baixo. 5.10 Dividindo em seções: <hr> Da mesma forma que a tag <br>, esta também não possui uma tag para indicar o seu final, ela é definida unicamente. Serve para colocar linhas horizontais, principalmente para implementar a divisão de seções dentro de um mesmo conteúdo. Por exemplo: <p> Primeira Seção </p> <hr> <p> Segunda Seção </p> Figura 12: Separadores horizontais. 6 LIGAÇÕES ENTRE PÁGINAS 6.1 Conceitos de links entre páginas Um dos fundamentosda Internet é permitir que se possa ir de um lugar a outro da rede com apenas um clique. Esta é a função dos links, estabelecer conexões entre diversas páginas, sejam elas internas, dentro do mesmo site, seja referenciando sites externos, de outras empresas, mas que sejam relevantes para o conteúdo discutido no momento. Dessa forma, surgem dois conceitos, o de link absoluto e o de link relativo, fundamentais para a implementação de links dentro de uma página. Um link absoluto define todo o caminho onde uma segunda página está hospedada e que será aberta no browser. Um link relativo indica apenas parte do endereço, utilizando conceitos dos diretórios em uso para indicar outra página. Em maiores detalhes, o diretório corrente onde uma página HTML está salva, é chamado diretório raiz. Para se referenciar ao diretório (e eventuais arquivos) que está acima numa hierarquia, usa-se o ponto-ponto: “..”. Para indicar um diretório abaixo na hierarquia, utiliza-se o nome do diretório, mas caso exista mais de um, deve-se separar os nomes por uma barra “/”. Esses conceitos são os mesmos que utilizados para a navegação em sistemas computacionais baseados em linha de comando, como o MS-DOS ou um terminal, no Linux. Prefira sempre utilizar caminhos relativos aos absolutos, pois isso garante uma facilidade maior caso seja necessário modificar o endereço em que a página está hospedada, pois todos os demais diretórios ficam intactos. 6.2 Criando um novo link: <a></a> Agora, tecnicamente, um link é definido no HTML como um pedaço de texto (ou outro objeto qualquer, como uma imagem) que ao ser clicado leva a um outro lugar, ou seja, a outra página. Isso é feito utilizando-se as tags <a> e </a>, que deverão englobar o texto para o qual será dado destaque e que será clicado pelo usuário final. Por exemplo, criando um link vazio: <p> Texto: <a> Clique Aqui </a> </p> Neste exemplo, nenhuma operação será feita, porém o link foi criado e pode ser clicado (aparecerá a mãozinha, inclusive), porém o usuário permanecerá na mesma página. Para executar alguma operação que realmente leva o usuário a outra página, é preciso incluir um parâmetro que mostra a página de destino. Por exemplo: <p>Texto:<a href=’http://www.mdcolombo.com.br’>Clique Aqui</a></p> Neste caso, o resultado será o redirecionamento para o link absoluto definido na tag href. Usando um link relativo: <p>Texto:<a href=’../arqs/artigo.html’>Clique Aqui</a></p> Neste último exemplo, o arquivo que será aberto é procurado um nível acima da hierarquia corrente, depois dentro do diretório arqs e por fim, procura-se um arquivo de nome artigo.html. Caso ele não exista, um erro é retornado, senão o documento é exibido na tela. 7 INSERINDO IMAGENS 7.1 Inserindo uma imagem: <img> Uma imagem é encarada como um objeto que pode ser inserido em qualquer lugar da página, não precisando inclusive ter uma tag que a feche. No ponto em que se deseja colocar a imagem deve-se colocar a tag correspondente e indicar o local onde a imagem fonte está armazenada e o nome da imagem a ser inserida. Todos os comentários de links absolutos e relativos se aplicam aqui. <img src=‘imgs/teste/cavalo.jpg’> Para que uma imagem se torne um link, basta que uma tag <a> e </a> englobe uma tag <img>. 8 TABELAS 8.1 Formatando dados usando tabelas: <table></table> A melhor maneira, senão a única, de dispor elementos gráficos numa página HTML é através do uso de tabelas, pois garante que um determinado elemento ou texto ficará onde se deseja que ele fique, porém isso aumenta em muito a complexidade na elaboração de páginas. Atualmente, existem diversos editores que facilitam essa operação, pois desenham as tabelas e ocultam o código. Para declarar uma nova tabela, deve ser feito uso das tags <table> e </table>, que indicam que uma nova tabela será criada, com suas várias linhas e colunas. Neste ponto, não existem dados ainda, então o resultado visível não é muito grande, mais adiante é que os dados serão inseridos dentro desta nova tabela. 8.2 Mostrando as bordas: atributo border Quando se está trabalhando com tabelas, é fundamental saber onde as linhas e colunas estão aparecendo, mesmo que para a página como um todo seja mais interessante, por questões de design, que as bordas não apareçam. Enfim, ao menos em fase de desenvolvimento, as bordas devem aparecer. Isso é feito através do parâmetro border, dentro de <table>. Assim: <table border=’1’> </table> Neste caso, esta tabela terá bordas de tamanho 1. 8.3 Incluindo uma nova linha: <tr></tr> Para incluir uma nova linha a uma tabela, devem-se usar as tags <tr> e </tr>. Tudo que estiver entre elas, será disposto na mesma linha, independente do resultado final de exibição. Elas devem vir dentro das tags <table> e </table>. Assim: <table border=’1’> <tr></tr> <tr></tr> <tr></tr> </table> 8.4 Incluindo uma nova célula: <td></td> Por fim, para se declarar todas as possibilidades de uma tabela, deve ser possível declarar colunas dentro de uma tabela. Isso é feito utilizando as tags <td> e </td>, que por sua vez devem vir dentro das tags <tr> e </tr>. Os dados propriamente ditos são colocados dentro de <td> e </td>. Vale destacar, que desta forma, fica definida uma célula. Por exemplo: <table border=’1’> <tr> <td> C11 </td> <td> C12 </td> <td> C13 </td> </tr> <tr> <td> C21 </td> <td> C22 </td> <td> C23 </td> </tr> <tr> <td> C31 </td> <td> C32 </td> <td> C33 </td> </tr> </table> Figura 13: Tabela em HTML. No exemplo acima, é definida uma tabela, com três linhas e três colunas. 8.5 Mesclando linhas: atributo rowspan Há situações em que algumas células não possuem dados e para não deixá-las simplesmente vazias, o que pode tornar mais confuso o entendimento do código, existe o conceito de span, que serve para mesclar (como os conceitos do Microsoft Excel), juntando o espaço de duas células e tornando-a uma só. No caso do atributo rowspan, deve-se definir quantas linhas deseja-se incluir, daquela mesma coluna, na célula final resultante. Isso é feito apenas na primeira célula, sendo que as demais devem ser removidas. Pegando o exemplo anterior, vamos mesclar toda a primeira coluna: <table border=’1’> <tr> <td rowspan=2> C11 </td> <td> C12 </td> </tr> <tr> <td> C21 </td> </tr> <tr> <td> C31 </td> <td> C32 </td> </tr> </table> Figura 14: Linhas mescladas numa tabela. 8.6 Mesclando colunas: atributo colspan A mesma idéia aplicada no item acima para a questão de mesclar linhas, pode ser aplicada para mesclar colunas, onde diversas colunas podem ser unidas numa única, removendo o código das demais. Assim: <table border=’1’> <tr> <td colspan=’2’> C11 </td> </tr> <tr> <td> C21 </td> <td> C22 </td> </tr> <tr> <td> C31 </td> <td> C32 </td> </tr> </table> Figura 15: Colunas mescladas numa tabela. 8.7 Alterando a cor de fundo de uma célula Numa tabela, cada célula pode ser tratada independentemente, modificando seus parâmetros, e fazendo com que apenas uma delas tenha sua exibição modificada. Para este efeito, é necessário incluir nas tags <td> os modificadores correspondentes para mudar o comportamento daquela célula em especial. Dessa forma, para alterar a cor de fundo de uma célula, é preciso incluir o atributo bgcolor o qual irá receber como valor modificador a nova cor que será colocada no fundo da célula. Esse nome de cor segue os mesmo padrões de cores que devem ser utilizados em HTML, ou seja, devem ser em inglês ou o valor hexadecimal precedido de sustenido e entre aspas. <table border=’1’> <tr> <td bgcolor=’0000FF’> azul </td> <td bgcolor=’yellow’> amarelo </td></tr> <tr> <td bgcolor=’gray’> cinza </td> <td bgcolor=’#FF0000’> vermelho </td> </tr> </table> Figura 16: Cores de fundo numa tabela. 8.8 Alterando o alinhamento de uma célula Da mesma forma que se podem incluir modificadores para cores de células, independentes umas das outras, pode-se também alterar o alinhamento do conteúdo existente dentro de uma célula, seja texto, seja uma imagem. Alguns exemplos: <table border=’1’> <tr> <td align=’left’> esquerda </td> <td align=’center’> centro </td> </tr> <tr> <td align=’right’> direito </td> <td align=’justify’> justificado </td> </tr> </table> 9 LISTAS 9.1 Listas gerais: <ol></ol>, <ul></ul> e <li></li> Uma outra forma de organizar as informações numa página HTML é através de listas, que são itens estruturados e separados por algum símbolo de marcação, normalmente uma pequena bolinha colocada ao lado do elemento de texto que se deseja exibir na tela. O primeiro tipo de lista, <ol> e </ol> recebe o nome de lista ordenada, pois existe uma ordem lógica entre os elementos que irão compor os dados. O segundo tipo de lista, <ul> e </ul> não implica em nenhum tipo de ordem específica dos elementos. Por fim, as tags <li> e </li> definem um elemento interno de qualquer uma das listas. A estrutura básica de uma lista é: <ol> <li> Item </li> <li> Item </li> <li> Item </li> </ol> Ou: <ul> <li> Item </li> <li> Item </li> <li> Item </li> </ul> Figura 17: Listas ordenadas e não ordenadas. 10 FORMULÁRIOS 10.1 Trabalhando com dados em HTML Para projetos maiores e que necessitam trocar ou obter informações do usuário, texto simples e estático, não é muito interessante, pois acaba sendo um caminho de mão única de comunicação entre o desenvolvedor e o usuário que está acessando os dados. Sendo assim, a linguagem HTML oferece suporte a um grupo de estruturas para fazer o caminho de volta. Sempre que alguém preenche seus dados numa página de cadastro, ela está fazendo uso de formulários do HTML. Essas estruturas fornecem campos de texto por extenso, botões, caixas de seleção e de senha. Em sistemas mais complexos e que trabalham com bases de dados, esses conceitos são dos mais utilizados para a elaboração do sistema. Nos itens a seguir, serão mostrados os principais elementos para construção de formulários em HTML e de que forma eles se comportam num sistema. 10.2 Definindo um novo formulário Para deixar claro que daquele ponto em diante será utilizado um formulário e seus diversos elementos, deve-se antes declarar essa informação explicitamente, inclusive com alguns outros parâmetros que irão controlar o comportamento dos dados entre o computador cliente e o servidor, onde as informações poderão ser tratadas e, por exemplo, inseridas numa base. <form name=’pri_form’ method=’post’ action=’arquivo.php’> … </form> Todos os demais elementos devem vir entre as tags <form> e </form>. O primeiro parâmetro, name, indica o nome do formulário, o que servirá para referenciá-lo em outros trechos do código. O parâmetro method indica de que forma os dados serão enviados para o servidor (post indica que os dados serão ocultos, a outra opção, get, que os dados irão visíveis) e por fim, action, indica qual o arquivo que deve tratar os dados depois do envio. 10.3 Opções de entrada de dados: <input> Uma das tags mais simples e ao mesmo tempo mais utilizadas é a tag <input>. Ela não possui uma correspondente que a fecha e é utilizada para permitir ao usuário inserir informações alfanuméricas ou então mostrar um botão clicável. Existem alguns modificadores que podem ser utilizados que alteram a forma como os dados serão digitados pelos usuários. A seguir são mostrados os vários tipos de estruturas que a tag input pode representar, alterando apenas o campo type, que indica qual tipo de estrutura deve ser visualizada no formulário. Além do tipo, é importante colocar o parâmetro name, para mostrar qual o identificador para aquela estrutura, para que possa ser referenciado no futuro, caso seja necessário. 10.4 Criando um novo campo: parâmetro text Quando se deseja digitar alguma informação alfanumérica num formulário, deve-se utilizar o parâmetro text na declaração do campo. Isso é feito da seguinte forma: <input type=’text’ name=’campo’ maxlength=’50’ size=’50’> Figura 18: Campo de formulário. A palavra input indica uma nova entrada de dados. O item, type=’text’, indica um novo campo de entrada para texto. O item name=’campo’, declara um nome para o campo poder ser acessado por outras linguagens de programação. Os outros dois parâmetros são itens para visualização. O primeiro mostra o número máximo de caracteres que podem ser inseridos e o segundo, o tamanho do campo que será mostrado na tela. Outros parâmetros podem estar presentes. Eventualmente, podem existir informações padrões que vieram de outras fontes, como uma base de dados, e deseja-se que essa informação seja o padrão do campo, ou seja, que já venha digitada alguma coisa nele. Para isso, usa-se o parâmetro value, seguido do texto a ser exibido. Por fim, existe o item readonly, para não permitir modificações no conteúdo do campo. 10.5 Criando um botão: parâmetro button Outro item muito interessante em formulário é a inserção de botões, que quando clicados, disparam alguma ação, como executar o código fonte de alguma outra linguagem de programação. É necessário o uso de outra linguagem de programação porque o HTML não fornece suporte a um grande número de estruturas muito comuns em programação (condicionais, repetições, etc). <input type=’button’ name=’botão’ value=’Aperte’> A declaração do botão acima não realizará qualquer operação em especial, apenas permitirá ao usuário ficar apertando um botão na tela, no entanto esse exemplo é bem explicativo. A declaração do botão segue o mesmo padrão de um campo texto, com a diferença do tipo. O parâmetro value também tem outra função, serve para indicar o título inserido no corpo do botão. Para associar algum tipo de comportamento mais avançado ao botão, deve-se incluir um outro parâmetro, o mais comum é o onClick associado a alguma função, que também pode ser chamado de evento. Ele indica que sempre que o botão for clicado, chamará a função (ou método) ao qual estiver associado, por exemplo, da linguagem JavaScript. Outro exemplo: <input type=’button’ name=’botao_2’ value=’Aperte’ onClick=’alert(“oi”)’> Figura 19: Botão com uma mensagem sendo exibida. A função alert() deve ser escrita em algum trecho do código e ser visível por esse trecho de código. No momento em que o usuário apertar o botão, a função será chamada e o código dela executado. 10.6 Criando um botão de submissão: parâmetro submit A declaração de um botão de submissão é idêntica ao de um botão comum, inclusive com sua visualização sendo idêntica ao de um botão normal, com a diferença de que já existe uma operação pré-configurada, a de envio dos dados do formulário para o formulário onde as páginas HTML estão hospedadas, fazendo com que os dados sejam tratados. Por exemplo: <input type=’submit’ name=’envio’ value=’Enviar’> Será criado um botão com o título Enviar que, quando clicado, pegará todos os dados preenchidos nos demais campos deste formulário e o enviará para o servidor. 10.7 Criando um botão de limpeza: parâmetro reset Um botão de reset possui a mesma definição do submit, porém com uma ação associada diferente, e potencialmente destrutiva, ou seja, uma vez acionado o botão, todas as informações de todos os campos do formulário são apagadas, fazendocom que os campos retornem ao estado inicial. Essa operação é perigosa por eventualmente fazer com que o usuário digite todas as informações novamente. Por exemplo: <input type=’reset’ name=’apag’ value=’Apagar’> 10.8 Criando uma checkbox: parâmetro checkbox Uma checkbox (ou caixa de marcas) permite ao usuário marcar, dentre um grupo de opções, aquelas que ele deseja, mais de uma se for o caso. Para indicar que todas as opções se referem ao mesmo grupo, os nomes de todos os campos devem ser o mesmo. Por exemplo: De quais cores você gosta? <input type=’checkbox’ name=’cores’> Azul <input type=’checkbox’ name=’cores’> Vermelho <input type=’checkbox’ name=’cores’> Amarelo Figura 20: Caixas de seleção múltipla. Neste caso, o usuário poderia escolher qualquer combinação de cores, marcando uma, duas ou as três opções. 10.9 Criando um radiobutton: parâmetro radio A forma de declarar um campo radiobutton (ou radio) é muito semelhante ao de checkbox, inclusive com a obrigatoriedade de o nome ser igual para todas as opções, sendo que a maior diferença está que nesta opção, a seleção é única, ou seja, só pode ser escolhida uma opção dentre as várias que são fornecidas para o usuário. Por exemplo: Qual a sua faixa etária? <input type=’radio’ name=’idades’> Menor 18 <input type=’radio’ name=’idades’> Entre(inclusive) 18 e 50 <input type=’radio’ name=’idades’> Maior 50 Figura 21: Caixas de seleção exclusiva. Nestas opções, um mesmo usuário não pode escolher mais de uma opção, pois ele não pode se encaixar, simultaneamente em duas faixas etárias distintas, como é o caso. 10.10 Criando um campo de senha: parâmetro password Campos password são úteis quando não se deseja que outros usuários vejam as informações que estão sendo digitadas num campo, por exemplo, numa senha, ao se validar a entrada de um usuário de um sistema, ou mesmo quando o usuário estiver inserindo sua senha num cadastro qualquer. Sua declaração é muito parecida com a de um campo normal: <input type=’password’ name=’sna’ size=’10’ maxlength=’10’> Aqui é criado um campo de tamanho dez caracteres e que só permite ao usuário digitar dez caracteres quando da inserção de dados. No lugar dos caracteres, que seria o normal aparecerem na tela, são exibidos asteriscos, ocultando assim a entrada dos usuários. 10.11 Caixas de seleção: <select></select> Caixas de seleção são muito utilizadas para permitir ao usuário selecionar apenas uma opção dentre várias existentes, sem mostrar todos os itens ao mesmo tempo (como no caso da checkbox), obtendo-se um ganho de espaço considerável na tela, facilitando a formatação e diagramação da página. Sua declaração segue: <select name=’seleção’> <option value=’1’> Item 1 </option> <option value=’2’> Item 2 </option> <option value=’3’> Item 3 </option> </select> Figura 22: Caixas de seleção. Neste caso, foi criada uma caixa de seleção com três opções, sendo que cada opção possível é declarada entre as tags <option> e </option>. Deve ser dado um nome para a caixa de seleção para referência futura. Um parâmetro utilizado dentro da tag <option>, value, mostra qual o valor que será considerado quando a opção for selecionada. 10.12 Caixas de texto: <textarea></textarea> Esse elemento é utilizado principalmente quando a quantidade de texto a ser digitado pelo usuário é muito grande. Ela permite uma melhor visualização de grandes quantidades de caracteres, mesmo que isso não seja a melhor solução de exibição de informações em páginas HTML. Sua declaração segue o seguinte modelo: <textarea name=’tarea’ rows=’10’ cols=’40’></textarea> Figura 23: Áreas de Texto. No exemplo acima, é declarada uma textarea de nome tarea, que tenha dez linhas e quarenta colunas, onde cada coluna é o espaçamento de um caractere. Caso exista algum texto que se deseja colocar por padrão neste campo, ele deve ser posto entre as tags. 11 JANELAS 11.1 Definição de janelas em HTML Uma janela de um browser pode ser considerada inteira, com apenas um documento ocupando toda a área visível ou então pode ser dividida em diferentes partes, cada uma ocupada por um documento HTML diferente, que de alguma forma se relacionam, ou seja, ao se clicar num link numa janela, a página será aberta em outra. Esse conceito é chamado de frames. Como nem todos os browsers suportam a definição de frames (todas as versões mais recentes suportam atualmente) nem sempre foi uma boa idéia implementar soluções utilizando esses conceitos. Vale destacar que com o uso de outras tecnologias (como PHP e ASP) o uso de frames pode dificultar o desenvolvimento dos sistemas, sendo mais simples utilizar uma única página. 11.2 Definição de janelas: <frameset></frameset> Quando se usa janelas, deve existir um documento especial que define como eles serão montados, quais arquivos serão chamados e de que forma eles se relacionam. Isso é feito através do uso das tags <frameset></frameset>, que devem ser utilizadas no lugar das tags <body></body> que existem num documento normal HTML. Dentro destas tags é que virão algumas configurações de parâmetros e de frames que serão utilizadas para exibir o resultado. Vale destacar que quando se deseja visualizar o resultado, este documento de definição é o que deve ser aberto no browser e não qualquer outro que componha o conteúdo que será visto na tela. <frameset cols=’25%, 75%’> <frame name=’esq’ src=’menu.html’> <frame name=’dir’ src=’conteudo.html’> </frameset> Figura 24: Definição de Janelas Nesta definição, é definido um frame com duas colunas, sendo uma ocupando 25% da tela e a outra ocupando 75% da tela. A seguir, são definidos os conteúdos dos dois frames, sendo que no primeiro, chamado esq, deve ser aberto o arquivo menu.html e no menu direito será aberto o arquivo conteudo.html. Uma definição alternativa, é que ao invés de se separar os frames por colunas, separem-se por linhas, neste caso, no lugar de cols deverá ser colocada a palavra rows. 12 INTRODUÇÃO AO PHP – PARTE 1 12.1 Linguagem Interpretada Uma linguagem interpretada é aquela que não precisa ser compilada antes de ser executada. Porém, é necessário ter um mecanismo que consiga ler o código fonte e gerar a saída esperada pelo usuário ou então mostrar eventuais erros no arquivo que está sendo executado naquele momento; de certa forma, a compilação é feita em tempo real e se algo estiver errado, uma saída de erro é exibida, caso contrário o resultado é mostrado. Além do PHP, existem diversas outras linguagens interpretadas, que também podem ser chamadas de “Linguagens Script”, tais como Microsoft ASP e JavaScript. Elas possuem aplicações específicas, mas com alguns pontos em comum, com destaque especial entre PHP e Microsoft ASP, assunto, porém, que foge do escopo deste treinamento. 12.2 Modelo Cliente/Servidor A Internet atualmente é baseada no modelo chamado cliente/servidor. Nesse paradigma existe uma máquina que deseja fazer alguma operação e para que isso ocorra, entra em contato com outra máquina, que pode estar fisicamente distante, mas conectada através de uma rede, como por exemplo a Internet, estabelecendo assim um canal de comunicação entre elas. O cliente faz os pedidos de operações e o servidor fica responsável por executar alguma operação ou processamento e enviar-lhe um resultado, através da rede. Isso pode ser muito interessante para concentrar todo o processamento apenas de um lado da rede, deixando os usuários finais com menos obrigação de ter bons computadores. As questões de infra-estrutura não são importantes neste momento, mas vale destacar que podem existirdiversos computadores intermediários entre as duas pontas que estabeleceram comunicação, o que pode aumentar o tempo de resposta. Destaca-se ainda que este conceito não é absoluto, ou seja, uma máquina pode ser cliente num momento e servidor em outro. 12.3 Diferenças entre PHP e JavaScript Uma das linguagens mais famosas atualmente, principalmente por causa do advento da Internet, é a chamada JavaScript (que é bem diferente da sua prima de nome, a linguagem Java), que muitas vezes pode ser confundida com PHP, especialmente para quem está começando a dar os primeiros passos em programação web, por isso serão explicadas rapidamente suas diferenças. PHP é executada do lado do servidor, ou seja, um browser internet, na máquina do usuário, faz um pedido de página e um outro computador se encarrega de fazer todo o processamento necessário, enviando, em seguida, apenas o resultado. JavaScript, por sua vez, é executada do lado do cliente, sendo o código enviado junto com a página Internet e o processamento feito pelo browser. A linguagem PHP permite acesso a bancos de dados de forma muito mais simples, pois pode trabalhar diretamente com as conexões abertas entre o servidor de páginas e o servidor de bancos de dados. Como JavaScript é executada do lado do cliente, fica muito mais complicado criar uma conexão através da rede para acesso a dados e criação de páginas dinâmicas. Um dos grandes diferenciais para se usar JavaScript é tirar a sobrecarga de processamento do servidor, fazendo com que um pouco dessa carga fique por conta do cliente. Por exemplo, para validar o preenchimento de determinados campos num formulário HTML, a verificação pode ser feita no cliente, antes de enviar os dados pela rede, ganhando no tempo de transferência dos dados. As duas possuem suas origens de estrutura nas linguagens C/C++, por isso ambas se parecem muito em suas estruturas de programação (condicionais, repetições, atribuições), porém PHP possui facilidades por contar com recursos de um servidor (normalmente uma máquina mais potente) e a JavaScript foi criada para controlar ações de um browser Internet. 12.4 Servidor Web Para que um código em PHP seja executado, é necessário ter um software especial que consiga pegar o arquivo com o código fonte em PHP, interpretá-lo e gerar algum resultado. Um servidor Web é o responsável por gerenciar as diversas conexões que navegadores internet estiverem fazendo, requerendo diversas páginas de sites, por exemplo. O servidor processa o código fonte que está sendo solicitado pelo navegador, que normalmente está associado a um endereço internet ou a um link interno de alguma página, verifica se existe algum erro na página e gera como saída um documento em formato HTML; um ponto muito interessante do PHP é que ele poder ser colocado no meio de código HTML, tendo lógica e interface no mesmo documento. 12.5 Casos específicos: Apache e MS-IIS Dois dos mais famosos servidores Web que permitem que navegadores possam fazer requisições e a partir de documentos armazenados nos seus diretórios responder com código HTML, são o Apache, que oferece suporte a diversas tecnologias, dentre elas o PHP e Microsoft ASP, o Microsoft Internet Information Server (IIS) que, além de oferecer suporte à ASP, também poderá ser configurado para rodar outras tecnologias. Ambos são responsáveis por tratar requisições HTTP (Hypertext Transfer Protocol), que é o protocolo utilizado na Internet para comunicação entre clientes e servidores. O Apache é um projeto de software livre dentre vários outros mantidos pelo grupo Apache, que se mantém com doações de várias empresas que têm interesse em utilizar sistemas de base produzidos e geridos por ele, que possui toda a ideologia do software livre, ou seja, possui o código aberto e qualquer interessado pode obtê-lo e fazer as modificações que bem entender. Ele domina o mercado de servidores de página, ocupando aproximadamente 50%, estando atualmente em sua versão 2.2.9, oferecendo várias correções de segurança e desempenho. Já o Microsoft IIS é um sistema de propriedade da Microsoft como qualquer outro de seus vários sistemas, como o Windows, em que, para ser permitida a sua utilização, é necessário o pagamento de uma licença, além de que nenhuma modificação no sistema pode ser feita sem a autorização da própria Microsoft, gerando uma dependência. Claro, com o benefício de um suporte mais personalizado, em alguns casos. 12.6 Instalando o Apache Esse material terá como foco o servidor Apache, que ocupa boa parte do mercado de servidores de página web, é estável e pode ser obtido de forma livre e gratuita, a partir do site http://httpd.apache.org/download.cgi, nas suas mais variadas versões para diferentes sistemas operacionais, com especial destaque para sistemas Linux (em alguma distribuição) ou Microsoft Windows. Um método alternativo e que facilita esse momento de instalação da infra-estrutura de software, é obter algum instalador que já prepara todo o ambiente necessário para o desenvolvimento. Os dois mais famosos são o EasyPHP (http://www.easyphp.org/) e o Xampp (http://www.apachefriends.org/en/xampp.html). A diferença entre cada um deles está no número de componentes que cada um já traz por padrão. De qualquer forma, ambos trazem como servidor de banco de dados o MySQL, outro software livre muito utilizado, o que permite a criação de ambientes dinâmicos. Eis um passo-a-passo de como instalar os componentes necessários a partir de um instalador do EasyPHP, baixado a partir do site indicado acima. O primeiro passo é escolher em qual idioma os softwares serão instalados. Segue-se uma tela inicial de apresentação do processo de instalação no idioma selecionado. Ao escolher o item “Eu aceito os termos do Contrato”, o botão Avançar torna-se habilitado e o processo de instalação pode seguir. O último passo antes da instalação em si é escolher o diretório em que os sistemas serão instalados. Pode-se optar por instalar no diretório padrão fornecido (como acima) ou então definir outro. Ao final da instalação, será criada uma entrada no menu de Programas da instalação do Microsoft Windows que representa o EasyPHP. Ao se iniciar o programa, será mostrada uma tela de inicialização do sistema, com semáforos representando o status do sistema. Outro indicativo é ele mostrar ao lado do relógio do sistema um ícone indicando a execução dos sistemas. Configurações adicionais podem ser feitas, escolhendo-se a opção correspondente no painel de controle, que trará o arquivo httpd.conf, que representa todas as configurações disponíveis para o servidor. Por padrão, todo o código-fonte em PHP deve ser colocado dentro do diretório www que foi criado no processo de instalação do sistema. 12.7 Visualização dos resultados Como já mencionado, todo o resultado gerado de uma página PHP se torna uma página HTML e por isso pode ser visualizada da mesma forma pela grande maioria dos navegadores disponíveis atualmente (cada um possui suas particularidades, mas de modo geral o resultado é o mesmo). Com isso se ganha uma grande liberdade de acessar os dados de qualquer lugar do mundo. 13 CONCEITOS INICIAIS 13.1 Onde colocar o código Deve ser definido um diretório (normalmente chamado public_html) onde todas as páginas de código PHP devem ser colocadas (esses arquivos possuem extensão .php ou .inc) e que deve ser “enxergado” pelo servidor web (neste caso, adotaremos o Apache). Essa configuração normalmente já está pronta ou então é de responsabilidade do administrador do sistema. Em seguida, deve ser criadoum diretório para que os códigos que forem gerados sejam colocados, sem gerar confusão, principalmente se muitos usuários estiverem colocando código nesta pasta. Para ver o resultado desse código, deve ser aberto um navegador e digitado: http://192.256.123.456/sua_pasta/arquivo.php http://localhost/sua_pasta/arquivo.php ou ainda, http://192.256.123.456:8080/sua_pasta/arquivo.php http://localhost:porta/sua_pasta/arquivo.php Nos dois exemplos, usa-se como protocolo o http, que é padrão para a internet; localhost significa que está se trabalhando localmente e que ainda não se pode visualizar esse conteúdo de fora da empresa; porta é um número que indica por onde o navegador vai tentar se conectar ao servidor e, se existir apenas um servidor web numa máquina, esse número pode ser omitido; depois vem o nome da estrutura de diretórios interna ao public_html e por fim, o arquivo em si. 13.2 Mesclando PHP com HTML Um dos principais recursos e facilidades do PHP é permitir que lógica e visualização de dados possam ser colocados num mesmo arquivo. Por um lado, isso permite uma imensa flexibilidade na construção de sistemas, mas por outro, prejudica, e muito, a manutenção futura de projetos grandes, pois dependendo do código, ele pode não ser tão legível. Tendo isso em mente , vêm sendo propostas maneiras de se separar um pouco mais o código de lógica da visualização das informações, principalmente com a utilização de classes, vinda da teoria de orientação a objetos e separação por camadas, sendo que cada camada é responsável por uma atividade, tendo independência, facilitando a reorganização e manutenção. 13.3 As tags especiais “<?” “?>” Numa página com a extensão php, tudo é visto como HTML pelo servidor web; sendo assim, é preciso, de alguma forma, que o que for código PHP seja identificado pelo servidor, e é neste contexto que entram as tags “<?” “?>”, pois tudo que estiver entre estas tags será identificado como código php e tratado como tal, inclusive para verificar se tudo que foi escrito está correto. 13.4 O comando echo “TESTE”; Uma das ações mais importantes em qualquer linguagem de programação é exibir uma saída para o usuário. Em PHP, uma das maneiras de se fazer isso é utilizando o comando: <? echo “TESTE”; ?> Este comando se imprime no trecho onde está colocada a cadeia de caracteres ou então a variável correspondente. Repare no ponto e vírgula ao final do comando. Isso é muito importante, pois a maioria dos comandos precisa dele para funcionar corretamente, caso contrário o servidor devolverá uma mensagem de erro na linha em que estiver faltando esse marcador. Resultado obtido O resultado de qualquer comando em PHP será visto como uma cadeia de caracteres que dará origem a um arquivo HTML, para que qualquer navegador consiga exibir os resultados do processamento. Um ponto que vale a pena mencionar é que o navegador, que está numa máquina cliente, não executa nenhum tipo de processamento, ficando tudo sob responsabilidade do servidor. 14 TRABALHANDO COM DADOS 14.1 Tipos de dados PHP é fracamente tipada, o que significa que não é preciso declarar os tipos das variáveis antes de utilizá-las. Dessa forma, pode-se colocar qualquer tipo de dados numa variável, a qualquer momento, independente do tipo que ela armazenava antes da operação corrente. Os tipos existentes são: Tipo Descrição boolean Representa verdadeiro ou falso. integer Números inteiros. float Números de ponto flutuante. string Cadeia de caracteres. array Vetores de dados. object Objetos. resource Resultados de operações em bancos de dados. NULL Inexistência de dados. 14.2 Declaração de variáveis Todas as variáveis em PHP devem ser começadas com o caractere $ (dólar), e depois terem uma quantidade qualquer de caracteres alfanuméricos, porém com o primeiro caractere sendo uma letra ou sublinhado. É uma boa prática de programação dar nomes descritivos para as variáveis. Em PHP, faz-se distinção entre maiúsculas e minúsculas. Exemplos de variáveis seriam: $i $teste123 $casa $curso $CuRsO $_8569 Neste caso, $curso e $CuRsO são variáveis diferentes. 14.3 Declaração de constantes Uma constante é um identificador que possui um valor associado e que não pode ter esse valor modificado através do tempo, pelo código PHP. As constantes possuem escopo global, ou seja, podem ser acessadas de qualquer ponto do código. Algumas declarações típicas são as seguintes: <? define(“NOME_CONSTANTE”, “VALOR”); define(“NOME_CONST_IDADE”, 18); ?> Deve-se utilizar a palavra reservada define, tendo dois argumentos, o primeiro é o nome pela qual a constante será referenciada e o segundo sendo o valor que ela armazenará. Como padrão, adota-se que o nome da variável esteja todo em maiúsculo. A sua utilização depois de definida, utilizando a sintaxe acima, é muito simples, apenas incluindo no comando a palavra que faz referência ao valor. Para o mecanismo que interpreta o código, é como se no lugar da palavra estivesse sendo colocado o valor que ele representa. 14.4 Trabalhando com Vetores Vetores são uma das estruturas de dados mais importantes em computação. Conceitualmente, é o agrupamento de diversas variáveis sobre o mesmo nome, facilitando o seu acesso. O conteúdo de um vetor é acessado através de índices, pois o computador enxerga um vetor como posições de memória alocadas continuamente. Existem várias formas de declarar um vetor: <? $sobrenomes[0] = ‘Silva’; $sobrenomes[1] = ‘Souza’; $sobrenomes[2] = ‘Oliveira’; $idades = array(10, 11, 12); ?> Nos casos acima, cada um dos vetores possui tamanho três. Os dois primeiros exemplos mostram vetores de strings e o terceiro, um vetor de inteiros. Uma vez declarado os vetores, seus valores podem ser acessados através de um índice inteiro que verifica o conteúdo existente naquele ponto. Então, para imprimir na tela o nome, sobrenome e idade da Maria, escreveríamos: <? echo $nomes[1] . “ “ . $sobrenomes[1] . “,“ . $idades[1]; ?> Vale destacar que os índices começam em zero, ou seja, o primeiro elemento de um vetor é definido como $vetor[0]. Diversas funções ajudam a trabalhar com vetores, mas algumas são especialmente úteis, como sizeof(), que retorna o tamanho de um vetor naquele momento. Por exemplo: <? $tamanho = sizeof($sobrenomes); echo $tamanho; ?> Esse exemplo imprimiria na tela o valor 3. Indo um pouco além, vetores podem ter dentro deles outros vetores, introduzindo assim o conceito de dimensão. Num vetor simples, ele possui apenas uma dimensão, chamado de vetor unidimensional, ou simplesmente, vetor. Se tivermos um vetor dentro do outro, temos duas dimensões, ou ainda, matriz. A declaração de matriz é a seguinte: <? $mat[0][0] = 10; $mat[0][1] = 10; $mat[0][2] = 10; $mat[1][0] = 20; $mat[1][1] = 20; $mat[1][2] = 20; $mat[3][0] = 30; $mat[3][1] = 30; $mat[3][2] = 30; ?> Nesse caso, teríamos uma matriz de três linhas e três colunas, sendo que na primeira linha teríamos o valor 10, na segunda linha, o valor 20 e por fim, na terceira linha, o valor 30. Vale destacar que no lugar de índices com valores absolutos, como os exemplos dados até agora, poderíamos ter variáveis indexando os vetores, o que garante uma flexibilidade muito maior. Por exemplo: <? $i = 0; $j = 1; echo $mat[$i][$j]; ?> Neste exemplo, seria impresso na tela o valor 10. 14.5 Comentários Existem dois tipos de comentários em PHP, aqueles de uma única linha e aqueles que envolvem uma ou mais linhas. Naqueles do primeiro caso, existem duas formas para indicar isso, usando o caractere sustenido “#” ou então usando duas barras “//”. Parao caso de múltiplas linhas, usam-se os caracteres “/*” e “*/”, para indicar abre e fecha comentários, respectivamente. Exemplo: <? # comentário de uma linha apenas // outro comentário de uma linha apenas /* comentário em várias linhas */ ?> 14.6 Comando de atribuição Atribuição é outra operação importante em qualquer linguagem de programação, pois é a forma mais simples de se manusear informações de usuários, consultas realizadas aos bancos de dados e imprimir dados que variam de uma situação para outra na tela. O comando de atribuição é bem parecido com o de outras linguagens (notadamente C, C++ e Java). <? $i = 1; $teste123 = 123; $casa = “Endereço”; $curso = “Computação”; $CuRsO = 42; $_8569 = 1.50; ?> Em todas as situações, o identificador da esquerda deve receber o valor da direita e entre eles deve vir o sinal de igual, “=”. Seguindo também a notação das linguagens já citadas acima, todos os operadores possuem uma abreviação para a situação da variável receber o seu valor atual com algum outro valor e operação. Por exemplo: <? $i += 1; $valor *= 5; $teste /= 2; ?> Que podem ser escritos de uma forma extendida como: <? $i = $i + 1; $valor = $valor * 5; $teste = $teste / 2; ?> Ou seja, a variável inicial receberá também o valor depois de realizada alguma operação. 14.7 Imprimindo conteúdo na tela Além do comando “echo” já mencionado anteriormente, o PHP possui uma série de outros comandos pré-definidos que servem para escrever uma cadeia de caracteres ou variáveis num documento HTML que poderá ser interpretado por um navegador. São eles: <? print “Cadeia de caracteres”; print(“Outra cadeia de caracteres”); ?> Nos dois casos acima, também poderia ter sido utilizado o comando echo, mas devido à compatibilidade com versões mais antigas, os comandos print continuam disponibilizados para uso. Existe uma variação de print, chamada printf, que além da cadeia de caracteres, possui como parâmetros alguns itens que modificam a formatação do texto exibido. Por exemplo: <? $idade = 21; printf(“A minha idade é %d”, $idade); $altura = 1.83; printf(“Altura: %6.2f”, $altura); ?> O símbolo de % indica que naquele ponto deverá ser colocado o valor da variável que será declarada depois da String (podem vir quantas variáveis forem necessárias), a letra indica de que forma a variável deve ser tratada (se como String, ou caractere, ou inteiro, ou ponto flutuante, etc.) e se tiver um valor numérico entre eles, qual o espaçamento e casas decimais, respectivamente. Essa notação é herança da linguagem C, onde todos os comandos de saída, ou seja, que geram alguma saída na tela ou em arquivo, possuem esse formato. Ele facilita quando não se tem muito tempo para gastar com formatações mais rebuscadas próprias do HTML, ou então quando a saída desejada é simples. Esse tipo de construção não é tão intuitiva para quem a está vendo pela primeira vez. 15 OPERADORES 15.1 Operadores matemáticos Todos os operadores da aritmética básica estão presentes em PHP, com a inclusão de alguns outros que fornecem facilidades interessantes para os programadores. São eles: Operador Descrição + Adição - Subtração * Multiplicação / Divisão % Resto Vale mencionar o operador Resto, que pega o resto de uma divisão entre dois números inteiros. Alguns exemplos simples dessas operações, onde, no trecho comentado, vem o resultado da operação correspondente: <? $a = 10 + 20; // $a == 30 $b = $a – 5; // $b == 25 $c = $b * 4; // $c == 100 $d = $c / 2; // $d == 50 $e = $d % 3; // $e == 2 ?> 15.2 Operadores relacionais Os operadores relacionais, como o próprio nome sugere, indicam uma relação entre dois identificadores, como por exemplo: <? $idade > 21 // Depende do valor de $idade 13 == 12 // Falso 12 < 20 // Verdadeiro ?> Nessas situações, temos como resultado, verdadeiro ou falso. No primeiro caso, a resposta depende do valor armazenado na variável $idade; no segundo caso, o resultado é falso e por fim, na última opção, temos como resposta, verdadeiro. Os operadores relacionais existentes são: Operador Descrição > Estritamente maior >= Maior ou igual < Estritamente menor <= Menor ou igual == Igual != Diferente Merece destaque o operador igual, que pode ser facilmente confundido com o operador de atribuição, causando um erro comum para programadores que estão se iniciando na linguagem. Estes tipos de operadores são muito úteis em comandos de decisão, como será mostrado adiante. 15.3 Operadores lógicos Os operadores lógicos estabelecem alguma relação entre condições, de tal forma que o resultado final dependa de todas elas. Os fundamentos desses operadores estão na teoria denominada álgebra booleana, em que todas as operações possíveis e desejáveis podem ser escritas, utilizando-se apenas três operadores. Em PHP, teríamos: Operador Descrição && “E” lógico || “OU” lógico ! “NÃO” lógico Segue da teoria booleana, que para uma proposição ser verdadeira, utilizando-se o “E lógico”, todas as condições precisam ser verdadeiras; utilizando-se o “OU lógico”, ao menos uma precisa ser verdadeira para que toda a preposição seja verdadeira e o operador “NÃO lógico”, inverte o valor da variável (se era Verdade, passa a ser Falso e vice-versa). Resumindo, teríamos: Condição 1 Operador Condição 2 Resultado Verdade && Verdade Verdade Verdade && Falso Falso Falso && Verdade Falso Falso && Falso Falso Verdade || Verdade Verdade Verdade || Falso Verdade Falso || Verdade Verdade Falso || Falso Falso E ainda, Condição Operador Resultado Verdade ! Falso Falso ! Verdade Na prática, em PHP esses operadores serão utilizados para juntar mais de uma condição em comandos condicionais ou de repetição, para indicar qual caminho tomar ou quando uma repetição deve parar. Por exemplo: SE (($idade > 21) && ($cargo == “ALUNO”)) ENTÃO comando_1 SENÃO comando_2 No pseudocódigo acima, é mostrado um simples comando de decisão com duas cláusulas, onde se as duas condições forem verdadeiras, então o comando_1 é executado, caso contrário (se ao menos uma for falsa) o comando_2 é o que será executado. Para uma leitura mais clara do que se pretende fazer, o uso de parênteses é muito aconselhável. 15.4 Operador de concatenação de strings Para se realizar a operação de juntar duas cadeias de caracteres (strings), numa outra variável, ou então para exibir o resultado na tela, existe um operador especial para esta função que é o ponto “.”, sendo que ele também pode ser utilizado em atalhos, com o operador atribuição “.=”. Seguem exemplos desse operador: <? $nome = “Fulano”; $sobrenome = “De Tal”; $sobrenome .= “ Silva”; $nome_completo = $nome . “ “ . $sobrenome; echo $nome_completo . “ : “ . “Qual a sua idade?”; ?> Nas duas primeiras linhas, é feita uma atribuição simples; na terceira, na variável sobrenome coloca-se, além do valor já existente lá dentro, mais um pedaço de string usando um operador de atalho; na quarta linha, uma terceira variável recebe o valor das duas outras, separadas por um espaço em branco (note a presença dos pontos) e por fim, o resultado é exibido na tela. 15.5 Notação Pré-fixa e Pós-fixa Dependendo da ordem dos operadores, o resultado atribuído numa variável pode se alterar. Alguns operadores podem vir antes ou depois do operador, por isso deve-se tomar cuidado entre os resultados obtidos e esperados. Operador Significado ++ Incremento de 1 -- Decremento de 1 Alguns exemplos: <? $a = 10; $b = ++$a; // $b == 11, $a == 11 $c = $a++;// $c == 11, $a == 12 echo $b; // Imprime 11 $d = --$b; // $d == 10, $b == 10 $e = $b--; // $e == 10, $b == 9 ?> O valor da variável $a começa com 10. Na segunda linha, devido à ordem do operador “++”, o valor de $a é incrementado em 1 e só depois atribuído a $b, sendo que ao final desta linha, o valor de ambos é igual, 11. Na terceira linha, como o operador “++” vem depois da variável, primeiro o valor atual é retornado para $c e só depois o valor de $a é incrementado em 1, deixando os valores diferentes. No segundo trecho, a partir do comando echo, acontecem situações bem parecidas, com a diferença de se estar utilizando o operador de decremento. A variável $b começa com o valor 11. Na linha seguinte, o valor de $b é decrementado antes de ser atribuído em $d, ficando ao final ambos com 10. Na última linha, por fim, o valor é primeiro atribuído em $e para só depois ter o valor diminuído em 1, na variável $b. 16 CONDICIONAIS 16.1 Bloco de Comandos Em muitos casos, deseja-se escrever mais de um comando num determinado trecho de código, mas agrupado de tal forma que se um deles for executado, todos os demais também serão. Para tanto, é preciso explicitamente falar onde começa e onde termina esse bloco. Isso é feito através do abre e fecha chaves: “{“ e “}”. Seguem exemplos: <? { comando_1; comando_2; comando_3; } ?> No pseudocódigo acima, todos os três comandos serão executados se o bloco inteiro for escolhido para ser executado; então, pode-se concluir que um bloco de comandos é visto como uma unidade atômica, ou seja, como se fosse um único comando. 16.2 O condicional if A função do operador if é executar uma determinada função ou bloco de funções se uma determinada condição for verdadeira ou, caso contrário, não realizar nada. Na condição, normalmente vem uma variável que é comparada com algum valor para se dizer se o bloco será executado ou não. A estrutura básica do comando é: if (condição == verdade) comando_if; Usando exemplos: <? $i = 10; if($i == 10) { echo “O valor de i é 10”; } // if $p = 500; if($p > 700) { echo “O valor de p é maior que 700”; $p = 701; } // if $str = “nome”; if($str != “caracteres”) echo “O conteúdo de str é diferente de caracteres”; ?> No primeiro exemplo, o valor de $i é 10 e como o outro argumento também é 10, a condição resulta em verdade, sendo executado o comando de impressão na tela. No segundo, a condição resulta em falso, não sendo impresso nada na tela e por fim, como o conteúdo de $str é diferente da cadeia de comparação, o comando imprime alguma coisa na tela. 16.3 O condicional if/else Bem parecido com o comando if, existe o comando if/else, que oferece uma opção, caso a condição seja falsa, de executar um determinado comando. Resumindo, caso a condição seja verdade, o primeiro comando é executado, caso contrário, o comando ou bloco que vier seguido do else será o escolhido para ser executado. A estrutura seria: if(condição == verdade) comando_if; else comando_else; Usando exemplos: <? $i = 22; if($i == 30) { echo “O valor de i é 30”; } else { $i = 31; echo “O valor de i não é 30”; } // if $p = 500; if($p < 700) { echo “O valor de p é menor que 700”; } else { echo “O valor de p é maior ou igual a 700”; } // if ?> No primeiro exemplo, como a condição é falsa, o bloco else será executado atribuindo-se um novo valor à variável e, em seguida, imprimindo uma mensagem na tela. No segundo exemplo, a condição é verdadeira, imprimindo-se o comando logo a seguir dos parênteses, não se executando o comando else, por exemplo. 16.4 O condicional switch A estrutura de switch é um caso especial de vários if/else dispostos para ficar mais legível e prática a programação. O seu objetivo é dar uma variável de escolha, algum bloco de comando é escolhido para ser executado. Essa construção pode ser muito útil quando se está trabalhando com diversas opções selecionáveis pelo usuário, pensando-se inclusive na modularização do sistema, o que pode facilitar a manutenção futura do mesmo. O parâmetro passado no cabeçalho do switch é normalmente uma variável que irá controlar qual dos blocos deverá ser executado. Ele pode ser um valor inteiro, um caractere ou uma String. Se ele for igual ao valor existente após a palavra case, então o bloco de comando do trecho é executado, caso contrário uma outra opção é avaliada. A palavra default é opcional, e só é executada caso nenhuma opção seja igual à variável de condição, executando-se os comandos associados a ela. A palavra reservada break é importante nessa estrutura, para que depois de executados os comandos, a execução saia do switch. A omissão desta palavra implica que todos os comandos abaixo do case executado também sejam executados. Esse é um dos únicos pontos em que a palavra break pode ser utilizada sem quebrar as boas práticas de programação estruturada. Vale destacar que não é necessário colocar as chaves para indicar o início e fim de bloco, ficando isso implícito na construção. Além do mais, pode vir qualquer número de comandos após os dois pontos. Duas opções com os mesmos comandos podem ser facilmente declaradas desde que sejam colocadas duas palavras case com as respectivas opções, seguidas dos dois pontos. Segue um exemplo: <? $op = ‘c’; switch ($op) { case ‘a’: $teste = 10; echo $teste; break; case ‘b’: $teste = 20; echo $teste; break; case ‘c’: case ‘d’: $teste = 55; echo $teste; break; default: echo “Nenhuma opção é igual à opção”; } // switch ?> A variável $op contém o valor que será avaliado. No primeiro e segundo case é feita a comparação, mas como o resultado é falso, nenhum comando é executado. No terceiro, a comparação retorna como verdade e os comandos associados são executados, sendo que ao final, por causa da palavra break, o comando em default não é executado, fazendo com que o fluxo de execução saia do comando switch. 17 REPETIÇÕES 17.1 Repetição usando while Comandos de repetição servem para executar um determinado grupo de operações por um número de vezes específico e depois sair deste bloco. Todos os comandos de repetição possuem alguma condição que fazem com que eles saiam da repetição, caso contrário, ficariam executando de forma infinita. No caso do comando while, a condição é avaliada no começo da repetição; sendo assim, se logo de início a opção for considerada falsa, nenhuma repetição será executada, passando para o próximo comando depois do while. Um exemplo prático seria: <? $contador = 0; while($contador < 10) { echo “O valor do contador é: ” . $contador; ++$contador; } // fim do while ?> Neste exemplo, uma variável de controle é iniciada com zero. Como o valor é menor que 10, o argumento é avaliado como verdade e os comandos dentro do bloco (delimitados pelas chaves) são executados, primeiro a impressão e depois o incremento do contador. Esse incremento é muito importante neste exemplo, pois é com ele que se tem a garantia que em algum momento a variável $contador será maior ou igual a 10, tornando a condição falsa e saindo da repetição. 17.2 Repetição usando for Outro tipo comum de repetição é o for, que ao contrário do while, já se sabe a priori quantas vezes os comandos associados a ele serão executados, diminuindo as chances de um laço infinito. Por exemplo: <? for($varia = 0; $varia < 10; ++$varia) { echo “O valor da variável é: “ . $varia; } // for ?> A variável $varia é o chamado contador do laço, pois é o item a ser avaliado para saber
Compartilhar