Este documento fornece uma introdução ao HTML através de 15 lições. Ensina os conceitos básicos de HTML como tags, atributos e como criar um primeiro website simples. Também discute como adicionar imagens, tabelas, links e estilos com CSS. O objetivo é fornecer os fundamentos necessários para que o leitor possa construir e publicar seu próprio site na web.
Baixe no formato PDF, TXT ou leia on-line no Scribd
0 notas0% acharam este documento útil (0 voto)
689 visualizações
Introdução Ao HTML, CSS e PHP PDF
Este documento fornece uma introdução ao HTML através de 15 lições. Ensina os conceitos básicos de HTML como tags, atributos e como criar um primeiro website simples. Também discute como adicionar imagens, tabelas, links e estilos com CSS. O objetivo é fornecer os fundamentos necessários para que o leitor possa construir e publicar seu próprio site na web.
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 193
Sumrio
Introduo ao HTML .................................................................................................................................... 12
Lio 1: Vamos comear .............................................................................................................................. 12 O que necessrio? ................................................................................................................................ 12 Preciso estar online? ............................................................................................................................... 13 Lio 2a: O que HTML? ............................................................................................................................. 13 Para que devo usar o HTML? .................................................................................................................. 13 OK, mas o que significa H-T-M-L? ........................................................................................................... 14 Lio 3a: O que so tags HTML? .................................................................................................................. 14 Voc pode mostrar alguns exemplos? .................................................................................................... 14 Este um ttulo ......................................................................................................................................... 15 Este um subttulo ............................................................................................................................... 15 As tags devem ser escritas com letras maisculas ou minsculas? ........................................................ 15 Onde devo colocar todas estas tags? ...................................................................................................... 15 Lio 4a: Criando seu primeiro website ...................................................................................................... 16 Na lio 1 vimos o que necessrio para construir um website: um navegador e o Notepad (ou um editor de texto similar). Uma vez que voc esta lendo esta pgina, provavelmente est com seu navegador aberto. Agora abra outra janela do seu navegador de modo que voc tenha duas janelas na tela, uma para ler este tutorial e outra para visualizar o website que voc vai construir. ................ 16 O que posso fazer? .................................................................................................................................. 16 At aqui tudo bem, mas como colocar contedo no meu website? ...................................................... 17 Lio 5a: O que voc j aprendeu? ............................................................................................................. 18 O que significa isto? ................................................................................................................................ 19 O que fazer agora? .................................................................................................................................. 19 Lio 6a: Mais tags HTML ............................................................................................................................ 20 E agora? ................................................................................................................................................... 20 Posso usar vrias tags simultaneamente? .............................................................................................. 21 Mais tags! ................................................................................................................................................ 21 Uau! Isto tudo? ..................................................................................................................................... 22 Lio 7a: Atributos ...................................................................................................................................... 22 Como isto? ............................................................................................................................................ 22 Como a pgina ficou vermelha? .............................................................................................................. 23 Quais tags podem usar atributos? .......................................................................................................... 23 Ento, quais so as partes que constituem uma tag? ............................................................................. 23 Lio 8a: Links .............................................................................................................................................. 24 Como so os links entre minhas prprias pginas? ................................................................................ 24 Como so os links dentro de uma mesma pgina? ................................................................................. 24 Exemplo 5: ........................................................................................................................................... 25 Cabealho 1 ................................................................................................................................................. 25 Cabealho 2 ................................................................................................................................................. 25 Posso criar link para mais alguma coisa? ............................................................................................ 25 Existem outros atributos que eu deva conhecer? .................................................................................. 26 Lio 9a: Imagens ........................................................................................................................................ 26 Onde consigo minhas imagens? .............................................................................................................. 27 Isto tudo o que eu preciso saber sobre imagens? ............................................................................... 27 Existem outros atributos que eu deva conhecer? .................................................................................. 28 Lio 10a: Tabelas ....................................................................................................................................... 29 Qual a diferena entre <tr> e <td>? ........................................................................................................ 30 Existem atributos? ................................................................................................................................... 31 Mais atributos? ....................................................................................................................................... 32 O que posso inserir em tabelas? ............................................................................................................. 32 Lio 11a: Mais tabelas ............................................................................................................................... 32 O que mais existe? .................................................................................................................................. 32 Que tal rowspan? .................................................................................................................................... 34 Lio 12a: Layout (CSS) ................................................................................................................................ 34 Est parecendo que h uma grande quantidade de trabalho a executar ............................................... 35 O que mais posso fazer com CSS? ........................................................................................................... 36 CSS no nada mais do que cores e tipos de fontes? ............................................................................ 36 Legal sim. Mas, fcil? ............................................................................................................................... 37 Lio 13a: Uploading pginas ...................................................................................................................... 37 O mundo est preparado para ver suas pginas? ................................................................................... 37 Isto tudo que eu preciso? ..................................................................................................................... 38 Como eu fao o upload das pginas? ...................................................................................................... 38 Lio 14a: Web standards e validao ........................................................................................................ 39 Legal! Posso anunciar? ............................................................................................................................ 39 Validao? Porqu deveria eu fazer isto? ............................................................................................... 40 Lio 15a: Dicas finais .................................................................................................................................. 40 Como eu aprendo mais? ......................................................................................................................... 41 Introduo ao CSS ....................................................................................................................................... 41 Quais softwares eu precisarei? ............................................................................................................... 42 Lio 1b: O que CSS? ................................................................................................................................ 42 Qual a diferena entre CSS e HTML? .................................................................................................... 42 Quais so os benefcios do uso de CSS? .................................................................................................. 43 Lio 2b: Como funciona CSS? .................................................................................................................... 43 A sintaxe bsica das CSS .......................................................................................................................... 43 Aplicando CSS a um documento HTML ................................................................................................... 44 Mtodo 1: In-line (o atributo style) ..................................................................................................... 44 Mtodo 2: Interno (a tag style) ........................................................................................................... 44 Mtodo 3: Externo (link para uma folha de estilos)............................................................................ 44 Faa voc mesmo .................................................................................................................................... 46 default.htm .......................................................................................................................................... 46 style.css ............................................................................................................................................... 46 Lio 3b: Cores e fundos ............................................................................................................................. 46 Cor do primeiro plano: a propriedade 'color' ......................................................................................... 46 A propriedade 'background-color' .......................................................................................................... 47 Images de fundo [background-image] .................................................................................................... 47 Imagem de fundo repetida [background-repeat] ................................................................................... 48 Image de fundo fixa [background-attachment] ...................................................................................... 48 Posio da imagem de fundo [background-position] ............................................................................. 49 Compilando [background] ....................................................................................................................... 50 Lio 4b: Fontes........................................................................................................................................... 51 Famlia de fontes [font-family] ................................................................................................................ 51 Estilo da fonte [font-style] ...................................................................................................................... 52 Fonte variante [font-variant] .................................................................................................................. 53 Peso da fonte [font-weight] .................................................................................................................... 53 Tamanho da fonte [font-size] .................................................................................................................. 53 Compilando [font] ................................................................................................................................... 54 Lio 5b: Textos ........................................................................................................................................... 55 Indentao de texto [text-indent] ........................................................................................................... 55 Alinhamento de textos [text-align] ......................................................................................................... 55 Decorao de textos [text-decoration] ................................................................................................... 56 Espao entre letras [letter-spacing] ........................................................................................................ 56 Transformao de textos [text-transform] ............................................................................................. 57 Lio 6b: Links ............................................................................................................................................. 57 O que pseudo-classe? ........................................................................................................................... 58 Pseudo-classe: link .............................................................................................................................. 58 Pseudo-classe: visited ......................................................................................................................... 58 Pseudo-classe: active .......................................................................................................................... 59 Pseudo-classe: hover ........................................................................................................................... 59 Exemplo 1: Efeito quando o ponteiro est sobre o link .......................................................................... 59 Exemplo 1a: Espaamento entre as letras .......................................................................................... 59 Exemplo 1b: UPPERCASE e lowercase ................................................................................................. 59 Exemplo 2: Removendo sublinhado dos links ......................................................................................... 60 Lio 7b: Identificando e agrupando elementos (classes e id) ................................................................... 62 Agrupando elementos com uso de classe ............................................................................................... 62 Identificando um elemento com uso de id ............................................................................................. 63 Lio 8b: Agrupando elementos (span e div) .............................................................................................. 64 Agrupando com <span> .......................................................................................................................... 64 Agrupando com <div> ............................................................................................................................. 65 Lio 9b: O box model ................................................................................................................................. 65 O box model em CSS ............................................................................................................................... 66 Definindo margin de um elemento ......................................................................................................... 67 Definindo padding de um elemento ....................................................................................................... 68 Lio 11b: Bordas ........................................................................................................................................ 69 A espessura das bordas [border-width] .................................................................................................. 69 As cores das bordas [border-color] ......................................................................................................... 69 Tipos de bordas [border-style] ................................................................................................................ 69 Exemplos de definio de bordas ........................................................................................................... 70 Compilando [border] ............................................................................................................................... 71 Lio 12b: Altura e largura .......................................................................................................................... 71 Atribuindo largura [width] ...................................................................................................................... 71 Atribuindo altura [height] ....................................................................................................................... 72 Lio 13b: Flutuando elementos (floats)..................................................................................................... 72 Como isto feito? ................................................................................................................................... 73 Outro exemplo: colunas .......................................................................................................................... 73 A propriedade clear ................................................................................................................................. 74 Lio 14b: Posicionando elementos ............................................................................................................ 75 O Princpio de Posicionamento CSS ........................................................................................................ 75 Posicionamento absoluto ........................................................................................................................ 76 Posicionamento relativo ......................................................................................................................... 77 Lio 15b: Usando z-index (Layers) ............................................................................................................. 77 Lio 16b: Web-standards e validao ........................................................................................................ 79 Validador CSS .......................................................................................................................................... 79 Introduo ao PHP ...................................................................................................................................... 79 O que necessrio? ................................................................................................................................ 80 Lio 1: O que PHP ................................................................................................................................... 80 O que PHP? ........................................................................................................................................... 80 Como funciona o PHP? ............................................................................................................................ 80 Lio 2c: Servidores ..................................................................................................................................... 82 Opo 1: Servidor remoto de hospedagem ............................................................................................ 82 Opo 2: Instalao de PHP no seu computador .................................................................................... 82 Opo 3: XAMPP ..................................................................................................................................... 82 Lio 2c-2: Instalao de XAMPP ................................................................................................................ 82 Download ................................................................................................................................................ 82 Instalao ................................................................................................................................................ 83 Teste ........................................................................................................................................................ 85 Problemas mais comuns ......................................................................................................................... 85 O servidor Apache no inicia ............................................................................................................... 85 Lio 3c: Sua primeira pgina PHP .............................................................................................................. 86 Scripts PHP .............................................................................................................................................. 86 Examplo: Hello World! ............................................................................................................................ 86 Exemplo: Agora! ...................................................................................................................................... 88 Lio 4c: Trabalhando com datas e horas ................................................................................................... 91 Funes para data e hora ........................................................................................................................ 91 A hora : 1358202025 ............................................................................................................................. 91 Mas afinal qual a utilidade prtica? ........................................................................................................ 93 Loop "while" ............................................................................................................................................ 94 Loop "for" ................................................................................................................................................ 95 Loops dentro de loops ............................................................................................................................. 96 Lio 6c: Condicionais ................................................................................................................................. 96 If... ........................................................................................................................................................... 97 if ... else ... ............................................................................................................................................... 97 if ... elseIf ... else... ................................................................................................................................... 99 switch ... case .......................................................................................................................................... 99 Lio 7c: Comentando seus scripts ........................................................................................................... 101 Por que importante comentar os scripts?.......................................................................................... 101 Como inserir comentrios? ................................................................................................................... 101 Lio 8c: Arrays ......................................................................................................................................... 102 O que array? ....................................................................................................................................... 102 Como usar um array? ............................................................................................................................ 102 Loop por um array ................................................................................................................................. 104 Como encontrar o tamanho de um array ............................................................................................. 104 Outro exemplo ...................................................................................................................................... 104 Lio 9c: Funes ...................................................................................................................................... 105 O que funo? .................................................................................................................................... 105 Exemplo 1: Funo com vrios parmetros .......................................................................................... 106 Exemplo 2: Data e hora em ingls ......................................................................................................... 106 Lio 10c: Passando variveis no URL ....................................................................................................... 107 Como isto funciona?.............................................................................................................................. 107 Como recuperar o valor de uma varivel com PHP? ............................................................................. 107 Vrias variveis no mesmo URL ............................................................................................................ 108 Lio 11: Passando variveis com uso de formulrios .............................................................................. 109 <form>: Para o elemento form destinado a marcar um formulrio esto previstos, entre outros, dois atributos de suma importncia, so eles: action e method. ......................................................... 109 Formulrio em uma pgina HTML ......................................................................................................... 109 Dados do usurio e condicionais ........................................................................................................... 110 Exemplo: Formulrio de contato .......................................................................................................... 113 Lio 12c: Sesso ....................................................................................................................................... 114 Session ................................................................................................................................................... 114 Exemplo de uso de sessions .................................................................................................................. 114 Sistema de login com uso de sesso ..................................................................................................... 115 Lio 13c: Cookies ..................................................................................................................................... 116 O que cookie? ..................................................................................................................................... 117 Como a informao armazenada no cookie? ..................................................................................... 117 Como se recupera o valor de um cookie? ............................................................................................. 117 Quem pode ler um cookie? ................................................................................................................... 118 Exemplo de cookie ................................................................................................................................ 118 Lio 14c: Sistema de arquivos ................................................................................................................. 119 Diretrios ............................................................................................................................................... 120 Lio 15c: Ler arquivos de texto ................................................................................................................ 121 Abrir um arquivo de texto ..................................................................................................................... 121 Exemplo 1: Ler uma linha de um arquivo de texto ............................................................................... 121 Exemplo 2: Ler todas as linhas de um arquivo de texto ....................................................................... 122 Exemplo 3: Diretrio de links ................................................................................................................ 122 Lio 16c: Escrever em arquivos de texto ................................................................................................. 123 Abrir um arquivo de texto para escrever .............................................................................................. 124 Exemplo 1: Escrever uma linha no arquivo de texto ............................................................................. 124 Exemplo 2: Escrever um bloco de texto em um arquivo de texto ........................................................ 125 Conexo com o Banco de Dados ........................................................................................................... 127 Lio 18c: Criando Banco de Dados e suas Tabelas .................................................................................. 128 Criar Banco de Dados e Tabelas com PHP ............................................................................................. 128 Criar Banco de Dados e Tabelas com phpMyAdmin ............................................................................. 129 Lio 19c: Inserindo dados em um Banco de Dados ................................................................................. 130 Inserir dados com SQL ........................................................................................................................... 131 Exemplo: Inserir dados de uma pessoa na Tabela ................................................................................ 131 Inserir uma entrada de usurio no Banco de Dados ............................................................................. 132 Erros mais comuns ................................................................................................................................ 132 Tipo de dado incorreto ...................................................................................................................... 133 Comandos SQL com aspas e barras ................................................................................................... 133 Lio 20c: Extraindo dados de um Banco de Dados .................................................................................. 134 Consultas SQL ........................................................................................................................................ 134 Exemplo 1: Extrair dados de uma tabela .............................................................................................. 134 Exemplo 2: Ordem de sada alfabtica, cronolgica ou nmerica. ....................................................... 135 Extrair dados segundo uma condio ................................................................................................... 136 Exemplo 3: Catlogo de endereos ....................................................................................................... 137 Cdigo para o arquivo list.php .......................................................................................................... 137 Cdigo para o arquivo person.php .................................................................................................... 137 Lio 21c: Apagando dados de um Banco de Dados ................................................................................. 138 Apagando dados com SQL ..................................................................................................................... 139 Exemplo: Apagar um dado .................................................................................................................... 139 Lio 22c: Atualizando dados em um Banco de Dados ............................................................................. 139 Atualizando dados com SQL .................................................................................................................. 140 Exemplo: Atualizando campos da tabela "people" ............................................................................... 140 Alguns termos vistos ................................................................................................................................. 142 $_COOKIES (Variveis COOKIES) ........................................................................................................... 142 $_GET (Varivel GET) ............................................................................................................................. 142 $_POST (Varivel POST) ........................................................................................................................ 143 Addslashes ............................................................................................................................................. 143 Array ...................................................................................................................................................... 145 closedir .................................................................................................................................................. 146 Date ....................................................................................................................................................... 147 timestamp ............................................................................................................................................. 149 echo ....................................................................................................................................................... 151 Else ........................................................................................................................................................ 152 elseif/else If ........................................................................................................................................... 153 Feof ........................................................................................................................................................ 155 Fgets ...................................................................................................................................................... 156 Fileatime ................................................................................................................................................ 157 Filemtime .............................................................................................................................................. 157 Filesize ................................................................................................................................................... 158 Fopen ..................................................................................................................................................... 159 mode .................................................................................................................................................. 159 use_include_path .............................................................................................................................. 160 context ............................................................................................................................................... 160 For ......................................................................................................................................................... 161 Foreach .................................................................................................................................................. 163 Unpacking nested arrays with list() ................................................................................................... 165 fwrite ..................................................................................................................................................... 167 Fread ..................................................................................................................................................... 168 If ............................................................................................................................................................ 170 Mail ........................................................................................................................................................ 170 Exemplo #1 Enviando email. ............................................................................................................. 172 Exemplo #3 Enviando email com um parmetro adicional da linha de comando. ........................... 172 Mysql_close ........................................................................................................................................... 174 Exemplo #1 Exemplo mysql_close() .................................................................................................. 174 Mysql_connect ...................................................................................................................................... 174 Exemplo #1 Exemplo mysql_connect() ............................................................................................. 175 Exemplo #2 Exemplo mysql_connect() usando a a sintaxe servidor:porta ....................................... 175 Exemplo #3 Exemplo mysql_connect() usando a sintaxe ":/caminho/para/socket" ........................ 176 Mysql_fetch_array ................................................................................................................................ 176 Exemplo #1 Consulta com nomes de campos duplicados usando alias............................................ 177 Exemplo #2 mysql_fetch_array() com MYSQL_NUM ....................................................................... 177 Exemplo #3 mysql_fetch_array() com MYSQL_ASSOC ..................................................................... 177 Exemplo #4 mysql_fetch_array() com MYSQL_BOTH ....................................................................... 177 Mysql_query .......................................................................................................................................... 178 Exemplo #1 Consulta Invlida ........................................................................................................... 178 Mysql_select_db ................................................................................................................................... 179 Example #1 mysql_select_db() example ........................................................................................... 180 Opendir ................................................................................................................................................. 180 Exemplo #1 exemplo de opendir() .................................................................................................... 181 Readdir .................................................................................................................................................. 181 Exemplo #1 Listando todos os arquivos de um diretrio .................................................................. 182 Set Cookies ............................................................................................................................................ 182 Exemplo #1 Exemplo de setcookie() para enviar cookies ................................................................. 183 Exemplo #2 Exemplo de setcookie() para deletar cookies ............................................................... 184 Exemplo #3 setcookie() e arrays ....................................................................................................... 184 Problemas comuns: ........................................................................................................................... 185 Swithc .................................................................................................................................................... 185 Exemplo #1 switch structure ............................................................................................................. 186 Exemplo #2 switch structure allows usage of strings ....................................................................... 186 Time ....................................................................................................................................................... 188 Exemplo #1 time() example .............................................................................................................. 188 United Nations ...................................................................................................................................... 188 User-definition fuction .......................................................................................................................... 189 Exemplo #1 Pseudo-cdigo de demonstrao de uma funo ......................................................... 189 Exemplo #2 Funes definidas condicionalmente ............................................................................ 189 Exemplo #3 Funes dentro de funes ........................................................................................... 190 Exemplo #4 Funes Recursivas ........................................................................................................ 190 While ..................................................................................................................................................... 191 Links de Referncia ................................................................................................................................... 191 1. $_COOKIES (Variveis COOKIES): http://php.net/manual/pt_BR/reserved.variables.cookies.php . 192 2. $_GET (Varivel GET): .................................................................................................................... 192 3. $_POST (Varivel POST): ............................................................................................................... 192 4. Addslashes: .................................................................................................................................... 192 5. Array: ............................................................................................................................................. 192 6. Closedir: http://php.net/manual/pt_BR/function.closedir.php ....................................................... 192 7. Date: .............................................................................................................................................. 192 8. Echo: http://php.net/manual/pt_BR/function.echo.php ................................................................. 192 9. Else: ............................................................................................................................................... 192 10. Elseif/Else If: .............................................................................................................................. 192 11. Explode: ..................................................................................................................................... 192 12. Feof: http://php.net/manual/pt_BR/function.feof.php ............................................................... 192 13. Fgets: http://php.net/manual/pt_BR/function.fgets.php ............................................................ 192 14. Fgets: http://php.net/manual/pt_BR/function.fgets.php ............................................................ 192 15. Fileatime: http://php.net/manual/pt_BR/function.fileatime.php ............................................... 192 16. Filemtime: http://php.net/manual/pt_BR/function.filemtime.php ............................................. 192 17. Filesize: http://php.net/manual/pt_BR/function.filesize.php ...................................................... 192 18. Fopen: http://php.net/manual/pt_BR/function.fopen.php ......................................................... 192 19. Fopen: http://php.net/manual/pt_BR/function.fopen.php ......................................................... 192 20. For: ............................................................................................................................................ 192 21. Foreach: ..................................................................................................................................... 192 22. Fread: http://php.net/manual/pt_BR/function.fread.php ........................................................... 192 23. Fwrite: http://php.net/manual/pt_BR/function.fwrite.php ......................................................... 192 24. If: ............................................................................................................................................... 192 25. Instalao e Configurao (PHP): http://php.net/manual/pt_BR/install.php .............................. 192 26. Instalando Servidor PHP no Mac OSX: http://php.net/manual/pt_BR/install.macosx.php ......... 192 27. Instalando Servidor PHP no Unix: http://php.net/manual/pt_BR/install.unix.php ...................... 192 28. Instalando Servidor PHP no Windows: http://php.net/manual/pt_BR/install.windows.php ...... 192 29. Mail:........................................................................................................................................... 192 30. Manipulao de Sesso: ............................................................................................................ 192 31. Manual do PHP: http://php.net/manual/pt_BR/index.php .......................................................... 192 32. MYSQL - Criar Auto Increment (Ingls): http://dev.mysql.com/doc/refman/5.0/en/example-auto- increment.html ......................................................................................................................................... 192 33. MYSQL - Criar Blob e Tipos de Textos (Ingls): http://dev.mysql.com/doc/refman/5.5/en/blob.html ............................................................................. 192 34. MYSQL - Criar Char e Varchar (Ingls): http://dev.mysql.com/doc/refman/5.5/en/char.html ... 192 35. MYSQL - Criar Data-base (Ingls): http://dev.mysql.com/doc/refman/5.5/en/create- database.html ........................................................................................................................................... 192 36. MYSQL - Criar Primary Key e Unix (Ingls): http://dev.mysql.com/doc/refman/5.5/en/constraint- primary-key.html ....................................................................................................................................... 192 37. MYSQL - Criar Tabela (Ingls): http://dev.mysql.com/doc/refman/5.5/en/create-table.html .... 192 38. MYSQL - Criar Time (Ingls): http://dev.mysql.com/doc/refman/5.5/en/time.html ................... 192 39. MYSQL - Criar Tipos Numricos (Ingls): http://dev.mysql.com/doc/refman/5.5/en/numeric- types.html ................................................................................................................................................. 192 40. MYSQL - Date, Datetime e Timestamp: http://dev.mysql.com/doc/refman/5.5/en/datetime.html 192 41. Mysql_close: http://php.net/manual/pt_BR/function.mysql-close.php ...................................... 192 42. Mysql_connect: http://php.net/manual/pt_BR/function.mysql-connect.php ............................ 192 43. Mysql_fetch_array: http://php.net/manual/pt_BR/function.mysql-fetch-array.php .................. 192 44. Mysql_query: http://php.net/manual/pt_BR/function.mysql-query.php ................................... 193 45. Mysql_select_db: http://php.net/manual/en/function.mysql-select-db.php ............................. 193 46. Opendir: http://php.net/manual/pt_BR/function.opendir.php ................................................... 193 47. Readir: http://php.net/manual/pt_BR/function.readdir.php....................................................... 193 48. Set Cookies: http://php.net/manual/pt_BR/function.setcookie.php ........................................... 193 49. Swithc: ....................................................................................................................................... 193 50. Time: .......................................................................................................................................... 193 51. United Nations: http://pt-br.html.net/tutorials/php/unitednations.txt ...................................... 193 52. User-definition fuction: ............................................................................................................. 193 53. While: ........................................................................................................................................ 193 54. XAMPP para Linux: .................................................................................................................... 193 55. XAMPP para Mac OSX: .............................................................................................................. 193 56. XAMPP para Windows: http://www.apachefriends.org/en/xampp-windows.html ................ 193 Agradecimentos e Esclarecimentos .......................................................................................................... 193
Introduo ao HTML
As pessoas imaginam que muito difcil construir um website. Isto no verdade! Qualquer um pode aprender como construir um website. Se voc continuar lendo, estar apto a construir um website em uma hora. Outros pensam - erroneamente - que necessrio softwares avanados e caros para construir websites. verdade que existem muitos softwares capazes de criar um website para voc. Alguns mais fechados que outros. Mas, se voc pretende trilhar o caminho certo, dever criar voc mesmo o website. Felizmente, isto simples voc j tem a sua disposio todos os softwares que presisa. O objetivo deste tutorial fornecer os conhecimentos bsicos que permitiro construir um website de forma correta. O tutorial parte do zero e no requer qualquer conhecimento prvio de programao. O tutorial no ensina tudo. Assim necessrio que voc se empenhe, pratique e consolide os ensinamento aqui contidos. Mas, no se aborrea - aprender como construir um website divertido e bastante satisfatrio quando voc trilha o caminho certo de aprendizado. Como tirar o melhor proveito do tutotial uma deciso sua. Ns sugerimos que voc estude somente duas ou trs lies por dia e pratique bastante tudo o que voc aprender em cada lio.
Lio 1: Vamos comear Nesta primeira lio apresentaremos as ferramentas necessrias construo de um website. O que necessrio?
muito provvel que voc j tenha as ferramentas que precisa. Voc tem um "navegador". Navegador um programa que permite visualizar e navegar por pginas na Internet. Voc est lendo est pgina em um navegador. No importa qual navegador voc usa. O mais comum o Microsoft Internet Explorer. Mais existem outros, tais como, Opera e Mozilla Firefox que podem ser usados. Voc j deve ter ouvido falar ou at mesmo pode j ter usado programas tais como, Microsoft FrontPage, Macromedia Dreamweaver ou mesmo Microsoft Word, que podem - pelo menos anunciam que podem - criar websites para voc. Por ora, esquea estes programas! Eles no tm qualquer utilidade para voc na tarefa de codificar seu website. Voc precisar de um simples editor de textos. Se voc tem instalado o Windows, poder usar o Notepad, que normalmente pode ser encontrado no menu Programs em Accessories (Programas Acessrios) - se voc no tem o Windows, use um editor de texto similar. Por exemplo, Pico (Linux) ou TextEdit (Mac). Notepad um editor de texto bsico e simples, mas excelente para codificao, porque no interfere no que voc est digitando. Com ele o controle todo e somente seu. O problema com programas que criam o website para voc, que eles vm com uma srie de funes pr-instaladas para voc escolher. Tudo dever ser projetado para se encaixar nestas funes padro. Assim, muitas vezes no possvel criar exatamente aquilo que voc planejou. Ou - mais frustrante ainda - os programas inserem modificaes no cdigo que voc cria. Usando o Notepad ou qualquer editor de textos simples voc o nico responsvel pelos acertos ou pelos erros do seu cdigo. Um navegador e o Notepad (ou editor similar) so tudo o que voc precisa para acompanhar este tutorial e construir seu website.
Preciso estar online?
No. Voc no precisa estar conectado Internet - tanto para ler este tutorial como para construir seus websites. Se voc quer desconetar-se enquanto l este tutorial, voc poder imprimir ou simplesmente desconectar-se da Internet enquanto l a tela. Voc pode construir seu website no HD do seu computador e fazer o upload para a Internet quando terminar.
Lio 2a: O que HTML?
HTML a "lngua me" do seu navegador. Resumindo uma longa histria, HTML foi criado em 1990, por um cientista chamado Tim Berners-Lee. A finalidade inicial era a de tornar possvel o acesso e a troca de informaes e de documentao de pesquisas, entre cientistas de diferentes universidades. O projeto inicial tornou-se um sucesso jamais imaginado por Tim Berners-Lee. Ao inventar o HTML ele lanou as fundaes da Internet tal como a conhecemos atualmente. HTML uma linguagem que possibilita apresentar informaes (documentao de pesquisas cientficas) na Internet. Aquilo que voc v quando abre uma pgina na Internet a interpretao que seu navegador faz do HTML. Para visualizar o cdigo HTML de uma pgina use o menu "View" (Ver) no topo do seu navegador e escolha a opo "Source" (Cdigo fonte). Para quem no conhece, o cdigo HTML pode parecer complicado, mas este tutorial ir tornar as coisas claras para voc. Para que devo usar o HTML? Se voc quer construir websites ter que conhecer HTML. Mesmo que voc use um programa para criar seu website, tal como o Dreamweaver, um conhecimento bsico de HTML ser necessrio para tornar as coisas mais simples e para criar um website de melhor qualidade. A boa notcia que HTML fcil de aprender e de usar. A partir das duas prximas lies voc j ter aprendido como construir seu primeiro website. HTML usado para construir websites. simples! OK, mas o que significa H-T-M-L?
HTML a abreviatura de "HyperText Mark-up Language" - e isto tudo o que voc precisa saber por enquanto. Contudo, vamos detalhar isto. Hyper o oposto de linear. Nos tempos antigos - quando mouse era apenas um rato caado por gatos - os programas de computadores rodavam linearmente: quando o programa executava uma ao tinha que esperar a prxima linha de comando para executar a prxima ao e assim por diante de linha em linha. Com HTML as coisas so diferentes - voc pode ir de onde estiver para onde quiser. Exemplificando: no necessrio que voc tenha visitado o site MSN.com antes de visitar o site HTML.net. Text texto e no h mais nada a acresentar. Mark-up significa marcao e o texto que voc escreve. Voc cria a marcao da mesma forma que escreve em um editor seus cabealhos, marcadores, negrito, etc Language significa linguagem e exatamente o que HTML ; uma linguagem. A linguagem HTML usa muitas palavras do ingls. Neste tutorial voc aprender XHTML (Extensible HyperText Mark-up Language) que nada mais do que uma maneira mais bem estruturada de escrever HTML. Agora que voc j sabe o que HTML (e XHTML) vamos comear aplicando eles para: construir websites.
Lio 3a: O que so tags HTML? Tags so rtulos usados para informar ao navegador como deve ser apresentado o website. Todas as tags tm o mesmo formato: comeam com um sinal de menor "<" e acabam com um sinal de maior ">". Genericamente falando, existem dois tipos de tags - tags de abertura: <comando> e tags de fechamento: </comando>. A diferena entre elas que na tag de fechamento existe um barra "/". Tudo que estiver contido entre uma tag de abertura e uma tag de fechamento ser processado segundo o comando contido na tag. Mas, como toda regra tem sua exceo, aqui no HTML a exceo que para algumas tags a abertura e o fechamento se d na mesma tag. Tais tags contm comandos que no necessitam de um contedo para serem processados, isto , so tags de comandos isolados, por exemplo, um pulo de linha conseguido com a tag <br />. HTML tag - e nada mais do que tags. Aprender HTML aprender como usar as diferentes tags. Voc pode mostrar alguns exemplos? OK, a tag <b> informa ao navegador que todo o texto colocado entre <b> e </b> deve ser mostrado em negrito. (O comando "b" uma abreviao para "bold" - negrito.) Exemplo 1: <b>Este texto deve ser em negrito.</b>
Vai ser apresentado no navegador, como mostrado a seguir: Este texto deve ser em negrito. As tags <h1>, <h2>, <h3>, <h4>, <h5> e <h6> informam ao navegador que trata-se de um cabealho (h vem de "heading" - cabealho ), sendo <h1> o cabealho de primeiro nvel e aquele apresentado com o maior tamanho de texto, <h2> o cabealho de segundo nvel e aquele apresentado com tamanho de texto um pouco menor e <h6> o cabealho de sexto nvel e aquele apresentado com o menor tamanho de texto. Exemplo 2: <h1>Este um ttulo</h1> <h2>Este um sub ttulo</h2> Vai ser apresentado no navegador, como mostrado a seguir: Este um ttulo Este um subttulo
As tags devem ser escritas com letras maisculas ou minsculas? Para a maioria dos navegadores indiferente se voc usa maiscula, minscula ou mesmo uma mistura delas.<COMANDO>, <comando> ou <CoMaNdo> normalmente tem o mesmo efeito. Contudo a maneira correta usar minsculas. Ento, crie o hbito de escrever suas tags com minsculas. Onde devo colocar todas estas tags?
Voc deve escrever suas tags em um documento HTML. Um website constituido por um ou mais documentos HTML. Quando voc navega na Web, voc est abrindo diferentes documentos HTML. Se voc passar para a prxima lio, em dez minutos estar construindo seu primeiro website.
Lio 4a: Criando seu primeiro website Na lio 1 vimos o que necessrio para construir um website: um navegador e o Notepad (ou um editor de texto similar). Uma vez que voc esta lendo esta pgina, provavelmente est com seu navegador aberto. Agora abra outra janela do seu navegador de modo que voc tenha duas janelas na tela, uma para ler este tutorial e outra para visualizar o website que voc vai construir. Abra tambm o Notepad ( Iniciar Programas Acessrios): Agora, estamos prontos para comear!
O que posso fazer? Vamos comear com algo simples. Que tal uma pgina que diga: "Hurrah! Esta a minha primeira pgina web." Continue e voc ver como isto simples de fazer. HTML simples e lgico. O navegador l HTML de modo idntico ao que voc l um texto qualquer, de cima para baixo e da esquerda para a direita. Assim um documento HTML inicia com aquilo que deve ser a primeira coisa aparecer na pgina e termina com a ltima coisa a aparecer. A primeira coisa a fazer dizer ao navegador que voc vai "falar" com ele na linguagem HTML. Isto feito com a tag <html> (nenhuma novidade nisto). Ento, antes de mais nada digite "<html>" na primeira linha do documento, no Notepad. Como sabemos das lies anteriores, <html> uma tag de abertura e deve ser fechada com a tag de fechamento quando voc acabar de digitar seu documento HTML. Para termos certeza que no iremos esquecer de fechar a tag HTML, faa isso agora mesmo, digitando "</html>" localizada a algumas linhas abaixo, assim voc ir escrever seu documento entre as tags digitadas <html> e </html>. A prxima coisa que o documento precisa um "head" (cabea), que fornece informaes sobre o documento e um "body" (corpo), que abriga o contedo do documento. Como HTML no seria nada se no fosse lgico, a "cabea" (<head> e </head>) fica em cima do "corpo" (<body> e </body>). Seu documento agora est como mostrado abaixo:
<html> <head> </head>
<body> </body>
</html>
Notar como estruturamos o cdigo em linhas diferentes (usar a tecla Enter para pular para prxima linha) e tambm a endentao (recuos) do cdigo (usar a tecla Tab para endentar). A princpio no faz qualquer diferena a maneira como voc estrutura (linhas e recuos na digitao) seu documento HTML. Mas um cdigo bem estruturado mais fcil de ler e entender, altamente recomendado que voc adote uma estrutura clara e ntida para seu HTML, usando linhas e endentao (recuos), como mostrado no exemplo acima. Se o seu documento est como o mostrado acima, voc construiu sua primeira pgina web - uma pgina particularmente chata e provavelmente nada parecido com o que voc sonhou em fazer quando comeou a ler este tutorial, mas de qualquer forma um tipo de website. Isto que voc fez ser um template base para seus futuros documentos HTML.
At aqui tudo bem, mas como colocar contedo no meu website?
Como voc j aprendeu, seu documento HTML composto de duas partes: um head e um body. Na seo head voc escreve informaes sobre a pgina e na seo body voc coloca as informaes que constituem a pgina. Por exemplo, para dar um ttulo ao documento, ttulo este que aparea no topo da barra do navegador voc dever usar a seo"head". A tag para acresentar um ttulo <title>:
<title>Minha primeira pgina web</title>
Notar que o ttulo no aparece na pgina propriamente dita. Tudo que voc quer que aparea na pgina contedo e dever ser colocado entre as tags "body". Conforme combinamos, queremos uma pgina dizendo, "Hurrah! Esta a minha primeira pgina web." Este o texto que queremos comunicar e ele dever ser colocado na seo body. Ento digite na seo body o seguinte:
<p>Hurrah! Esta a minha primeira pgina web.</p>
A letra p na tag <p> a abreviatura para "paragraph" (pargrafo) que exatamente o que o texto - um texto pargrafo. Seu documento HTML agora est como mostrado a seguir:
<html>
<head> <title>Minha primeira pgina web</title> </head>
<body> <p>Hurrah! Esta a minha primeira pgina web.</p> </body>
</html>
Pronto! Voc acaba de construir seu primeiro website! Agora basta que voc salve seu trabalho no HD e depois visualize no navegador: No Notepad v ao menu "Arquivo" no topo da janela e escolha a opo "Salvar como...". Escolha "Todos os arquivos" no box "Salvar como tipo". Isto muito importante - caso voc no faa isto, o arquivo ser salvo como texto e no como documento HTML. Salve seu documento com o nome "page1.htm" (a extenso ".htm" indica que se trata de um documento HTML. A extenso ".html" d o mesmo resultado. Eu sempre uso ".htm", mas voc pode escolher a que voc preferir .htm ou .html). Voc pode salvar o documento onde voc quiser no seu HD - esteja certo de salvar em um lugar que depois voc possa achar com facilidade. Agora v ao seu navegador: No menu existente no topo do navegador v em "Arquivo" e escolha a opo "Abrir" (CTRL+O). Clique em "Procurar" no box que aparece. Localize o seu documento HTML e clique em "Abrir".
Voc dever ver no seu navegador: "Hurrah! Esta a minha primeira pgina web." Parabns! Se voc quer que o mundo todo veja sua pgina, v direto para a Lio 14 e aprenda como fazer upload da sua pgina para a Internet. Se no, tenha pacincia e continue lendo. A brincadeira apenas comeou.
Lio 5a: O que voc j aprendeu? Comece sempre com o template bsico que construmos na lio anterior: <html>
<head> <title></title> </head>
<body> </body>
</html>
Coloque sempre o ttulo do seu documento na seo head: <title>Ttulo da sua pgina</title>. Ver na figura abaixo como o ttulo aparece no topo superior esquerdo do navegador:
O ttulo muito importante porque usado pelos mecanismos de busca (tais como o Google) para indexar seu website como mostrado a seguir para o site CSS para Web Design:
Na seo body voc escreve o contedo da sua pgina. Voc conhece algumas das mais importantes tags:
<p> usado para pargraos.</p> <b>Torna o texto negrito.</b>
Lembre-se, o nico caminho para aprender HTML por ensaio e erro. Mas, no se preocupe, voc no destruir seu computador e nem a Internet. Ento, faa seus experimentos e testes - esta a melhor maneira de ganhar experincia. O que significa isto?
Ningum se tornar um bom criador de websites aprendendo os exemplos contidos neste tutorial. O que voc aprender neste tutorial simplesmente o bsico para criao - para se tornar um bom desenvolvedor voc dever descobrir caminhos por si mesmo em maneiras criativas. Ento mos obra. Comece suas experincias com tudo que voc aprendeu at agora. O que fazer agora?
Tente criar algumas pginas. Por exemplo, construa uma pgina com um ttulo, um cabealho, algum texto, um subttulo e mais algum texto. No h nada contra fazer uma consulta no tutorial para construir as pginas, ou seja, a "cola" permitida. Porm, mais a frente, tente criar sem consultar - "cola" no permitida.
Lio 6a: Mais tags HTML E a? Voc construiu algumas pginas como sugerimos na lio anterior? No? Sim? Bem, a seguir um exemplo: <html>
Agora vamos aprender mais sete tags. Voc j sabe que pode obter negrito com a tag <b>, agora saiba que pode obter itlico - letras inclinadas - com a tag <i>. J percebeu no ?, "i" vem de "italic".
Exemplo 1: <i>Este texto deve ser itlico.</i>
Ser renderizado no navegador assim:
Este texto deve ser itlico.
De modo similar voc pode fazer seu texto com letra menores usando a tag <small>: Exemplo 2: <small>Este texto deve ser com letras em tamanho small.</small> Ser renderizado no navegador assim: Este texto deve ser com letras em tamanho small.
Posso usar vrias tags simultaneamente?
Sim voc pode usar quantas tags queira desde que as aninhe convenientemente. Veja como fazer isto no exemplo abaixo: Exemplo 3: Para escrever um texto em negrito e itlico faa como mostrado a seguir:
<b><i>Texto em negrito e itlico.</i></b> E no assim: <b><i>Texto em negrito e itlico.</b></i> Observe que no primeiro exemplo a primeira tag de abertura <b> corresponde a ltima tag de fechamento </b>, e o alinhamento est certo. Isto evita confuso para quem escreve o cdigo e para o navegador que l o cdigo. Mais tags!
Como foi dito na Lio 4 existem tags que so abertas e fechadas em nica tag. Estas tags so comandos isolados, ou seja, no contm nenhum texto dentro delas para poder funcionar. Um exemplo a tag <br /> que serve para criar uma quebra de linha:
Exemplo 4: Um texto<br /> e mais texto em nova linha
Ser renderizado no navegador assim: Um texto e mais texto em nova linha Notar que a tag escrita como se fosse uma mistura de tag de abertura e de fechamento com uma barra "/" no final: <br />. A princpio podemos escrever tambm <br></br> (sem contedo), mas para que complicar? Outra tag de comando <hr /> que serve para definir uma linha horizontal ("hr" vem "horizontal rule" - rgua horizontal ): Exemplo 5: <hr /> Ser renderizado no navegador assim: Exemplo 6: <ul> <li>Um item de lista</li> <li>Outro item de lista</li>
</ul>
Ser renderizado no navegador assim: Um item de lista Outro item de lista Exemplo 7: <ol> <li>Primeiro item da lista</li> <li>Segundo item da lista</li>
</ol>
Ser renderizado no navegador assim: 1. Primeiro item da lista 2. Segundo item da lista Uau! Isto tudo?
Sim, por enquanto isto tudo. Aconselhamos, novamente, a fazer seus prprios experimentos, construindo algumas pginas usando as sete tags ensinadas nesta lio: <i>Itlico</i> <small>Texto tamanho small</small>
<br /> Pula linha <hr /> Linha Horizontal <blockquote>Indentao</blockquote> <ul>Lista</ul> <ol>Lista ordenada</ol>
<li>Item de lista</li> Lio 7a: Atributos Como voc deve estar lembrado, uma tag um comando para o navegador (por exemplo, <br /> um comando para mudar de linha). Em algumas tags voc pode ser mais especfico, acresentando na tag, informaes adicionais de comando. Isto feito atravs dos atributos. Exemplo 1: <h2 style="background-color:#ff0000;">Eu adoro HTML</h2>
Atributos so escritos dentro da tag, seguidos por um sinal de igual e depois entre aspas so declaradas as informaes do atributo. As informaes quando mais de uma, devem ser separadas por ponto e vrgula, tudo conforme mostrado no exemplo acima. Adiante voltaremos a este assunto. Como isto? Existem vrios atributos. O primeiro que voc aprender o atributo style. Com o atributo style voc pode adicionar estilizao e layout ao seu website. Por exemplo, uma cor de fundo: Exemplo 2: <html>
<head> </head>
<body style="background-color:#ff0000;"> </body>
</html>
O cdigo acima renderiza uma pgina com cor de fundo vermelha - v em frente! experimente voc mesmo, construa uma pgina vermelha. A seguir explicaremos como funcionam as cores. Notar que algumas tags e atributos usam nomes do idioma ingls dos E.U.A. muito importante que voc use os nomes exatamente como mostrados neste tutorial - se voc mudar uma letra que seja, o navegador no ir entender seu cdigo. importante tambm que voc no se esquea de fechar as aspas nas informaes do atributo. Como a pgina ficou vermelha? No exemplo acima ns usamos o cdigo "#ff0000" para fazer a pgina na cor vermelha. Eate o cdigo para a cor vermelha no sistema chamado de nmeros hexadecimal (HEX). Cada cor representada por um nmero hexadecimal. A seguir alguns exemplos:
Um cdigo hexadecimal para cores formado por um sinal # seguido de seis dgitos e/ou letras. Existe mais de 1000 cdigos HEX e no fcil decorar o cdigo para todas as cores. Para facilitar as coisas ns desenvolvemos uma carta com as 216 cores mais usadas na web: Carta das 216 cores seguras para a Web. Para algumas cores, voc pode usar o nome das cores em ingls (white, black, red, blue, green e yellow - branco, preto, vermelho, azul, verde, amarelo).
Exemplo 3: <body style="background-color: red;"> Chega de cores. Voltemos aos atributos. Quais tags podem usar atributos?
Atributos podem ser aplicados maioria das tags. Voc normalmente usar atributos com mais freqncia em algumas tags, tais como a tag body e raramente usar em outras, como por exemplo, a tag br que um comando para pular de linha e no precisa de nenhuma informao adicional. Assim como existem muitas tags, tambm existem muitos atributos. Alguns atributos so empregados em tags especficas enquanto outros servem para vrias tags. E vice-versa: algumas tags podem conter somente um tipo de atributo, enquanto outras podem conter vrios tipos. Isto pode parecer um pouco confuso, mas medida que voc for praticando vai constatar que tudo fcil e lgico, bem como vai verificar as inmeras possibilidades que os atributos oferecem. Este tutorial apresentou a voc, os atributos. Ento, quais so as partes que constituem uma tag?
A constituio bsica de uma tag denominada elemento (por exemplo p em <p>). Assim, uma tag constituida de um elemento (por exemplo<p>), ou por um elemento e um ou mais atributos (por exemplo <p style="background-color:#ff0000;">). Simples!
Lio 8a: Links Nesta lio voc aprender como construir links entre pginas. Para construir um link voc usa o que tem usado at agora para codificar HTML: uma tag. Uma simples e pequenina tag com um elemento e um atributo suficiente para voc construir links para onde quiser. A seguir um exemplo de link para o site HTML.net:
Exemplo 1: <a href="http://www.html.net/">Aqui um link para HTML.net</a>
Ser renderizado no navegador assim: Aqui um link para HTML.net O elemento a refere-se a "anchor" - ncora . O atribuito href abreviao para "hypertext reference" - referncia a hypertexto - e especifica o destino do link - que normalmente um endereo na Internet ou um arquivo. No exemplo acima o atributo href tem o valor "http://www.html.net", que o endereo completo do site HTML.net e chamado de URL (Uniform Resource Locator). Notar que "http://" deve sempre ser includo nas URLs. A frase "Aqui um link para HTML.net" o texto mostrado no navegador como link. Lembre-se de fechar a tag com um </a>. Como so os links entre minhas prprias pginas? Se voc quer construir links entre pginas de um mesmo website voc no precisa escrever o endereo completo de cada pgina (URL). Por exemplo, se voc tem duas pginas (vamos cham-las de pagina1.htm e pagina2.htm) e salvou as duas em um mesmo diretrio voc constri um link de uma para a outra usando somente o nome do arquivo no link. Nestas condies, um link da pgina1.htm para a pagina2.htm como mostrado abaixo: Exemplo 2: <a href="page2.htm">Aqui um link para a pagina 2</a> Se a pagina2 for colocada em um subdiretrio (chamado de "subdiretorio"), o link como mostrado abaixo: Exemplo 3: <a href="subdiretorio/pagina2.htm">Aqui um link para a pagina 2</a> Por outro lado, um link da pagina2 no "subdiretorio" para a pagina1 como mostrado a seguir: Exemplo 4: <a href="../pagina1.htm">Aqui um link para a pagina 1</a>
"../" aponta para o diretrio a um nvel acima do arquivo onde foi feito o link. Seguindo o mesmo princpio voc pode apontar para dois (ou mais) nveis acima, escrevendo ../../". Como alternativa voc pode usar sempre o endereo completo do arquivo (URL). Como so os links dentro de uma mesma pgina? Voc pode criar links internos, dentro da prpria pgina - por exemplo, uma tabela de contedos ou ndice com links para cada um dos captulos em uma pgina. Tudo o que voc precisa usar o atributo id e o smbolo "#". Use o atributo id para marcar o elemento que o destino do link. Por exemplo: <h1 id="heading1">Cabealho 1</h1>
Voc agora pode criar um link que leve quele elemento usando o smbolo "#" no atributo do link. O smbolo "#" informa ao navegador para ficar na mesmo pgina que est. O smbolo "#" deve ser seguido pelo valor atribudo a id para onde o link vai. Por exemplo: <a href="#heading1">Link para o cabealho 1</a>
Tudo fica claro com um exemplo: Exemplo 5: <html>
<head> </head>
<body>
<p><a href="#heading1">Link para cabealho 1</a></p> <p><a href="#heading2">Link para cabealho 2</a></p>
Ser renderizado no navegador assim (clique nos dois links): Link para cabealho 1 Link para cabealho 2 Cabealho 1 Texto texto texto texto Cabealho 2 Texto texto texto texto (Nota: O nome de um atributo ID deve comear com uma letra) Posso criar link para mais alguma coisa? Voc pode criar link para um endereo de e-mail. Isto feito de modo semelhante aos links para documentos. Exemplo 6: <a href="mailto:[email protected]">Enviar e-mail para nobody em HTML.net</a> Ser renderizado no navegador assim: Enviar e-mail para nobody em HTML.net A nica diferena que no lugar do endereo do documento voc escreve mailto: seguido pelo endereo de e-mail. Quando o link clicado o programa de e-mail padro do usurio aberto com o endereo do link j digitado na linha para destinatrio. Mas, ateno, isto s ir funcionar se o usurio tiver um programa de e-mail instalado na sua mquina. Faa uma experincia com este tipo de link clicando no exemplo acima. Existem outros atributos que eu deva conhecer? Par criar links voc sempre usa o atributo href. Adicionalmente voc pode usar um title (ttulo) para seu link: Exemplo 7: <a href="http://www.html.net/" title="Visite HTML.net e aprenda HTML">HTML.net</a>
Ser renderizado no navegador assim: HTML.net O atributo title usado para fornecer uma breve descrio do link. Se voc - sem clicar no link - colocar o cursor do mouse sobre o link, vai aparecer o texto "Visite o site HTML.net e aprenda HTML".
Lio 9a: Imagens O que voc acha de poder adicionar uma imagem do Tim Bernes-Lee o inventor do HTML no centro da sua pgina? Talvez, mas muito fcil de fazer. Tudo o que voc precisa da nossa j conhecida tag: Exemplo 1: <img src="tim.jpg" alt="Tim Berners-Lee" />
Ser renderizado no navegador assim: O que voc tem a fazer dizer ao navegador que quer inserir uma imagem (img) e depois informar onde a imagem esta localizada (src, abreviatura para "source" - local de armazenagem ). Notar que a tag imagem do tipo comando isolado, isto , uma s tag de abertuta e fechamento. Semelhante a tag <br /> que no precisa de um texto inserido nela. "tim.jpg" o nome do arquivo da imagem que voc quer inserir na pgina. ".jpg" a extenso do tipo de imagem. Tal como a extenso ".htm" para arquivos de documentos HTML, ".jpg" informa ao navegador que o arquivo uma imagem. So trs os tipos de imagens que voc pode inserir na sua pgina: GIF (Graphics Interchange Format) JPG / JPEG (Joint Photographic Experts Group) PNG (Portable Network Graphics) Em geral imagens GIF so melhores para grficos e desenhos e imagens JPEG so melhores para fotografia. Existem duas razes para isto: primeiro, imagens GIF so constituidas por 256 cores, e imagens JPEG por milhes de cores, segundo, imagens GIF so melhores otimizadas para imagens simples ao passo que imagens JPEG so melhores otimizadas para imagens complexas. Quanto melhor a compresso tanto menor o tamanho do arquivo e tanto mais rpido a pgina carregada no navegador. Como voc deve saber por experincia prpria, pginas desnecessariamente "pesadas" para carregar so frustantes para o usurio. Tradicionalmente os formatos GIF e JPEG tm sido os mais empregados, mas ultimamente o formato PNG tem se tornado cada vez mais popular (notadamente em detrimento do formato GIF). O formato PNG em vrios aspectos melhor que os formatos JPEG e GIF: milhes de cores e efetiva compresso.
Onde consigo minhas imagens?
Para criar suas prprias imagens voc precisa de um programa de edio de imagens. Um programa de edio de imagens a ferramenta essencial para criao de websites com grande impacto visual. Lamentavelmente, nenhum editor de imagem vem instalado com o Windows ou qualquer outro sistema operacional. Assim, voc deve considerar a aquisio do Paint Shop Pro, do PhotoShop ou do Macromedia Fireworks, que so os trs melhores editores de imagens atualmente existentes no mercado. Contudo, como j dissemos, no h necessidade de comprar um programa caro para acompanhar este tutorial. Por enquanto, voc poder fazer o download de um exelente editor de imagens chamado Irfan View que freeware, isto , no custa nada. Ou voc pode fazer download de imagens existentes na web. Mas, por favor, se optar por fazer o download de imagens da Internet, cuidado para no violar direitos autorais de terceiros. A seguir mostro como fazer o download de uma imagem existente na Internet: 1. Clique com o boto direito do mouse na imagem da Internet. 2. No menu que aparece escolha a opo "Salvar imagem como...". 3. Na janela que se abre, escolha o lugar no seu computador para salvar e clique "Salvar". Faa isto com a imagem abaixo e salve no seu computador no mesmo local onde est localizado seus documentos HTML. (Notar que dever ser salvo o arquivo com formato PNG: logo.png):
Agora voc pode inserir a imagem nos seus documentos. Tente fazer isto em um documento que voc criou neste tutorial.
Isto tudo o que eu preciso saber sobre imagens?
Existem mais algumas coisinhas que voc precisa saber. Primeiro voc pode inserir imagens que esto localizadas em outros diretrios ou at mesmo em outros websites:
Segundo, imagens podem ser links: Exemplo 4: <a href="http://www.html.net"> <img src="logo.png"></a> Ser renderizado no navegador assim: (clique na imagem):
Existem outros atributos que eu deva conhecer? Voc sempre ter que usar o atributo src, que diz ao navegador onde a imagem est localizada. Alm dele existem alguns outros atributos que podem ser bastante teis quando voc insere imagens em uma pgina. O atributo alt usado para fornecer uma descrio textual alternativa da imagem caso por alguma razo a imagem no seja renderizada para o usurio. Isto particularmente importante para usurios com restries visuais ou quando a imagem carregada muito lentamente. Em conseqncia, sempre use o atributo alt: Exemplo 5: <img src="logo.gif" alt="logotipo do HTML.net">
Alguns navegadores mostram uma caixa pop-up com o contedo do atributo alt quando o usurio passa o mouse sobre a imagem. Tenha em mente que a finalidade principal do atributo alt a de fornecer uma alternativa textual para imagem. O atributo alt no deve ser usado para criar mensagens pop-up uma vez que os leitores de tela passaro uma mensagem que no descreve a imagem para os usurios com restries visuais. O atributo title pode ser usado para fornecer uma curta descrio da imagem:
Exemplo 6: <img src="logo.gif" title="Aprenda HTML no site HTML.net">
Ser renderizado no navegador assim:
Coloque o ponteiro do mouse sobre a imagem, sem clicar e aparecer uma caixa pop-up com o texto "Aprenda HTML no site HTML.net" . Dois outros atributos importantes so width e height:
Exemplo 7: <img src="logo.png" width="141" height="32"> Ser renderizado no navegador assim:
Os atributos width e height podem ser usados para definir respectivamente, a largura e a altura da imagem. O valor adotado para medidas o pixel. Pixel a unidade de medida usada para medir a resoluo da tela. (As resolues de tela mais comuns so de 800x600 e 1024x768 pixels). Ao contrrio de centmetros, pixel uma inidade de medida relativa que depende da resoluo da tela. Usurios com grande resoluo de tela tero 25 pixels em 1 centmetro de tela enquanto aqueles com baixa resoluo de tela tero os mesmos 25 pixels em 1,5 cm de tela. Se no forem definidos os valores para width eheight, a imagem ser inserida com seu tamanho real. Com width e height voc pode alterar o tamanho da imagem: Exemplo 8: <img src="logo.gif" width="32" height="32"> Ser renderizado no navegador assim:
Contudo, o tempo de descarga da imagem ser sempre aquele requerido como se ela tivesse suas dimenses reais, mesmo que voc diminua seu tamanho com uso destes atributos. Assim, voc no deve diminuir o tamanho das imagens com o uso dos atributos width e height. Se voc precisa diminuir a imagem diminua suas dimenses reais em um editor de imagem para tornar suas pginas mais leves e mais rpidas. Dito isto, acrescentamos que sempre uma boa idia definir os atributos width e height para imagens, pois assim fazendo o navegador reservar o espao para descarga da imagem previamente. Isto acaba por permitir ao navegador, saber com antecedncia (antes de descarregar as imagens) como ser o layout da pgina. Por enquanto isto tudo sobre o Tim Berners-Lee e sobre imagens.
Lio 10a: Tabelas
Tabelas so usadas para apresentar "dados tabulares" , isto , informao que deva ser apresentada em linhas e colunas, de forma lgica. Criar tabelas em HTML pode parecer complicado, mas se voc ficar frio e acompanhar passo a passo a explicao, ver que tudo evidente - tal como acontece com tudo no HTML. Exemplo 1: <table> <tr> <td>Clula 1</td> <td>Clula 2</td> </tr> <tr> <td>Clula 3</td> <td>Clula 4</td> </tr> </table> Ser renderizado no navegador assim: Clula 1 Clula 2 Clula 3 Clula 4 Qual a diferena entre <tr> e <td>?
Como voc deve ter visto no exemplo acima, este foi o cdigo HTML mais complicado que escrevemos at agora. Vamos analisar isto por partes e explicar as diferentes tags: 3 tags bsicas so usadas para inserir tabelas:
<table> comea e termina uma tabela. Evidente. <tr> significa "table row" - linha de tabela - comea e termina e uma linha horizontal da tabela. Tambm evidente. <td> significa "table data" - dados da tabela. comea e termina cada clula contida nas linhas da tabela. Tudo simples e evidente.
Eis o acontece no Exemplo 1: a tabela comea com <table>, segue-se uma <tr>, que indica o incio de uma nova linha. Duas clulas so ento inseridas na linha: <td>Clula 1</td> e <td>Clula 2</td>. A linha termina com </tr> e uma nova linha <tr> comea imediatamente a seguir. A nova linha tambm contm duas clulas. A tabela termina com </table>. Para esclarecer: linhas so horizontais e colunas so verticais, ambas contendo clulas:
Clula 1 Clula 2 Clula 3 Clula 4
Clula 1 e Clula 2 formam uma linha. Clula 1 e Clula 3 formam uma coluna. No exemplo acima a tabela tem duas linhas e duas colunas. Uma tabela pode conter um nmero ilimitado de linhas e colunas.
Ser renderizado no navegador assim: Clula 1 Clula 2 Clula 3 Clula 4
A espessura da borda especificada em pixels (Ver lio 9) Tal como fizemos com as imagens, podemos definir width - largura - em pixels, para uma tabela - ou alternativamente em percentagem da tela:
Exemplo 4: <table border="1" width="30%">
Este exemplo renderiza no navegador uma tabela com largura igual a 30% da largura da tela. Tente voc mesmo. Mais atributos? Existe uma grande quantidade de atributos para tabelas. A seguir mais dois:
align: define o alinhamento horizontal do contedo da tabela, de uma linha ou de uma clula. Por exemplo, left, center ou right ( esquerda, no centro ou direita). valign: define o alinhamento vertical do contedo de uma clula. Por exemplo, top, middle ou bottom (em cima, no meio ou em baixo).
Exemplo 5: <td align="right" valign="top">Clula 1</td> O que posso inserir em tabelas?
Teoricamente voc pode inserir qualquer coisa em uma tabela: texto, links e imagens... MAS, tabelas destinam-se a apresentar dados tabulares (isto , dados que por sua natureza devam ser apresentados em linhas e colunas) ento se abstenha de colocar coisas dentro de tabela simplesmente porque voc deseja que elas estejam prximas umas s outras. Nos primrdios da Internet - isto , h poucos anos atrs - tabelas eram usadas como ferramenta para construir layout. Se voc quer controlar a apresentao de textos e imagens, existe uma maneira bem mais racional (dica: CSS). Adiante veremos isto. Agora, coloque em prtica tudo que voc aprendeu e crie vrias tabelas de diferentes tamanhos, usando diferentes atributos e contedos. Isto ir ocupar voc por horas. Lio 11a: Mais tabelas O ttulo "Mais tabelas" pode sugerir uma lio enfadonha. Mas, veja as coisas pelo lado positivo, depois que voc se tornar um mestre em tabelas nada mais do HTML poder desafi-lo.
O que mais existe? Os dois atributos colspan e rowspan so usados para criar tabelas singulares. Colspan a abreviao para "column span". colspan usada na tag <td> para indicar quantas colunas estaro contidas em uma clula.
Definindo colspan em "3", a clula na primeira linha conter trs colunas. Se voc definir colspan em "2", a clula conter duas colunas e assim ser necessrio inserir mais uma clula na primeira linha para que tenhamos na primeira linha as colunas em acordo com as da segunda linha. Exemplo 2:
Ser renderizado no navegador assim: Clula 1 Clula 2 Clula 3 Clula 4 Clula 5
Que tal rowspan? Como voc j deve ter concluido, rowspan especifica quantas linhas estaro contidas em uma clula: Exemplo 3: <table border="1"> <tr> <td rowspan="3">Clula 1</td> <td>Clula 2</td> </tr> <tr> <td>Clula 3</td> </tr> <tr> <td>Clula 4</td> </tr> </table> Ser renderizado no navegador assim: Clula 1 Clula 2 Clula 3 Clula 4
No exemplo acima rowspan definido em "3" na Clula 1. Isto especifica que uma clula deve conter 3 linhas. Clula 1 e Clula 2 esto na mesma linha, enquanto Clula 3 e Clula 4 formam duas linhas independentes. Confuso? Bem, isto na verdade no descomplicado e voc pode se perder. Assim, sempre uma boa ideia, desenhar a tabela em uma folha de papel antes de comear a codificao HTML. No est confuso? Ento v em frente e crie algumas tabela com uso de colspan e rowspan.
Lio 12a: Layout (CSS) No seria timo se voc pudesse dar sua pgina o layout que ela merece? Para o layout da sua pgina use Cascading Style Sheets (CSS) - Folhas de Estilo em Cascata. Nesta lio voc ter uma breve introduo sCSS. Depois voc poder aprender CSS desde o incio no Introduo ao CSS. Assim, considere esta lio apenas um aperitivo. CSS a melhor metade do HTML. Codificando, no h melhor parceria: HTML responsvel pelo trabalho pesado (a estrutura), enquanto CSS d o toque de elegncia (layout). Como mostrado na Lio 7, CSS pode ser adicionado com uso do atributo style. Por exemplo, voc pode definir o tipo e o tamanho da fonte em um pargrafo: Exemplo 1: <p style="font-size:20px;">Este pargrafo em tamanho de fonte igual a 20px</p> <p style="font-family:courier;">Este pargrafo em fonte Courier</p> <p style="font-size:20px; font-family:courier">Este pargrafo em fonte Courier e tamanho 20px</p> Ser renderizado no navegador assim: Este pargrafo em tamanho de fonte igual a 20px Este pargrafo em fonte Courier Este pargrafo em fonte Courier e tamanho 20px No exemplo acima usamos o atributo style para definir o tipo de fonte usado (com a propriedade font-family) e o tamanho da fonte (com a propriedade font-size). Notar que no ltimo pargrafo do exemplo definimos tanto o tipo como o tamanho da fonte separados por um ponto e vrgula.
Est parecendo que h uma grande quantidade de trabalho a executar
Uma das funcionalidades mais inteligentes das CSS a possibilidade de controlar o layout de um arquivo central. Em lugar de se usar o atributo style em cada tag, voc pode dizer ao navegador como deve ser o layout de todos os textos em uma pgina:
Exemplo 2: <html>
<head> <title>Minha primeira pgina CSS</title>
<style type="text/css"> h1 {font-size: 30px; font-family: arial} h2 {font-size: 15px; font-family: courier} p {font-size: 8px; font-family: times new roman} </style>
</head>
<body> <h1>Minha primeira pgina CSS</h1> <h2>Bem vindo minha primeira pgina CSS</h2> <p>Aqui voc ver como funciona CSS</p> </body>
</html> Ver exemplo No exemplo acima inserimos as CSS na seo head do documento, assim ela se aplica pgina inteira . Para fazer isto use a tag <style type="text/css"> que informa ao navegador que voc est digitando CSS. No exemplo, todos os cabealhos da pgina sero em fonte Arial e tamanho 30px. Todos os subttulos sero em fonte Courier tamanho 15. E, todos os textos dos pargrafos sero em fonte Times New Roman tamanho 8. Uma outra opo a de digitar as CSS em um documento separado. Com as CSS em um documento separado voc pode gerenciar o layout de muitas pginas ao mesmo tempo. Muito inteligente, pois voc pode mudar de uma s vez, o tipo ou o tamanho da fonte de todo o site, quer ele tenha centenas ou milhares de pginas. Ns no nos aprofundaremos em CSS agora, mas voc pode aprender tudo, no futuro, em nosso tutorial CSS. O que mais posso fazer com CSS? CSS faz muito mais do que definir tipos e tamanhos de fontes. Por exemplo, voc pode adicionar cores e fundos. A seguir alguns exemplos para voc praticar: <p style="color:green;">Texto verde</p>
<h1 style="background-color: blue;">Cabealho com fundo azul</h1>
Tente inserir estes cdigos em algumas das suas pginas - experimente as duas formas de inserir, tanto como mostrado acima como colocando as CSS na seo head do documento. CSS no nada mais do que cores e tipos de fontes?
Alm de cores, tipos de fontes, etc., CSS pode ser usado para controlar a configurao e a apresentao da pgina (margens, flutuaes, alinhamentos, larguras, alturas, etc.) Controlando os diferentes elementos com CSS voc ser capaz de criar layouts elegantes e precisos.
Exemplo 3: <p style="padding:25px;border:1px solid red;">Eu amo CSS</p> Ser renderizado no navegador assim: Eu amo CSS Com a propriedade float um elemento poder "flutuar" esquerda ou direita. O exemplo seguinte ilustra este princpio: Exemplo 4: <img src="bill.jpg" alt="Bill Gates" style= "float:left;" />
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat...</p> Ser renderizado no navegador assim: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat...
No exemplo mostrado, um elemento (a imagem) flutua esquerda e o outro elemento (o texto) preenche o espao deixado direita. Com a propriedade position, voc pode posicionar um elemento em qualquer lugar da pgina, com preciso: Exemplo 5: <img src="bill.jpg" alt="Bill Gates" style="position:absolute;bottom:50px;right:10px;" /> Ver exemplo No exemplo mostrado a imagem foi posicionada a 50 pixels da borda inferior e a 10 pixels da borda direita do navegador. Voc pode colocar em qualquer lugar na pgina. Tente voc mesmo. Fcil e legal, eh? Legal sim. Mas, fcil?
Voc no aprende CSS em 10 minutos. E como foi dito acima, nesta lio voc teve apenas uma breve introduo s CSS. No futuro aprenda mais no nosso Tutorial CSS. Por enquanto concentre-se no HTML, e passe para a prxima lio onde voc aprender como publicar seu website na Internet para que o mundo todo o veja!
Lio 13a: Uploading pginas At agora somente voc conseguiu visualizar suas pginas. Chegou a hora de mostr-las para o mundo todo. O mundo est preparado para ver suas pginas?
O mundo est preparado sim - voc, em breve, estar tambm. Para publicar seu trabalho na Internet, voc precisa somente de espao em um servidor e um programa FTP gratuito. Se voc costuma acessar a Internet j deve ter visto que existem vrios servios gratutitos de hospedagem de sites. Seu endereo no servidor ser alguma coisa parecida com http://home.servidor.com/~nomedousuario. Voc tem que ativar o servio. Informe-se como fazer isto na documentao fornecida pelo servio de hospedagem. Outra opo obter um espao gratuito de um servidor na Internet. Isto igual a registrar uma conta de e-mail (como por exemplo, obter um endereo de e-mail do hotmail) voc pode registrar-se gratuitamente para obter um espao em um servidor na Internet. Existem vrias companhias que oferecem este servio gratuito - entre elas a 000webhost.com (clique em "Order" e escolha membro gratuito - ou faa uma busca no Google para encontrar um servio gratuito com registro em portugus) - isto um processo bem rpido. Para acessar o servidor voc precisa conhecer o "Nome do seu servidor" (Por exemplo, ftp.htmlnet.site50.net) e ter um nome de usurio e senha. Isto tudo que eu preciso?
Para acessar o servidor e publicar as pginas voc precisa de um programa FTP. Voc no deve ter um programa destes ainda, mas existem vrios deles na Internet para download e so gratuitos. Existem muitos programas FTP. Um dos melhores o FileZilla, e gratuito . Voc pode obter o FileZilla em filezilla.sourceforge.net. Como eu fao o upload das pginas? Abaixo fornecemos um exemplo de como fazer isto usando o servidor 000webhost.com e o programa FileZilla. Este procedimento mais ou menos igual para qualquer programa FTP. Conecte-se Internet e abra o programa FTP. Insira "Host Name" ("ftp.htmlnet.site50.net" no "Address"), nome do usurio (em "User") e senha (em "Password") clique "Connect". Voc agora tem acesso ao servidor. Em um lado da janela do programa voc ver os diretrios e arquivos do seu computador ("Local Site"), e no outro o do servidor ("Remote Site"):
Ache os seus documentos HTML e imagens a serem publicadas (no "Local site") e transfira para o servidor ("Remote site") simplesmente dando um clique duplo nos arquivos. Agora o mundo todo poder ver seu site! (Por exemplo, no endereo http://htmlnet.site50.netpagina1.htm). D a uma das pginas o nome de "index.htm" (ou "index.html") e ela ser automaticamente a pgina de entrada no site, ou seja, basta digitar http://htmlnet.site50.net (sem qualquer nome de arquivo) e abrir http://htmlnet.site50.net/index.htm. Para mais adiante ser uma boa idia comprar um domnio (espao no servidor) s para voc (www.seu-nome.com) e assim ter um nome do site bem mais curto e fcil de guardar que aqueles fornecidos por um servio gratuito da Internet. Voc pode encontrar na Internet vrias firmas que vendem domnio. Faa uma busca do Google.
Lio 14a: Web standards e validao Nesta lio voc aprender mais alguns conceitos tericos do HTML. HTML pode ser escrito de vrias maneiras. O navegador est apto a ler HTML escrito de vrias maneiras. Podemos dizer que HTML tem muitos dialetos. Esta a razo porque alguns websites so apresentados de formas diversas em diferentes navegadores. Desde o aparecimento da Internet tem sido feitas vrias tentativas para se normatizar o HTML notadamente atravs do World Wide Web Consortium (W3C) fundado por Tim Berners-Lee (yep! o grande sujeito que inventou o HTML). Mas, este tem sido um rduo e longo caminho. No passado - quando voc tinha que comprar um navegador - Netscape dominava o mercado de navegadores. quela poca as normas para o HTML estavam nas suas verses 2.0 e 3.2. Mas pelo fato de dominar 90% do mercado a Netscape no teria - e no teve - que se preocupar muito com normas. Pelo contrrio, a Netscape inventava seus prprios elementos de marcao que no funcionavam em outros navegadores. Por muitos anos a Microsoft ignorou completamente a Internet. Em determinado momento, resolveu competir com a Netscape e lanou seu navegador prprio. A primeira verso do navegador da Microsoft, o Internet Explorer, no era melhor do que o Netscape no suporte s normas do HTML. Mas, a Microsoft resolveu distribuir seu navegador gratuitamente (isto sempre agrada a todos) e o Internet Explorer em pouco tempo tornou-se o navegador mais usado e mais popular. A partir das verses 4 e 5 a Microsoft anunciava que seus navegadores ofereciam cada vez maior suporte s normas HTML do W3C. A Netscape no se movimentou para atualizar seu navegador e continuou a colocar no mercado a velha e desatualizada verso 4. O que vem a seguir histria. Nos dias atuais as normas HTML esto na sua verso 4.01 e no XHTML. Hoje em dia o Internet Explorer que detm quase 90% do mercado. O Internet Explorer ainda tem seus elementos prprios, mas oferece suporte para as normas HTML do W3C. Os navegadores Mozilla, Opera e Netscape tambm suportam as normas. Ento, quando voc codifica HTML de acordo com as normas do W3C, voc est construindo um website para ser visualizado em todos os navegadores - no s agora, mas tambm no futuro. E felizmente, tudo o que voc aprendeu neste tutorial est de acordo com a mais nova verso do HTML, que o XHTML. Legal! Posso anunciar? Devido a existncia de diferentes tipos de HTML, voc precisa informar ao navegador qual o "dialeto" do HTML e no seu caso voc aprendeu XHTML. Para informar ao navegador, voc usa o Document Type Definition. O Document Type Definition deve ser escrito sempre no topo do documento: Exemplo 1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Alm do Document Type Definition (escrito na primeira linha no exemplo acima), que informa ao navegador que voc est codificando XHTML, voc precisa ainda adicionar informao extra na tag html, usando os atributos xmlns e lang. XMLNS abreviao de "XML-Name-Space" e deve ter sempre o valor: http://www.w3.org/1999/xhtml. Isto tudo o que voc precisa saber. Se voc tem o hbito ou gosta de se aprofundar e conhecer coisas complicadas poder ler mais sobre namespaces no site do W3C. No atributo lang voc especfica em que lngua (aqui trata-se de linguagem humana) o documento escrito. As abreviaturas para as lnguas existentes no mundo todo, esto nas ISO 639 standard . No exemplo acima a lngua definida no atributo o portugus do Brasil ("pt-br"). Uma DTD informar ao navegador como deve ser lido e renderizado o HTML. Use o exemplo mostrado, como um template para todos os seus futuros documentos HTML. O DTD importaante ainda, para a validao da pgina. Validao? Porqu deveria eu fazer isto?
Insira o DTD nas suas pginas e poder verificar erros no seu HTML, usando o validador gratuito do W3C. Para testar o validador faa o seguinte: crie uma pgina e publique na Internet. A seguir entre em validator.w3.org e l digite o endereo (a URL) da sua pgina, depois clique no boto validar. Se seu HTML estiver correto, vai aparecer uma mensagem de congratulaes. Se no, ser apresentada uma lista de erros, informando o qu est errado e onde. Cometa alguns erros propositais no seu cdigo para verificar o que acontece. O validador no til somente no encontro de erros. Alguns navegadores tentam interpretar os erros cometidos pelos desenvolvedores e consertar o cdigo mostrando a pgina corretamente. Em navegadores assim voc nunca encontrar erros no prprio navegador. J outros navegadores no aceitam o erro e apresentam a pgina arruinada ou mesmo nem apresentam. O validador ento ajuda voc a encontrar erros que voc no tenha nem idia de que existiam Sempre valide suas pginas, para ter certeza que elas sero mostradas corretamente em todos os navegadores.
Lio 15a: Dicas finais Congratulaes, voc chegou na ltima lio. Voc aprendeu um bocado de coisas e j est em condies de construir seu website. No entanto o que voc aprendeu o bsico e ainda h muita coisa a ser aperfeioada. Podemos dizer que voc construiu uma base slida para continuar e se aprofundar no assunto. Nesta ltima lio, daremos umas dicas finais: Para comear, aconselhamos a escrever seus documentos HTML de forma ordenada e estruturada. Assim fazendo voc estar no s mostrando aos outros que possui uma base slida de conhecimento mas tambm estar facilitando a leitura, interpretao e manuteno do cdigo. Siga as normas e valide seu cdigo. Mas, no faa disto uma fonte de stress. Escreva um XHTML claro, use o DTD e valide suas pginas novalidator.w3c.org. Coloque contedos nas suas pginas. Lembre-se que HTML apenas a ferramenta que possibilita apresentar informao na Internet, assim necessrio que haja a informao a ser apresentada ou seja, o contedo. Pginas lindas e bem desenhadas so timas, mas as pessoas buscam informao na Internet. Evite encher suas pginas com imagens pesadas e outros "balangandans" que voc encontra na Internet. Isto faz com suas pginas demorem a carregar e frustante para o usurio. Pginas que demoram mais de 20 segundos para carregar podem perder at 50% dos seus visitantes. Lembre-se de cadastrar seu site nos sites de busca, de modo a que outras pessoas, alm da sua famlia, possam encontr-las e visit-las. Na pgina de entrada dos sites para cadastro em mecanismos de busca voc encontrar um link para adicionar seu site (O mais importante oGoogle mas, existem outros tais como, DMOZ, Yahoo, AltaVista, AlltheWeb e Lycos). Neste tutorial voc aprendeu a usar o Notepad, que um simples e fcil editor de textos, contudo talvez voc agora possa pensar em usar um editor mais sofisticado com mais possibilidades e ferramentas. Voc encontra uma listagem e sumrio de diferentes editores em Download.com. Como eu aprendo mais?
Antes de qualquer coisa muito importante que voc continue a trabalhar e experimentar com tudo que voc aprendeu neste tutorial. Quando encontrar algum site que contenha uma coisa que voc ache interessante, estude o cdigo do site. No seu navegador v ao menu "View" - "Ver" e escolha "Source" - "Cdigo Fonte" para ver o cdigo do site. Procure na Internet por artigos e tutoriais HTML. Existem muitos sites com timos contedos sobre HTML. Leia e faa perguntas nos Fruns. L voc encontra experts com os quais aprender muito E para terminar - assim que voc se achar pronto - continue e aprenda CSS no nosso Tutorial CSS. S nos resta desejar a voc que passe horas agradveis ao lado do seu novo amigo, o HTML. Vejo voc na Internet :-)
Introduo ao CSS Folhas de estilos em cascata Cascading Style Sheets (CSS) uma ferramenta fantstica para construo do layout dos seus websites. Permite que voc projete websites com uma tcnica completamente diferente da convencional e possibilita uma considervel reduo de tempo de trabalho. Conhecer CSS uma necessidade para qualquer um envolvido com o projeto web. Este tutorial iniciar voc nas CSS em algumas poucas horas. fcil de entender e ensinar a voc todas as tcnicas sofisticadas. Aprender CSS divertido. medida em que voc for progredindo no tututorial no esquea de dedicar algum tempo para fazer seus experimentos com o que for aprendendo em cada lio. Para usar CSS necessrio um conhecimento bsico de HTML. Se voc no est familiarizado com HTML, consulte nosso tutorialHTML antes de comear com CSS.
Quais softwares eu precisarei?
Por favor, evite usar softwares tais como FrontPage, DreamWeaver ou Word para acompanhar este tutorial. Softwares avanados no facilitaro seu aprendizado de CSS. Ao contrrio, eles colocaro limites para voc e atrasaro seu aprendizado. Tudo o que voc precisa de um simples e gratuito editor de texto. Por exemplo, Microsoft Windows vem com um programa chamado Notepad. Normalmente este programa est no diretrio Accessories no menu Start => Programs. Alternativamente voc pode usar um editor de texto similar, tal como, Pico para Linux ou Simple Text para Macintosh. Um editor de texto simples o ideal para o aprendizado de HTML e de CSS porque eles no afetam e nem modificam o cdigo que voc digita. Assim os acertos e erros de codificao devem-se exclusivamente a voc no ao software que voc utiliza. Voc pode usar qualquer navegador parta acompanhar este tutorial. Ns aconselhamos que voc mantenha seu navegador sempre atualizado e utilize a ltima verso disponvel. Um navegador e um editor de textos simples so tudo o que voc precisa. Vamos comear!
Lio 1b: O que CSS?
Talvez voc j tenha ouvido falar em CSS, mas no saiba o que significa exatamente. Nesta lio voc saber o que e para que serve CSS. CSS a abreviatura para Cascading Style Sheets. Folha de Estilos em Cascata CSS uma linguagem para estilos que define o layout de documentos HTML. Por exemplo, CSS controla fontes, cores, margens, linhas, alturas, larguras, imagens de fundo, posicionamentos e muito mais. Aguarde e voc ver! HTML pode ser (in)devidamente usado para definir o layout de websites. Contudo CSS proporciona mais opes e mais preciso e sofisticado. CSS suportado por todos os navegadores atuais. Depois de estudar algumas poucas lies deste tutorial, voc estar em condies de projetar uma folha de estilos, usando CSS para dar um grande visual ao seu website.
Qual a diferena entre CSS e HTML?
HTML usado para estruturar contedos. CSS usado para formatar contedos estruturados. OK, isto soa um tanto tcnico e confuso. Mas, por favor, continue lendo. Tudo far sentido em breve. Em tempos passados quando a Madonna era virgem e um sujeito chamado Tim Berners Lee inventou a World Wide Web, a linguagem HTML era usada somente para estruturar textos. Um autor podia marcar seus textos definindo "isto um cabealho ou "isto um pargrafo" usando tags HTML tais como <h1> e <p>. medida que a Web ganhava popularidade, os designers comeavam a sentir a necessidade de encontrar meios de construir layout para os documentos online. Para suprir estas necessidades os fabricantes de navegadores (quela poca a Netscape e a Microsoft) inventaram novas tagsHTML tais como, por exemplo a tag <font> que se diferenciava das tags originais do HTML pelo fato de destinar-se layout e no estrutura. Isto adicionalmente teve o efeito de disvirtuar o emprego de tags inicialmente projetadas para estrutura como, por exemplo, a tag <table> que passaram a ser empregadas para layout. Muitas destas novas tags para layout como a tag <blink> eram suportadas somente por um determinado tipo de navegador. A frase "Voc precisa do navegador X para visualizar esta pgina" tornou-se comum nos websites. CSS foi inventada para solucionar esta situao, colocando disposio dos web-designers meios sofisticados de projetar layouts suportados por todos os navegadores. E ao mesmo tempo a separao dos estilos de apresentao da marcao dos contedos torna a manuteno dos sites bem mais fcil.
Quais so os benefcios do uso de CSS?
CSS uma revoluo no mundo do web design. Os benefcios concretos do uso de CSS incluem: Controle do layout de vrios documentos a partir de uma simples folha de estilos; Maior preciso no controle do layout; Aplicao de diferentes layouts para servir diferentes mdias (tela, impressora, etc.); Emprego de variadas, sofisticadas e avanadas tcnicas de desenvolvimento. Na prxima lio veremos com maiores detalhes como funciona CSS e como comear seu estudo.
Lio 2b: Como funciona CSS?
Nesta lio voc aprender a desenvolver sua primeira folha de estilos. Voc ver o bsico sobre o modelo CSS e que cdigo necessrio para usar CSS em um documento HTML. Muitas das propriedades usadas em Cascading Style Sheets (CSS) so semelhantes quelas do HTML. Assim, se voc est acostumado a usar HTML para layout ir reconhecer muitos dos cdigos que usaremos. Vamos dar uma olhada em um exemplo concreto.
A sintaxe bsica das CSS
Suponha que desejamos uma cor de fundo vermelha para a pgina web: Usando HTML podemos fazer assim: <body bgcolor="#FF0000"> Com CSS o mesmo resultado ser obtido assim: body {background-color: #FF0000;}
Como voc pode notar os cdigos HTML e CSS so mais ou menos parecidos. O exemplo acima serve tambm para demonstrar o fundamento do modelo CSS:
Mas, onde colocar o cdigo CSS? isto que veremos a seguir. Aplicando CSS a um documento HTML Voc pode aplicar CSS a um documento de trs maneiras distintas. Os trs mtodos de aplicao esto exemplificados a seguir. Recomendamos que voc foque no terceiro mtodo, ou seja o mtodo externo. Mtodo 1: In-line (o atributo style) Uma maneira de aplicar CSS pelo uso do atributo style do HTML. Tomando como base o exemplo mostrado anteriormente a cor vermelha para o fundo da pgina pode ser aplicada conforme mostrado a seguir: <html> <head> <title>Exemplo</title> </head> <body style="background-color: #FF0000;">
<p>Esta uma pgina com fundo vermelho</p> </body> </html> Mtodo 2: Interno (a tag style) Outra maneira de aplicar CSS e pelo uso da tag <style> do HTML. Como mostrado a seguir: <html> <head> <title>Exemplo</title> <style type="text/css">
body {background-color: #FF0000;} </style> </head> <body> <p>Esta uma pgina com fundo vermelho</p>
</body> </html> Mtodo 3: Externo (link para uma folha de estilos)
O mtodo recomendado o de lincar para uma folha de estilos externa. Usaremos este mtodo nos exemplos deste tutorial. Uma folha de estilos externa um simples arquivo de texto com a extenso .css. Tal como com qualquer outro tipo de arquivo voc pode colocar uma folha de estilos tanto no servidor como no disco rgido. Vamos supor, por exemplo, que sua folha de estilos tenha sido nomeada de style.css e est localizada no diretrio style. Tal situao est mostrada a seguir:
O "truque" criar um link no documento HTML (default.htm) para a folha de estilos (style.css). O link criado em uma simples linha de cdigo HTMLcomo mostrado a seguir: <link rel="stylesheet" type="text/css" href="style/style.css" /> Notar que o caminho para a folha de estilos indicado no atributo href. Esta linha de cdigo deve ser inserida na seo header do documento HTML, isto , entre as tags <head> e </head>. Conforme mostrado abaixo:
Este link informa ao navegador para usar o arquivo CSS na renderizao e apresentao do layout do documento HTML. A coisa realmente inteligente disto que vrios documentos HTML podem lincar para uma mesma folha de estilos. Em outras palavras isto significa que um simples arquivo ser capaz de controlar a apresentao de muitos documentos HTML.
Esta tcnica pode economizar uma grande quantidade de trabalho. Se por exemplo, voc quiser trocar a cor do fundo de um site com 100 pginas, a folha de estilos evita que voc edite manualmente uma a uma as pginas para fazer a mudana nos 100 documentos HTML. Usando CSS a mudana se far em uns poucos segundos trocando-se a cor em uma folha de estilos central. Vamos praticar o que aprendemos. Faa voc mesmo Abra o Notepad (ou qualquer outro editor de texto que queira usar) e crie dois arquivos um arquivo HTML e um arquivo CSS com os seguintes contedos: default.htm <html> <head> <title>Meu documento</title> <link rel="stylesheet" type="text/css" href="style.css" />
</head> <body> <h1>Minha primeira folha de estilos</h1> </body> </html> style.css body { background-color: #FF0000; }
Salve os dois arquivos no mesmo diretrio. Lembre-se de salvar os arquivos com a extenso apropriada (".css" e ".htm") Abra default.htm no seu navegador e veja uma pgina com o fundo vermelho. Parabns! Voc construiu sua primeira folha de estilos!
Lio 3b: Cores e fundos Nesta lio voc aprender como aplicar cores de primeiro plano e cores de fundo no seu website. Abordaremos ainda os mtodos avanados de controle e posicionamento de imagens de fundo. Sero explicadas as seguintes propriedades CSS: color background-color background-image background-repeat background-attachment background-position background Cor do primeiro plano: a propriedade 'color'
A propriedade color define a cor do primeiro plano de um elemento. Considere, por exemplo, que desejamos que todos os cabealhos de primeiro nvel no documento sejam na cor vermelha. O elemento HTML que marca tais cabealhos o elemento <h1>. O cdigo a seguir define todos os <h1> na cor vermelha.
h1 { color: #ff0000; }
Ver exemplo As cores podem ser definidas pelo seu valor hexadecimal como no exemplo acima (#ff0000), com uso do nome da cor ("red") ou ainda pelo seu valor rgb (rgb(255,0,0)). A propriedade 'background-color'
A propriedade background-color define a cor do fundo de um elemento. O elemento <body> contm todo o contedo de um documento HTML. Assim, para mudar a cor de fundo da pgina, devemos aplicar a propriedade background-color ao elemento <body>. Voc pode aplicar cores de fundo para outros elementos, inclusive para cabealhos e textos. No exemplo abaixo foram aplicadas diferentes cores de fundo para os elementos <body> e <h1>. body { background-color: #FFCC66; }
h1 { color: #990000; background-color: #FC9804;
}
Ver exemplo Notar que foram aplicadas duas propriedades ao elemento <h1> separadas por um ponto e vrgula. Images de fundo [background-image]
A propriedade CSS background-image usada para definir uma imagem de fundo. Usaremos a imagem de uma borboleta para exemplificar a aplicao de imagens de fundo. Voc pode fazer o download da imagem mostrada abaixo e us-la nos seus experimentos (clique com o boto direito do mouse sobre a imagem e escolha "salvar imagem como") ou voc poder usar uma outra imagem qualquer ao seu gosto. Para inserir uma imagem de fundo na pgina basta aplicar a propriedade background-image ao elemento <body> e especificar o caminho para onde est gravada a imagem.
body { background-color: #FFCC66; background-image: url("butterfly.gif"); }
h1 { color: #990000; background-color: #FC9804; } Ver exemplo NB: Notar como foi especificado o caminho para a imagem usando url("butterfly.gif"). Isto significa que a imagem est localizada no mesmo diretrio da folha de estilos. Pode ser escolhido um outro diretrio para gravar as imagens e o caminho seria url("../images/butterfly.gif") ou at mesmo hosped-la na Internet: url("http://www.html.net/butterfly.gif"). Imagem de fundo repetida [background-repeat] No exemplo anterior voc observou que a imagem da borboleta repetiu tanto na vertical como na horizontal cobrindo toda a tela? A propriedade background-repeat controla o comportamento de repetio da imagem de fundo. A tabela a seguir mostra os quatro diferentes valores para background-repeat. Value Description Example Background-repeat: repeat-x A imagem se repete na horizontal Ver exemplo background-repeat: repeat-y A imagem se repete na vertical Ver exemplo background-repeat: repeat A imagem se repete na tanto na horizontal como na vertical Ver exemplo background-repeat: no- repeat A imagem no se repete Ver exemplo Por exemplo, o cdigo mostrado a seguir para que a imagem no se repita na tela: body { background-color: #FFCC66; background-image: url("butterfly.gif"); background-repeat: no-repeat; }
h1 { color: #990000; background-color: #FC9804; } Ver exemplo Image de fundo fixa [background-attachment]
A propriedade background-attachment define se a imagem ser fixa ou se ir rolar juntamente com o elemento que a contm. Uma imagem de fundo fixa permanece no mesmo lugar e no rola com a tela ao contrrio da imagem que no fixa e rola acompanhando o contedo da tela. A tabela a seguir mostra os quatro diferentes valores para background-attachment. Veja os exemplos para constatar a diferena entre imagem fixa e imegem que rola.
Value Description Example Background-attachment: scroll A imagem rola com a pgina Ver exemplo Background-attachment: fixed A imagem fixa Ver exemplo Por exemplo, o cdigo abaixo fixa a imagem na tela. body { background-color: #FFCC66; background-image: url("butterfly.gif"); background-repeat: no-repeat; background-attachment: fixed; }
h1 { color: #990000; background-color: #FC9804; } Ver exemplo Posio da imagem de fundo [background-position]
Por padro uma imagem de fundo posicionada no canto superior esquerdo da tela. A propriedade background-position permite alterar este posicionamento padro e colocar a imagem em qualquer lugar na tela. Existem vrias maneiras de definir o posicionamento da imagem na tela definindo valores para background-position. Todas elas se utilizam de um sistema de coordenadas. Por exemplo, os valores '100px 200px' posiciona a imagem a 100px do topo e a 200px do lado esquerdo da janela do navegador. As coordenadas podem ser expressas em percentagem da largura da janeja, em unidades fixas (pixels, centmetros, etc.) ou pode-se usar as palavras top, bottom, center, left e right. A figura a seguir ilustra o modelo de coordenadas:
Na tabela a seguir so mostrados alguns exemplos. Value Description Example background-position: 2cm 2cm A imagem posicionada a 2 cm da esquerda e 2 cm para baixo na pgina Ver exemplo background-position: 50% 25% A imagem centrada na horizontal e a um quarto (25%) para baixo na pgina Ver exemplo background-position: top right A imagem posicionada no canto superior direito da pgina Ver exemplo No exemplo de cdigo a seguir a imagem posicionada no canto inferior direito da pgina: body { background-color: #FFCC66; background-image: url("butterfly.gif"); background-repeat: no-repeat; background-attachment: fixed; background-position: right bottom; }
A propriedade background uma abreviao para todas as propriedades listadas anteriormente. Com background voc declara vrias propriedades de modo abreviado, economizando digitao e alguns bites, alm de tornar a folha de estilo mais fcil de se ler e entender. Por exemplo, observe as cinco linhas a seguir:
Usando background voc consegue o mesmo resultado, abreviando como mostrado abaixo: background: #FFCC66 url("butterfly.gif") no-repeat fixed right bottom; A declarao abreviada deve seguir a seguinte ordem: [background-color] | [background-image] | [background-repeat] | [background- attachment] | [background-position] Se uma das propriedades no for declarada ela assume automaticamente o seu valor default. Por exemplo, a propriedade background-attachment ebackground-position no foram declaradas no cdigo mostrado a seguir: background: #FFCC66 url("butterfly.gif") no-repeat; As duas propriedades no declaradas assumiro o valor default que como voc j sabe so: a imagem rola na tela e ser posicionada no canto superior esquerdo (que so os valores default para as propriedades no declaradas).
Lio 4b: Fontes Nesta lio estudaremos as fontes e como aplic-las usando CSS. Veremos como criar situaes para que determinada fonte seja visualizada pelo usurio mesmo no estando instalada em seu sistema operacional. Descreveremos as seguintes propriedades CSS:
font-family font-style font-variant font-weight font-size font
Famlia de fontes [font-family]
A propriedade font-family usada para definir uma lista de fontes e sua prioridade para apresentao de um elemento em uma pgina. Se a primeira fonte da lista no estiver instalada na mquina do usurio, dever ser usada a segunda e assim por diante at ser encontrada uma fonte instalada. Existem dois tipos de nomes para definir fontes: nomes para famlias de fontes e nomes para famlias genricas. Os dois so explicados a seguir:
nome para famlias de fontes Exemplos para este tipo (normalmente conhecidas como "font") so "Arial", "Times New Roman" ou "Tahoma".
nome para famlias genricas Famlias genricas so fontes que pertencem a um grupo com aparncia uniforme. Um exemplo so as fontes sans-serif que englobam a coleo de fontes que "no tm p". A diferena est mostrada na figura a seguir:
Ao listar fontes para seu website, comece com aquela preferida, seguindo-se algumas alternativas para ela. recomendvel encerrar a listagem das fontes com uma fonte genrica. Assim fazendo, em ltimo caso a pgina ser renderizada com fonte da mesma famlia das que foram especificadas quando todas as demais estiverem indisponveis na mquina do usurio. A seguir mostramos um exemplo de listagem de fontes:
Ver exemplo Cabealhos <h1> sero renderizados com fonte "Arial". Se o usurio no tiver a font Arial instalada, ser usada a fonte "Verdana". Se ambas estiverem indisponveis na mquina do usurio ser usada uma fonte da famlia sans-serif. Notar que para especificar a fonte "Times New Roman" foram usadas aspas. Isto necessrio para fontes com nomes compostos e que contenham espaos entre os nomes. Estilo da fonte [font-style] A propriedade font-style define a escolha da fonte em normal, italic ou oblique. No exemplo a seguir todos as cabealhos <h2> sero em itlico.
Ver exemplo Fonte variante [font-variant] A propriedade font-variant usada para escolher as variantes normal ou small-caps. Uma fonte small-caps aquela que usa letras maisculas de tamanhos reduzidos. Confundiu? D uma olhada nos exemplos a seguir:
Se a propriedade font-variant for definida para small-caps e no estiver disponvel na mquina do usurio, ser usada fonte em maiscula.
Ver exemplo Peso da fonte [font-weight] A propriedade font-weight define quo negrito ou "pesada" deve ser renderizada a fonte. Uma fonte pode ser normal ou bold. Alguns navegadores suportam nmeros de 100-900 (em intervalos de 100 em 100) para definir o peso da fonte.
On tamanho da fonte definido pela propriedade font-size. Existem muitas unidades (p. ex.:. pixels e percentagens) que podem ser usadas para definir o tamanho da fonte. Neste tutorial ns usaremos as unidades mais comuns e apropriadas. Ver exemplos a seguir: h1 {font-size: 30px;} h2 {font-size: 12pt;} h3 {font-size: 120%;} p {font-size: 1em;}
Ver exemplo
Existe uma diferena fundamental entre as quatro unidades adotadas no exemplo acima. As unidades 'px' e 'pt' so absolutas, enquanto '%' e 'em' permitem ao usurio ajustar o tamanho das fontes ao seu gosto e necessidade. Muitos usurios tm restries, como por exemplo, pessoas idosas, pessoas com viso limitada ou as que usam um monitor de baixa qualidade. Para fazer seu site acessvel a todos, voc dever usar unidades como '%' ou 'em'. Abaixo uma figura mostrando como ajustar o tamanho das fontes nos navegadores Mozilla Firefox e Internet Explorer. Tente voc mesmo este ajuste uma excelente funcionalidade do navegador, no mesmo?
Compilando [font]
Usar font uma abreviao que permite definir vrias propriedades em uma s. Veja a seguir quatro linhas de cdigo usadas para definir propriedades de fonte para um pargrafo <p>:
Usar a abreviao simplifica o cdigo como mostrado abaixo:
p { font: italic bold 30px arial, sans-serif; }
A ordem dos valores para font a mostrada a seguir : font-style | font-variant | font-weight | font-size | font-family
Lio 5b: Textos Formatar e estilizar textos so um item chave para qualquer web designer. Nesta lio voc ser apresentado s interessantes oportunidades que as CSSproporcionam para adicionar layout aos textos. Sero discutidadas as propriedades listadas abaixo: text-indent text-align text-decoration letter-spacing text-transform Indentao de texto [text-indent] A propriedade text-indent permite que voc aplique um recuo primeira linha de um pargrafo. No exemplo a seguir um recuo de 30px aplicado todos os textos marcados com <p>:
p { text-indent: 30px; }
Ver exemplo Alinhamento de textos [text-align]
A propriedade text-align corresponde ao atributo align das antigas verses do HTML. Textos podem ser alinhados esquerda (left), direita (right) ou centrados (centred). E temos ainda o valor justify que faz com o texto contido em uma linha se estenda tocando as margens esquerda e direita. Este tipo de alinhamento usado em jornais e revistas. No exemplo a seguir o texto contido na clula de cabealho <th> alinhado direita e os contidos nas clulas de dados <td> so centrados. E, os textos normais em pargrafos so justificados:
th { text-align: right; }
td { text-align: center; }
p { text-align: justify; }
Ver exemplo
Decorao de textos [text-decoration]
A propriedade text-decoration possibilita adicionar "efeitos" ou "decorao" em textos. Voc pode por rexemplo, sublinhar textos, cortar o texto com uma linha, colocar uma linha sobre o texto, etc. No exemplo a seguir os cabealhos <h1> so sublinhados, os cabealhos <h2> levam um linha em cima e os cabealhos <h3> so cortados por uma linha.
h1 { text-decoration: underline; }
h2 { text-decoration: overline; }
h3 { text-decoration: line-through; }
Ver exemplo Espao entre letras [letter-spacing] O espaamento entre os caracteres de um texto controlado pela propriedade letter-spacing. O valor desta propriedade define o espao entre os caracteres. Por exemplo, se voc deseja um espao de 3px entre as letras do texto de um pargrafo <p> e de 6px entre as letras do texto de um cabealho <h1> o cdigo a seguir dever ser usado.
h1 { letter-spacing: 6px; }
p { letter-spacing: 3px; }
Ver exemplo Transformao de textos [text-transform]
A propriedade text-transform controla a capitalizao (tornar maiscula) do texto. Voc pode escolher capitalize, uppercase ou lowercaseindependentemente de como o texto foi escrito no cdigo HTML. Como exemplo, tomamos a palavra "cabealho" que pode ser apresentada ao usurio como "CABEALHO" ou "Cabealho". So quatro os valores possveis para text-transform:
Capitalize - Capitaliza a primeira letra de cada palavra. Por exemplo: "john doe" transforma-se para "John Doe". Uppercase - Converte todas as letras para maiscula. Por exemplo: "john doe" transforma-se para"JOHN DOE". Lowercase - Converte todas as letras para minscula. Por exemplo: "JOHN DOE" transforma-se para"john doe". None - Sem trasformaes - o texto apresentado como foi escrito no cdigo HTML.
Para exemplificar vamos usar uma lista de nomes. Os nomes esto marcados com o elemento <li> (item de lista). Vamos supor que desejamos os nomes capitalizados e os cabealhos em letras maisculas. Ao consultar o exemplo sugerido para este cdigo d uma olhada no HTML da pgina e observe que os textos no cdigo foram escritos com todas as letras em minsculas.
h1 { text-transform: uppercase; }
li { text-transform: capitalize; }
Ver exemplo
Lio 6b: Links Voc pode aplicar aos links tudo que aprendeu nas lies anteriores (i.e. mudar cores, fontes, sublinhados, etc). A novidade aqui que voc pode definir as propriedades de maneira diferenciada de acordo com o estado do link ou seja visitado, no visitado, ativo ou com o ponteiro do mouse sobre o link. Isto possibilita adicionar interessantes efeitos ao seu website. Para estilizar estes efeitos voc usar as chamadas pseudo-classes.
O que pseudo-classe?
Uma pseudo-classe permite estilizar levando em conta condies diferentes ou eventos ao definir uma propriedade de estilo para uma tag HTML. Vamos ver um exemplo. Como voc j sabe, links so marcados no HTML com tags <a>. Podemos ento usar a como um seletor CSS: a { color: blue; }
Um link pode ter diferentes estados. Por exemplo, pode ter sido visitado ou no visitado. Voc usar pseudo-classes para estilizar links visitados e no visitados.
a:link { color: blue; }
a:visited { color: red; }
Use as pseudo-classes a:link e a:visited para estilizar links no visitados e visitados respectivamente. Links ativos so estilizados com a pseudo-classe a:active e a:hover, esta ltima a pseudo-classe para links com o ponteiro do mouse sobre ele. A seguir explicaremos com mais detalhes e exemplificao, as quatro pseudo-classes. Pseudo-classe: link
A pseudo-classe :link usada para links no visitados. No exemplo a seguir links no vistados sero na cor verde. a:link { color: green; }
Ver exemplo Pseudo-classe: visited A pseudo-clases :visited usada para links visitados. No exemplo a seguir links visitados sero na cor amarela:
a:visited { color: yellow; }
Ver exemplo Pseudo-classe: active
A pseudo-classe :active usada para links ativos. No exemplo a seguir links ativos tero seu fundo na cor vermelha:
a:active { background-color: red; } Ver exemplo Pseudo-classe: hover
A pseudo-classe :hover usada para quando o ponteiro do mouse est sobre o link. Isto pode ser usado para conseguir efeitos bem interessantes. Por exemplo, podemos mudar a cor do link para laranja e o texto para itlico quando o ponteiro do mouse passa sobre ele, o cdigo CSS para estes efeitos o mostrado a seguir: a:hover { color: orange; font-style: italic; } Ver exemplo Exemplo 1: Efeito quando o ponteiro est sobre o link
comum a criao de efeitos diferentes quando o ponteiro est sobre o link. Veremos a seguir alguns exemplos extras de estilizao da pseudo-classe:hover.
Exemplo 1a: Espaamento entre as letras
Como voc deve estar lembrado da Lio 5, o espaamento entre as letras de um texto pode ser controlado pela propriedade letter-spacing. Isto pode ser aplicado aos links para obter um efeito interessante:
Ver exemplo Exemplo 1b: UPPERCASE e lowercase Na Lio 5 vimos a propriedade text-transform, para estilizar com letras maisculas e minsculas. Isto pode ser usado para estilizar links: a:hover { text-transform: uppercase; font-weight:bold; color:blue; background-color:yellow; } Ver exemplo Os exemplos mostrados do uma idia das inmeras possibilidades de combinao de diferentes propriedades. Voc pode criar seus prprios efeitos faa uma tentativa! Exemplo 2: Removendo sublinhado dos links
Uma pergunta comum: Como remover o sublinhado dos links? Voc deve estudar com muito cuidado a necessidade de retirar o sublinhado dos links, pois isto poder reduzir significativamente a usabilidade do website. As pessoas esto acostumadas com links na cor azul e sublinhados e sabem que ali h um texto a ser clicado. At minha me sabe disto! Se voc muda a cor e retira o sublinhado dos links, poder confundir seus visitantes e em consequncia no retirar o mximo dos contedos do seu website. Feita esta ressalva, muito fcil retirar o sublinhado dos links. Conforme explicado na Lio 5, a propriedade text-decoration pode ser usada para definir se o texto ou no sublinhado. Para remover o sublinhado, basta definir o valor none para a propriedade text-decoration.
a { text-decoration:none;
}
Alternativamente, voc pode definir text-decoration juntamente com outras propriedades para as quatro pseudo-classes.
Lio 7b: Identificando e agrupando elementos (classes e id) Em alguns casos voc deseja aplicar estilos a um elemento ou grupo de elementos em particular. Nesta lio veremos como usar class e id para estilizar elementos. Como definir uma cor para um determinado cabealho, diferente da cor usada para os demais cabealhos do website? Como agrupar links em diferentes categorias e estilizar cada categoria diferentemente? Estas so algumas das questes que iremos responder nesta lio.
Agrupando elementos com uso de classe
Vamos supor que temos duas listas de links para diferentes tipos de uvas usadas na produo de vinho branco e de vinho tinto. O cdigo HTML conforme mostrado abaixo:
Ver exemplo Queremos que os links para vinho branco sejam na cor amarela, para vinho tinto na cor vermelha e os demais links na pgina permaneam na cor azul. Para conseguir isto, dividimos os links em duas categorias. Isto feito atribuindo uma classe para cada link, usando o atributo class. Vamos especificar esta classe no exemplo a seguir:
Agora podemos definir propriedades especficas para links pertencentes as classes whitewine e redwine, respectivamente. a { color: blue; }
a.whitewine { color: #FFBB00; }
a.redwine { color: #800000; } Ver exemplo Como mostrado no exemplo acima, pode-se definir propriedades para estilizao dos elementos pertencentes a uma determinada classe usando um.nomedaclasse na folha de estilos do documento. Identificando um elemento com uso de id
Alm de agrupar elementos podemos querer atribuir identificao a um nico elemento. Isto feito usando o atributo id. O que h de especial no atributo id que no poder existir dois ou mais elementos com o mesmo id, ou seja, em um documento apenas um e somente um elemento poder ter uma determinada id. Cada id nico. Para casos em que haja necessidade de mais de um elemento com a mesma identificao usamos o atributo class. A seguir um exemplo de possvel uso de id: <h1>Captulo 1</h1> ... <h2>Captulo 1.1</h2> ... <h2>Captulo 1.2</h2> ... <h1>Captulo 2</h1> ... <h2>Captulo 2.1</h2> ... <h3>Captulo 2.1.2</h3> ...
O exemplo acima simula os cabealhos de um documento estruturado em captulos e pargrafos. comum atribuir uma id para cada captulo como mostrado a seguir: <h1 id="c1">Captulo 1</h1> ... <h2 id="c1-1">Captulo 1.1</h2> ... <h2 id="c1-2">Captulo 1.2</h2> ... <h1 id="c2">Captulo 2</h1> ... <h2 id="c2-1">CCaptulo 2.1</h2> ... <h3 id="c2-1-2">Captulo 2.1.2</h3> ... Vamos supor que o cabealho do captulo 1.2 deva ser na cor vermelha. Isto pode ser feito conforme mostrado na folha de estilo a seguir: #c1-2 { color: red; }
Ver exemplo Como mostrado no exemplo acima, podemos definir propriedades para um elemento especfico usando um seletor #id na folha de estilos para o documento.
Lio 8b: Agrupando elementos (span e div) Os elementos <span> e <div> so usados para agrupar e estruturar um documento e so freqentemente usados em conjunto com os atributos class e id. Nesta lio veremos com detalhes o uso dos elementos HTML <span> e <div> no que se refere a sua vital importncia para as CSS. Agrupando com <span> Agrupando com<div>
Agrupando com <span>
O elemento <span> um elemento neutro e que no adiciona qualquer tipo de semntica ao documento. Contudo, <span> pode ser usado pelas CSS para adicionar efeitos visuais a partes especficas do texto no seu documento. Um exemplo deste uso mostrado na citao abaixo de autoria de Benjamin Franklin: <p>Dormir cedo e acordar cedo faz o homem saudvel, rico e sbio.</p> Vamos supor que queremos enfatizar na cor vermelha os benefcios apontados por Mr. Franklin pelo fato de no se passar o dia dormindo. Para isto marcamos os benefcios com <span>. A cada span atribumos uma class, e estilizamos na folha de estilos: <p>Dormir cedo e acordar cedo faz o homem <span class="benefit">saudvel</span>, <span class="benefit">rico</span> e <span class="benefit">sbio</span>.</p>
A folha de estilos: span.benefit { color:red; }
Ver exemplo
claro que voc pode usar id para estilizar o elemento <span>. Mas, como voc deve estar lembrado, dever usar uma nica id para cada um os trs elementos <span>, conforme foi explicado na lio anterior. Agrupando com <div>
Enquanto <span> usado dentro de um elemento nvel de bloco como vimos no exemplo anterior, <div> usado para agrupar um ou mais elementos nvel de bloco. Diferenas parte, o agrupamento com <div> funciona mais ou menos da mesma maneira. Vamos ver um exemplo tomando duas listas de presidentes dos Estados Unidos agrupados segundo suas filiaes polticas: <div id="democrats"> <ul> <li>Franklin D. Roosevelt</li> <li>Harry S. Truman</li> <li>John F. Kennedy</li> <li>Lyndon B. Johnson</li> <li>Jimmy Carter</li> <li>Bill Clinton</li> </ul> </div>
<div id="republicans"> <ul> <li>Dwight D. Eisenhower</li> <li>Richard Nixon</li> <li>Gerald Ford</li> <li>Ronald Reagan</li> <li>George Bush</li> <li>George W. Bush</li> </ul> </div>
E na folha de estilos, podemos agrupar a estilizao da mesma maneira como fizemos no exemplo acima: #democrats { background:blue; }
#republicans { background:red; } Ver exemplo Nos exemplos mostrados acima usamos somente <div> e <span> para simples estilizaes, tais como cores de textos e de fundos. Contudos estes dois elementos possibilitam estilizaes bem mais avanadas como veremos adiante nas lies deste tutorial.
Lio 9b: O box model O box model (modelo das caixas) em CSS, descreve os boxes (as caixas) geradas pelos elementos HTML. O box model, detalha ainda, as opes de ajuste de margens, bordas, padding e contedo para cada elemento. Abaixo apresentamos um diagrama representando a estrutura de construo do box model: O box model em CSS
A ilustrao acima terica. Vamos explic-la na prtica tomando como base um cabealho e um texto. O HTML para nosso exemplo (o texto foi retirado da Declarao Universal dos Direitos Humanos e est no original em ingls) o mostrado abaixo: <h1>Article 1:</h1>
<p>All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood</p> Definindo estilos para cores e fontes o exemplo pode ser apresentado como a seguir:
O exemplo contm dois elementos: <h1> e <p>. O box model para os dois elementos mostrado a seguir:
Embora possa parecer um pouco complicado, a ilustrao mostra como cada um dos elementos contido em um box (uma caixa). Boxes que podem ser ajustados e controlados via CSS.
Lio 10: Margin e padding Na lio anterior vimos o box model. Nesta lio veremos como controlar a apresentao de um elemento definindo as propriedades margin e padding. Definindo margin de um elemento Definindo padding de um elemento Definindo margin de um elemento Um elemento tem quatro lados: right, left, top e bottom (direito, esquerdo, superior e inferior). A margin a distncia entre os lados de elementos vizinhos (ou s bordas do documento). Ver o diagrama mostrado na lio 9. Vamos comear com um exemplo mostrando como definir margins para o documento, ou seja, para o elemento <body>. A ilustrao a seguir mostra como sero as margens da pgina. As CSS so mostradas abaixo: body { margin-top: 100px; margin-right: 40px; margin-bottom: 10px; margin-left: 70px; } Ou, adotando uma sintaxe mais elegante: body { margin: 100px 40px 10px 70px; } Ver exemplo As margens para a maioria dos elementos pode ser definida conforme o exemplo acima. Podemos ento, por exemplo, definir margens para todos os pargrafos <p>: body { margin: 100px 40px 10px 70px; }
p { margin: 5px 50px 5px 50px; } Ver exemplo Definindo padding de um elemento
Padding pode tambm ser entendido como "enchimento". Isto faz sentido, porque padding no computado na distncia entre elementos, padding define simplesmente a distncia entre a borda e o contedo do elemento. Ilustramos o uso de padding atravs de um exemplo onde todos os cabealhos tm uma cor de fundo definida:
h1 { background: yellow; }
h2 { background: orange; }
Ver exemplo Definindo padding para os cabealhos, alteramos a quantidade de enchimento existente ao redor de cada um deles: h1 { background: yellow; padding: 20px 20px 20px 80px; }
h2 { background: orange; padding-left:120px; } Ver exemplo
Lio 11b: Bordas Bordas podem ser usadas para muitas coisas, por exemplo, como elemento decorativo ou para servir de linha de separao entre duas coisas. CSSproporciona infinitas possibilidades de uso de bordas na pgina. border-width border-color border-style Exemplos de definio de bordas border A espessura das bordas [border-width] A espessura das bordas definida pela propriedade border-width, que pode assumir os valores thin, medium, e thick (fina, mdia e grossa), ou um valor numrico em pixels. A figura a seguir ilustra algumas espessuras de bordas:
As cores das bordas [border-color]
A propriedade border-color define as cores para as bordas. Os valores so expressos em cdigo ou nome de cores, por exemplo, "#123456", "rgb(123,123,123)" ou"yellow" . Tipos de bordas [border-style] Existem vrios tipos de bordas disponveis para escolha. A seguir apresentamos 8 tipos diferentes de bordas e como elas so renderizadas Internet Explorer 5.5. Todos os exemplos so mostrados na cor "gold" e com espessura "thick", mas voc pode usar qualquer cor e espessura ao seu gosto. Os valores none ou hidden podem ser usados quando no se deseja a existncia de bordas.
Exemplos de definio de bordas As trs propriedades explicadas acima podem ser definidas juntas para cada elemento e resultam em diferentes bordas. Para exemplificar, foram estilizadas diferentes bordas para os elementos <h1>, <h2>, <ul> e <p>. O resultado pode no ser uma obra prima, mas, ilustra bem algumas das inmeras possibilidades de estilizao de bordas: h1 { border-width: thick; border-style: dotted; border-color: gold; }
p { border-width: 1px; border-style: dashed; border-color: blue; }
ul { border-width: thin; border-style: solid; border-color: orange; } Ver exemplo possvel ainda definir propriedades especialmente para as bordas top, bottom, right ou left (superior, inferior, direita e esquerda). Veja o exemplo a seguir: h1 { border-top-width: thick; border-top-style: solid; border-top-color: red;
Assim como para muitas outras propriedades, voc pode usar uma declarao abreviada para bordas. Vamos a um exemplo: p { border-width: 1px; border-style: solid; border-color: blue; }
Pode ser abreviada assim: p { border: 1px solid blue; }
Lio 12b: Altura e largura At agora ainda no fizemos qualquer considerao sobre as dimenses dos elementos com que trabalhamos. Nesta lio veremos como fcil atribuir uma altura e uma largura para um elemento. width height Atribuindo largura [width]
A propriedade width destina-se a definir a largura de um elemento. O exemplo a seguir constri um box dentro do qual podemos digitar um texto: div.box { width: 200px; border: 1px solid black; background: orange; } Ver exemplo Atribuindo altura [height]
No exemplo acima a altura ser determinada pelo contedo inserido no box. Voc pode definir a altura de um elemento com a propriedade height. Como exemplo, vamos fazer a altura do box anterior igual a 500px: div.box { height: 500px; width: 200px; border: 1px solid black; background: orange; } Ver exemplo
Lio 13b: Flutuando elementos (floats) Um elemento pode ser 'flutuado' esquerda ou direita com uso da propriedade float. Isto significa que o box e seu contedo so deslocados para a direita ou para a esquerda do documento (ou do bloco container) (ver Lio 9 para descrio do Box Model). A figura a seguir ilustra o princpio de float:
Se desejarmos que um texto seja posicionado em volta de uma figura como mostrado abaixo, basta flutuarmos a imagem:
Como isto feito?
O HTML para o exemplo acima mostrado a seguir: <div id="picture"> <img src="bill.jpg" alt="Bill Gates"> </div>
<p>causas naturales et antecedentes, idciro etiam nostrarum voluntatum...</p>
Para conseguir o efeito mostrado, basta definir uma largura para o box que o contm e declarar para ele float: left; #picture { float:left; width: 100px; }
Ver exemplo
Outro exemplo: colunas
Floats podem ser usados para construir colunas em um documento. Para criar as colunas estruturamos as colunas no cdigo HTML usando <div>como mostrado a seguir: <div id="column1"> <p>Haec disserens qua de re agatur et in quo causa consistat non videt...</p> </div>
<div id="column2"> <p>causas naturales et antecedentes, idciro etiam nostrarum voluntatum...</p> </div>
<div id="column3"> <p>nam nihil esset in nostra potestate si res ita se haberet...</p> </div> A seguir definimos a largura de cada coluna, por exemplo 33%, e declaramos float: left; para cada uma das colunas: #column1 { float:left; width: 33%; }
#column2 { float:left; width: 33%; }
#column3 { float:left; width: 33%; } Ver exemplo Float pode ser declarado left, right ou none. A propriedade clear
A propriedade clear usada para controlar o comportamento dos elementos que se seguem aos elementos floats no documento. Por padro, o elemento subsequente a um float, ocupa o espao livre ao lado do elemento flutuado. Veja no exemplo acima que o texto deslocou-se automaticamente para o lado da foto de Bill Gates. A propriedade clear pode assumir os valores left, right, both ou none. A regra geral : se clear, for, por exemplo, definido both para um box, a margem superior deste box ser posicionada sempre abaixo da margem inferior dos boxes flutuados que estejam antes dele no cdigo. <div id="picture"> <img src="bill.jpg" alt="Bill Gates"> </div>
<h1>Bill Gates</h1>
<p class="floatstop">causas naturales et antecedentes, idciro etiam nostrarum voluntatum...</p> Para evitar que o texto se posicione no espao livre deixado pela foto do Bill Gates basta adicionar a seguinte regra CSS:
#picture { float:left; width: 100px; }
.floatstop { clear:both; }
Ver exemplo
Lio 14b: Posicionando elementos Com posicionamento CSS podemos colocar um elemento em uma posio exata na pgina. Combinado com floats (ver lio anterior), o posicionamento abre muitas possibilidades para criao de layouts precisos e avanados. Nesta lio veremos os seguintes itens: O Princpio de Posicionamento CSS Posicionamento Absoluto Posicionamento Relativo O Princpio de Posicionamento CSS Considere a janela do navegador como um sistema de coordenadas:
O princpio de posicionamento CSS estabelece que voc possa posicionar um elemento em qualquer lugar na tela usando um sistema de coordenadas. Vamos supor que queremos posicionar um cabealho. Usando o box model (ver Lio 9) o cabealho pode ser estilizado para ser apresentado como mostrado abaixo:
Se quisermos o cabealho posicionado a 100px do topo do documento e a 200px esquerda, podemos usar o seguinte CSS: h1 { position:absolute; top: 100px; left: 200px; }
O resultado mostrado a seguir:
Como voc pode ver, posicionar com CSS uma tcnica precisa para colocar elementos. muito mais fcil do que usar tabelas, imagens transparentes e tudo mais.
Posicionamento absoluto
Um elemento posicionado absolutamente no cria nenhum espao no documento. Isto significa que no deixa nenhum espao vazio aps ser posicionado. Para posicionar um elemento de forma absoluta a propriedade position deve ser definida para absolute. Voc pode ento usar as propriedades left,right, top, e bottom para definir as coordenadas e posicionar o elemento. Para exemplificar o posicionamento absoluto escolhemos colocar quatro boxes nos quatro cantos da pgina: #box1 { position:absolute; top: 50px; left: 50px; }
Para posicionar um elemento de forma relativa a propriedade position deve ser definida para relative. A diferena entre os dois tipos de posicionamento a maneira como o posicionamento calculado. O posicionamento para posio relativa calculado com base na posio original do elemento no documento. Isto significa uma movimentao do elemento para a esquerda, para a direita, para cima ou para baixo. Assim fazendo o elemento ocupa um espao aps ser posicionado. Como exemplo de posicionamento relativo vai tentar posicionar trs imagens relativamente as suas posies originais na pgina. Notar como as imagens deixam um espao vazio nas suas posies originais no documento: #dog1 { position:relative; left: 350px; bottom: 150px; } #dog2 { position:relative; left: 150px; bottom: 500px; }
#dog3 { position:relative; left: 50px; bottom: 700px; } Ver exemplo
Lio 15b: Usando z-index (Layers)
CSS usa o espao tridimensional - altura, largura e profundidade. Nas lies anteriores vimos as duas primeiras dimenses. Nesta lio aprenderemos como colocar elementos em layers (camadas). Resumindo, camadas significam como os elementos se sobrepem uns aos outros. Para fazer isto definimos para cada elemento um nmero ndice (z-index). O comportamento que elementos com nmero ndice maiores se sobrepem queles com menor nmero. Vamos supor um royal flush no jogo de poker. As cartas podem ser apresentadas como se cada uma delas tivesse um z-index:
No caso mostrado, os nmeros ndice esto em uma sequncia direta (de 1-5), contudo o mesmo resultado poderia ser obtido com uso de 5 diferentes nmeros, no em sequncia. O que conta a cronologia dos nmeros (a ordem). O cdigo para a ilustrao das cartas mostrado a seguir: #ten_of_diamonds { position: absolute; left: 100px; top: 100px; z-index: 1; }
O mtodo simples, mas as possibilidades so muitas. Voc pode colocar imagens sobre textos, texto sobre texto, etc. Layers podem ser usados em muitas situaes. Tente, por exemplo, usar z-index para criar efeitos em cabealhos no lugar de usar imagens. Por um lado mais rpido carregar texto na pgina e por outro, texto mais amigvel aos dispositivos de indexao.
Lio 16b: Web-standards e validao W3C a sigla para World Wide Web Consortium, uma organizao independente que gerencia as normas para codificao na Internet (isto , HTML,CSS, XML e outros). Microsoft, Fundao Mozilla e muitas outras organizaes so membros do W3C e formam um consenso sobre o futuro desenvolvimento de normas. Se voc tem alguma experincia com web design, provavelmente sabe que h uma grande diferena na maneira como diferentes navegadores renderizam uma pgina. frustrante e requer um consumo de muito tempo, criar uma pgina que possa ser visualizada consistentemente no Mozilla, Internet Explorer, Opera e no restante dos navegadores existentes. A ideia da normatizao criar um consenso e encontrar um denominador comum para uso de tecnologias para a Web. Isto significa que seguindo as normas, um desenvolvedor ter a certeza de que sua criao ser tratada de maneira apropriada em diferentes plataformas. Assim, ns recomendamos que voc se beneficie do trabalho desenvolvido pelo W3C e valide sua CSS para estar em conformidade com as normas.
Validador CSS
Para facilitar a verificao aos preceitos das normas CSS, o W3C desenvolveu um validador que faz uma verificao da folha de estilos e retorna um relatrio com os eventuais erros e avisos caso sua CSS no valide. Para facilitar a validao da sua folha de estilos voc poder submet-la ao validador aqui mesmo nesta pgina. Na caixa de texto abaixo, substitua a URL existente pela URL da sua folha de estilos e clique no boto para validar. Voc ser informado pelo site do W3C se h erros na sua folha de estilos.
http://www.ht
Validar f olha de estilos
Se o validador no encontrar erros; ser mostrada uma imagem como a abaixo, que voc poder usar na sua pgina para anunciar que est usando um cdigo vlido:
O validador pode tambm ser encontrado neste link: http://jigsaw.w3.org/css-validator/
Introduo ao PHP
PHP possibilita a voc inserir funcionalidades avanadas no seu site. A finalidade deste tutorial fazer uma introduo clara e precisa do PHP. Iniciaremos do zero, mas necessrio que voc possua um bom conhecimento da linguagem HTML. Caso voc no conhea HTML recomendamos comear com a leitura do nosso Tutorial HTML. PHP pode ser usado em vrios contextos. - fruns de discusso, enquetes, lojas on-line, pontes SMS, listas de discusso, etc. A nica limitao para o uso do PHP a sua imaginao. No difcil aprender PHP, mas esteja ciente de que PHP mais sofisticado e exige mais do que o aprendizado da HTML. Assim, lembre-se que a pacincia no processo de aprendizado uma virtude. Obviamente este tutorial no vai lhe ensinar tudo sobre PHP. Ser necessrio seu engajamento efetivo e realizao de experimentos com os cdigos mostrados. Se voc necessitar de ajuda durante o processo de aprendizado recomendamos usar nossos fruns. L voc encontrar pessoas especializadas prontas para dar dicas, sugestes e conselhos.
O que necessrio?
Supe-se que voc tem acesso a um editor de texto sabe como us-lo. Voc precisa ter acesso a um computador ou a um servidor capaz de processar PHP. Ao contrrio do que ocorre com a HTML e as CSS, para PHP no faz a menor diferena o navegador que o usurio est usando, mas o importante o tipo de servidor na qual sua pgina est hospedada. Isto porque PHP uma tecnologia processada no lado do servidor. Nas lies seguintes voc aprender como o PHP funciona e como configurar seu computador para processar PHP. Em seguida voc aprender sobre funes e mtodos do PHP. Ao trmino deste tutorial voc estar em condies de desenvolver scripts PHP e em consequncia poder usar as ilimitadas funcionalidades da linguagem para adicionar interatividade s suas pginas web.
Lio 1: O que PHP
Quando se comea o estudo de PHP as primeiras perguntas so: O que PHP? Como ele funciona? Nesta lio daremos a resposta a estas duas perguntas. essencial que voc conhea as respostas antes de comear a desenvolver com PHP. O exato conhecimento do que e de como funciona o PHP servir de base para acelerar de forma significativa o seu processo de aprendizado.
O que PHP?
Inicialmente PHP foi um acrnimo para Personal Home Pages, mas posteriormente assumiu o significado de PHP: Hypertext Preprocessor. PHP foi criado por Rasmus Lerdorf nascido na Groelndia - Dinamarca e posteriormente comeou a ser desenvolvido como cdigo livre. PHP no um Padro Web - uma tecnologia de cdigo aberto. PHP no uma linguagem de programao no sentido estrito da palavra, mas sim uma tecnologia que permite a insero de scripts nos seus documentos. A descrio sumria do que seja uma pgina PHP que se trata de um arquivo gravado com a extenso .php contendo tags HTML e scripts que so executados em um servidor web.
Como funciona o PHP?
A melhor maneira de explicar como o PHP funciona comparando-o com a HTML. Suponha que voc digite o endereo de um documento HTML (por exemplo: http://www.meusite.com/page.htm) na barra de endereos do navegador. Esta ao desencadeia a requisio de uma pgina HTML. A requisio ilustrada conforme a figura a seguir:
Como voc pode observar o servidor simplesmente envia uma pgina HTML ao cliente. Suponha agora que voc digita http://www.meusite.com/page.php - requisitando uma pgina PHP - o servidor inicia seu trabalho de processamento:
O servidor l cuidadosamente o arquivo PHP procurando por tarefas a serem por ele executadas. Somente depois de executar eventuais tarefas o resultado enviado ao cliente. importante ressaltar que o cliente recebe e v somente o resultado do trabalho do servidor e no as instrues para executar o trabalho. Se voc clicar a funcionalidade do navegador para inspecionar o cdigo fonte de uma pgina PHP voc no ver cdigo PHP - ver somente as tags HTML e seus contedos. Assim, no possvel visualizar os scripts PHP inseridos em uma pgina inspecionando o cdigo fonte da pgina. Voc ter que aprender PHP de outras maneiras, por exemplo: lendo nosso tutorial. Neste tutorial voc aprender como escrever comandos para serem executados pelo servidor! Ento, a primeira coisa que voc precisa ... um servidor! Mas, no se apavore - voc no precisar comprar um novo computador. Voc precisa simplesmente instalar um software no seu computador que far com que ele funcione como um servidor. Outra opo ter um site hospedado em um servidor que suporte PHP. Neste caso voc precisa estar on-line enquanto codifica.
Lio 2c: Servidores
PHP uma tecnologia que funciona no lado do servidor. Ento, voc precisa de um servidor para processar PHP. Voc no desembolsar um tosto para dispor de um servidor e existem vrias opes para obter um. Esta lio mostra trs opes para voc dispor de um servidor. Nela faremos uma breve introduo s trs opes (escolha a opo que melhor atenda s suas necessidades). Depois que o seu servidor estiver instalado e funcionando poderemos passar para a lio 3 na qual voc criar sua primeira pgina PHP.
Opo 1: Servidor remoto de hospedagem
A primeira escolha hospedar seu site em um servidor de hospedagem que suporte PHP. Teste para verificar se o servidor suporta PHP Se voc ainda no dispe de um servidor remoto pode criar uma conta gratuita 000webhost.com que suporta PHP.
Opo 2: Instalao de PHP no seu computador
No existe uma receita de bolo para instalar PHP em um computador. Esta opo recomendada para usurios com experincia, mas usurio comum no est impedido de escolh-la. Basta seguir as instrues para download e instalao (em ingls) contidas nos links a seguir:
Guia de instalao no Windows Guia de instalao no Mac Guia de instalao no Linux
Opo 3: XAMPP
XAMPP um programa que habilita PHP no computador sem necessidade de instalao complicada pelo usurio. indicado para usurios comuns. Aprenda como instalar XAMPP
Lio 2c-2: Instalao de XAMPP
Download Faa o download de XAMPP em um dos links a seguir (instrues em ingls): Download e instalao de XAMPP em Windows Download e instalao de XAMPP em Mac Download e instalao de XAMPP em Linux Instalao
Para instalar basta seguir as instrues de instalao que aparecem na tela durante o processo de instalao. Observe a seguir os screenshots tomados para a instalao em Windows.
1. Escolha fazer download do "Installer" no site do XAMPP:
2. Execute o arquivo e escolha C:\xampp como local de instalao:
3. Voc no precisa fazer nenhuma escolha em "Service Sections":
4. Clique "Finish" assim que o processo de instalao terminar:
Depois que XAMPP tiver sido instalado voc pode iniciar o servidor e dever salvar seus futuros documentos PHP em c:\xampp\htdocs no seu computador. O acesso aos arquivos em um navegador se far no endereo http://localhost.
Teste
Para verificar se o XAMPP est funcionando corretamente siga os passos a seguir:
1. Abra XAMPP no Painel de Controle 2. Inicie o servidor Apache e o MySql:
3. Crie um arquivo no Notepad (ou em um editor de texto qualquer) e grave-o com o nome test.php (notar que a extenso deve ser ".php" e no ".htm"). 4. Escreva o seguinte cdigo no arquivo: <?php echo "Hello World!"; ?> 5. Grave o arquivo em "c:\xampp\htdocs". 6. Abra o arquivo no navegador digitando o seguinte endereo: http://localhost/test.php.
Se aparecer no navegador "Hello World!" a instalao foi bem sucedida e voc est pronto para executar PHP no seu computador. Caso contrrio, visite o site do XAMPP para obter informaes a respeito ou v ao frum de suporte e relate o problema.
Problemas mais comuns
O servidor Apache no inicia
Se o servidor Apache no inicia provvel que outra aplicao esteja usando a porta 80. Na maioria dos casos o Skype ou o Microsoft IIS. Se voc usa Skype: inicie o Skype, selecione Tools > Options > Connections e desmarque o uso da porta 80 como porta alternativa. Feche e reinicie o Skype. Se voc tem instalado o IIS: Consulte este link e desative o Internet Information Server (IIS). Se isto no resolver procure pelo programa que est usando a porta 80:
1. Abra o prompt de comando (Start > Run > cmd). 2. Digite: netstat -aon 3. Voc ver uma lista de endereos de IP, nmero de portas e IDs de processos (PID). 4. Procure a linha contendo: 127.0.0.1:80 anote o ID de processo. 5. Abra o gerenciador de tarefas (Start > Run > taskmgr). 6. V para a aba Process, clique View > Select Columns... 7. Marque PID (Process Identifier) 8. Procure o processo que tem o mesmo ID de processo que voc anotou anteriormente em netstat e feche o programa.
Lio 3c: Sua primeira pgina PHP
Nas lies 1 e 2 aprendemos o que PHP e instalamos um servidor ou vamos usar um servidor remoto para seguir nossas lies. Assim, estamos em condies de criar nossa primeira pgina PHP. Seguiremos um caminho simples e fcil, contudo ao chegar ao final da lio voc entender muito mais de PHP e saber o que pode fazer com ele. Basicamente um arquivo PHP um arquivo de texto com a extenso .php consistindo de: Texto Tags HTML Scripts PHP
Voc j sabe o que so textos e tags HTML. Ento vamos examinar os scripts PHP.
Scripts PHP
O Grupo de documentao do PHP detalha e desenvolve a documentao para o PHP. Neste nosso tutorial ns, frequentemente, faremos referncia e apontaremos para links naquela documentao. O objetivo que voc consulte e se familiarize com a documentao e fique em condies de encontrar respostas para suas dvidas na documentao. PHP envolve tantas funcionalidades que impossvel aprender tudo em um tutorial. Em compensao PHP no difcil. Ao contrrio, PHP uma linguagem parecida com o ingls. Vamos comear com sua primeira pgina.
Examplo: Hello World!
Comece gerando um documento HTML e grave-o na raiz do site com o nome page.php. Se voc usa XAMPP, (ver Lio 2), o caminho no seu computador : "c:\xampp\htdocs\page.php" (ali seu computador um servidor). O cdigo HTML deve ser como mostrado a seguir: <html> <head> <title>Minha primeira pgina PHP</title>
</head> <body>
</body> </html>
Na lio 1 ensinamos que PHP destina-se a escrever comandos para o servidor.. Vamos escrever um comando para o servidor. Primeiramente devemos dizer ao servidor onde PHP comea e onde termina. Para isso usamos as tags <?php e ?> respectivamente, para marcar o incio e o fim do cdigo a ser executado pelo servidor (na maioria dos servidores suficiente escrever <? para tag de incio, contudo <?php a maneira mais correta e recomendada de se escrever a tag de incio do PHP). Acrescente o seguinte cdigo na sua marcao HTML: <html> <head> <title>Minha primeira pgina PHP</title> </head> <body>
<?php
echo "<h1>Hello World!</h1>";
?>
</body> </html>
Se voc abrir o documento em um navegador dever ver algo parecido com o seguinte:
Observe o que acontece quando voc examina o cdigo fonte do documento (selecione "view source"):
O cdigo PHP sumiu! Como foi dito na lio 1, apenas o servidor "v" o cdigo PHP - o cliente (no caso o navegador) "v" somente o resultado! Vamos examinar o que acontece. Pedimos ao servidor para escrever <h1> Hello World!</h1>. Em linguagem tcnica podemos dizer que usamos a funo echo para instruir o servidor a escrever uma string para o cliente. O ponto e vrgula termina o comando. No se apavore! Tentaremos manter o uso de linguagem tcnica a um mnimo possvel. Este primeiro exemplo, sem dvida, no nada empolgante. Espere um pouco! Daqui para frente as coisas se tornaro cada vez mais empolgantes. Vejamos outro exemplo.
Exemplo: Agora!
Vamos fazer o servidor escrever mais. Podemos, por exemplo, pedir ao servidor para escrever a data e hora atual:
<html> <head> <title>Minha primeira pgina PHP</title>
</head> <body>
<?php
echo date("r");
?>
</body> </html>
O resultado em um navegador algo como mostrado a seguir:
E o cdigo HTML correspondente :
Est ficando empolgante. Certo? Fizemos o servidor mostrar a data e hora na pgina renderizada. Notar que se voc recarregar a pgina uma nova data e hora sero mostrados. O servidor escreve a data e hora toda vez que a pgina enviada ao cliente. importante notar que o cdigo HTML renderizado contm apenas a data - no mostrado o script PHP. Assim, no importa o navegador que o usurio est usando o resultado sempre o mesmo. Atualmente, todas as funcionalidades que so executadas no lado do servidor sempre funcionam em todos os navegadores! Chamamos a ateno novamente para o ponto e vrgula no final de uma linha de cdigo PHP. Este ponto e vrgula so obrigatrios ao final de um comando. Se voc esquecer o script no funcionar. No exemplo ns usamos date, que uma funo destinada a retornar a data e hora atuais no servidor. Vamos ampliar o exemplo escrevendo uma string e uma function - separadas por um "." (ponto) - observe a seguir:
<html> <head> <title>Minha primeira pgina PHP</title> </head> <body>
<?php
echo "<p>O grupo data/hora atual : " . date("r") . "</p>";
?>
</body> </html>
O resultado em um navegador algo como mostrado a seguir:
E o cdigo HTML correspondente :
Na prxima lio estudaremos com detalhes a funo date e os diferentes formatos do grupo data/hora.
Lio 4c: Trabalhando com datas e horas
Nesta lio voc aprender as diferentes maneiras de trabalhar com datas e horas usando o PHP. Comearemos mostrando exemplos bem simples com a finalidade de mostrar o que PHP capaz de fazer. Nesta lio estudaremos com detalhes a funo date do PHP.
Funes para data e hora
PHP nos fornece uma srie de funes relacionadas a data e hora. Nesta lio veremos a mais importante destas funes; a funo date. Usando-se os diferentes parmetros previstos para a funo date ela retornar o grupo data/hora em diferentes formatos. Os parmetros mais usuais so: date("y"): Retorna o ano atual - para o dia de hoje o valor retornado : 13 date("m"): Retorna o ms atual - para o dia de hoje o valor retornado : 01 date("F"): Retorna o nome do ms atual - para o dia de hoje o valor retornado : January date("d"): Retorna o dia do ms atual - para o dia de hoje o valor retornado : 14 date("l"): Retorna o nome do dia da semana atual - para o dia de hoje o valor retornado : Monday date("w"): Retorna o nmero correspondente ao dia da semana atual - para o dia de hoje o valor retornado : 1 date("H"): Retorna a hora atual - para o dia de hoje o valor retornado : 23 date("i"): Retorna o minuto atual - para o dia de hoje o valor retornado : 20 date("s"): Retorna o segundo atual - para o dia de hoje o valor retornado : 25
O exemplo a seguir ilustra o uso da funo date <html> <head> <title>Grupo data/hora</title>
</head> <body>
<?php
echo "<p>Hoje " . date("l") . "</p>";
?>
</body> </html> Ver o resultado do exemplo A hora : 1358202025
Ops... Aqui parece coisa para nerds. A funo time() retorna a hora atual em nmero de segundos contados desde 1 de janeiro de 1970 s 12:00 PM, GMT.
echo "<p>So decorridos exatamente " . time() . " segundos desde 1 de janeiro de 1970, 12:00 PM, GMT </ p> ";
?>
</body> </html> Ver o resultado do exemplo
A representao da hora em segundos, contados desde 1 de janeiro de 1970 s 12:00 PM, GMT chamada "timestamp" (UNIX timestamp) que uma representao muito til quando se trabalha com datas/horas passadas e futuras. Por padro, a funo date usa o timestamp atual (isto , o valor corrente de time()). Mas, usando um parmetro voc pode especificar o retorno da funo em um diferente time stamp e assim trabalhar com datas passadas e futuras. No exemplo a seguir ns definimos o timestamp para 0 segundos a partir de 1 de janeiro de 1970 s 12:00 PM, GMT. Fazendo assim podemos verificar qual foi o dia da semana de 1 de janeiro de 1970. <html> <head> <title>Grupo data/hora</title> </head> <body>
<?php
echo "<p>O dia da semana em 1 de janeiro de 1970 foi " . date("l",0) . "</p>";
?>
</body> </html> Ver o resultado do exemplo
A menos que voc seja um gnio da matemtica muito complicado calcular o nmero de segundos passados desde de 1 de janeiro de 1970 para uma determinada data. Felizmente existe uma funo chamada mktime que realiza o clculo. A sintaxe para a funo mktime (hora, minuto, segundo, ms, dia, ano). O exemplo a seguir faz a converso para a data da chegada do homem lua (21 de julho de 1969 s 02:56): <html> <head> <title>Grupo data/hora</title> </head> <body>
<?php
echo mktime (2,56,0,7,21,1969);
?>
</body> </html> Ver o resultado do exemplo Notar que o retorno foi um nmero negativo. Isto indica que a data anterior a 1 de janeiro de 1970.
Agora j podemos no valer do que at aqui aprendemos e usar a funo date para saber qual foi o dia da semana em que ocorreu o evento histrico da chegada do homem lua.
At agora tudo parece muito terico. Afinal de que maneira posso usar uma do tipo time() de uma forma prtica? Ao aprender algo novo importante saber se voc poder usar o que aprendeu em uma pgina web. Considere que o que voc aprende neste tutorial a construo de blocos de cdigos - o que voc pode fazer com eles depende somente da sua criatividade e est limitado apenas pela sua imaginao! Eu ousaria afirmar que voc j aprendeu muito mais do que est pensando. Por exemplo: voc acha que capaz de criar um background para uma pgina que mude a cada dia da semana e funcione em todos os navegadores? Claro que voc capaz! Observe o exemplo a seguir: <html> <head> <title>Grupo data/hora</title> </head>
O exemplo mostrado, que usa uma imagem de fundo dinmica, requer que voc construa apenas sete imagens e as nomeie como background_1.png, background_2.png, background_3.png, etc. Se o usurio entra no seu site na tera feira a imagem de fundo ser background_2.png e no dia seguinte ser background_3.png. Fcil e simples! Na prxima lio estudaremos os blocos de cdigo destinados a construo de loops e aqueles destinados a repetio de cdigo. PHP legal. Voc no acha?
Lio 5c: Loops Na linguagem PHP existem diferentes estruturas de controle destinadas a gerenciar a execuo de scripts. Nesta lio ns estudaremos os loops. Loops so usados para executar repetidamente uma parte de um script em um determinado nmero de vezes ou at que seja encontrada uma determinada condio.
Loop "while"
A sintaxe para um loop while conforme mostrada a seguir: while (condio) { Comandos PHP de execuo }
Esta sintaxe pode ser traduzida para linguagem corrente como: execute comandos PHP enquanto (while) a condio for satisfeita. Vejamos um exemplo bem simples:
<html> <head> <title>Loops</title>
</head> <body>
<?php
$x = 1;
while ($x <= 50) { echo "<p>Este texto se repete 50 vezes</p>"; $x = $x + 1; } ?>
</body>
</html> Ver o resultado do exemplo
No exemplo mostrado usamos uma varivel denominada "$x". Como voc pode notar, nomes de variveis em PHP sempre comeam com o caractere "$". No incio fcil esquecer esta sintaxe, contudo absolutamente necessrio o smbolo "$" para iniciar o nome de variveis, pois do contrrio o script no funciona. Alm disto, o restante do script auto-explicvel. No comeo a varivel $x recebe o valor 1. A seguir o loop pede para o servidor executar o comando de escrever um texto enquanto a varivel for menor do que 50. A cada execuo a varivel incrementada de 1 unidade.
Loop "for"
Outra maneira de executar um loop com uso de for conforme mostrado a seguir: for (Inicializao; Condio; passo) { Comandos PHP de execuo }
Os comandos PHP de execuo se repetem com a 'Inicializao' + 'passo' enquanto a 'Condio satisfeita'. Se isso no faz sentido para voc o exemplo a seguir esclarece melhor: <html> <head>
<title>Loops</title> </head> <body>
<?php
for ($x=0; $x<=50; $x=$x+5) { echo '<p>A varivel $x agora tem o valor igual a ' . $x . '</p>'; } ?>
</body> </html> Ver o resultado do exemplo
No exemplo mostrado $x incrementado de 5 unidades em cada loop. O loop continua sua execuo enquanto $x for menor ou igual a 50. Notar que o valor de $x usado como parte do texto a ser escrito pelo script. Observe outro exemplo: <html> <head>
Voc entendeu? Comeamos definindo o valor de $x igual a 1. A seguir em cada loop escrevemos um cabealho nvel $x (h1, h2, h3, etc.) at $x alcanar o valor seis.
Loops dentro de loops
A princpio no existe limite para a quantidade de loops a usar. Voc pode facilmente aninhar loops e criar muitas repeties. Mas, cuidado! A execuo de PHP torna-se lenta quando desenvolvemos scripts extensos e complicados. Por exemplo: observe a seguir o script com trs loops capaz de escrever 16 milhes de cores! Com a finalidade de no tornar a pgina de carregamento muito lento ns reduzimos drasticamente o nmero de repeties para passos de 30 limitando o nmero de cores escritas para 512. <html>
<head> <title>Loops </title> </head> <body>
<?php
for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {
for ($intGreen=0; $intGreen<=255; $intGreen=$intGreen+30) {
for ($intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
No exemplo mostrado cada uma das trs cores primrias (red, green e blue) pode ter um valor entre 0 e 255. Qualquer combinao de trs valores resulta em uma cor do tipo RGB (255,255,255). O cdigo da cor escrito em um elemento <span> que por sua vez estilizado com a respectiva cor. Loops tornam-se mais interessantes prtico depois que voc aprende mais algumas funcionalidades do PHP. Assim que voc entender o princpio de funcionamento do loop passe para a lio seguinte na qual estudaremos as condicionais.
Lio 6c: Condicionais Condicionais so usadas para executar um bloco de script sempre que determinada condio seja satisfeita. Por exemplo: uma condio pode estabelecer que uma data seja posterior a 1 de janeiro de 2012 ou que uma varivel seja maior do que 7.
If...
A primeira condicional que estudaremos o if cuja sintaxe mostrada a seguir:
if (condition) { Comandos PHP }
Mais uma vez a sintaxe se parece com a linguagem corrente: If (Se) se a condio satisfeita, execute alguma coisa. Vejamos um exemplo simples: <html>
<head> <title>Loops </title> </head> <body>
<?php
$x = 2;
if ($x > 1) { echo "<p>A varivel $x maior que 1 </p>"; }
?>
</body> </html>
if ... else ...
Vejamos agora a condicional else cuja sintaxe mostrada a seguir: if (condio) { comandos PHP } else { Comandos PHP }
Mais uma vez a sintaxe se parece com a linguagem corrente: if (se) a condio satisfeita, execute alguma coisa else (se no) execute outra coisa. Na Lio 4 mostramos como encontrar o nmero representativo do ms. No exemplo a seguir usaremos este nmero em uma condicional if elsepara encontrar em qual das estaes do ano estamos: <html> <head> <title>Condicionais</title> </head> <body>
<?php
if (date ("m") == 3) { echo "<p>Estamos no outono!</p> "; } else { echo "<p>Eu no sei em que estao estamos!</p> "; }
?>
</body> </html> Ver o resultado do exemplo
Notar que se trata de uma condicional no muito inteligente - ela s funciona para o Ms de Maro! Contudo, existem vrias maneiras de aperfeioar a condicional tornando-a mais precisa. Observe a seguir alguns operadores de comparao que podemos usar na condicional mostrada:
== Igual < Menor que > Maior que <= Menor ou igual a >= Maior ou igual a != Diferente
Existem tambm operadores lgicos:
&& e || ou ! no
Operadores se destinam a criar condicionais mais precisas e com seu uso podemos melhorar o exemplo mostrado anteriormente fazendo com que o retorno do script seja a estao primavera em todos os meses que ela ocorre e no somente em maro: <html> <head> <title>Condicionais</title>
</head> <body>
<?php
if (date("m") >= 3 && date("m") <= 5) { echo "<p> Estamos no outono!</p> "; } else { echo "<p> A estao atual primavera, vero ou inverno!</p> "; }
?>
</body> </html>
Vamos examinar estas novas condicionais: date("m") >= 3 && date("m") <= 5
Pode ser traduzida como: Se o nmero que representa o ms for maior ou igual a 3 e menor ou igual a 5
Legal no ? Operadores so largamente usados em diferentes blocos de script do PHP. Contudo nosso exemplo s funciona para os meses de maro, abril e maio, Os demais meses no so contemplados pela condicional. Assim, vamos aperfeio-lo mais: if ... elseIf ... else...
Usando elseif podemos expandir a condicional e fazer com que nosso script funcione para todos os meses do ano: <html> <head> <title>Condicionais</title>
</head> <body>
<?php
if (date("m") >= 3 && date("m") <= 5) { echo "<p>Estamos no outono!</p>"; }
Escrever condicionais uma questo de lgica e mtodo. O exemplo mostrado bem esclarecedor, porm o uso de condicionais pode tornar-se bem mais complexo. switch ... case Outra maneira de se escrever condicionais com uso do mtodo switch: switch (expresso) {
case 1: comandos PHP break; case 2: comandos PHP break; default: comandos PHP break; }
Este mtodo toma por base uma expresso e a seguir relaciona uma srie de "respostas" ou "valores" e respectivos comandos PHP. A maneira mais fcil de entender esta condicional observando um exemplo. Na lio 4 ns vimos que a funo date("w") retorna um nmero representando dia da semana. Vamos mostrar um exemplo para escrever o nome do dia da semana em lugar do nmero que o representa: <html> <head> <title>Condicionais</title> </head> <body>
<?php
switch(date("w")) {
case 1: echo "Hoje segunda-feira"; break; case 2: echo "Hoje tera-feira"; break; case 3: echo "Hoje quarta-feira"; break; case 4: echo "Hoje quinta-feira"; break; case 5: echo "Hoje sexta-feira"; break; case 6: echo "Hoje sbado"; break; default: echo "Hoje domingo"; break;
}
?>
</body> </html> Ver o resultado do exemplo
Em geral switch uma boa alternativa para a condicional if else. Qual delas usar em uma determinada situao depende somente de voc. Use aquela que voc considera mais fcil e lhe parea mais lgica. Criar scripts lgicos e claros pode se constituir em um grande desafio para o desenvolvedor. Na prxima lio mostraremos como inserir comentrios em seus scripts com a finalidade de facilitar o entendimento de como eles funcionam. Um script bem comentado oferece a voc ou a outra pessoa dicas que sero valiosas por ocasio de mudanas ou manuteno futura.
Lio 7c: Comentando seus scripts Como voc j deve ter concludo, um script PHP pode se tornar bastante confuso de entender. Nesta lio falaremos sobre comentrios, sua importncia e a maneira correta de inser-los nos seus scripts.
Por que importante comentar os scripts?
Quando codificamos, estamos escrevendo comandos para um servidor/computador usando uma linguagem estritamente formal que pode no refletir claramente o que voc estava pensando quando criou o script. Ora, isso pode criar dificuldades para terceiros (ou mesmo para voc) quando se tratar de entender como o script foi estruturado e como consequncia tornar extremamente rdua a tarefa de identificao e correo de erros. Comentrios so usados para se escrever pequenos textos explanatrios no script. O servidor ignora qualquer comentrio no script e eles no afetam ou interferem com a funcionalidade do script. No mundo dos negcios comum as Companhias exigirem que os scripts e programas sejam comentados, pois considerado um alto risco aceitar um sistema no qual a identificao e correo de erros se torna uma tarefa difcil pela falta de comentrios.
Como inserir comentrios?
fcil inserir um comentrio. Voc simplesmente comea um texto de comentrio escrevendo duas barras: "//". Observe um exemplo mostrado na lio 5 no qual inserimos comentrios: <html> <head> <title>Loops</title> </head> <body>
<?php
// Escreve cdigo de cores usando trs loops
// Vermelho pode estar entre 0 e 255 for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {
// Verde pode estar entre 0 e 255 for ($intGreen=0; $ intGreen<=255; $intGreen=$intGreen+30) {
// Azul pode estar entre 0 e 255 for ($ intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
// O cdigo de cores tem o formato rgb(vermelho,verde,azul) $strColor = "rgb(" . $intRed . "," . $intGreen . "," . $intBlue . ")"
// Aqui escrevemos o cdigo da cor echo "<span style='color:" . $strColor . "'> " . $strColor . " </span>";
// Fecha os loops } } }
?>
Para clareza do exemplo inclumos muitos comentrios extras mostrando inequivocamente que os comentrios auxiliam, e muito, a tarefa de debugar o script. Ento! No se esquea de comentar seus scripts.
Lio 8c: Arrays
Nesta lio veremos o que array, como us-los e o que podemos fazer com eles. Entender arrays pode ser um pouco difcil no incio. Mas, no desanime, vamos tentar... Ns iremos tornar o processo de aprendizado o mais fcil possvel.
O que array?
Array uma coleo (ou conjunto) de elementos indexados na qual cada um dos elementos tem um nmero identificador nico. Parece confuso? Creia, no to complicado. Imagine uma lista de palavras separadas por vrgula como a mostrada a seguir: mas, peras, bananas, laranjas, limes
Agora imagine dividir a lista tomando como separador cada vrgula. Em seguite atribua a cada diviso um nmero identificador nico:
O que voc acabou de ver um array. Podemos dar um nome para o array como, por exemplo, "frutas". A ida que possamos acessar o array usando um nmero identificador e com ele consultar o valor correspondente usando uma sintaxe como mostrada a seguir:
Esta a ideia por trs de arrays. Vamos ver um exemplo prtico.
Como usar um array?
Continuaremos com o array de frutas. Passo a passo mostraremos como fazer para a lista funcionar como um array. Primeiro vamos criar uma varivel para conter a lista como mostrado a seguir: <?php
Observe que chamamos a funo explode com dois argumentos: 1. a lista a ser dividida 2. e o delimitador - isto , o caractere usado para separar os itens da lista (no caso do exemplo a vrgula) colocado entre aspas ",".
Usamos a vrgula como delimitador, mas podemos usar qualquer caractere e at mesmo uma palavra. Vamos comentar o script e coloc-lo em uma pgina PHP: <html> <head> <title>Array</title> </head> <body>
<?php
// Lista separada por vrgula $listadefrutas = "mas, peras, bananas, laranjas, limes";
// Cria um array seprando os itens da lista (tendo a vrgula como delimitador) $arrFrutas = explode(",", $listadefrutas);
// Escreve os valores do array echo "<p>Lista de frutas:</p>";
Este exemplo muito simples e na verdade no h vantagem alguma em usar um array para realizar este tipo de tarefa. Mas, um momento... arrays podem ser usadas de maneira muito mais vantajosa. Loop por um array
Na Lio 5 estudamos loops. A seguir veremos como realizar um loop por um array. Quando voc conhece o nmero de itens de um array no encontra problemas para definir um loop por ele. Voc comea em 0 e desenvolve o loop at atingir o nmero de itens do array. No exemplo das frutas um loop pelo array seria como mostrado a seguir: <html> <head> <title>Array</title>
</head> <body>
<?php
// Lista separada por vrgula $listadefrutas = "mas, peras, bananas, laranjas, limes";
// Cria um array seprando os itens da lista (tendo a vrgula como delimitador) $arrFrutas = explode (",", $listadefrutas);
echo "<p>Lista de frutas:</p>"; echo "<ul>";
// Loop pelo array $arrFrutas for ($x=0; $x<=4; $x++) { echo "<li>" . $arrFrutas[$x] . "</li>"; }
echo "</ul>";
?>
</body> </html> Ver o resultado do exemplo
Como voc pode notar a varivel $x (que cresce de 0 a 4 no loop) foi usada para chamar o array. Como encontrar o tamanho de um array Mas, o que acontecer se outra fruta for adicionada lista? Nosso array passar a ter mais um item cujo nmero identificador ser 5. J deu para ver o problema? Precisamos alterar o loop para que ele funcione de 0 a 5, caso contrrio no sero includos todos os elementos do array. No seria maravilhoso se pudssemos saber automaticamente quantos itens um array tem? isso exatamente o que faremos a seguir com uso da funo foreach. Agora podemos criar um loop que funciona em todo array independentemente do nmero de itens nele contido: <?php foreach ($arrFrutas as $x) { echo $x; } ?>
Este loop funciona independentemente do nmero de itens contido no array. Outro exemplo A seguir mostramos um exemplo, usando array, para escrever os nomes dos meses:
<html> <head> <title>Array</title>
</head> <body>
<?php // Cria um array dos meses. // Cria um array com os meses. Notar a vrgula antes do ms de janeiro. Isto necessrio //porque no existe ms representado pelo nmero $arrMes = array("","Janeiro","Fevereiro","Maro","Abril","Maio","Junho","Julho","Agosto ","Setembro","Outubro","Novembro","Dezembro");
// Chama o array com o nmero do ms - escreve no navegador do usurio echo $arrMes[date("n")]; ?>
</body> </html>
Ver o resultado do exemplo
Notar que usamos a funo array e no explode para criar o array. Ok. Isto tudo sobre arrays! Na prxima lio veremos como escrever nossas prprias funes.
Lio 9c: Funes
Nas lies anteriores voc aprendeu a usar funes, tais como, date() e array(). Nesta lio voc aprender a criar suas prprias funes usando a funcionalidade do PHP chamada function.
O que funo?
Uma funo se destina a processar inputs (entradas) e retornar um output (sada). Isto pode ser muito til se, por exemplo, voc tiver que processar uma grande quantidade de dados ou se tiver que realizar clculos ou rotinas que devam ser executadas muitas vezes. A sintaxe geral para uma funo mostrada a seguir: Nome da funo(lista de parmetros) { Comandos PHP }
O exemplo a seguir esclarece a sintaxe para uma funo bem simples destinada a adicionar 1 unidade a um nmero: function AddOne($x) { $x = $x + 1; echo $x; } O nome escolhido para nossa funo foi AddOne e deve ser chamada com um parmetro que o numero a somar - por exemplo: 34.... echo AddOne(34);
... o retorno da funo ser (pasmem!) 35. No exemplo mostrado processou-se um nmero, contudo as funes podem processar textos, datas e qualquer outro tipo de dado. Voc pode, at mesmo, criar funes para serem chamadas por parmetros. Nesta lio estudaremos diferentes tipos de funes.
Exemplo 1: Funo com vrios parmetros
Como dito anteriomente possvel criar funes com vrios parmetros. No exemplo a seguir criaremos uma funo que chamada com 3 nmeros como parmetros e retorna a soma deles: <html> <head> <title>Funes</title>
echo "123 + 654 + 9 igual a " . AddAll(123,654,9);
?>
</body> </html> Ver o resultado do exemplo
Ok. Isto foi bastante simples! Mas, o objetivo foi apenas mostrar que uma funo pode ser chamada com vrios parmetros.
Exemplo 2: Data e hora em ingls
Vamos criar uma funo um pouquinho mais complexa. Uma funo a ser chamada com date() e time() e retornar a data e hora no formato:Wednesday, 15 February, 2012, 10:00:00 AM <html> <head> <title>Funes</title> </head> <body>
<?php
function EnglishDateTime($date) {
// Array com o nome em portuguss dos dias e semanas $arrDay = array("segunda-feira","tera-feira","quarta- feira","quinta-feira","sexta-feira","sbado","domingo");
// Array with the English names of the months $arrMonth = array("","janeiro","fevereiro","maro","abril","maio","junho","julho","agosto ","setembro","outubro","novembro","dezembro");
Notar que a definio de '$arrMonth' e '$EnglishDateTime' constam de diversas linhas do script. Fizemos assim para que usurios com baixa resoluo de tela tenham uma melhor viso do exemplo. Isto no tem nenhum efeito no funcionamento do cdigo. A funo mostrada funciona em qualquer servidor independentemente do idioma. Isto significa que voc pode usar esta funo no seu site mesmo que ele esteja hospedado em um servidor na Frana e voc quiser mostrar suas datas no formato ingls. Por ora ficaremos por aqui sem nos aprofundar mais, pois agora voc j sabe alguma coisa sobre como as funes trabalham.
Lio 10c: Passando variveis no URL
Quando se trabalha com PHP comum a necessidade de se passar variveis de uma pgina para outra. Nesta lio veremos como passar variveis em um URL.
Como isto funciona?
Talvez voc j tenha visto e ficado intrigado com URLs no formato parecido com o mostrado a seguir: http://html.net/page.php?id=1254
O que significa aquele sinal de interrogao depois do nome da pgina? A resposta : os caracteres depois do sinal de interrogao so uma HTTP query string. Uma HTTP query string contm variveis e seus valores. No exemplo mostrado a HTTP query string contm uma varivel chamada "id", e seu respectivo valor igual a "1254". Observe outro exemplo: http://html.net/page.php?name=Joe
Aqui voc tem uma varivel ("name") com o valor ("Joe"). Como recuperar o valor de uma varivel com PHP? Suponha uma pgina PHP chamada people.php. Suponha, tambm, que voc "chame" esta pgina usando o seguinte URL: people.php?name=Joe A sintaxe PHP para recuperar o valor da varivel 'name' passada no URL mostrada a seguir: $_GET["name"]
Use $_GET para recuperar o valor de uma varivel. Vejamos outro exemplo: <html> <head> <title>Query string</title> </head> <body>
<?php
// Extrai o valor da varivel name echo "<h1>Ol " . $_GET["name"] . "</h1>";
?>
</body> </html> Ver o resultado do exemplo (observe o URL)
Ao abrir a pgina que demonstra este exemplo faa a seguinte experincia: substitua na barra de endereos do navegador o nome "Joe" pelo seu nome e recarregue a pgina! Legal, no ?
Vrias variveis no mesmo URL
Voc no est limitado a passar uma s varivel no URL. Para passar mais de uma varivel use o sinal & ( e comercial) para separar as variveis, como mostrado a seguir: people.php?name=Joe&age=24
Este URL contm duas variveis: name (nome) e age (idade). Tal como foi explicado anteriormente para recuperar as duas variveis a sintaxe mostrada a seguir: $ _GET["name"] $ _GET["age"] Vamos usar mais uma varivel no nosso exemplo: <html> <head> <title>Query string </title> </head> <body>
<?php
// Extrai o valor da varivel name echo "<h1>Ol " . $ _GET["name"] . "</h1>";
// Extrai o valor da varivel age echo "<h1>Voc tem ". $ _GET["age"] . " anos de idade</h1>";
?>
</body> </html> Ver o resultado do exemplo (keep an eye on the URL) Bem, agora voc j sabe como passar variveis em um URL. Na prxima lio veremos mais um mtodo de passagem de variveis: o mtodo usando formulrios.
Lio 11: Passando variveis com uso de formulrios
Sites interativos se baseiam em entrada de dados pelos usurios. Uma das formas mais comuns de coletar dados e com uso de formulrios Nesta lio estudaremos como construir formulrios e processar seus dados no servidor.
<form>: Para o elemento form destinado a marcar um formulrio esto previstos, entre outros, dois atributos de suma importncia, so eles: action e method.
Action: Destina-se a definir o URL para o qual os dados do formulrio sero enviados para processamento. Neste URL encontra-se o arquivo com o script de processamento dos dados.
Method: Este atributo admite os valores "post" e "get" que so dois mtodos deferentes de passagem de dados. Por enquanto voc no precisa saber as diferenas entre estes mtodos, basta saber que com "get" os dados so passados pelo URL e com post "post" so enviados em forma de um bloco de dados via um mecanismo denominado STDIN. Na lio anterior estudamos como recuperar dados passados no URL com uso de $_GET. Nesta lio veremos como recuperar dados passados com uso do mtodo "post".
Formulrio em uma pgina HTML
A pgina contendo o formulrio no precisa, necessariamente, ser uma pgina PHP. No precisa nem mesmo estar no mesmo site que recebe seus dados para processamento. O nosso primeiro exemplo mostra uma pgina contendo um formulrio bem simples contendo apenas um campo de entrada de dados: <html> <head> <title>Formulrio</title> </head> <body>
A renderizao no navegador conforme mostrada a seguir:
Agora vem a parte divertida: receber e manipular dados com PHP Para requisitar dados enviados por um formulrio usamos $_POST: $_POST["fieldname"];
Retorna o valor de um campo do formulrio. Vejamos um exemplo. Crie uma pgina contendo o formulrio mostrado anteriormente. Crie outra pgina chamada "handler.php" (notar que este nome o mesmo daquele constante como valor do atributo action da tag <form> no nosso formulrio). O arquivo "handler.php" como mostrado a seguir: <html> <head> <title>Formulrio</title> </head>
<body>
<?php
echo "<h1>Ol " . $_POST["username"] . "</h1>";
?>
</body> </html> Ver o resultado do exemplo
Dados do usurio e condicionais
No exemplo a seguir manipularemos os dados do usurio com condicionais. Nosso formulrio ser com mostrado a seguir: <html> <head> <title>Formulrio</title> </head> <body>
<form method="post" action="handler.php">
<p>Qual o seu nome:</p> <input type="text" name="username"></p>
A renderizao no navegador conforme mostrada a seguir:
A seguir mostraremos um script que usa o dado relativo a preferncia de cor do usurio para mudar a cor do fundo da pgina conforme sua preferncia. Faremos isso criando uma condicional (ver Lio 6) que usa a cor escolhida pelo usurio no formulrio. <?php
switch ($_POST["favoritecolor"]) { case "r": $strBackgroundColor = "rgb(255,0,0)"; break; case "g"; $strBackgroundColor = "rgb(0,255,0)"; break; case "b": $strBackgroundColor = "rgb(0,0,255)"; break; default: $strBackgroundColor = "rgb(255,255,255)"; break; }
?>
<html> <head> <title>Formulrio</title>
</head> <body style="background: <? echo $strBackgroundColor; ?>;">
<? echo $strHeading; ?>
</body> </html>
O fundo ser branco se o usurio no escolher uma cor. Isto feito com o uso da declarao default que define a ao a tomar se nenhuma das condies for satisfeita. Mas, o que acontece se o usurio no fornece seu nome? O resultado ser somente "Hello". Vamos usar mais uma condicional para resolver esta questo. <?php
switch ($_POST["favorite color"]) { case "r": $strBackgroundColor = "rgb(255,0,0)"; break; case "g"; $strBackgroundColor = "rgb(0,255,0)"; break; case "b": $strBackgroundColor = "rgb(0,0,255)"; break; default: $strBackgroundColor = "rgb(255,255,255)"; break; }
?>
<html>
<head>
<title>Formulrio</title> </head> <body style="background: <? echo $strBackgroundColor; ?>;">
<? echo $strHeading; ?>
</body> </html> Ver o resultado do exemplo. No exemplo anterior usamos uma condicional para validar o dado entrado pelo usurio. Neste caso particular, se o usurio no fornecer seu nome, no haver grande prejuzo. Contudo em scripts mais avanados essencial que se considere a possibilidade do usurio no entrar o dado solicitado ou mesmo entrar um dado do tipo totalmente diferente daquele que imaginamos quando criamos o formulrio.
Exemplo: Formulrio de contato
Com os conhecimentos que voc j adquiriu sobre PHP voc j est em condies de criar um formulrio de contato usando a funo mail, que tem a seguinte sintaxe: mail(to, subject, message); Comeamos com nosso formulrio: <html> <head> <title>Formulrio de contato</title> </head> <body>
</body> </html> Convm notar que o exemplo s funcionar se voc tiver acesso a um servio de e-mail. Por padro este no o caso em XAMPP e na maioria dos servios de hospedagem gratuitos. Alguns servios de hospedagem requerem que voc inclua um header "from" conforme mostrado a seguir: mail("[email protected]", "Teste", "Isto um teste de email", "From: [email protected]"); Lio 12c: Sesso
Quando voc visita um site voc realiza uma srie de aes. Navega de uma pgina a outra. Talvez voc preencha um formulrio ou compre um produto. Como desenvolvedor essas informaes so de grande valia para criao de um site de sucesso. Suponha que voc necessita criar um site no qual algumas pginas sero de acesso restrito requerendo login e senha. Para que a proteo ao acesso seja efetiva as pginas restritas devem possuir mecanismos capazes de detectar se o usurio est logado. Em outras palavras, quando o usurio requisita uma nova pgina do site preciso "lembrar" o que ele fez anteriormente. exatamente para isto que as sesses se prestam - como usar a funcionalidade sessions do PHP para armazenar e recuperar informaes sobre um usurio em visita ao site.
Session As session do PHP permitem gerenciar informaes colhidas durante uma sesso (estada no site) do usurio. Voc pode escrever aplicaes inteligentes com uso de armazenagem e recuperao de informaes sobre o usurio. Uma sesso pode comear de diferentes maneiras. No iremos nos ater a detalhes tcnicos e focaremos no caso em que uma sesso comea com o armazenamento de um valor. Uma sesso ends/dies (termina/morre) se o usurio no requisitar nenhuma pgina aps decorridos um determinado tempo (por padro 20 minutos). Obviamente, no seu script, voc pode terminar uma sesso a qualquer momento. Suponha que 50 pessoas esto visitando o site ao mesmo tempo, por exemplo, em um site de vendas. As informaes sobre quais itens cada uma delas incluiu na sua cesta de compras so um bom exemplo de armazenamento com uso de session. Para identificar cada um dos usurio o servidor usa um ID nico armazenado em um cookie. Cookie um pequeno arquivo de texto armazenado no computador do usurio (saiba mais sobre cookies na Lio 13). Assim, sessions requerem suporte a cookies no navegador do usurio.
Exemplo de uso de sessions
Quando voc requisitou esta pgina eu armazenei a hora em uma session. Eu fiz isto para mostrar a voc como funciona uma sesso. Eu criei um item de nome "StartTime" e armazenei ele usando o seguinte trecho de script PHP: <?php
Desta forma uma sesso foi iniciada. Como foi dito anteriormente um ID criado pelo servidor para cada sesso. A sua sesso tem o seguinte ID: 4d4739fbcbdaa713f766c1e7328a0f2f A qualquer momento eu posso chamar "StartTime" da sesso escrevendo o seguinte: <?php
session_start(); echo $_SESSION["StartTime"];
?> Isto vai me mostrar que a pgina foi por voc requisitada em Mon, 14 Jan 2013 23:30:53 +0100 (de acordo com o relgio do meu servidor). O mais interessante que esta informao permanece armazenada e disponvel em session at mesmo depois que voc sai desta pgina. A informao permanece at que a sesso termine. por padro, uma sesso permanece ativa at que o usurio feche o navegador. Nesta ocasio ela termina. Se voc quiser terminar uma sesso antes disto a sintaxe como mostrada a seguir: <?php
session_destroy();
?>
Vamos examinar outro exemplo de aplicao para sesso: uso de senha.
Sistema de login com uso de sesso
No exemplo a seguir iremos criar um sistema simples de login. Usaremos muitos dos conceitos que aprendemos at aqui. Precisamos de um formulrio para coletar login e senha do usurio. Observe a seguir: <html> <head> <title>Login</title>
A seguir criamos um arquivo denominado: login.php. Neste arquivo o script verifica se o login e senha fornecidos no formulrio esto corretos. Se estiverem, iniciamos uma sesso informando que o usurio est logado com um login e senha correta. <html>
<head> <title>Login</title>
</head> <body>
<?php
// Verifica se usurio e senha conferem if ($_POST["username"] == "php" && $_POST["password"] == "php") {
// Se usurio e senha conferir definimos session para YES session_start(); $_SESSION["Login"] = "YES"; echo "<h1>Voc est logado</h1>"; echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
} else {
// Se usurio e senha conferir definimos session para NO session_start(); $_SESSION["Login"] = "NO"; echo "<h1>Voc NO est logdo</h1>"; echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
}
?>
</body> </html> Nas pginas de acesso restrito precisamos verificar se o usurio que as requisitou est logado corretamente. Se no estiver ele enviado para a pgina de login. Observe como feito o script de proteo das pginas: <?php
// Iniciar Session PHP session_start();
// Se o usurio no estiver logado manda ele para o formulrio de login if ($_SESSION["Login"] != "YES") { header("Location: form.php"); }
?>
<html> <head> <title>Login</title> </head>
<body> <h1>Este um documento de acesso restrito</h1>
<p>Acesso permitido somente para usurios logados.</p> </body> </html> Click aqui para testar o sistema de login
Agora voc j conhece o objeto Session do PHP. Na prxima lio ns continuaremos nesta rea estudando os cookies.
Lio 13c: Cookies
Quais so as informaes sobre seus visitantes, como elas so coletadas por um site e que uso o site faz das informaes so questes que podem intrigar o usurio. Cookies so normalmente citados quando se quer exemplificar uma forma de coletar informaes e de invaso de privacidade. Mas, afinal devemos nos preocupar com isso? Tire suas prprias concluses. Ao terminar esta lio voc saber o que pode ser feito com cookies.
O que cookie?
Cookie um pequeno arquivo de texto no qual um site pode armazenar informaes. Cookies so gravados no disco rgido do usurio e no no servidor. A maioria dos cookies expira (se auto apagam) depois de transcorrido um determinado tempo de pode variar de 1 minuto a vrios anos. Contudo o usurio pode identificar e apagar cookies do seu computador a qualquer momento. A maioria dos navegadores tais como, Microsoft Internet Explorer, Mozilla Firefox e Google Chrome, podem ser configurados de modo que o usurio seja previamente avisado da gravao de cookie e dar-lhe a opo de aceitar ou no a gravao. Mas, por que simplesmente no permitir a gravao de cookies? Bem, isto possvel, contudo muitos sites no funcionaro sem uso dos cookies. Isto porque eles dependem de cookies para melhorar a usabilidade e viabilizar a funcionalidade do site.
Como a informao armazenada no cookie? fcil configurar ou modificar um cookie com uso da funo PHP setcookie. No exemplo a seguir criaremos um cookie e a ele daremos um valor. Primeiro devemos escolher um nome para o cookie. No nosso exemplo escolhemos o nome "HTMLTest". A seguir definimos um valor para o cookie como mostrado a seguir: <?php
// Configura o cookie setcookie("HTMLTest", "Este um cookie para teste");
?>
Por padro, um cookie expira quando o navegador fechado, mas isto pode ser facilmente alterado adicionando-se um parmetro a mais na funo definindo o tempo de vida do cookie: <?php
"Time()+3600" define que o cookie expira em 3600 segundos (60 minutos) a partir de agora. No exemplo mostrado armazenamos informaes sobre o nome do usurio e seus interesses. Estas informaes podem ser teis, por exemplo, para direcionar o usurio para uma seo especfica do site.
Como se recupera o valor de um cookie?
Para recuperar o valor de um cookie usamos $_COOKIE. Por exemplo; para recuperar o valor do cookie mostrado no exemplo anterior a sintaxe conforme mostrada a seguir: <?php
// Recupera o vlor do cookie $strName = $_COOKIE["Name"]; strInterest = $_COOKIE["Interest"];
Por padro, um cookie pode ser lido por documentos de at segundo nvel hospedados no mesmo domnio (por exemplo: html.net) no qual ele foi criado. Contudo, com uso dos parmetros domain e path voc pode restringir mais este comportamento usando a sintaxe mostrada a seguir: setcookie(name, value, expiration time, path, domain); Vejamos um exemplo: <?php
// Configurando o cookie: nome, valor, tempo da vida, caminho, domnio setcookie("Name", "C. Wing", time()+60*60*24*365, "/tutorials/php/", "www.html.net"); ?>
No exemplo mostrado criamos um cookie chamado "Name" com o valor "C. Wing." O cookie expira em 1 ano (60 segundos * 60 minutos * 24 horas * 365 dias) e pode ser lido apenas por arquivos no diretrio "/tutorials/php/" no (sub-)domnio "www.html.net".
Exemplo de cookie
Vamos gravar um cookie no seu computador e observar o que acontece. O cdigo mostrado a seguir cria o cookie: <?php
// Criar cookie setcookie("HTMLTest", "Este um cookie para teste!", time()+60*60*24, "/tutorials/php/", "www.html.net");
// Escreve a informao no cliente echo $_COOKIE ["HTMLTest"];
?> Ver o resultado do exemplo O cookie foi gravado no seu disco rgido. O cookie e gravado em um local do disco rgido que varia com o sistema operacional usado pelo usurio. Uma vez que voc consiga localiz-lo o seu formato parecido com o seguinte:
Como voc pode ver um cookie um arquivo de texto que pode ser aberto no Notepad, por exemplo. O contedo do cookie que acabamos de criar se parece com o seguinte: HTMLTest TEXT=Este++um+cookie+para+teste%21 www.html.net/tutorials/php 0 80973619229399148 4216577264 29399141 *
No iremos nos aprofundar mais em cookies, contudo note que o usurio detm o controle sobre a gravao de cookies no seu computador. Nesta lio estudamos os cookies e suas finalidades. sabido que alguns sites usam cookies com propsitos exclusos. Mas, na maioria dos casos cookies so usados para tornar a interao com o site mais amigvel ou para individualizar o uso do site. Pode ser uma boa ideia usar cookies no seu site, mas neste caso de boa prtica informar o usurio sobre seu uso. Voc pode passar esta informao na poltica de privacidade do site ou durante o processo de registro do usurio no site.
Lio 14c: Sistema de arquivos
Usando PHP voc pode acessar o sistema de arquivos no servidor. Esta funcionalidade permite que voc manipule diretrio e arquivos de texto com scripts PHP. Voc pode usar PHP para ler um arquivo de texto ou mesmo nele escrever. Ou ainda, voc pode inspecionar quais so os arquivos existentes em um determinado diretrio no servidor. As possibilidades so muitas e o PHP pode facilitar bastante o seu trabalho. Nesta lio estudaremos como usar PHP para trabalhar com arquivos e diretrios. O objetivo fornecer uma viso geral deste assunto. Nas lies que se seguem aprofundaremos o assunto. Ns no cobriremos todas as funcionalidades. Se voc precisar de mais informaes consulte a documentao do PHP.
filemtime: Retorna a hora em que o contedo de um arquivo foi editado pela ltima vez (no formato UNIX timestamp - ver lio 4)).
fileatime: Retorna a hora em que o contedo de um arquivo foi acessado (aberto) pela ltima vez (no formato UNIX timestamp - ver lio 4)).
filesize: Retorna o tamanho do arquivo em bytes.
Vamos verificar as trs propriedades descritas para o arquivo que voc est lendo agora: "/tutorials/php/lesson14.php" <html>
<head> <title>Sistema de arquivos</title> </head> <body>
<?php
// Pesquisar e escrever propriedades echo "<h1>Arquivo: lesson14.php</h1>"; echo "<p>Editado pela ltima vez em: " . date("r", filemtime("lesson14.php")); echo "<p>Aberto pela ltima vez em: " . date("r", fileatime("lesson14.php")); echo "<p>Tamanho do arquivo: " . filesize("lesson14.php") . " bytes";
?>
</body> </html> Ver o resultado do exemplo
Diretrios
PHP permite que se trabalhe com diretrios do servidor. Ns no aprofundaremos o assunto, apenas mostraremos um exemplo. Para maiores informaes consulte a documentao do PHP.
opendir: Abre um diretrio.
readdir: Retorna o nome do prximo arquivo do diretrio aberto (com uso de opendir)
closedir: Fecha um diretrio.
O exemplo a seguir mostra os arquivos contidos no diretrio "tutorials/php/". <html> <head> <title>Objeto Sistema de Arquivos</title> </head> <body>
<?php
// Abre o diretrio $folder = opendir("../../tutorials/php/");
// Loop pelos arquivos do diretrio while (($entry = readdir($folder)) != "") { echo $entry . "<br />"; }
// Fecha o diretrio $folder = closedir($folder);
?>
</body>
</html>
Ver o resultado do exemplo No exemplo mostrado, comeamos abrindo o diretrio "../../tutorials/php/". A seguir um loop criado para escrever o nome do prximo arquivo, at atingir o ltimo. Chegando ao fim o diretrio fechado. Nas prximas lies estudaremos como ler e escrever em um arquivo de texto.
Lio 15c: Ler arquivos de texto
Na lio anterior estudamos como acessar o sistema e arquivos do servidor. Nesta lio aplicaremos o conhecimento adquirido para fazer a leitura de um arquivo de texto no servidor. Arquivos de texto uma maneira poderosa de armazenar vrios tipos de dados. Eles no so to flexveis quanto um Banco de Dados, mas tm a vantagem de no requerer muita memria. Alm disso, por ser em formato de texto puro funcionam na grande maioria dos sistemas.
Abrir um arquivo de texto
Usamos a funo fopen para abrir um arquivo de texto. A sintaxe mostrada a seguir: fopen(filename, mode)
filename: Nome do arquivo a abrir. Mode: Define o modo, que pode ser: "r" (reading - ler), "w" (writing - escrever) ou "a" (appending - adicionar). Nesta lio ns usaremos o modo de leitura "r". Nas prximas lies estudaremos como escrever e adicionar texto em um arquivo de texto.
Nos exemplos a seguir usaremos um arquivo de texto denominado unitednations.txt. trata-se de uma lista dos Programas e Fundaes das Naes Unidas e seus respectivos domnios. Voc fazer o download do arquivo ou criar seu prprio arquivo para testar os exemplos com ele. Vamos comear abrindo o arquivo unitednations.txt: <?php
// Abrir o arquivo de texto $f = fopen("unitednations.txt", "r");
// Fechar o arquivo de texto fclose($f);
?>
Exemplo 1: Ler uma linha de um arquivo de texto
Usamos a funo fgets para ler uma linha do arquivo. Este mtodo l at o primeiro "break" de linha no arquivo (no inclui a linha do "break"). <html>
<head> <title>Ler um arquivo de texto</title> </head> <body>
<?php
$f = fopen("unitednations.txt", "r");
// L uma linha e escreve no cliente echo fgets($f);
fclose($f);
?>
</body> </html> Ver o resultado do exemplo Exemplo 2: Ler todas as linhas de um arquivo de texto <html>
<head> <title>Ler um arquivo de texto</title> </head> <body>
<?php
$f = fopen("unitednations.txt", "r");
// L cada uma das linhas do arquivo while(!feof($f)) { echo fgets($f) . "<br />"; }
fclose($f);
?>
</body> </html> Ver o resultado do exemplo No exemplo anterior percorremos as linhas com uso de um loop e usamos a funo feof (for end-of-file) para verificar se chegamos ao fim do arquivo. Se no ("!" - ver lio 6), ta linha escrita. Em lugar de construir um loop poderamos ter obtido o mesmo resultado com uso da funo fread. Se voc trabalhar com arquivos extensos leve em considerao que a funo fread usa mais recursos que a funo fgets. Para arquivos pequenos, praticamente, no faz diferena usar uma ou outra.
Exemplo 3: Diretrio de links
Conforme vimos no incio desta lio, arquivos de texto podem ser excelentes para armazenagem de dados. Isto pode ser demonstrado no exemplo a seguir no qual criamos um diretrio de links a partir dos contedos do arquivo de texto unitednations.txt. O arquivo contm o nome do Programa ou Fundao seguindo-se uma vrgula e depois o domnio. fcil de concluir que se quisssemos poderamos armazenar mais informaes nesta lista separada por vrgula. Para recuperar a informao em cada linha usaremos um array. Ver Lio 8 para mais informaes sobre arrays. <html> <head> <title>Ler um arquivo de texto</title>
</head> <body>
<?php $f = fopen("unitednations.txt", "r");
// L cada uma das linhas do arquivo while (!feof($f)) {
// Criar um array com o separador vrgula $arrM = explode(",",fgets($f));
Legal no ? A princpio voc pode expandir o arquivo de texto para conter mais linhas ou mesmo incluir outras informaes como, por exemplo, um endereo. Na prxima lio veremos como escrever em um arquivo de texto.
Lio 16c: Escrever em arquivos de texto
Na lio anterior aprendemos a ler um arquivo de texto com PHP. Nesta lio veremos como escrever em um arquivo de texto com PHP. Os dois mtodos so bem semelhantes, mas existe uma diferena importante: Voc tem que ter permisso para escrever no arquivo. Isto significa que o arquivo tem que estar localizado em um diretrio ao qual voc tenha permisso de acesso para escrever. Se voc est trabalhando localmente em seu computador, poder voc mesmo configurar as permisses: d um clique com o boto direito do mouse na pasta do diretrio e escolha "Properties". Na maioria dos servidores de hospedagem existe por padro um diretrio com permisso de escrita. Em geral tais diretrios so nomeados como "cgi-bin", "log", "databases" oo algo similar. Se o seu servidor de hospedagem permitir voc tambm poder configurar permisses. Geralmente basta que, no seu cliente FTP, voc clique com o boto do mouse na pasta e escolha "properties" ou "permissions" ou algo similar. Na figura a seguir mostramos como configurar permisses no FileZilla.
Se precisar de mais informaes leia a documentao de suporte do seu servidor de hospedagem. Convm notar que arquivo de texto no qual se pretende escrever que deve estar localizado no diretrio com permisso de escrita e no o arquivo PHP.
Abrir um arquivo de texto para escrever
Tal como fizemos para ler um arquivo de texto usaremos a funo fopen para escrever, mas agora configurada para o modo "w" (writing - escrever) ou "a" (appending - adicionar). A diferena entre os modos writing e appending a posio do 'cursor' para escrever - se no comeo ou no fim do arquivo respectivamente. Nos exemplos desta lio usaremos um arquivo vazio denominado textfile.txt, mas se voc preferir pode usar seu prprio arquivo. Vamos comear abrindo o arquivo de texto: <?php
// Abre o arquivo de texto $f = fopen("textfile.txt", "w");
// Fecha o arquivo de texto fclose($f);
?>
Exemplo 1: Escrever uma linha no arquivo de texto
Para escrever uma linha usamos a funo fwrite como mostrado a seguir: <html>
<head> <title>Escrever em um arquivo de texto</title> </head> <body>
<?php
// Abre o arquivo de texto $f = fopen("textfile.txt", "w");
// Escreve no arquivo de texto fwrite($f, "PHP is fun!");
// Fecha o arquivo de texto fclose($f);
// Abre o arquivo e l a linha $f = fopen("textfile.txt", "r"); echo fgets($f);
fclose($f);
?>
</body> </html> Ver o resultado do exemplo
Uma vez aberto o arquivo no modo writing a nova linha escrita na parte superior do arquivo sobrescreve a primeira linha do arquivo. Se abrirmos o arquivo no modo appending a nova linha escrita na parte inferior do arquivo acrescentando mais uma linha no arquivo.
Exemplo 2: Escrever um bloco de texto em um arquivo de texto
possvel escrever um bloco de texto inteiro em vez de uma s linha como mostrado a seguir: <html> <head> <title>Escrever em um arquivo de texto</title> </head> <body>
<?php
// Abre o arquivo de texto $f = fopen("textfile.txt", "w");
// Escreve um texto fwrite($f, $_POST["textblock"]);
// Fecha o arquivo de texto fclose($f);
// Abre o arquivo e l a linha $f = fopen("textfile.txt", "r");
// L o texto echo fgets($f); fclose($f);
?>
</body> </html> Ver o resultado do exemplo
Lio 17: Banco de Dados
Um Banco de Dados um conjunto de informaes / dados organizados de uma maneira a facilitar as tarefas de extrao, manuteno e atualizao dos dados. Banco de Dados possibilitam a criao de sites dinmicos com grande quantidade de informaes. Por exemplo:os dados sobre todos os membros do site HTML.net bem como todos os posts dos forums do site esto guardados em um Banco de Dados. Um Banco de dados, em geral constitudo de uma ou mais tabelas. Se voc j trabalhou com planilhas ou mesmo com banco de dados, voc deve estar familiarizado com tabelas, suas colunas e linhas:
Existem vrios tipos de Banco de Dados: MySQL, MS Access, MS SQL Server, Oracle SQL Server e muitos outros. No nosso tutorial usaremos o Banco de Dados MySQL. MySQL o tipo de Banco de Dados mais indicado e natural para se usar com PHP. Para acompanhar esta e as prximas lies voc precisa ter acesso a um Banco de Dados: Se voc tem um site PHP hospedado remotamente quase certo que MySQL esteja disponvel no servidor. Informe-se com o suporte do seu servidor de hospedagem. Se voc instalou PHP no seu computador e quiser instalar MySQL faa o download de um a verso gratuita (MySQL Community Edition) no site do MySQL. Se voc est usando XAMPP (ver Lia 2) MySQL j foi instalado e est pronto para ser usado. Certifique-se, no Painel de Controle, que MySQL est sendo executado:
A seguir, nesta lio, veremos como conectar a um Banco de Dados e nas lies seguintes aprenderemos a criar um Banco de Dados e dele extrair e atualizar dados.
Conexo com o Banco de Dados
Primeiro voc precisa ter acesso ao servidor no qual est instalado o Banco de Dados. O acesso feito com uso da funo mysql_connect que admite a seguinte sintaxe: mysql_connect(servidor, usurio, senha)
Simples e direto: O parmetro (servidor) indica o local onde se encontra o Banco de Dados, usurio e senha indicam o nome do usurio e a senha de acesso ao Banco de Dados. Se voc possui um site, leia a documentao de suporte do seu servidor para saber o local do servidor MySQL. Nome de usurio e senha em geral o mesmo que voc usa para acessr o site via FTP. Se no for contate o suporte para seu servidor. Exemplo de conexo MySQL para um site em servidor remoto: mysql_connect("mysql.myhost.com", "user001", "sesame") or die(mysql_error());
Exemplo de conexo MySQL com servidor local XAMPP (configurao padro): mysql_connect("localhost", "root", "") or die (mysql_error());
Notar nos exemplos a incluso de or die(mysql_error()) que, resumo, destina-se a interromper o script e retornar uma mensagem de erro caso no seja possvel estabelecer a conexo. assim que se faz a conexo com o servidor MySQL. Agora voc j est em condies de criar Banco de Dados, extrair e inserir dados. exatamente isso que aprenderemos nas prximas lies. Ah sim! No se esquea que de boa prtica encerrar a conexo to logo voc tenha terminado de usar o Banco de Dados. Para isso use a funo mysql_close.
Lio 18c: Criando Banco de Dados e suas Tabelas
Na lio anterior aprendemos como se conectar com um Banco de Dados. O prximo passo aprender como criar Banco de Dados e Tabelas. Veremos duas maneiras de se criar Bancos de Dados e Tabelas. Primeiro com uso de PHP e depois de uma maneira mais amigvel usando a ferramenta PhpMyAdmin que existe por padro na maioria dos servidores remotos e tambm no XAMPP. Se voc tem um servidor remoto com PHP e MySQL e j criou um Banco de Dados pule esta parte da lio e v para criao de Tabelas. Para mais informaes consulte o suporte do seu servidor.
Criar Banco de Dados e Tabelas com PHP
A funo mysql_query usada para enviar umna consulta (query) para o Banco de Dados MySQL. Consultas so escritas n linguagemStructured Query Language (SQL) (ou Linguagem estruturada de consulta). SQL a linguagem mais usada para consultas a um Banco de Dados - no s para MySQL - e lgica e muito fcil de aprender. Nesta e na prxima lio voc aprender a sinbtaxe para realizar as mais usadas consultas SQL. Para criar um Banco de Dados a query SQL usada CREATE DATABASE que admite a seguinte sintaxe: CREATE DATABASE nome do Banco Bem lgico no !? Vamos criar um script PHP: mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());
mysql_query("CREATE DATABASE mydatabase") or die(mysql_error());
mysql_close();
Primeiro a conexo com o Banco de Dados. A seguir criamos o Banco de Dados denominado "mydatabase". Finalmente encerramos a conexo. At aqui tudo bem... Mas as tarefas se complicam um pouco quando se trata de criar Tabelas com PHP. Para isso usamos a query SQL CREATE TABLE com a seguinte sintaxe: CREATE TABLE nome da Tabela ( nome_coluna1 DATA_TYPE, nome_coluna3 DATA_TYPE, nome_coluna4 DATA_TYPE, ... ) Nome da Tabela e nome_coluna so, sem dvida, o nome da Tabela e da coluna respectivamente. DATA_TYPE usado para especificar o tipo de dado a ser inserido na coluna. Os tipos de dados mais usados so:
INT: Para nmeros inteiros DECIMAL: Pra nmeros decimais CHAR: Textos com menos de 255 caracteres TEXT: Para texto com menos de 65.535 caracteres LONGTEXT: Para texto com menos 4.294.967.295 caracteres Date: Para datas no formato YYYY-MM-DD Time: Para hora no formto HH:MM:SS DATETIME: Para data/hora no formato YYYY-MM-DD HH:MM:SS
Lgico e fcil. Vejamos um exemplo: mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error()); mysql_select_db("people") or die(mysql_error());
mysql_query("CREATE TABLE MyTable ( id INT AUTO_INCREMENT, FirstName CHAR, LastName CHAR, Phone INT, BirthDate DATE PRIMARY KEY(id) )") Or die(mysql_error()); mysql_close ();
Comeamos com a conexo com o servidor MySQL. A seguir usamos a funo mysql_select_db para selecionar o Banco de Dados denominado "people". Depois criamos a Tabela denominada "persons" contendo 5 colunas. Notar que para a coluna "id" usamos INT para especificar que a coluna conter nmeros inteiros e a seguir usamos AUTO_INCREMENT para definir que os nmeros sero incrementados automaticamente, garantindo que cada linha da coluna tenha um ID nico (exclusivo, ou seja, que no se repete). Finalmente usamos PRIMARY KEY para definir a coluna "id" como chave primria. A chave primria o identificador exclusivo da cada registro (linha) da Tabela. Este identificador ser de grande utilidade para manipulao dos registros.
Criar Banco de Dados e Tabelas com phpMyAdmin
Pode ser bastante til criar Banco de Dados e Tabelas com PHP. Porm, em geral, ser bem mais fcil usar phpMyAdmin (ou qualquer outra ferramenta administrativa para MySQL) que existe por padro na maioria dos servidores remotos e em XAMPP. As figuras mostradas a seguir esclarecem como criar Banco de Dados e Tabelas no phpMyAdmin. Comece fazendo login no phpMyAdmin. Em geral o endereo o mesmo do servidor MySQL (por exemplo: "http://mysql.myhost.com") bem como o nome de usurio e senha. No XAMPP o endereo : http://localhost/phpmyadmin/. Uma vez logado, digite um nome para o Banco de Dados e clique o boto "Create": Em alguns servidores remotos j existe um Banco de Dados padro e no permitida a criao de outros Banco de Dados. Se este for o seu caso, use o Banco de Dados padro. Para criar uma Tabela clique na aba "Databases" e escolha o Banco de Dados na qual a Tabela ser criada: Procure a caixa denominada "Create new table in database" e nela digite o nome da Tabela e o nmero de colunas. Clique o boto "Go":
A seguir define o nome das colunas, o tipo de dado em cada uma delas, etc. tal como mostramos anteriormente.
Notar que usamos "id" como PRIMARY KEY e AUTO_INCREMENT (A_I). Assim, criamos nosso Banco de Dados e sua Tabela. Nas prximas lies aprenderemos como inserir, extrair e apagar dados de um Banco de Dados.
Lio 19c: Inserindo dados em um Banco de Dados
Nesta lio veremos como inserir dados em um Banco de Dados com uso de scripts PHP.
Inserir dados com SQL
Para inserir dados em um Banco de Dados com SQL a sintaxe idntica a usada para criar Banco de Dados. A sintaxe mostrada a seguir: INSERT INTO nome_da_Tabela(coluna1, coluna2, ...) VALUES(valor1, valor2, ...)
Notar que podemos manipular dados em vrias colunas ao mesmo tempo usando uma lista separada por vrgula no comando SQL. Mas, bvio, podemos manipular uma coluna somente. Colunas que no constam do comando SQL permanecem vazias.
Exemplo: Inserir dados de uma pessoa na Tabela
Neste exemplo usaremos o Banco de Dados criado na Lio 18. Vamos inserir os dados de uma pessoa. Seja a pessoa Gus Goose cujo telefone 99887766 e nasceu em 1964-04-20 O comando SQL para insero conforme mostrado a seguir: $strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES('Gus','Goose','99887766 ','1964-04-20')";
mysql_query($strSQL) or die(mysql_error());
Notar que um comando SQL pode tornar-se extenso dificultando seu entendimento. Para esclarecer melhor e facilitar o entendimento existe uma sintaxe alternativa conforme mostrada a seguir: strSQL = "INSERT INTO people(";
Segundo esta sintaxe, dividimos o comando em parte e usamos uma varivel - no nosso caso $strSQL - para concatenar as partes em um comando nico. Na prtica no importa a sintaxe que voc usa. Dependendo do seu projeto escolha aquela que for mais conveniente para o claro entendimento dos comandos SQL. Tente executar o seguinte cdigo para inserir Gus Goose no Banco de Dados: <html> <head> <title>Inserindo dados em um Banco de Dados</title> </head> <body> <?php
// Conexo com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Seleciona o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// Comando SQL executado mysql_query($strSQL) or die (mysql_error());
// Encerra conexo mysql_close(); ?>
<h1>Banco de Dados atualizado!</h1> </body> </html>
Inserir uma entrada de usurio no Banco de Dados
Em certos casos h necessidade de inserir uma entrada de usurio no Banco de Dados. Como voc j deve ter concludo isto ser feito com uso de um formulrio como descrito na Lio 11 - pois podemos inserir o valor passado pelo formulrio em um comando SQL. Suponha o formulrio conforme mostrado a seguir: <form action="insert.php" method="post"> <input type="text" name="FirstName" /> <input type="submit" value="Save" />
</form> O formulrio ser enviado para insert.php no qual, conforme mostrado na lio 11, extrairemos o valor entrado no formulrio pelo usurio. Para este nosso exemplo o comando SQL conforme mostrado a seguir: strSQL = "INSERT INTO people(FirstName) values('" . $_POST["FirstName"] . "')"
De maneira semelhante possvel extrair dados de cookies, sessions, query strings, etc.
Erros mais comuns
No incio, voc provavelmente ser brindado com uma bateria de mensagens de erros quando tentar atualizar dados em um Banco de Dados. No h lugar para o menor erro que seja, quando trabalhamos com Banco de Dados. O simples esquecimento ou m colocao de uma vrgula pe tudo a perder e l vem uma mensagem de erro. Observe a seguir os erros mais comuns cometidos quando se est iniciando. Tipo de dado incorreto
importante manter consistncia de tipo de dado na coluna. Cada coluna deve conter um determinado tipo de dado. A figura a seguir mostra os tipos de dados para a Tabela "people" do nosso exemplo.
Se voc tentar inserir textos ou nmeros em um mesmo campo que admite somente textos, vai ocorrer erro. Ou bem texto ou bem nmero. importante definir o tipo de dados da forma mais precisa possvel. Observe, a seguir, uma lista dos tipos de dados:
Tipo de dado Definio Tamanho CHR Texto ou combinao de texto e nmero. Pode-se tambm ser empregado para nmeros no usados em clculos (por exemplo: nmero de telefone). At 255 caracteres - ou o comprimento definido em "Length" TEXT Textos longos ou combinao de textos e nmeros. At 65.535 caracteres. INT Dados numricos para clculos matemticos. 4 bytes. DATE Datas no formato YYYY-MM-DD 3 bytes. TIME Horas no formato hh:mm:ss 3 bytes. DATETIME Data/hora no formato YYYY-MM-DD hh:mm:ss 8 bytes.
Comandos SQL com aspas e barras
Se, em um comando SQL, voc tentar inserir texto contendo aspas simples ('), aspas duplas (") ou barra invertida (\), o registro no ser inserido. A soluo usar barra invertida (\) antes destes caracteres nos comandos SQL. Isto pode ser feito com uso da funo addslashes como mostrado a seguir: <?php
$strText = "Seu nome O'Reilly?"; $strText = addslashes($strText);
?>
Ento, usando esta funo todo caractere ('), (") e (\) ser acrescido automaticamente de uma barra invertida (\) no seu incio. Esta barra extra necessria apenas para possibilitar a insero do dado no Banco de Dados. importante ressaltar que o PHP realiza por padro o addslashes em todos os dados obtidos via $_GET, $_POST e $_COOKIE. Assim, no h necessidade de usar addslashes em strings que j tenham sido "escapadas" (com barra invertida). Na prxima lio estudaremos como extrair dados de um Banco de Dados. Mas, antes de seguir tente inserir mis pessoas no Banco de Dados (tal como mostramos no exemplo para a pessoa Gus Goose).
Lio 20c: Extraindo dados de um Banco de Dados
Chegou a hora de extrairmos dados de um Extraindo dados de um Banco de Dados. Esta , sem duvida, uma das mais importantes lies deste tutorial. Uma vez que voc tenha entendido esta lio voc saber por que um site baseado em Banco de Dados pode tornar-se to poderoso e sua viso de desenvolvedor certamente vai se expandir-se drasticamente.
Consultas SQL
Para extrair dados de um Banco de Dados usamos queries (consultas) SQL. Um exemplo de query : "extraia todos os dados da tabela 'people' ordenados alfabeticamente" ou "extraia os nomes contidos na tabela 'people'". Repetimos: Structured Query Language (SQL) usada para estabelecer comunicao com o Banco de Dados. Observe o exemplo a seguir: Extrair todos os dados da tabela 'people' O comando SQL assim: SELECT * FROM people
A sintaxe auto explicativa. Leia e conclua sobre os comandos mostrados a seguir.
Exemplo 1: Extrair dados de uma tabela
Este exemplo usa o Banco de Dados e Tabela mostrados na Lies 19 e na Lio 18. Portanto, leia aquelas lies antes de prosseguir. O exemplo mostra como extrair dadis da tabela "people" com uso de consulta SQL. SQL query retorna o resultado em forma de uma srie de registros. Estes registros so armazenados em um conjunto de registros denominadorecordset. Um recordset pode ser definido como uma escie de tabela na memria do servidor contendo linhas de dados (registros) no qual cada registro subdividido em campos individuais (ou colunas). Um recordset pode ser comparado a uma tabela na qual cada registro pode ser comparado a uma linha de tabela. Usando PHP podemos percorrer um recordset com um loop usando a funo mysql_fetch_array que retorna um array de linhas. O cdigo a seguir mostra o uso de mysql_fetch_array para construir um loop pelo recordset: <html> <head> <title>Extraindo dados de um Banco de Dados</title> </head> <body>
<?php // Conexo com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Seleciona o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
//query SQL $strSQL = "SELECT * FROM people";
// Executa a query (o recordset $rs contm o resultado da query) $rs = mysql_query($strSQL);
// Loop pelo recordset $rs // Cada linha vai para um array ($row) usando mysql_fetch_array while($row = mysql_fetch_array($rs)) {
// Escreve o valor da coluna FirstName (que est no array $row) echo $row['FirstName'] . "<br />";
}
// Encerra a conexo mysql_close(); ?> </body> </html> Ver o resultado do exemplo
Notar que para cada registro extraimos o contedo da coluna "FirstName" com $row['FirstName']. De modo semelhante podemos extrair o contedo da coluna "Phone" bcom $row['Phone'], por exemplo. A ordem de sada dos recordset a mesma que ele ocupa na tabela do Banco de Dados. No exemplo a seguir veremos como controlar a ordem de sada dos recordset.
Exemplo 2: Ordem de sada alfabtica, cronolgica ou nmerica.
No raro interessante colocar a sada dos registros em uma ordem alfabtica, cronolgica ou nmerica. Isto fcil de fazer com SQL no qual a sintaxe Order By ColumnName usada para realizar o ordenamento. Observe o comando SQL do exemplo anterior: strSQL = "SELECT * FROM people"
Os registros podem, por exemplo, serem ordenados em ordem alfabtica pelo primeiro nome das pessoas, como mostrado a seguir: strSQL = "SELECT * FROM people ORDER BY FirstName" Ou cronologicamente pela data de aniversrio: strSQL = "SELECT * FROM people ORDER BY BirthDate" A ordenao pode ser alterada de ascending (ordem ascendente) para descending (ordem descendente) com uso de DESC: strSQL = "SELECT * FROM people ORDER BY BirthDate DESC" No exemplo a seguir as pessoas so ordenadas por idade: <html> <head>
<title>Extraindo dados de um Banco de Dados</title>
</head> <body>
<?php // Conecta com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Seleciona o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// query SQL $strSQL = "SELECT * FROM people ORDER BY BirthDate DESC";
// Executa a query (o recordset $rs contm o resultado da query) $rs = mysql_query($strSQL);
// Loop pelo recordset $rs while($row = mysql_fetch_array($rs)) {
// Escreve o valor da coluna FirstName e BirthDate echo $row['FirstName'] . " " . $row['BirthDate'] . "<br />";
}
// Encerra a conexo mysql_close(); ?>
</body> </html> Ver o resultado do exemplo
Como exerccio construa a query SQL para ordenao pelo primeiro nome, ltimo nome, nmero de telefone.
Extrair dados segundo uma condio
At aqui nossas consultas SQL extraram todas as linhas de uma tabela. Mas, comum a necessidade de extrao de certas linhas da tabela que atendam a uma determinada condio como, por exemplo, a linha contendo um determinado telefone ou nome. Suponha que se deseje extrair informaes sobre a pessoa cujo telefone "66554433". Isto se faz conforme mostrado a seguir: strSQL = "SELECT * FROM people WHERE Phone = '66554433 '"
Existem seis operadores relacionais na linguagem SQL: = Igual < Menor que > Maior que <= Menos que / igual > = Maior que/igual != Diferente
H tambm, na linguagem, alguns operadores lgicos: AND (E) OR (OU) NOT (NO)
Ver Lio 6 para mais informaes sobre operadores lgicos. No exemplo a seguir usaremos condicionais para criar um catlogo de endereos.
Exemplo 3: Catlogo de endereos
Neste exemplo usaremos muitos dos conceitos que voc j aprendeu neste tutorial. Construiremos uma lista de nomes de pessoas extrados do Banco de Dados na qual cada nome um link cujo destino um documento com maiores informaes sobre a pessoa. Vamos precisar de dois arquivos - list.php e person.php - com o seguinte cdigo:
Cdigo para o arquivo list.php <html> <head> <title>Extraindo dados de um Banco de Dados</title> </head> <body>
<ul>
<?php // Conectar com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Selecionar o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// query SQL $strSQL = "SELECT * FROM people ORDER BY FirstName DESC";
// Executar a query (o recordset $rs contm o resultado da query) $rs = mysql_query($strSQL);
// Loop pelo recordset $rs while($row = mysql_fetch_array($rs)) {
// Nome da pessoa $strName = $row['FirstName'] . " " . $row['LastName'];
// Cria link para o arquivo person.php com um valor de id no URL $strLink = "<a href = 'person.php?id = " . $row['id'] . "'>" . $strNavn . "</a>";
// Lista de links echo "<li>" . $strLink . "</li>";
}
// Encerra conexo mysql_close(); ?>
</ul> </body> </html> Cdigo para o arquivo person.php <html> <head> <title>Extraindo dados de um Banco de Dados</title> </head> <body>
<dl>
<?php // Conectar com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Selecionar o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// Extrair dados de acordo com o id passado no URL $strSQL = "SELECT * FROM people WHERE id=" . $_GET["id"]; $rs = mysql_query($strSQL);
// Loop pelo recordset $rs while($row = mysql_fetch_array($rs)) {
// Escreve dados da pessoa echo "<dt>Nome:</dt><dd>" . $row["FirstName"] . " " . $row["LastName"] . "</dd>"; echo "<dt>Telefone:</dt><dd>" . $row["Phone"] . "</dd>"; echo "<dt>Data de nascimento:</dt><dd>" . $row["BirthDate"] . "</dd>";
}
// Encerra conexo mysql_close(); ?>
</dl> <p><a href="list.php">Voltar lista de nomes</a></p>
</body>
</html> Ver exemplo
O catlogo de endereos bem simples, mas bem demonstra o potencial de desenvolvimento com PHP e Banco de Dados. Imagine um Banco de Dados com 10.000 produtos e respectivas informaes devidamente cadastradas. Fazendo algumas simples adaptaes nos arquivos do exemplo mostrado voc poder montar, com facilidade, um catlogo de produtos com mais de 10.000 pginas usando apenas um Banco de Dados e dois arquivos PHP. Bem-vindo ao maravilhoso mundo dos sites extensveis, fceis de construir e manutenir! Depois que voc aprende a trabalhar com Banco de Dados suas solues web nunca mais sero as mesmas.
Lio 21c: Apagando dados de um Banco de Dados
Nas duas lies anteriores voc aprendeu a inserir e extrair dados de um Banco de Dados. Nesta lio estudaremos como apagar dados de Um Banco de Dados, tarefa que bem mais simples do que inserir dados.
Apagando dados com SQL
A sintaxe SQL para apagar dados : DELETE FROM TableName WHERE condition
Exemplo: Apagar um dado
Para apagar um dado voc pode usar o campo identificador nico (AutoNumber) da tabela correspondente. Na tabela do nosso Banco de Dados a coluna denominada id. Usar o identificador nico garante que apenas uma linha de dados ser apagada. No exemplo a seguir apagamos a linha com o identificador cujo valor 24: <html> <head> <title>Apaga dado em um Banco de Dados</title> </head>
<body>
<?php // Conectar com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Selecionar o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// SQL para apagar registro $strSQL = "DELETE FROM people WHERE id = 24"; mysql_query($strSQL);
// Fechar conexo com Banco de Dados mysql_close(); ?>
<h1>Registro apagado!</h1>
</body> </html>
Lembre-se que no existe uma pasta "Lixeira" quando se trabalha com PHP e Banco de Dados. Se voc apagar um dado no ter como recuper-lo posteriormente.
Lio 22c: Atualizando dados em um Banco de Dados
Em lies anteriores voc aprendeu a inserir, requisitar e apagar dados de um Banco de Dados. Nesta lio estudaremos como atualizar os dados de um Banco de Dados, ou seja, editar os valores dos campos de uma tabela do Banco de Dados.
Atualizando dados com SQL
A sintaxe SQL para atualizar dados em um campo de uma tabela mostrada as seguir: UPDATE TableName SET TableColumn='value' WHERE condition possvel atualizar vrios campos ds tabela de uma s vez como mostrado a seguir: UPDATE TableName SET TableColumn1='value1', TableColumn2='value2' WHERE condition Com os conhecimentos adquiridos nas lies 19, 20 e 21 ficou bem mais fcil entender como funciona a sintaxe mostrada. Vejamos um exemplo.
Exemplo: Atualizando campos da tabela "people"
O cdigo a seguir faz a atualizao do campo "FirstName" (primeiro nome) de Donald Duck's para D. e altera o campo "Phone" (nmero do telefone) para 44444444. As outras informaes (last name (ltimo nome) e birthdate (data de aniversrio)) no sero alteradas. Voc pode tentar alterar os dados das outras pessoas escrevendo seus prprios comandos SQL. <html> <head> <title>Update data in database</title>
</head> <body>
<?php // Conecta com o Banco de Dados mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Seleciona o com o Banco de Dados mysql_select_db("mydatabase") or die(mysql_error());
// Constri a consulta SQL $strSQL = "Update people set "; $strSQL = $strSQL . "FirstName= 'D.', "; $strSQL = $strSQL . "Phone= '44444444' ";
$strSQL = $strSQL . "Where id = 22";
// Executa a consulta mysql_query($strSQL);
// Encerra a conexo mysql_close(); ?>
<h1>O Banco de Dados foi atualizado!</h1> </body> </html>
Este exemplo completa as lies sobre Banco de Dados. Voc aprendeu a usar PHP para inserir, requisitar, apagar e atualizar dados em um Banco de Dados. Assim, voc est habilitado a criar solues web dinmica e avanadas nas quais o usurio ser capaz de manutenir e atualizar dados em um Banco de Dados, usando formulrios. Se voc quiser visitar uma aplicao sofisticada demonstrando o que pode ser feito com PHP e Banco de Dados torne-se nosso parceiro. gratuito e tomar apenas 1 minuto do seu tempo para a realizao do seu registro. Voc poder entre outras coisas gerenciar seu perfil usando formulrios. Talvez voc at colha algumas ideias para empregar no seu site. Aqui terminamos nosso tutorial. PHP nos fornece muitas funcionalidades para adicionar interatividade em um site. O nico limite a sua imaginao. Divirta-se!
Alguns termos vistos
Segue uma descrio breve sobre os termos vistos no captulo PHP. Nesse captulo apresentaremos uma breve descrio dos mesmo e possveis exemplo. Para uma descrio mais aprofundada ser necessrio visitar os sites dos respectivos links apresentado no captulo Links de Referncia, ou uma leitura mais aprofundada sobre os mesmos (atravs de livros ou outros sites). Algumas partes desse captulo esto em ingls, isso foi feito para que no houvesse erro de traduo, uma vez que tais trechos no esto devidamente traduzidos no site de origem. Por esse motivo, foi preferido mant-los dessa forma, evitando conflitos em um assunto j carregado do desafios como a programao (no modo geral).
Um array associativo de variveis passadas para o atual script via HTTP Cookies. $HTTP_COOKIE_VARS contm a mesma informao inicial, mas no uma superglobal. (Note que $HTTP_COOKIE_VARS e $_COOKIE so variveis diferentes e que o PHP manuseia-as diferentemente)
Exemplo #1 Exemplo da $_COOKIE <?php echo 'Hello ' . htmlspecialchars($_COOKIE["name"]) . '!'; ?> Assumindo que o "nome" do cookie tenha sido definido antes O exemplo acima ir imprimir algo similar : Hello Hannes!
Nota: Esta uma 'superglobal', ou global automtica, varivel. Isto simplismente significa que ela est disponvel em todos os escopos pelo script. No h necessidade de fazer global $variable; para acess-la dentro de uma funo ou mtodo.
Um array associativo de variveis passadas para o script atual via o mtodo HTTP GET. $HTTP_GET_VARS contm a mesma informao inicial, mas no uma superglobal. (Note que $HTTP_GET_VARS e $_GET so variveis diferentes e que o PHP manuseia-as diferentemente).
Assumindo que o usurio entrou por http://example.com/?name=Hannes O exemplo acima ir imprimir algo similar : Hello Hannes! Nota:Esta uma 'superglobal', ou global automtica, varivel. Isto simplismente significa que ela est disponvel em todos os escopos pelo script. No h necessidade de fazer global $variable; para acess-la dentro de uma funo ou mtodo.
Um array associativo de variveis passados para o script atual via mtodo HTTP POST. $HTTP_POST_VARS contm a mesma informao inicial, mas no uma superglobal. (Note que $HTTP_POST_VARS e $_POST so variveis diferentes e que o PHP manuseia-as diferentemente).
Assumindo que o usurio tenha postado name=Hannes O exemplo acima ir imprimir algo similar : Hello Hannes!
Nota:Esta uma 'superglobal', ou global automtica, varivel. Isto simplismente significa que ela est disponvel em todos os escopos pelo script. No h necessidade de fazer global $variable; para acess-la dentro de uma funo ou mtodo.
Addslashes (PHP 4, PHP 5)
Addslashes Adiciona barras invertidas a uma string string addslashes ( string $str ) Retorna uma string com barras invertidas antes de caracteres que precisam ser escapados para serem escapados em query a banco de dados, etc. Estes caracteres so aspas simples ('), aspas duplas ("), barra invertida (\) e NUL (o byte NULL). Um exemplo do uso de addslashes() quando voc esta entrando com dados em um banco de dados. Por exemplo, para inserir o nome O'reilly em um banco de dados, voc vai precisar escapa-lo. A maior parte dos banco de dados faz isto com \ o que nos leva a O\'reilly. Isto apenas para colocar os dados no banco de dados, a \ no ser inserida. Tendo a diretiva do PHP magic_quotes_sybase em on far com que ' seja escapada com outra '. A diretiva do PHP magic_quotes_gpc on por padro, e ela essencialmente executa addslashes() para todos dados de GET, POST e COOKIE. No use addslashes() em strings que j foram escapadas com magic_quotes_gpc j que voc acabara escapando duas vezes. A funoget_magic_quotes_gpc() pode dar uma mo para conferir isto.
Parmetros: A string a ser adicionado escape.
Valor Retornado: Retorna a string com escapes.
Exemplo #1 Exemplo da addslashes() <?php $str = "Seu nome O'reilly?";
// Mostra: Seu nome O\'reilly? echo addslashes($str); ?>
Array (PHP 4, PHP 5)
Cria um array. Leia a seo sobre o tipo array para mais informao sobre o que um array.
Parmetros: A sintaxe "index => values", separados por vrgulas, definem ndice e valores respectivamente. O ndice por de ser do tipo string ou numrico. Quando o ndice omitido, um ndice numrico inteiro automaticamente gerado, comeando do 0. Se o ndice um inteiro, o prximo ndice a ser gerado ser igual ao maior ndice inteiro + 1. Note que quando dois ndices idnticos so definidos, o ltimo sobrescreve o primeiro. O exemplo a seguir demonstra como criar um array com duas dimenses, como especificar chaves em arrays associativos, e como definir ndices numricos em arrays normais. Tem uma vrgula aps a ltima entrada definida da matriz, mesmo sendo incomum, uma sintaxe vlida.
Valor Retornado: Retorna um array dos parmetros. Os parmetros podem ser dados com um ndice com o operador =>. Leia a seo sobre o tipo array para mais informao sobre o que ele .
Exemplo #2 Indexao automtica com array() <?php $array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13); print_r($array); ?> O exemplo acima ir imprimir: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 13 [4] => 1 [8] => 1 [9] => 19 ) Note que o ndice 3 definido duas vezes, e retm seu ltimo valor 13. O ndice 4 definido depois do ndice 8, e o ndice gerado depois dele foi 9, uma vez que o maior ndice era 8. Esse exemplo cria um array com o ndices a partir do 1.
Exemplo #3 Array com ndices a partir do 1 com array() <?php $firstquarter = array(1 => 'Janeiro', 'Fevereiro', 'Maro'); print_r($firstquarter); ?> O exemplo acima ir imprimir: Array ( [1] => Janeiro [2] => Fevereiro [3] => Maro )
Como no Perl, voc pode acessar o valor de um array dentro de aspas. Entretanto, voc ter que colocar a sua array dentro de conchetes. Exemplo #4 Acessando uma matriz dentro de conchetes <?php
?> Nota: array() um construtor da linguagem usado para representar arrays literais, e no um funo normal.
closedir (PHP 4, PHP 5)
closedir Fecha o manipulador do diretrio void closedir ( resource $dir_handle ) Fecha o stream do diretrio indicado por dir_handle. O stream deve ter sido previamente aberto por opendir().
Parmetros: dir_handle O manipulador de diretrio resource aberto com opendir().
Exemplo #1 Exemplo da closedir() <?php $dir = "/etc/php5/";
// Open a known directory, read directory into variable and then close if (is_dir($dir)) { if ($dh = opendir($dir)) { $directory = readdir($dh); closedir($dh); } } ?>
Date (PHP 4, PHP 5)
Date Formata a data e a hora local String date ( string $format [, int $timestamp ] ) Retorna uma string de acordo com a string format dada usando o inteiro timestamp dado ou a hora atual local se nenhum timestamp dado. Em outras palavras, timestamp opcional e o padro para o valor de time().
Parmetros: format A string de formato da data a ser mostrada. Veja as opes de formatao abaixo.
Os seguintes caracteres so reconhecidos na string do parmetro format Caractere de format Descrio Exemplo de valores retornados Day --- --- d Dia do ms, 2 digitos com preenchimento de zero 01 at 31 D Uma representao textual de um dia, trs letras Mon at Sun j Dia do ms sem preenchimento de zero 1 at 31 l ('L' minsculo) A representao textual completa do dia da semana Sunday at Saturday N Representao numrica ISO-8601 do dia da semana (adicionado no PHP 5.1.0) 1 (para Segunda) at 7(para Domingo) S Sufixo ordinal ingls para o dia do ms, 2 caracteres st, nd, rd ou th. Funciona bem com j w Representao numrica do dia da semana 0 (para domingo) at 6(para sbado) z O dia do ano (comeando do 0) 0 through 365 Semana --- --- W Nmero do ano da semana ISO-8601, semanas comeam na Segunda (adicionado no PHP 4.1.0) Exemplo: 42 (the 42nd week in the year) Ms --- --- F Um representao completa de um ms, como January ou March January atDecember m Representao numrica de um ms, com leading zeros 01 a 12 M Uma representao textual curta de um ms, trs letras Jan a Dec n Representao numrica de um ms, sem leading zeros 1 a 12 t Nmero de dias de um dado ms 28 through 31 Year --- --- L Se est em um ano bissexto 1 se est em ano bissexto, 0 caso contrrio. o Nmero do ano ISO-8601. Este tem o mesmo valor como Y, exceto que se o nmero da semana ISO (W) pertence ao anterior ou prximo ano, o ano usado ao invs. (adicionado no PHP 5.1.0) Exemplos: 1999 ou2003 Y Uma representao de ano completa, 4 dgitos Exemplos: 1999 ou2003 y Uma representao do ano com dois dgitos Exemplos: 99 ou 03 Tempo --- --- a Antes/Depois de meio-dia em minsculo am or pm A Antes/Depois de meio-dia em maisculo AM or PM B Swatch Internet time 000 at 999 g Formato 12-horas de uma hora sem preenchimento de zero 1 at 12 G Formato 24-horas de uma hora sem preenchimento de zero 0 at 23 h Formato 12-horas de uma hora com zero preenchendo esquerda 01 at 12 H Formato 24-horas de uma hora com zero preenchendo esquerda 00 at 23 i Minutos com zero preenchendo esquerda 00 at 59 s Segundos, com zero preenchendo esquerda 00 at 59 u Milisegundos (adicionado no PHP 5.2.2) Exemplo: 54321 Timezone --- --- e Identificador de Timezone (adicionado no PHP 5.1.0) Exemplos: UTC, GMT,Atlantic/Azores I (capital i) Se a data est ou no no horrio de vero 1 se horrio de vero,0 caso contrrio. O Diferena para Greenwich time (GMT) em horas Exemplo: +0200 P Diferena para Greenwich time (GMT) com dois pontos entre horas e minutos (adicionado no PHP 5.1.3) Exemplo: +02:00 T Abreviao de Timezone Exemplos: EST, MDT... Z Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. -43200 at 50400 Full Date/Time --- --- c ISO 8601 date (adicionado no PHP 5) 2004-02-12T15:19:21+00:00 r RFC 2822 formatted date Exemplo: Thu, 21 Dec 2000 16:01:07 +0200 U Segundos desde a poca Unix (January 1 1970 00:00:00 GMT) Veja tambm time()
Caracteres no reconhecidos no formato de sero impressos como so. O formato Z ser sempre retornado 0 quando usar gmdate().
Nota: Desde que esta funo aceita somente integer timestamps o caractere de formato u somente til quando usando a funodate_format() com um timestamp baseado pelo usurio criado com date_create(). timestamp
O parmetro opcional timestamp um integer Unix timestamp cujo padro a hora local se timestamp no for dado. Em outras palavras, o padro o valor de time().
Valor Retornado: Retorna um string da data formatada. Se um valor no numrico usado para timestamp, FALSE retornado e um erro de nvel E_WARNING emitido.
Erros: Toda a chamada a uma funo de data/hora ir gerar um se a zona da hora no for valida, e/ou uma mensagem E_STRICT ou E_WARNING se estiver usando a definio do sistema ou a varivel de ambiente TZ. Veja tambm date_default_timezone_set()
Changelog Verso Descrio 5.1.0 O intervalo vlido de um timestamp tipicamente de Sex, 13 Dez 1901 20:45:54 GMT to Ter, 19 Jan 2038 03:14:07 GMT. (Estas so as datas que correspondem ao valor mnimo e mximo para um inteiro com sinal de 32-bit). Contudo, antes do PHP 5.1.0 este intervalo foi limitado de 01-01-1970 para 19-01-2038 em alguns sistemas (e.g. Windows). 5.1.0 Agora emite E_STRICT e E_NOTICE em erros da zona de horrio. 5.1.1 H constantes tils do padro de formato de data/hora que podem ser usados para especificar o parmetro format.
Exemplo #1 Exemplos da date() <?php // Modifica a zona de tempo a ser utilizada. Disnovvel desde o PHP 5.1 date_default_timezone_set('UTC');
Voc pode prevenir um caracter conhecido no formato de string de um existente escapando-o com uma barra invertida antes dele. Se o caracter com a barra invertida j uma sequncia especial, voc pode precisar tambm escapar a barra invertida.
Exemplo #2 Caracteres de escape em date() <?php // exibe algo como: Wednesday the 15th echo date("l \\t\h\e jS"); ?>
possvel utilizar date() e mktime() juntos para encontrar datas no futuro ou no passado.
Exemplo #3 Exemplo da date() e mktime() <?php $tomorrow = mktime (0, 0, 0, date("m") , date("d")+1, date("Y")); $lastmonth = mktime (0, 0, 0, date("m")-1, date("d"), date("Y")); $nextyear = mktime (0, 0, 0, date("m"), date("d"), date("Y")+1); ?> Nota: Esta pode ser mais confivel do que simplesmente adicionar ou subtrair o nmero de segundos em um dia ou ms para um timestamp devido ao horrio de vero. Alguns exemplos de formatao de date(). Note que voc poderia escapar qualquer outro caracter, como algum que atualmente tenha um significado especial produzir resultados indesejveis, e outros caracteres poderiam assumir significados em futuras verses do PHP. Quando usar escape, certifique o uso de aspas simples para evitar caracteres como \n prprio para novas linhas.
Exemplo #4 Formatao de date() <?php // Assumindo que hoje : March 10th, 2001, 5:16:18 pm
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm $today = date("m.d.y"); // 03.10.01 $today = date("j, n, Y"); // 10, 3, 2001 $today = date("Ymd"); // 20010310 $today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03- 01, 1631 1618 6 Fripm01 $today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day. $today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001 $today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month $today = date("H:i:s"); // 17:16:17 ?>
Para formatar datas em outras lnguas, voc usaria as funes setlocale() e strftime() ao invs de date().
Nota: Para gerar um timestamp de uma string da representao da data, voc pode usar strtotime(). Adicionalmente, alguns banco de dados tem funes para converter os formatos de data para timestamps (como a funo UNIX_TIMESTAMP do MySQL).
Dica: Timestamp do incio da requisio est disponvel na $_SERVER['REQUEST_TIME'] desde o PHP 5.1.
echo
(PHP 4, PHP 5)
Echo Exibe uma ou mais strings
void echo ( string $arg1 [, string $... ] )
Exibe todos os parmetros.
Echo no uma funo atualmente (construtor da linguagem) ento no obrigatrio usar parnteses. echo (diferente de outro construtor da linguagem) no se comporta como uma funo, ento ele nem sempre usado no contexto de uma funo. Sendo assim, se voc quer passar mais de um parmetro para echo, os parmetros no precisam estar entre parnteses. echo tambm tem um sintaxe curta, onde voc pode imediatamente abrir a tag com o sinal de igual. Esta sintaxe curta funciona habilitando a definio da configurao short_open_tag.
echo <<<END This uses the "here document" syntax to output multiple lines with $variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! END;
// Because echo does not behave like a function, the following code is invalid. ($some_var) ? echo 'true' : echo 'false';
// However, the following examples will work: ($some_var) ? print 'true' : print 'false'; // print is also a construct, but // it behaves like a function, so // it may be used in this context. echo $some_var ? 'true': 'false'; // changing the statement around ?> Nota: Este um construtor de linguagem e no uma funo, por isso no possvel cham-lo atravs de funes variveis
Veja Tambm print - Mostra uma string printf() - Mostra uma string formatada flush() - Descarrega o buffer de sada Else (PHP 4, PHP 5)
Often you'd want to execute a statement if a certain condition is met, and a different statement if the condition is not met. This is what else is for. elseextends an if statement to execute a statement in case the expression in the if statement evaluates to FALSE. For example, the following code would display a is greater than b if $a is greater than $b, and a is NOT greater than b otherwise:
<?php if ($a > $b) { echo "a is greater than b"; } else { echo "a is NOT greater than b"; } ?>
The else statement is only executed if the if expression evaluated to FALSE, and if there were any elseif expressions - only if they evaluated to FALSE as well (see elseif).
elseif/else If (PHP 4, PHP 5)
elseif, as its name suggests, is a combination of if and else. Like else, it extends an if statement to execute a different statement in case the original ifexpression evaluates to FALSE. However, unlike else, it will execute that alternative expression only if the elseif conditional expression evaluates to TRUE. For example, the following code would display a is bigger than b, a equal to b or a is smaller than b: <?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?>
There may be several elseifs within the same if statement. The first elseif expression (if any) that evaluates to TRUE would be executed. In PHP, you can also write 'else if' (in two words) and the behavior would be identical to the one of 'elseif' (in a single word). The syntactic meaning is slightly different (if you're familiar with C, this is the same behavior) but the bottom line is that both would result in exactly the same behavior. The elseif statement is only executed if the preceding if expression and any preceding elseif expressions evaluated to FALSE, and the current elseif expression evaluated to TRUE.
Nota: Note that elseif and else if will only be considered exactly the same when using curly brackets as in the above example. When using a colon to define your if/elseif conditions, you must not separate else if into two words, or PHP will fail with a parse error. <?php
/* Incorrect Method: */ if($a > $b): echo $a." is greater than ".$b; else if($a == $b): // Will not compile. echo "The above line causes a parse error."; endif;
/* Correct Method: */ if($a > $b): echo $a." is greater than ".$b; elseif($a == $b): // Note the combination of the words. echo $a." equals ".$b; else: echo $a." is neither greater than or equal to ".$b; endif;
?> Explode (PHP 4, PHP 5)
explode Divide uma string em strings
Valor Retornado: array explode ( string $delimiter , string $string [, int $limit ] ) Retorna uma matriz de strings, cada uma como substring de string formada pela diviso dela a partir do delimiter.
Parmetros delimiter- O delimitador. String - A string de entrada. Limit - Se limit definido, o array retornado ir conter o mximo de elementos igual a limit com o ltimo elemento contendo o resto da string. Se o parmetro limit negativo, todos componentes exceto o ltimo -limit so retornados. Ainda que implode() pode por razes histricas aceitar seus parmetros em uma das duas ordens, explode() no pode. Voc deve assegurar que o argumento delimiter vem antes do argumento string.
Se delimiter uma string vazia (""), explode() ir retornar FALSE. Se delimiter contm um valor que no contm em string, ento explode() ir retornar um array contendo string.
Changelog Verso Descrio 5.1.0 Suporte a limit negativo foi adicionado 4.0.1 O parmetro limit foi adicionado
Exemplo #2 Exemplos de parmetro limit <?php $str = 'one|two|three|four';
// positive limit print_r(explode('|', $str, 2));
// negative limit (since PHP 5.1) print_r(explode('|', $str, -1)); ?> O exemplo acima ir imprimir: Array ( [0] => one [1] => two|three|four ) Array ( [0] => one [1] => two [2] => three ) Nota: Esta funo binary-safe.
Feof (PHP 4, PHP 5)
feof Testa pelo fim-de-arquivo (eof) em um ponteiro de arquivo
bool feof ( resource $handle ) Testa pelo fim-do-arquivo em um ponteiro de arquivo.
Parmetros handle:The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()).
Valor Retornado: Retorna TRUE se o ponteiro estiver no fim do arquivo (eof) ou um erro ocorrer (incluindo um limite de tempo de socket). Caso contrrio retorna FALSE.
Aviso: Se uma conexo aberta por fsockopen() no foi fechada pelo servidor, feof() ir esperar at que seja atingido o limite de tempo para retornar TRUE. O limite de tempo padro 60 segundos. Voc pode usar stream_set_timeout() para mudar este valor.
Aviso: Se o ponteiro de arquivo passado no for valido voc pode ter um loop infinito, porque EOF ir falhar em retornar TRUE.
Exemplo #1 Exemplo de feof() com um ponteiro de arquivo invlido <?php // se o arquivo no pode ser lido ou nao existe a funo fopen retorna FALSE $file = @fopen("no_such_file", "r");
// FALSE a partir do fopen ir causar um warning(aviso) e resultar em um loop infinit o aqui while (!feof($file)) { }
fclose($file); ?> Fgets fgets
(PHP 4, PHP 5)
fgets L uma linha de um ponteiro de arquivo
String fgets (resource $handle [, int $length ] ) Retorna uma linha do ponteiro do arquivo.
Parmetros
Handle- The file pointer must be valid, and must point to a file successfully opened by fopen() or fsockopen() (and not yet closed by fclose()). Length- A leitura termina quando length - 1 bytes tenham sido lidos, em uma quebra de linha (que includa no retorno), ou no final do arquivo (EOF), o que acontecer primeiro. Se nenhum comprimento for especificado, a leitura do stream continuar at chegar ao final da linha.
Nota: At o PHP 4.3.0, era assumido 1024 como o comprimento da linha, quando omitido. Se a maioria das linhas no arquivo for maior que 8KB, mais eficiente para seu script especificar o comprimento mximo de linha.
Valor Retornado: Retorna uma string de at length - 1 bytes lida do arquivo apontado por handle. Se um erro ocorrer, retorna FALSE.
Changelog Verso Descrio 4.3.0 fgets() passou a ser segura para binrios 4.2.0 O parmetro length tornou-se opcional
Exemplo #1 Lendo um arquivo linha por linha <?php $handle = @fopen("/tmp/arquivodeentrada.txt", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); echo $buffer; } fclose($handle); } ?>
Nota: Se PHP no est apropriadamente reconhecendo o final de linha quando lendo arquivos ou criando por um computador Macintosh, habilitando a opo auto_detect_line_endings em tempo de execuo pode ajudar a resolver o problema.
Nota:Pessoas acostumadas semntica do fgets em 'C' devem notar a diferena em como o fim do arquivo (EOF) retornado.
Fileatime
(PHP 4, PHP 5) fileatime Obtm o ltimo horrio de acesso do arquivo
int fileatime ( string $nomedoarquivo ) Obtm o ltimo horrio de acesso de um dado arquivo.
Parmetros filename:caminho para o arquivo.
Valor Retornado: Retorna o tempo que o arquivo foi acessado pela ltima vez, ou FALSE em caso de erro. O tempo retornado como um timestamp Unix.
Exemplo #1 Exemplo de fileatime() <?php
// Exibe algo como: arquivo.txt teve o ultimo acesso em: December 29 2002 22:16:23.
$filename = 'arquivo.txt'; if (file_exists($filename)) { echo "$filename teve o ultimo acesso em: " . date ("F d Y H:i:s.", fileatime($fil ename)); }
?>
Nota:O atime de um arquivo modificado sempre que blocos de dados de um arquivo so lidos. Isto pode ser performance custosa quando uma aplicao regularmente acessa um grande nmero de arquivos ou diretrios. Alguns sistemas de arquivos Unix podem ser montados com atualizao de atime desabilitada para aumentar a peformance de cada aplicao; USENET news spools um exemplo comum. Nestes sistemas de arquivos esta funo intil.
Nota: Os resultados desta funo so cacheados. Veja clearstatcache() para mais detalhes.
Dica: A partir do PHP 5.0.0, esta funo tambm pode ser utilizada com alguns wrappers URL. Veja Supported Protocols and Wrappers para uma lista de quais wrappers so suportados pela famlia de funes stat().
Filemtime (PHP 4, PHP 5)
filemtime Obtm o tempo de modificao do arquivo
int filemtime ( string $nomedoarquivo ) Esta funo retorna o tempo quando o bloco de informao de um arquivo foi inicialmente escrito, isto , o tempo quando o contedo do arquivo foi modificado.
Parmetros filenam: Caminho para o arquivo. Valor Retornado: Retorna o tempo da ltima modificao do arquivo, ou FALSE em caso de um erro. O tempo retornado como um Unix timestamp, que apropriado para funo date().
Exemplo #1 Exemplo da filemtime() <?php // exibe algo como: arquivo.txt foi modificado em December 29 2002 22:16:23.
$filename = 'arquivo.txt'; if (file_exists($filename)) { echo "$filename foi modificado em " . date ("F d Y H:i:s.", filemtime($filename)) ; } ?>
Nota: Os resultados desta funo so cacheados. Veja clearstatcache() para mais detalhes.
Dica: A partir do PHP 5.0.0, esta funo tambm pode ser utilizada com alguns wrappers URL. Veja Supported Protocols and Wrappers para uma lista de quais wrappers so suportados pela famlia de funes stat().
Filesize (PHP 4, PHP 5) filesize L o tamanho do arquivo
int filesize ( string $filename ) Obtm o tamanho do dado arquivo.
Parmetros filenam: Caminho para o arquivo.
Valor Retornado: Retorna o tamanho do arquivo em bytes, ou FALSE (e gera um erro de nvel E_WARNING) no caso de um erro.
Nota: Como o tipo inteiro do PHP sinalizado e muitas plataformas utilizam inteiros de 32 bits, filesize() pode retornar resultados inesperados para arquivos que sejam maiores que 2 Gb. Para arquivos entre 2 Gb e 4 Gb voc pode resolver esse problema utilizando sprintf("%u", filesize($file)).
?> Nota: Os resultados desta funo so cacheados. Veja clearstatcache() para mais detalhes.
Dica: A partir do PHP 5.0.0, esta funo tambm pode ser utilizada com alguns wrappers URL. Veja Supported Protocols and Wrappers para uma lista de quais wrappers so suportados pela famlia de funes stat(). Fopen (PHP 4, PHP 5) fopen Abre um arquivo ou URL
fopen() conecta um recurso nomeado, especificado por filename, a um stream.
Parmetros filename: Se filename estiver na forma de "scheme://...", assumido que seja uma URL, e o PHP buscar por um manipulador de protocolo (tambm conhecido como wrapper) para aquele scheme. Se nenhum wrapper para aquele protocolo estiver registrado, o PHP emitir um aviso para ajud-lo a rastrear potenciais problemas no seu script, e ento continuar presumindo que filename especifica um nome de arquivo. Se o PHP decidiu que filename se refere a um arquivo local, ento ele tentar abrir um stream para aquele arquivo. O arquivo precisa ser acessvel pelo PHP, ento voc precisa assegurar que as permisses de acesso do arquivo permitem este acesso. Se voc tiver ativado safe mode ou open_basedir, outras restries podem se aplicar. Se o PHP decidiu que filename se refere a um protocolo registrado e esse protocolo estiver registrado como um protocolo de rede, o PHP ir verificar para ter certeza que allow_url_fopen est ativado. Se estiver desligado, o PHP emitir um alerta e a chamada ao fopen ir falhar.
Nota: A lista de protocolos suportados pode ser encontrada em Supported Protocols and Wrappers. Alguns protocolos (tambm mencionados como wrappers) suportam context e/ou opes do php.ini. Recorra pgina especfica do protocolo em uso para uma lista das opes que podem ser definidas. (ex.: o valor php.ini user_agent utilizado pelo wrapper http). Na plataforma Windows, tenha cuidado de escapar qualquer barra invertida usada no caminho do arquivo, ou use barras normais.
O parmetro mode especifica o tipo de acesso que voc precisa ao stream. Pode ser um dos seguintes: Lista dos possveis modos de fopen() utilizando mode mode Descrio 'r' Abre somente para leitura; coloca o ponteiro do arquivo no comeo do arquivo. 'r+' Abre para leitura e escrita; coloca o ponteiro do arquivo no comeo do arquivo. 'w' Abre somente para escrita; coloca o ponteiro do arquivo no comeo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo no existir, tenta cri-lo. 'w+' Abre para leitura e escrita; coloca o ponteiro do arquivo no comeo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo no existir, tenta cri-lo. 'a' Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo no existir, tenta cri-lo. 'a+' Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo no existir, tenta cri-lo. 'x' Cria e abre o arquivo somente para escrita; coloca o ponteiro no comeo do arquivo. Se o arquivo j existir, a chamada a fopen()falhar, retornando FALSE e gerando um erro de nvel E_WARNING. Se o arquivo no existir, tenta cri-lo. Isto equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2). 'x+' Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no comeo do arquivo. Se o arquivo j existir, a chamada a fopen()falhar, retornando FALSE e gerando um erro de nvel E_WARNING. Se o arquivo no existir, tenta cri-lo. Isto equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).
Nota: Famlias de sistemas operacionais diferentes tm convenes de delimitao de linhas diferentes. Quando voc escreve um arquivo texto e quer inserir uma quebra de linha, voc precisa utilizar o(s) caractere(s) de fim de linha adequado(s) ao seu sistema operacional. Sistemas baseados no Unix utilizam \n como caractere de final de linha, sistemas baseados no Windows utilizam \r\n e sistemas baseados no Macintosh utilizam \r. Se escrever caracteres de fim de linha inadequados em seus arquivos, eles devero "parecer engraados" quando voc os abrir em outras aplicaes. O Windows oferece uma flag de traduo do modo texto ('t') que traduz, transparentemente, \n para \r\n quando trabalhando no arquivo. Em contraste, voc tambm pode utilizar 'b' para forar o modo binrio, que no ir traduzir o arquivo. Para usar essas flags, informe ou 'b' ou 't' como o ltimo caractere no parmetro mode. O modo de traduo padro depende da SAPI e da verso do PHP que voc estiver usando, ento voc encorajado a sempre utilizar a flag apropriada por razes de portabilidade. Voc deve usar o modo 't' se estiver trabalhando em arquivos texto simples e utilizar \npara delimitar as linhas em seu script, de forma que voc pode esperar que eles sejam lidos em outras aplicaes como o Notepad. Voc deve usar 'b' em todos os outros casos. Se voc no especificar a flag 'b' quando trabalhar com arquivos binrios, voc pode passar por problemas estranhos com seus dados, incluindo arquivos de imagens danificados e problemas estranhos com os caracteres \r\n.
Nota: Para portabilidade, fortemente recomendado que voc sempre utilize a flag 'b' quando abrir arquivos com fopen().
Nota: Novamente para portabilidade, tambm fortemente recomendado que voc reescreva cdigos que utilizem ou confiem no modo 't', de forma que passem a utilizar os fins de linha corretos e o modo 'b'.
use_include_path O terceiro parmetro opcional use_include_path pode ser definido para '1' ou TRUE se voc quiser buscar o arquivo tambm no include_path.
context O suporte ao contexto foi adicionado no PHP 5.0.0. Para uma descrio de contextos, veja Streams.
Valor Retornado: Retorna um recurso de ponteiro de arquivo em caso de sucesso, ou FALSE em caso de erro.
Erros: Se a abertura falhar, um erro nvel E_WARNING gerado. Voc pode utilizar @ para suprimir esse alerta. Changelog Verso Descrio 4.3.2 A partir do PHP 4.3.2, o modo padro definido para binrio em todas as plataformas que distinguem entre modo texto e binrio. Se voc estiver tendo problemas com seus scripts depois de uma atualizao, tente acrescentar a flag 't' como um paliativo at que voc tenha tornado seus scripts portveis como mencionado acima. 4.3.2 As opes 'x' e 'x+' foram adicionadas
Aviso Quando usando SSL, o Microsoft IIS ir violar o protocolo fechando a conexo sem enviar uma : notificao close_notify. O PHP acusar isso como sendo "SSL: Fatal Protocol Error" quando tentar ler os dados. Para prevenir isso, o valor de error_reportingdeve ser reduzido para um nvel que no inclui avisos. para o nvel que no emita warnings. O PHP 4.3.7 e seguintes conseguem detectar servidores IIS defeituosos quando voc abre um stream utilizando o wrapper https:// e suprimir os avisos. Se voc est usando fsockopen() para criar um socket ssl://, a responsabilidade de detectar e suprimir esse aviso passa para voc.
Nota: Quando o safe-mode est ativo, o PHP verifica se o diretrio no qual o script est em operao tem o mesmo UID (proprietrio) do script que est sendo executado. Se voc est tendo problemas com a leitura e gravao para arquivos e voc est usando a verso de mdulo de servidor do PHP, lembre-se de que os arquivos e diretrios que voc est usando precisam ser acessveis ao processo do servidor HTTP.
For (PHP 4, PHP 5)
for loops are the most complex loops in PHP. They behave like their C counterparts. The syntax of
a for loop is: for (expr1; expr2; expr3) statement
The first expression (expr1) is evaluated (executed) once unconditionally at the beginning of the loop. In the beginning of each iteration, expr2 is evaluated. If it evaluates to TRUE, the loop continues and the nested statement(s) are executed. If it evaluates toFALSE, the execution of the loop ends. At the end of each iteration, expr3 is evaluated (executed). Each of the expressions can be empty or contain multiple expressions separated by commas. In expr2, all expressions separated by a comma are evaluated but the result is taken from the last part. expr2 being empty means the loop should be run indefinitely (PHP implicitly considers it as TRUE, like C). This may not be as useless as you might think, since often you'd want to end the loop using a conditional break statement instead of using the for truth expression. Consider the following examples. All of them display the numbers 1 through 10: <?php /* example 1 */
for ($i = 1; $i <= 10; $i++) { echo $i; }
/* example 2 */
for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; }
/* example 3 */
$i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; }
Of course, the first example appears to be the nicest one (or perhaps the fourth), but you may find that being able to use empty expressions in for loops comes in handy in many occasions. PHP also supports the alternate "colon syntax" for for loops. for (expr1; expr2; expr3): statement ... endfor;
It's a common thing to many users to iterate through arrays like in the example below. <?php /* * This is an array with some data we want to modify * when running through the for loop. */ $people = array( array('name' => 'Kalle', 'salt' => 856412), array('name' => 'Pierre', 'salt' => 215863) );
The above code can be slow, because the array size is fetched on every iteration. Since the size never changes, the loop be easily optimized by using an intermediate variable to store the size instead of repeatedly calling count(): <?php $people = array( array('name' => 'Kalle', 'salt' => 856412), array('name' => 'Pierre', 'salt' => 215863) );
The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes: foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element). The second form will additionally assign the current element's key to the $key variable on each iteration. It is possible to customize object iteration.
Nota: When foreach first starts executing, the internal array pointer is automatically reset to the first element of the array. This means that you do not need to call reset() before a foreach loop. As foreach relies on the internal array pointer changing it within the loop may lead to unexpected behavior. In order to be able to directly modify array elements within the loop precede $value with &. In that case the value will be assigned by reference. <?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) unset($value); // break the reference with the last element ?> Referencing $value is only possible if the iterated array can be referenced (i.e. if it is a variable). The following code won't work: <?php foreach (array(1, 2, 3, 4) as &$value) { $value = $value * 2; } ?>
Aviso: Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().
Nota: foreach does not support the ability to suppress error messages using '@'. You may have noticed that the following are functionally identical: <?php $arr = array("one", "two", "three"); reset($arr); while (list(, $value) = each($arr)) { echo "Value: $value<br />\n"; }
foreach ($arr as $value) { echo "Value: $value<br />\n"; } ?> The following are also functionally identical: <?php $arr = array("one", "two", "three"); reset($arr); while (list($key, $value) = each($arr)) { echo "Key: $key; Value: $value<br />\n"; }
foreach ($arr as $key => $value) { echo "Key: $key; Value: $value<br />\n"; } ?> Some more examples to demonstrate usage: <?php /* foreach example 1: value only */
$a = array(1, 2, 3, 17);
foreach ($a as $v) { echo "Current value of \$a: $v.\n"; }
/* foreach example 2: value (with its manual access notation printed for illustration ) */
PHP 5.5 added the ability to iterate over an array of arrays and unpack the nested array into loop variables by providing a list() as the value. For example: <?php $array = [ [1, 2], [3, 4], ];
foreach ($array as list($a, $b)) { // $a contains the first element of the nested array, // and $b contains the second element. echo "A: $a; B: $b\n"; } ?> O exemplo acima ir imprimir: A: 1; B: 2 A: 3; B: 4 You can provide fewer elements in the list() than there are in the nested array, in which case the leftover array values will be ignored: <?php $array = [ [1, 2], [3, 4], ];
foreach ($array as list($a)) { // Note that there is no $b here. echo "$a\n"; } ?> O exemplo acima ir imprimir: 1 3 A notice will be generated if there aren't enough array elements to fill the list(): <?php $array = [ [1, 2], [3, 4], ];
foreach ($array as list($a, $b, $c)) { echo "A: $a; B: $b; C: $c\n"; } ?> O exemplo acima ir imprimir:
Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C:
Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C:
fwrite (PHP 4, PHP 5)
fwrite Escrita binary-safe em arquivos
int fwrite ( resource $handle , string $string [, int $length ] ) fwrite() escreve o contedo da string para o stream de arquivo apontado por handle.
Parmetros Handle: A file system pointer resource that is typically created using fopen(). String: A string a ser escrita. Length: Se o argumento comprimento for dado, a escrita ir parar depois que comprimento bytes tenham sido escritos ou o final da string seja alcanado, o que vier primeiro. Observe que se o argumento comprimento for dado, a opo de configurao magic_quotes_runtime ser ignorada e nenhuma barra ser removida da string.
Valor Retornado: fwrite() retorna o nmero de bytes escritos, ou FALSE em caso de erro.
Nota: Em sistemas que diferenciam entre arquivos binrios e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' includo no parmetro 'mode' na fopen().
Nota: Se o handle foi aberto com fopen() em modo de adio, escritas com fwrite() so atmicas (a no ser que o tamanho da string exceda o tamanho de bloco do sistema de arquivos, em algumas plataformas, e contanto que o arquivo esteja em um sistema de arquivos local). Sendo assim, no h necessidade de bloquear um recurso com flock() antes de chamar fwrite(); todos os dados sero escritos sem interrupo.
Nota: Se escrevendo duas vezes para o ponteiro do arquivo, ento a informao ser adicionado ao final do contudo do arquivo, significando que o exemplo abaixo no funcionaria como esperado: <?php $fp = fopen('data.txt', 'w'); fwrite($fp, '1'); fwrite($fp, '23'); fclose($fp);
// o contedo de 'data.txt' agora 123 e no 23! ?> Exemplo #1 Um simples exemplo de fwrite() <?php $filename = 'teste.txt'; $conteudo = "Acrescentar isso ao arquivo\n";
// Primeiro vamos ter certeza de que o arquivo existe e pode ser alterado if (is_writable($filename)) {
// Em nosso exemplo, ns vamos abrir o arquivo $filename // em modo de adio. O ponteiro do arquivo estar no final // do arquivo, e pra l que $conteudo ir quando o // escrevermos com fwrite(). if (!$handle = fopen($filename, 'a')) { echo "No foi possvel abrir o arquivo ($filename)"; exit; }
// Escreve $conteudo no nosso arquivo aberto. if (fwrite($handle, $conteudo) === FALSE) { echo "No foi possvel escrever no arquivo ($filename)"; exit; }
echo "Sucesso: Escrito ($conteudo) no arquivo ($filename)";
fclose($handle);
} else { echo "O arquivo $filename no pode ser alterado"; } ?>
Fread (PHP 4, PHP 5)
fread Leitura binary-safe de arquivo
string fread ( resource $handle , int $length )
fread() l at length bytes do ponteiro de arquivo informado em handle. A leitura interrompida quando uma das seguintes condies so satisfeitas: length bytes foram lidos
EOF (end of file - final do arquivo) alcanado um pacote tornou-se disponvel (para network streams) 8192 bytes foram lidos (depois de abrir um stream)
Parmetros Handl: A file system pointer resource that is typically created using fopen(). Lengt: At length nmero de bytes lidos.
Valor Retornado: Retorna a string lida ou FALSE em caso de erro.
Exemplo #1 Um simples exemplo de fread() <?php // l o contedo do arquivo para uma string $filename = "/usr/local/qualquer.txt"; $handle = fopen ($filename, "r"); $conteudo = fread ($handle, filesize ($filename)); fclose ($handle); ?>
Exemplo #2 Exemplo de fread() binrio Aviso Em sistemas que diferenciam entre arquivos binrios e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' includo no parmetro 'mode' na fopen().
Exemplo #3 Exemplos de fread() remoto Aviso Ao ler de qualquer coisa que no seja um arquivo local comum, tal como de streams retornados ao ler arquivos remotos, ou de popen() e fsockopen(), a leitura ir parar depois que um pacote esteja disponvel. Isto significa que voc deve juntar os dados em blocos como demonstrado nos exemplos abaixo. <?php // Para o PHP 5 e superior $handle = fopen("http://www.example.com/", "rb"); $contents = stream_get_contents($handle); fclose($handle); ?> <?php $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?>
Nota: Se voc quer apenas pegar o contedo de um arquivo para uma string, utilize file_get_contents() que tem uma performance ainda melhor que o cdigo acima.
If (PHP 4, PHP 5)
The if construct is one of the most important features of many languages, PHP included. It allows for conditional execution of code fragments. PHP features anif structure that is similar to that of C: if (expr) statement As described in the section about expressions, expression is evaluated to its Boolean value. If expression evaluates to TRUE, PHP will execute statement, and if it evaluates to FALSE - it'll ignore it. More information about what values evaluate to FALSE can be found in the 'Converting to boolean' section. The following example would display a is bigger than b if $a is bigger than $b: <?php if ($a > $b) echo "a is bigger than b"; ?> Often you'd want to have more than one statement to be executed conditionally. Of course, there's no need to wrap each statement with an if clause. Instead, you can group several statements into a statement group. For example, this code would display a is bigger than b if $a is bigger than $b, and would then assign the value of $a into $b: <?php if ($a > $b) { echo "a is bigger than b"; $b = $a; } ?> If statements can be nested infinitely within other if statements, which provides you with complete flexibility for conditional execution of the various parts of your program.
Mail (PHP 4, PHP 5)
mail Envia email
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, str ing $additional_parameters ]] )
Cuidado: No deve conter caractere de nova linha, ou o email pode no ser enviado corretamente.
Messag: Mensagem a ser enviada. Cada linha deve ser separada com um LF (\n). Linhas no deve ser maiores que 70 caracteres.
Cuidado: (Somente Windows) Quando PHP est usando o servidor SMTP diretamente, e uma parada total encontrada no incio de uma linha, ela removida. Para se defender disto, substitua estas ocorrncia com dois pontos seguindos.
additional_headers (opcional): String a ser inserida no final do cabealho do email. Esta normalmente usada para adicionar cabealhos extras (From, Cc, e Bcc). Mltiplos cabealhos extra devem ser separados com um CRLF (\r\n).
Nota: Quando enviando email, o email precisa conter um cabealho From. Este pode ser definido com o parmetro additional_headers, ou um padro pode ser definido no php.ini. Um deslize far com que resulte em uma mensagem de erro similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. O cabealho From define tambm Return-Path em Windows.
Nota: Se mensagens no so recebiedas, tente usar somente um LF (\n). Alguns Unix mail transfer agents de m qualidade modificam LF por CRLF automaticamente (que leva a duplicao de CR se CRLF usado). Este deve ser um ltimo recurso, como no est de acordo com RFC 2822.
additional_parameters (opcional):O parmetro additional_parameters pode ser usado para passar um parmetro adicional para o programa configurado para usa quando enviando email usando a configurao sendmail_path. Por exemplo, isto pode ser usado para definir o endereo do envelope remetente quando usando sendmail com a opo do sendmail -f. Voc pode precisar adicionar o usurio que seu servidor web executa como para sua configurao de sendmail para evitar que um cabealho 'X-Warning' seja adicionado mensagem quando voc define o envelope remetente (-f) usando este mtodo. Para usurios de sendmail, este arquivo /etc/mail/trusted-users.
Valor Retornado: Retorna TRUE se o email foi aceito com sucesso pelo entregado, FALSE caso contrrio. importante notar que somente pelo o email ser aceito pelo entregado, no significa que o email alcancar o destino esperado.
Changelog Verso Descrio 4.3.0 (Somente Windows) Todos os cabealhos (como From, Cc, Bcc e Date) so suportados, e no so case- sensitive. (Como cabealhos customizados no so interpretados pela MTA, so analisados pelo PHP, PHP < 4.3 suportava somente o elemento de cabealho Cc e era case-sensitive). 4.2.3 O parmetro additional_parameters desabilitado em safe_mode e a funo mail() emitir uma mensagem de aviso e retornarFALSE quando usada. 4.0.5 O parmetro additional_parameters foi adicionado.
Exemplo #1 Enviando email. Usando mail() para enviar um simples email: <?php // The message $message = "Line 1\nLine 2\nLine 3";
// In case any of our lines are larger than 70 characters, we should use wordwrap() $message = wordwrap($message, 70);
// Send mail('[email protected]', 'My Subject', $message); ?> Exemplo #2 Enviando email com cabealhos extra. A adio de cabealhos bsicos, dizendo a MUA os endereos From e Reply-To: <?php $to = '[email protected]'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: [email protected]' . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers); ?>
Exemplo #3 Enviando email com um parmetro adicional da linha de comando. O parmetro additional_parameters pode ser usado para passar um parmetro adicional para o programa configurado para usar quando enviar email usando a definio de configurao sendmail_path. <?php mail('[email protected]', 'the subject', 'the message', null, '[email protected]'); ?> Exemplo #4 Enviando email HTML tambm possvel enviar email HTML com mail(). <?php // multiple recipients $to = '[email protected]' . ', '; // note the comma $to .= '[email protected]';
// subject $subject = 'Birthday Reminders for August';
// message $message = ' <html> <head> <title>Birthday Reminders for August</title> </head> <body> <p>Here are the birthdays upcoming in August!</p> <table> <tr> <th>Person</th><th>Day</th><th>Month</th><th>Year</th> </tr> <tr> <td>Joe</td><td>3rd</td><td>August</td><td>1970</td> </tr> <tr> <td>Sally</td><td>17th</td><td>August</td><td>1973</td> </tr> </table> </body> </html> ';
/* Ateno se voc pretende inserir numa varivel uma mensagem html mais complexa do que essa sem precisar escapar os carateres necessrios pode ser feito o uso da sintaxe heredoc, consulte tipos-string-sintaxe- heredoc */
// To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Mail it mail($to, $subject, $message, $headers); ?>
Nota: Se a inteno enviar email HTML ou outro formato complexo, recomendado usar o pacote PEAR PEAR::Mail_Mime.
Nota: A implentao do Windows de mail() difere bastante da implentao Unix. Primeiro, ele no usa um binary local para compor mensagens mas apenas opera com sockets diretos o que significa que uma MTA necessria monitorando um socket de rede (que pode ser ou o localhost ou uma mquina remota). Segundo, cabealhos customizados como From:, Cc:, Bcc: e Date: not so interpretados pela MTA, mas so analiados pelo PHP. Assim como, o parmetro to no deve ser um endereo na forma de "Algo <[email protected]>". O comando de email poderia no analisar isso adequadamente enquanto se comunica com o MTA.
Nota: Email com anexos e tipos especiais de contedo (e.g. HTML) podem ser enviado usando esta funo. Isto melhorado com MIME-encoding - para mais informao, veja este artigo da Zend ou as classes PEAR Mime.
Nota 4 : Vale a pena notar que a funo mail() no apropriada para grande volume de email em um loop. Esta funo abre e fecha um socket SMTP para cada email, que no muito eficiente. Para enviar uma grande quantidade de email, veja os pacotes PEAR::Mail, e PEAR::Mail_Queue.
Nota 5 : O seguintes RFCs podem ser teis: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049, e RFC 2822.
Mysql_close (PHP 4, PHP 5)
mysql_close Fecha a conexo MySQL
bool mysql_close ([ resource $link_identifier ] )
mysql_close() fecha a conexo no persistente ao servidor MySQL que esta associado ao identificador de conexo dado. Se link_identifier no for especificado, a ultima conexo aberta usada.
Usar mysql_close() no normalmente necessrio, j que as conexes no persistentes so automaticamente fechadas ao final da execuo do script. Veja tambm liberando recursos.
Parmetros - link_identifier: The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
Valor Retornado: Retorna TRUE em caso de sucesso ou FALSE em caso de falha. Exemplo #1 Exemplo mysql_close() <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link); ?> O exemplo acima ir imprimir: Conexo bem sucedida
Nota: mysql_close() no ir fechar conexes persistentes criadas por mysql_pconnect().
Mysql_connect (PHP 4, PHP 5)
mysql_connect Abre uma conexo com um servidor MySQL
resource mysql_connect ([ string $server [, string $username [, string $password [, bool $ new_link [, int $client_flags ]]]]] ) Abre ou reutiliza uma conexo com um servidor MySQL.
Parmetros Serve:O servidor MySQL. Tambm pode incluir um nmero de porta, exemplo "servidor:porta" ou um caminho para um socket local, exemplo ":/caminho/para/socket" para o servidor local(localhost). Se a diretiva do PHP mysql.default_host no estiver definida(padro), ento o valor padro 'localhost:3306' Username: O nome de usurio. O valor padro o nome do usurio que o proprietrio do processo do servidor. Password: A senha. O valor padro uma senha vazia. new_link: Se uma segunda chamada feita a mysql_connect() com os mesmos argumentos, no estabelecida uma nova conexo, mas ao invs, o identificador da conexo que j esta aberta retornado. O parmetro new_link modifica este funcionamento e faz mysql_connect()sempre abrir uma nova conexo, mesmo que mysql_connect() seja chamado antes com os mesmos parmetros. client_flags: O parmetro client_flags pode ser uma combinao das seguintes constantes: MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS,MYSQL_CLIENT_IGNORE_SPACE ou MYSQL_CLIENT_INTERACTIVE. Leia a seo sobre Constante do cliente MySQL para maiores informaes.
Valor Retornado: Retorna um identificador de conexo MySQL em caso de sucesso, ou FALSE em caso de falha.
Changelog Verso Descrio 4.3.0 Adicionado o parmetro client_flags. 4.2.0 Adicionado o parmetro new_link. 3.0.10 Adicionado o suporte para ":/caminho/para/socket" com server. 3.0.0 Adicionado o suporte para ":porta" com server.
Exemplo #1 Exemplo mysql_connect() <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link); ?>
Exemplo #2 Exemplo mysql_connect() usando a a sintaxe servidor:porta <?php // ns conectamos com example.com na porta 3307 $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link);
// ns conectamos com localhost na porta 3307 $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link); ?>
Exemplo #3 Exemplo mysql_connect() usando a sintaxe ":/caminho/para/socket" <?php // ns conectamos com localhost e socket exemplo /tmp/mysql.sock
//variao 1: omitindo localhost $link = mysql_connect('/tmp/mysql', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link);
// variant 2: with localhost $link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link); ?>
Nota: Em qualquer lugar que voc especificar "localhost" ou "localhost:porta" como servidor, a biblioteca de cliente do MySQL ir sobrescrever isso e tentar conectar com um socket local (named pipe no Windows). Se voc quiser usar TCP/IP, use "127.0.0.1" ao invs de "localhost". Se a biblioteca de cliente do MySQL tentar conectar com o socket local errado, voc dever definir o caminho correto como na sua configurao do PHP e deixar o campo servidor em branco.
Nota: A conexo com o servidor ser fechada assim que a execuo do script terminar, a menos que tenha sido fechada anteriormente usando-se explicitamente mysql_close().
Nota: Voc pode suprimir a mensagem de erro em caso de falha adicionando ante do nome da funo @.
Mysql_fetch_array (PHP 4, PHP 5)
mysql_fetch_array Obtm uma linha como uma matriz associativa, uma matriz numrica, ou ambas
array mysql_fetch_array ( resource $result [, int $result_type ] ) Retorna uma matriz que corresponde a linha obtida e move o ponteiro interno dos dados adiante.
Parmetros Resul: The result resource that is being evaluated. This result comes from a call to mysql_query(). result_type: O tipo de array que deve ser obtida. uma constante e pode ter os seguintes valores: MYSQL_ASSOC, MYSQL_NUM, e o valor padro deMYSQL_BOTH.
Valor Retornado Retorna uma array que corresponde a linha obtida, ou FALSE se no houver mais linhas. O tipo da array retornada depende de como result_type esta definido. Usando MYSQL_BOTH (padro), voc ter um array com ambos os ndices, numrico e associativo. Usando MYSQL_ASSOC, voc tem apenas os ndices associativos (como mysql_fetch_assoc() funciona), usando MYSQL_NUM, voc tem apenas os ndices numricos (como mysql_fetch_row()funciona). Se duas ou mais colunas do resultado tiverem os mesmos nomes de campos, a ultima coluna ter precedencia. Para acessar a(s) outra(s) coluna(s) com o mesmo nome, voc dever usar o ndice numrico da coluna ou fazer um alias para a coluna. Para colunas com alias, voc no pode acessar os contedos com o nome original da coluna.
Exemplo #1 Consulta com nomes de campos duplicados usando alias SELECT table1.field AS foo, table2.field AS bar FROM table1, table2
Exemplo #2 mysql_fetch_array() com MYSQL_NUM <?php mysql_connect("localhost", "mysql_user", "mysql_password") or die("No foi possvel conectar: " . mysql_error()); mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
Nota - Performance: Uma coisa importante para notar que usar mysql_fetch_array() no significativamente mais lento do que usar mysql_fetch_row(), enquanto prov um valor agregado significante.
Nota: Nomes de campos nesta funo diferenciam maisculos e minusculas.
Nota: Esta funo assimila campos NULL para o NULL do PHP.
mysql_query() envia uma consulta (para o banco de dados atualmente ativo no servidor associado ao link_identifier especificado).
Parmetros Quer:A consulta SQL. A consulta no deve terminar com um ponto e vrgula. link_identifier: The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
Valor Retornado Para comandos SELECT, SHOW, DESCRIBE ou EXPLAIN, mysql_query() retorna um resource em caso de sucesso, ou FALSE em caso de falha. Para outros tipos de consultas SQL, UPDATE, DELETE, DROP, etc, mysql_query() retorna TRUE em caso de sucesso ou FALSE em caso de erro. O recurso de resultado retornado pode ser passado para mysql_fetch_array(), e outras funes para manipular tabelas de resultados, para acessar os dados retornados. Use mysql_num_rows() para obter quantas linhas foram retornadas para um comando SELECT ou mysql_affected_rows() para obter quantas linhas foram afetadas por um comando DELETE, INSERT, REPLACE, ou UPDATE.
mysql_query() ir tambm falhar e retornar FALSE se o usurio no tiver permisses para acessar a tabela(s) referenciadas pela consulta.
Exemplo #1 Consulta Invlida A seguinte consulta sintaticamente invlida, assim mysql_query() falha e retorna FALSE. <?php $result = mysql_query('SELECT * WHERE 1=1'); if (!$result) { die('Invalid query: ' . mysql_error()); }
?>
Exemplo #2 Consulta vlida A seguinte consulta vlida, assim mysql_query() retorna um resource. <?php // This could be supplied by a user, for example $firstname = 'fred'; $lastname = 'fox';
// Formulate Query // This is the best way to perform a SQL query // For more examples, see mysql_real_escape_string() $query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstna me='%s' AND lastname='%s'", mysql_real_escape_string($firstname), mysql_real_escape_string($lastname));
// Perform Query $result = mysql_query($query);
// Check result // This shows the actual query sent to MySQL, and the error. Useful for debugging. if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); }
// Use result // Attempting to print $result won't allow access to information in the resource // One of the mysql result functions must be used // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc. while ($row = mysql_fetch_assoc($result)) { echo $row['firstname']; echo $row['lastname']; echo $row['address']; echo $row['age']; }
// Free the resources associated with the result set // This is done automatically at the end of the script mysql_free_result($result); ?>
Mysql_select_db (PHP 4, PHP 5)
mysql_select_db Select a MySQL database
Warning: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include: mysqli_select_db() PDO::__construct() (part of dsn) Report a bug
bool mysql_select_db ( string $database_name [, resource $link_identifier = NULL ] ) Sets the current active database on the server that's associated with the specified link identifier. Every subsequent call to mysql_query() will be made on the active database.
Parameters database_name: The name of the database that is to be selected. link_identifier: The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
Valores Retornados: retorna TRUE quando bem sucedido ou FALSE quando falha.
// make foo the current db $db_selected = mysql_select_db('foo', $link); if (!$db_selected) { die ('Can\'t use foo : ' . mysql_error()); } ?>
Note: For backward compatibility, the following deprecated alias may be used: mysql_selectdb()
Opendir (PHP 4, PHP 5)
opendir Abre um manipulador de diretrio
resource opendir ( string $path [, resource $context ] ) Abre um manipulador de diretrio para ser usado em chamadas subsequentes a closedir(), readdir(), e rewinddir().
Parmetros Path: O caminho do diretrio a ser aberto Contexto: Para descrio do parmetro context, consulte a seo sobre streams do manual.
Valor Retornado: Retorna um manipulador de diretrio resource em sucesso, ou FALSE em falha. Se path no um diretrio vlido ou se o diretrio no pode ser aberto devi a restries de permisses ou ainda por erro no sistema de arquivos,opendir() retorna FALSE e gera um erro PHP de nvel E_WARNING. Voc pode suprimir a exibio da mensagem de erro de opendir() acrecentando um '@' na frente do nome da funo.
Changelog Verso Descrio 5.0.0 path suporta ftp:// URL wrapper. 4.3.0 path pode tambm ser uma URL que suporte listagem de diretrio, contudo somente o file:// URL wrapper suporta isto no PHP 4
Exemplo #1 exemplo de opendir() <?php $dir = "/etc/php5/";
// Abre um diretorio conhecido, e faz a leitura de seu conteudo if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); } } ?> O exemplo acima ir imprimir algo similar : filename: . : filetype: dir filename: .. : filetype: dir filename: apache : filetype: dir filename: cgi : filetype: dir filename: cli : filetype: dir
Readdir (PHP 4, PHP 5)
readdir L os campos do manipulador do diretrio
string readdir ( resource $dir_handle ) Retorna o nome de arquivo do prximo arquivo do diretrio. Os nomes de arquivos so retornados na ordem informada pelo sistema de arquivos.
Parmetros - dir_handle: O manipulador de diretrio resource previamente aberto com opendir().
Valor Retornado: Retorna o nome do arquivo em sucesso, ou FALSE em falha.
Aviso Esta funo pode retornar o booleano FALSE, mas tambm pode retornar um valor no-booleano que pode ser avaliado comoFALSE, como 0 ou "". Leia a seo em Booleanos para maiores informaes. Utilize o operador === para testar o valor retornado por esta funo.
Exemplo #1 Listando todos os arquivos de um diretrio Verifique cuidadosamente o estilo de checagem dos valores retornados por readdir() nos exemplos abaixo. Ns explicitamente testamos se o valor retornado idntico a (igual e do mesmo tipo que FALSE --- veja Operadores de Comparao para maiores detalhes). De outra forma, qualquer entrada de diretrio que seja avaliada para FALSE ir parar o loop (por exemplo, um diretrio nomeado "0"). <?php // Note que !== no existia antes do PHP 4.0.0-RC2
if ($handle = opendir('/path/to/files')) { echo "Manipulador de diretrio: $handle\n"; echo "Arquivos:\n";
/* Esta a forma correta de varrer o diretrio */ while (false !== ($file = readdir($handle))) { echo "$file\n"; }
/* Esta a forma INCORRETA de varrer o diretrio */ while ($file = readdir($handle)) { echo "$file\n"; }
closedir($handle); } ?>
Exemplo #2 Listar todos os arquivos no diretrio atual e retirar . e .. <?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo "$file\n"; } } closedir($handle); } ?>
Set Cookies (PHP 4, PHP 5)
setcookie Envia um cookie
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false]]]]]] ) A funo setcookie() define um cookie para ser enviado juntamente com o resto dos cabealhos HTTP. Como outros cabealhos (headers), os cookies devem ser enviados antes de qualquer sada do seu script (isso uma restrio do protocolo). O que quer dizer que voc deve colocar chamadas a essa funo antes de qualquer sada, incluindo as tags <html> e <head> e tambm espaos em branco.
Uma vez que o cookie foi setado, ele pode ser acessado na prxima pgina atravs dos arrays $_COOKIE e $HTTP_COOKIE_VARS. Note que assuperglobais como $_COOKIE esto disponveis a partir do PHP 4.1.0. Os valores dos cookies tambm existem na varivel $_REQUEST.
Parmetros Todos os argumentos, exceto o name, so opcionais. Voc pode tambm colocar como argumento uma string vazia ("") para pular o argumento. Como o argumento expire um inteiro, ele no pode ser escapado com uma string vazia, por isso utilize um zero (0) no lugar. Veja a RFC 6265 para ver como cada parmetro de setcookie() funciona. Name: O nome do cookie. Value: O valor do cookie. Esse valor guardado no computador do cliente; no guarde informao sensvel. Supondo que o name seja'nomedocookie', o valor pode ser lido travs de $_COOKIE['nomedocookie'] Expire: O tempo para o cookie expirar. Esse valor uma timestamp Unix, portanto o nmero de segundos desde a poca (epoch). Em outras palavras, voc provavelmente ir utilizar isso com a funo time() mais o nmero de segundos que voc quer que ele expire. Ou voc pode utilizar a funo mktime(). time()+60*60*24*30 ir configurar o cookie para expirar em 30 dias. Se configurado para 0, ou omitido, o cookie ir expirar ao fim da sessao (quando o navegador fechar).
Nota: Voc pode ver que o parmetro expire recebe uma timestamp Unix, ao contrrio do formato de data Wdy, DD-Mon-YYYY HH:MM:SS GMT, isso se d porque o PHP faz essa converso internamente. Path: O caminho no servidor aonde o cookie estar disponvel. Se configurado para '/', o cookie estar dosponvel para todo o domain. Se configurado para o diretrio '/foo/', o cookie estar disponvel apenas dentro do diretrio /foo/ e todos os subdiretrios como /foo/bardo domain. O valor padro o diretrio atual onde o cookie est sendo configurado. Domain: O domnio para qual o cookie estar disponvel. Configurando o domnio para 'www.example.com' far com que o cookie esteja disponvel no subdomnio www e nos subdomnios superiores. Cookies disponveis para um domnio inferior, como 'example.com' estaro disponveis para subdomnios superiores, como 'www.example.com'. Browsers antigos ainda implementam a RFC 2109 e podem requerer um . no incio para funcionar com todos os subdomnios. Secure: Indica que o cookie s podera ser transimitido sob uma conexo segura HTTPS do cliente. Quando configurado para TRUE, o cookie ser enviado somente se uma conexo segura existir. No lado do servidor, fica por conta do programador enviar esse tipo de cookie somente sob uma conexo segura (ex respeitando $_SERVER["HTTPS"]). Httponly: Quando for TRUE o cookie ser acessvel somente sob o protocolo HTTP. Isso significa que o cookie no ser acessvel por linguagens de script, como JavaScript. dito que essa configurao pode ajudar a reduzir ou identificar roubos de identidade atravs de ataques do tipo XSS (entretanto ela no suportada por todos os browsers), mas essa informao constantemente discutida. Foi adicionada no PHP 5.2.0. TRUE ou FALSE
Se existe sada antes da chamada dessa funo, setcookie() ir falhar e retornar FALSE. Se a funo setcookie() for executada com sucesso, ela retornar TRUE. Isso no indica que o usurio aceitou o cookie.
Alguns exemplos para seguir de como enviar cookies: Exemplo #1 Exemplo de setcookie() para enviar cookies <?php $value = 'alguma coisa de algum lugar';
setcookie("CookieTeste", $value); setcookie("CookieTeste", $value, time()+3600); /* expira em 1 hora */ setcookie("CookieTeste", $value, time()+3600, "/~rasmus/", ".example.com", 1); ?>
Note que a poro do valor do cookie ser automaticamente codificada com urlencode quando voc enviar o cookie, e quando ele for recebido, ser automaticamente decodificado e atribuido a uma varivel com o mesmo nome do cookie. Se voc no quer que isso acontea, voc pode utilizar no lugar a funo setrawcookie() se voc estiver utilizando o PHP 5. Para ver o contedo do nosso cookie de teste em um script, simplesmente utilize um dos exemplos abaixo: <?php // Mostra um cookie individual echo $_COOKIE["CookieTeste"]; echo $HTTP_COOKIE_VARS["CookieTeste"];
// Outra maneira de depurar(debug)/testar vendo todos os cookies print_r($_COOKIE); ?>
Exemplo #2 Exemplo de setcookie() para deletar cookies Quando estiver deletando um cookie, tenha certeza de que a data de expirao dele est no passado, para acionar o mecanismo de remoo do seu navegador. O exemplo a seguir mostra como deletar os cookies enviados no exemplo anterior: <?php // Configura a data de expirao para uma hora atrs setcookie ("CookieTeste", "", time() - 3600); setcookie ("CookieTeste", "", time() - 3600, "/~rasmus/", ".example.com", 1); ?>
Exemplo #3 setcookie() e arrays Voc pode tambm enviar cookies de array, utilizando a notao de array no nome dele. Isso tem o efeito de enviar tantos cookies quantos elementos houverem no array, mas quando o cookie for recebido todos os valores sero colocados em um array com o nome do cookie: <?php // envia os cookies setcookie("cookie[tres]", "cookietres"); setcookie("cookie[dois]", "cookiedois); setcookie("cookie[um]", "cookieum");
// Depois que a pgina recarregar, mostra eles if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $nome => $valor) { echo "$nome : $valor <br />\n"; } } ?> O exemplo acima ir imprimir: tres : cookietres dois : cookiedois um : cookieum
Changelog Verso Descrio 5.2.0 O parmetro httponly foi adicionado.
Nota: Voc pode utilizar o output buffering para enviar sada antes de chamar essa funo, com o custo de toda sua sada ser guardada em buffer at que voc a envie. Voc pode fazer isso chamando ob_start() e ob_end_flush() em seu script, ou configurando a diretiva output_buffering no seuphp.ini ou arquivos de configurao do servidor.
Nota: Se a diretiva register_globals estiver configurada como on ento os valores dos cookies sero colocadas em variveis. Em nossos exemplos acima, a varivel $CookieTeste ir existir. recomendado o uso de $_COOKIE.
Problemas comuns: Os cookies no estaro disponveis at o prximo carregamento da pgina a qual o cookie dever estar visvel. Para testar se um cookie foi enviado com sucesso, verifique o cookie no prximo carregamento da pgina antes que ele expire. O tempo para expirar configurado via o parmetro expira. Uma maneira boa de depurar a existncia dos cookies chamando a funo print_r($_COOKIE);. Os cookies devem ser deletados com os mesmos parmetros com os quais foram configurados. Se o argumento valor for uma string vazia, ou FALSE, e todos os outros argumentos forem iguais a chamada anterior de setcookie, ento o cookie com o nome especificado ser deletado do cliente remoto. Internamente isso feito colocando o valor do cookie para 'deleted' e a data de expirao para um ano no passado. Quando voc configurar um cookie com o valor FALSE ser tentando deletar o cookie. Portanto evite utilizar valores booleanos. No lugar, utilize 0para FALSE e 1 for TRUE. Nomes de cookies podem ser configurados como arrays e estaro disponves para seus scripts PHP como arrays mas cookies separados sero guardados no sistema do usurio. Considere utilizar explode() para enviar um cookie com nomes e valores mltiplos. No recomendado o uso da funo serialize() para esse propsito, pois ele pode resultar em furos de segurana. Vrias chamadas para a funo setcookie() so feitas na ordem em que so chamadas.
Swithc (PHP 4, PHP 5) The switch statement is similar to a series of IF statements on the same expression. In many occasions, you may want to compare the same variable (or expression) with many different values, and execute a different piece of code depending on which value it equals to. This is exactly what the switch statement is for.
Nota: Note that unlike some other languages, the continue statement applies to switch and acts similar to break. If you have a switch inside a loop and wish to continue to the next iteration of the outer loop, use continue 2.
Nota: Note that switch/case does loose comparision. The following two examples are two different ways to write the same thing, one using a series of if and elseif statements, and the other using the switchstatement:
Exemplo #1 switch structure <?php if ($i == 0) { echo "i equals 0"; } elseif ($i == 1) { echo "i equals 1"; } elseif ($i == 2) { echo "i equals 2"; }
switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; } ?>
Exemplo #2 switch structure allows usage of strings <?php switch ($i) { case "apple": echo "i is apple"; break; case "bar": echo "i is bar"; break; case "cake": echo "i is cake"; break; } ?>
It is important to understand how the switch statement is executed in order to avoid mistakes. The switch statement executes line by line (actually, statement by statement). In the beginning, no code is executed. Only when a case statement is found with a value that matches the value of the switchexpression does PHP begin to execute the statements. PHP continues to execute the statements until the end of the switch block, or the first time it sees abreak statement. If you don't write a break statement at the end of a case's statement list, PHP will go on executing the statements of the following case. For example: <?php switch ($i) { case 0: echo "i equals 0"; case 1: echo "i equals 1"; case 2: echo "i equals 2"; } ?> Here, if $i is equal to 0, PHP would execute all of the echo statements! If $i is equal to 1, PHP would execute the last two echo statements. You would get the expected behavior ('i equals 2' would be displayed) only if $i is equal to 2. Thus, it is important not to forget break statements (even though you may want to avoid supplying them on purpose under certain circumstances). In a switch statement, the condition is evaluated only once and the result is compared to each case statement. In an elseif statement, the condition is evaluated again. If your condition is more complicated than a simple compare and/or is in a tight loop, a switch may be faster. The statement list for a case can also be empty, which simply passes control into the statement list for the next case. <?php switch ($i) { case 0: case 1: case 2: echo "i is less than 3 but not negative"; break; case 3: echo "i is 3"; } ?>
A special case is the default case. This case matches anything that wasn't matched by the other cases. For example: <?php switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; default: echo "i is not equal to 0, 1 or 2"; } ?>
The case expression may be any expression that evaluates to a simple type, that is, integer or floating-point numbers and strings. Arrays or objects cannot be used here unless they are dereferenced to a simple type. The alternative syntax for control structures is supported with switches. For more information, see Alternative syntax for control structures. <?php switch ($i): case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; default: echo "i is not equal to 0, 1 or 2"; endswitch; ?> It's possible to use a semicolon instead of a colon after a case like: <?php switch($beer) { case 'tuborg'; case 'carlsberg'; case 'heineken'; echo 'Good choice'; break; default; echo 'Please make a new selection...'; break; } ?>
Time (PHP 4, PHP 5)
time Retorna o timestamp Unix atual
int time ( void ) Retorna a hora atual medida no nmero de segundos desde a Era Unix (January 1 1970 00:00:00 GMT).
Exemplo #1 time() example <?php $nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs echo 'Now: '. date('Y-m-d') ."\n"; echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n"; // or using strtotime(): echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n"; ?> O exemplo acima ir imprimir algo similar : Now: 2005-03-30 Next Week: 2005-04-06 Next Week: 2005-04-06
Dica: Timestamp do incio da requisio est disponvel na $_SERVER['REQUEST_TIME'] desde o PHP 5.1.
United Nations United Nations High Commissioner for Refugees - www.unhcr.org United Nations Children's Fund - www.unicef.org United Nations Conference on Trade and Development - www.unctad.org United Nations Development Programme - www.undp.org United Nations Capital Development Fund - www.uncdf.org United Nations Volunteers - www.unv.org United Nations Office on Drugs and Crime - www.unodc.org United Nations Environment Programme - www.unep.org United Nations Human Settlements Programme - www.unhabitat.org United Nations Population Fund - www.unfpa.org United Nations Relief and Works Agency for Palestine Refugees in the Near East - www.unrwa.org United Nations World Food Programme - www.wfp.org
User-definition fuction Uma funo pode ser definida usando a seguinte sintaxe: Exemplo #1 Pseudo-cdigo de demonstrao de uma funo <?php function foo ($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Exemplo de funo.\n"; return $valor_retornado; } ?> Qualquer cdigo PHP vlido pode aparecer dentro de uma funo, mesmo outras funes e definies de classes. Nomes de funes seguem as mesmas regras que outros rtulo no PHP. Um nome de funo vlido comea com uma letra ou um sublinhado, seguido, seguido por qualquer nmero de letras, nmeros ou sublinhado. Com uma expresso regular, seria expressado com: [a-zA-Z_\x7f-\xff][a-zA-Z0- 9_\x7f-\xff]*.
Dica: Veja tambm o Guia de nomenclatura em espao de usurio. As funes no precisam ser criadas antes de serem referenciadas, exceto quando uma funo condicionalmente definida como mostrado nos dois exemplos abaixo. Quando uma funo definida condicionalmente como nos dois exemplos abaixo, sua definio precisa ser processada antes de ser chamada. Exemplo #2 Funes definidas condicionalmente <?php
$makefoo = true;
/* Nos nao podemos chamar foo() daqui porque ela ainda no existe, mas nos podemos chamar bar() */
bar();
if ($makefoo) { function foo () { echo "Eu no existo at que o programa passe por aqui.\n"; } }
/* Agora nos podemos chamar foo() porque $makefoo foi avaliado como true */
if ($makefoo) foo();
function bar() { echo "Eu existo imediatamente desde o programa comear.\n"; }
?> Exemplo #3 Funes dentro de funes <?php function foo() { function bar() { echo "Eu no existo at foo() ser chamada.\n"; } }
/* Ns no podemos chamar bar() ainda porque ela ainda no foi definida. */
foo();
/* Agora ns podemos chamar bar(), porque o processamento de foo() tornou a primeira acessivel */
bar();
?> Todas as funes e classes no PHP tem escopo global - elas podem ser chamadas fora de uma funo mesmo que tenham sido definidas dentro e vice-versa. O PHP no suporta sobrecarga de funes, e tambm no possvel cancelar ou alterar a definio de funes previamente declaradas.
Nota: Nomes de funes so insensveis ao caso, mas melhor chamar as funes da mesma forma que ela aparecem nas declaraes. Ambos nmero varivel de argumentos e argumentos padres so suportados em funes. veja tambm as referencias das funes func_num_args(),func_get_arg() e func_get_args() para mais informaes. possvel chamar funes recursivas no PHP. Entretanto evite o uso de funes/mtodos recursivos com mais de 100-200 nveis de recurso j que isso pode estourar a pilha e causar o encerramento do script atual.
Exemplo #4 Funes Recursivas <?php function recursion($a) { if ($a < 20) { echo "$a\n"; recursion($a + 1); } } ?> While PHP 4, PHP 5)
while loops are the simplest type of loop in PHP. They behave just like their C counterparts. The basic form of a while statement is: while (expr) statement
The meaning of a while statement is simple. It tells PHP to execute the nested statement(s) repeatedly, as long as the while expression evaluates to TRUE. The value of the expression is checked each time at the beginning of the loop, so even if this value changes during the execution of the nested statement(s), execution will not stop until the end of the iteration (each time PHP runs the statements in the loop is one iteration). Sometimes, if the while expression evaluates to FALSE from the very beginning, the nested statement(s) won't even be run once. Like with the if statement, you can group multiple statements within the same while loop by surrounding a group of statements with curly braces, or by using the alternate syntax: while (expr): statement ... endwhile; The following examples are identical, and both print the numbers 1 through 10: <?php /* example 1 */
$i = 1; while ($i <= 10) { echo $i++; /* the printed value would be $i before the increment (post-increment) */ }
/* example 2 */
$i = 1; while ($i <= 10): echo $i; $i++; endwhile; ?> Links de Referncia Abaixo a lista de recursos e artigos dos principais termos encontrados nesse documento. No foi possvel juntar todos esses recursos nesse mesmo documento por conta do gradativo aumento de pginas - o que no parece nem um pouco atraente para aqueles que esto aprendendo. Alm disso, coloca-los na forma de links incita o leitor pesquisar cada vez mais sobre os mesmos termos e os demais assuntos acerca do HTML, CSS, PHP e ASP.
1. $_COOKIES (Variveis COOKIES): http://php.net/manual/pt_BR/reserved.variables.cookies.php 2. $_GET (Varivel GET): http://php.net/manual/pt_BR/reserved.variables.get.php 3. $_POST (Varivel POST): http://php.net/manual/pt_BR/reserved.variables.post.php 4. Addslashes: http://php.net/manual/pt_BR/function.addslashes.php 5. Array: http://php.net/manual/pt_BR/function.array.php 6. Closedir: http://php.net/manual/pt_BR/function.closedir.php 7. Date: http://php.net/manual/pt_BR/function.date.php 8. Echo: http://php.net/manual/pt_BR/function.echo.php 9. Else: http://php.net/manual/pt_BR/control-structures.else.php 10. Elseif/Else If: http://php.net/manual/pt_BR/control-structures.elseif.php 11. Explode: http://php.net/manual/pt_BR/function.explode.php 12. Feof: http://php.net/manual/pt_BR/function.feof.php 13. Fgets: http://php.net/manual/pt_BR/function.fgets.php 14. Fgets: http://php.net/manual/pt_BR/function.fgets.php 15. Fileatime: http://php.net/manual/pt_BR/function.fileatime.php 16. Filemtime: http://php.net/manual/pt_BR/function.filemtime.php 17. Filesize: http://php.net/manual/pt_BR/function.filesize.php 18. Fopen: http://php.net/manual/pt_BR/function.fopen.php 19. Fopen: http://php.net/manual/pt_BR/function.fopen.php 20. For: http://php.net/manual/pt_BR/control-structures.for.php 21. Foreach: http://php.net/manual/pt_BR/control-structures.foreach.php 22. Fread: http://php.net/manual/pt_BR/function.fread.php 23. Fwrite: http://php.net/manual/pt_BR/function.fwrite.php 24. If: http://php.net/manual/pt_BR/control-structures.if.php 25. Instalao e Configurao (PHP): http://php.net/manual/pt_BR/install.php 26. Instalando Servidor PHP no Mac OSX: http://php.net/manual/pt_BR/install.macosx.php 27. Instalando Servidor PHP no Unix: http://php.net/manual/pt_BR/install.unix.php 28. Instalando Servidor PHP no Windows: http://php.net/manual/pt_BR/install.windows.php 29. Mail: http://php.net/manual/pt_BR/function.mail.php 30. Manipulao de Sesso: http://php.net/manual/pt_BR/book.session.php 31. Manual do PHP: http://php.net/manual/pt_BR/index.php 32. MYSQL - Criar Auto Increment (Ingls): http://dev.mysql.com/doc/refman/5.0/en/example- auto-increment.html 33. MYSQL - Criar Blob e Tipos de Textos (Ingls): http://dev.mysql.com/doc/refman/5.5/en/blob.html 34. MYSQL - Criar Char e Varchar (Ingls): http://dev.mysql.com/doc/refman/5.5/en/char.html 35. MYSQL - Criar Data-base (Ingls): http://dev.mysql.com/doc/refman/5.5/en/create- database.html 36. MYSQL - Criar Primary Key e Unix (Ingls): http://dev.mysql.com/doc/refman/5.5/en/constraint-primary-key.html 37. MYSQL - Criar Tabela (Ingls): http://dev.mysql.com/doc/refman/5.5/en/create-table.html 38. MYSQL - Criar Time (Ingls): http://dev.mysql.com/doc/refman/5.5/en/time.html 39. MYSQL - Criar Tipos Numricos (Ingls): http://dev.mysql.com/doc/refman/5.5/en/numeric- types.html 40. MYSQL - Date, Datetime e Timestamp: http://dev.mysql.com/doc/refman/5.5/en/datetime.html 41. Mysql_close: http://php.net/manual/pt_BR/function.mysql-close.php 42. Mysql_connect: http://php.net/manual/pt_BR/function.mysql-connect.php 43. Mysql_fetch_array: http://php.net/manual/pt_BR/function.mysql-fetch-array.php 44. Mysql_query: http://php.net/manual/pt_BR/function.mysql-query.php 45. Mysql_select_db: http://php.net/manual/en/function.mysql-select-db.php 46. Opendir: http://php.net/manual/pt_BR/function.opendir.php 47. Readir: http://php.net/manual/pt_BR/function.readdir.php 48. Set Cookies: http://php.net/manual/pt_BR/function.setcookie.php 49. Swithc: http://php.net/manual/pt_BR/control-structures.switch.php 50. Time: http://php.net/manual/pt_BR/function.time.php 51. United Nations: http://pt-br.html.net/tutorials/php/unitednations.txt 52. User-definition fuction: http://php.net/manual/en/functions.user-defined.php 53. While: http://php.net/manual/pt_BR/control-structures.while.php 54. XAMPP para Linux: http://www.apachefriends.org/en/xampp-linux.html 55. XAMPP para Mac OSX: http://www.apachefriends.org/en/xampp-macosx.html 56. XAMPP para Windows: http://www.apachefriends.org/en/xampp-windows.html
Agradecimentos e Esclarecimentos Esse arquivo a unio de vrios tutoriais publicados no site HTML.net. Os administradores desse site reuniro ento todos as lies descritas aqui, e mais algumas que podem ser vistos no mesmo site, porm mudando o idioma padro para ingls. Infelizmente muitos desses tutoriais no foram traduzidos, mas isso no chega ser um problema, afinal de contas, a maioria dos que decidem ser programador acaba por aprender esse idioma. Uma grande fatia do trecho referente ao PHP foi elaborado pelo pessoal do site PHP.net e assim como po sessoal do HTML.net, no possui todo o seu contedo traduzido para o portugus, sendo necessrio um esforo um pouco maior para entender essa parte. Vale lembrar que o intuito desse arquivo no roubar ou violar os direitos autoriais desses sites, eles somente foi elaborado de uma maneira facilitar o aprendizado e possibilitar at mesmo a impresso do contedo presente nesses.