Você está na página 1de 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>

<h1>Cabealho</h1>
<h2>Subttulo</h2>
<h3>Sub-subttulo</h3>


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>

<head>
<title>Meu website</title>
</head>

<body>
<h1>Um cabealho</h1>

<p>texto, texto texto, texto</p>
<h2>Subttulo</h2>
<p>texto, texto texto, texto</p>
</body>


</html>

E agora?

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:

Branco: #ffffff Preto: #000000 Vermelho: #ff0000 Azul: #0000ff Verde: #00ff00 Amarelo: #ffff00

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>

<h1 id="heading1">Cabealho 1</h1>
<p>Texto texto texto texto</p>

<h1 id="heading2">Cabealho 2</h1>
<p>Texto texto texto texto</p>

</body>

</html>

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:nobody@html.net">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:

Exemplo 2:
<img src="images/logo.png">
Exemplo 3:
<img src="http://www.html.net/logo.png">

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.

Exemplo 2:
<table>
<tr>
<td>Clula 1</td>
<td>Clula 2</td>
<td>Clula 3</td>
<td>Clula 4</td>
</tr>
<tr>
<td>Clula 5</td>
<td>Clula 6</td>
<td>Clula 7</td>
<td>Clula 8</td>
</tr>
<tr>
<td>Clula 9</td>
<td>Clula 10</td>
<td>Clula 11</td>
<td>Clula 12</td>
</tr>
</table>
Ser renderizado no navegador assim:
Clula 1 Clula 2 Clula 3 Clula 4
Clula 5 Clula 6 Clula 7 Clula 8
Clula 9 Clula 10 Clula 11 Clula 12
Existem atributos?

Claro! Existem atributos. Por exemplo, o atributo border que usado para definir a espessura de
uma borda em volta da tabela:

Exemplo 3:

<table border="1">
<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

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.

Exemplo 1:
<table border="1">
<tr>
<td colspan="3">Clula 1</td>
</tr>
<tr>
<td>Clula 2</td>
<td>Clula 3</td>
<td>Clula 4</td>
</tr>
</table>
Ser renderizado no navegador assim:
Clula 1
Clula 2 Clula 3 Clula 4

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:

<table border="1">
<tr>
<td colspan="2">Clula 1</td>
<td>Clula 2</td>
</tr>
<tr>
<td>Clula 3</td>
<td>Clula 4</td>
<td>Clula 5</td>
</tr>
</table>


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>

<body style="background-image: url('http://www.html.net/logo.png');">


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">

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">

<head>
<title>Ttulo</title>
</head>

<body>
<p>texto texto</p>
</body>

</html>

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:

<html>
<head>
<title>Meu documento</title>
<link rel="stylesheet" type="text/css" href="style/style.css"
/>

</head>
<body>
...

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;
}

h1 {
color: #990000;
background-color: #FC9804;
}
Ver exemplo
Compilando [background]

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:

background-color: #FFCC66;
background-image: url("butterfly.gif");
background-repeat: no-repeat;
background-attachment: fixed;
background-position: right bottom;


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:

h1 {font-family: arial, verdana, sans-serif;}
h2 {font-family: "Times New Roman", serif;}


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.

h1 {font-family: arial, verdana, sans-serif;}
h2 {font-family: "Times New Roman", serif; font-style: italic;}


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.

h1 {font-variant: small-caps;}
h2 {font-variant: normal;}



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.

p {font-family: arial, verdana, sans-serif;}
td {font-family: arial, verdana, sans-serif; font-weight: bold;}


Ver exemplo
Tamanho da fonte [font-size]

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>:

p {
font-style: italic;
font-weight: bold;
font-size: 30px;
font-family: arial, sans-serif;
}


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:

a:hover {
letter-spacing: 10px;
font-weight:bold;
color:red;
}


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.

a:link {
color: blue;
text-decoration:none;

}

a:visited {
color: purple;
text-decoration:none;
}

a:active {
background-color: yellow;
text-decoration:none;
}

a:hover {
color:red;
text-decoration:none;
}


Ver exemplo


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:

<p>Uvas para vinho branco:</p>
<ul>
<li><a href="ri.htm">Riesling</a></li>
<li><a href="ch.htm">Chardonnay</a></li>
<li><a href="pb.htm">Pinot Blanc</a></li>
</ul>

<p>Uvas para vinho tinto:</p>
<ul>
<li><a href="cs.htm">Cabernet Sauvignon</a></li>
<li><a href="me.htm">Merlot</a></li>
<li><a href="pn.htm">Pinot Noir</a></li>
</ul>


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:

<p>Uvas para vinho branco:</p>
<ul>
<li><a href="ri.htm" class="whitewine">Riesling</a></li>
<li><a href="ch.htm" class="whitewine">Chardonnay</a></li>
<li><a href="pb.htm" class="whitewine">Pinot Blanc</a></li>
</ul>

<p>Uvas para vinho tinto:</p>
<ul>
<li><a href="cs.htm" class="redwine">Cabernet Sauvignon</a></li>
<li><a href="me.htm" class="redwine">Merlot</a></li>
<li><a href="pn.htm" class="redwine">Pinot Noir</a></li>
</ul>


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;
}

h2 {
border-width: 20px;
border-style: outset;
border-color: red;
}

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;

border-bottom-width: thick;
border-bottom-style: solid;
border-bottom-color: blue;

border-right-width: thick;
border-right-style: solid;
border-right-color: green;

border-left-width: thick;
border-left-style: solid;
border-left-color: orange;
}
Ver exemplo
Compilando [border]

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;
}

#box2 {
position:absolute;
top: 50px;
right: 50px;
}

#box3 {

position:absolute;
bottom: 50px;
right: 50px;
}

#box4 {
position:absolute;
bottom: 50px;
left: 50px;
}

Ver exemplo

Posicionamento relativo

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;
}

#jack_of_diamonds {
position: absolute;
left: 115px;
top: 115px;
z-index: 2;
}

#queen_of_diamonds {
position: absolute;
left: 130px;
top: 130px;
z-index: 3;
}

#king_of_diamonds {
position: absolute;
left: 145px;
top: 145px;
z-index: 4;
}

#ace_of_diamonds {
position: absolute;
left: 160px;
top: 160px;
z-index: 5;
}

Ver exemplo

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.

<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>

<?php

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.

<html>
<head>
<title>Grupo data/hora</title>
</head>
<body>

<?php

echo date("l", mktime(2,56,0,7,21,1969));

?>

</body>
</html>


Ver o resultado do exemplo

Mas afinal qual a utilidade prtica?

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>

<body background="background_<?php echo date("w"); ?>.png">

</body>
</html>
Ver o resultado do exemplo

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>

<title>Loops</title>
</head>
<body>

<?php

for ($x=1; $x<=6; $x=$x+1) {
echo "<h" . $x . "> Cabealho nvel</h" . $x . ">";
}
?>

</body>
</html>
Ver o resultado do exemplo

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) {

$StrColor = "rgb(" . $intRed . "," . $intGreen . "," .
$intBlue . ")";

echo "<span style='color:" . $StrColor . "'>" . $StrColor .
"</span>";

}
}
}
?>

</body>
</html>
Ver o resultado do exemplo

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>";
}

elseif (date("m") >= 6 && date("m") <= 8) {
echo "<p>Estamos no inverno!</p>";
}

elseif (date("m") >= 9 && date("m") <= 11) {
echo "<p>Estamos na primavera!</p>";
}

else {
echo "<p>Estamos no vero!</p>";
}

?>

</body>
</html>
Ver o resultado do exemplo

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:

frutas(0) = maas
frutas(1) = peras
frutas(2) = bananas
frutas(3) = laranjas
frutas(4) = limes

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

$listadefrutas = "mas, peras, bananas, laranjas, limes";

?>
A seguir vamos usar a funo explode para dividir a lista pelas vrgulas:
<?php

$listadefrutas = "mas, peras, bananas, laranjas, limes";

$arrFrutas = explode(",", $listadefrutas);

?>

Viva! "$arrFrutas" agora um array!

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>";

echo "<ul>";
echo "<li>" . $arrFrutas[0] . "</li>";
echo "<li>" . $arrFrutas[1] . "</li>";
echo "<li>" . $arrFrutas[2] . "</li>";
echo "<li>" . $arrFrutas[3] . "</li>";
echo "<li>" . $arrFrutas[4] . "</li>";
echo "</ul>";

?>

</body>
</html>
Ver o resultado do exemplo

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>

</head>
<body>

<?php

function AddAll($number1,$number2,$number3) {
$plus = $number1 + $number2 + $number3;
return $plus;
}

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");

// Montar a data
$EnglishDateTime = $arrDay[(date("w",$date))] . ", " .
date("d",$date);
$EnglishDateTime = $EnglishDateTime . " " .
$arrMonth[date("n",$date)] . " " . date("Y",$date);
$EnglishDateTime = $EnglishDateTime . ", " . date("H",$date) . ":"
. date("i",$date);

return $EnglishDateTime;

}

// Funo de teste
echo EnglishDateTime(time());

?>

</body>
</html>
Ver o resultado do exemplo

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>

<h1>Informe seu nome</h1>

<form method="post" action="handler.php">
<input type="text" name="username">
<input type="submit">
</form>

</body>
</html>

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>

<p>Qual a sua cor favorita:
<input type="radio" name="favoritecolor" value="r" /> Vermelha
<input type="radio" name="favoritecolor" value="g" /> Verde
<input type="radio" name="favoritecolor" value="b" /> Azul </p>

<input type="submit" value="Enviar" />

</form>

</body>
</html>

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

$strHeading = "<h1>Ol " . $_POST["username"] . "</h1>";

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

$strUsername = $_POST["username"];

If ($strUsername != "") {
$strHeading = "<h1>Ol " . $_POST["username"] . "</h1>";
}
else {
$strHeading = "<h1>Ol visitante!</h1> ";
}

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>

<h1>Formulrio de contato</h1>

<form method="post" action="handler.php">
<p>Assunto:<br /><input type="text" name="subject" /></p>
<p>Menssagem:<br /><textarea name="message"></textarea></p>
<input type="submit">
</form>

</body>
</html>
A seguir temos o script PHP para processar os dados:
<html>
<head>
<title>Functions</title>
</head>
<body>

<?php

// Enviar para (use seu endereo de e-mail)
$strEmail = "name@mydomain.com";

// Coleta dados do usurio
$strSubject = $_POST["subject"];
$strMessage = $_POST["message"];

mail($strEmail,$strSubject,$strMessage);
echo "E-mail enviado.";


?>

</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("you@yourdomain.com", "Teste", "Isto um teste de email", "From:
me@mydomain.com");
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

session_start();
$_SESSION["StartTime"] = date("r");

?>

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>

</head>
<body>
<form method="post" action="login.php">

<p>Usurio: <input type="text" name="username" /></p>
<p>Senha: <input type="text" name="password" /></p>

<p><input type="submit" value="Login" /></p>

</form>
</body>
</html>

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

// Configura o cookie
setcookie("Name", "C. Wing, time()+3600);
setcookie("Interests", "plane spotting", time()+3600);

?>

"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"];

// Escreve no cliente
echo "<p>" . strName . "</p>"
echo "<p>Voc interessado em: . " strInterest . "</p>"

?>

Quem pode ler um cookie?

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));

// escreve links (dados vem do array)
echo "<li><a href='http://" . $arrM[1] . "'>" . $arrM[0].
"</a></li>";

}

fclose($f);
?>

</body>
</html>
Ver o resultado do exemplo

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(";

strSQL = strSQL . "FirstName, ";
strSQL = strSQL . "LastName, "
strSQL = strSQL . "Phone, ";
strSQL = strSQL . "birth) ";

strSQL = strSQL . "VALUES (";

strSQL = strSQL . "'Gus', ";
strSQL = strSQL . "'Goose', ";
strSQL = strSQL . "'99887766', ";

strSQL = strSQL . "'1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

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

$strSQL = "INSERT INTO people(";

$strSQL = $strSQL . "FirstName, ";
$strSQL = $strSQL . "LastName, ";

$strSQL = $strSQL . "Phone, ";
$strSQL = $strSQL . "BirthDate) ";

$strSQL = $strSQL . "VALUES(";

$strSQL = $strSQL . "'Gus', ";

$strSQL = $strSQL . "'Goose', ";
$strSQL = $strSQL . "'99887766', ";

$strSQL = $strSQL . "'1964-04-20')";

// 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).

$_COOKIES (Variveis COOKIES)
$HTTP_COOKIE_VARS [obsoleta]
$_COOKIE -- $HTTP_COOKIE_VARS [obsoleta] HTTP Cookies

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.

$_GET (Varivel GET)
$_GET
$HTTP_GET_VARS [obsoleta]
$_GET -- $HTTP_GET_VARS [obsoleta] HTTP GET variveis

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).

Exemplo #1 Exemplo da $_GET
<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>

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.

$_POST (Varivel POST)
$_POST
$HTTP_POST_VARS [deprecated]
$_POST -- $HTTP_POST_VARS [deprecated] HTTP POST variables

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).

Exemplo #1 Exemplo da $_POST
<?php
echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!';
?>

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 #1 Exemplo de array()
<?php
$frutas = array (
"frutas" => array("a"=>"laranja", "b"=>"banana", "c"=>"ma"),
"numeros" => array(1, 2, 3, 4, 5, 6),
"buracos" => array("primeiro", 5 => "segundo", "terceiro")
);
?>

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

$foo = array('bar' => 'baz');
echo "Hello {$foo['bar']}!"; // Hello baz!

?>
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');


// Exibe alguma coisa como: Monday
echo date("l");

// Exibe alguma coisa como: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Exibe: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* utiliza as constantes do parmetro de formato */
// Exibe alguma coisa como: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);

// Exibe alguma coisa como: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

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.

I have <?=$foo?> foo.

Parmetros: arg1
O parmetro a exibir.
...

Valor Retornado: No h valor retornado.

Exemplo #1 echo exemplos
<?php
echo "Hello World";

echo "This spans
multiple lines. The newlines will be
output as well";

echo "This spans\nmultiple lines. The newlines will be\noutput as well.";

echo "Escaping characters is done \"Like this\".";

// You can use variables inside of an echo statement
$foo = "foobar";
$bar = "barbaz";

echo "foo is $foo"; // foo is foobar

// You can also use arrays
$baz = array("value" => "foo");

echo "this is {$baz['value']} !"; // this is foo !

// Using single quotes will print the variable name, not the value
echo 'foo is $foo'; // foo is $foo

// If you are not using any other characters, you can just echo variables
echo $foo; // foobar
echo $foo,$bar; // foobarbarbaz

// Some people prefer passing multiple parameters to echo over concatenation.
echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10);
echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";

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 #1 explode() exemplos
<?php
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// Example 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>

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)).

Exemplo #1 Exemplo de filesize()
<?php

// Exibe algo como: arquivo.txt: 1024 bytes

$filename = 'arquivo.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>
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

resource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $con
text ]] )

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.

<?php
$handle = fopen("c:\\data\\info.txt", "r");
?>

mode

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

Exemplo #1 Exemplos de fopen()
<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>

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++;
}

/* example 4 */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $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)
);

for($i = 0; $i < count($people); ++$i) {
$people[$i]['salt'] = mt_rand(000000, 999999);
}
?>

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)
);

for($i = 0, $size = count($people); $i < $size; ++$i) {
$people[$i]['salt'] = mt_rand(000000, 999999);
}
?>

Foreach
(PHP 4, PHP 5)

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
) */

$a = array(1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach ($a as $v) {
echo "\$a[$i] => $v.\n";
$i++;
}

/* foreach example 3: key and value */

$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);

foreach ($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
echo "$v\n";
}
?>
Unpacking nested arrays with list()
(PHP 5 >= 5.5.0)

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().

<?php
$filename = "c:\\files\\figura.gif";
$handle = fopen ($filename, "rb");
$conteudo = fread ($handle, filesize ($filename));
fclose ($handle);
?>

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 ]] )

Envia um email.

Parmetros
T: Receptor, ou receptores do email.
O formato desta string precisa estar de acordo com RFC 2822. Alguns exemplos:
user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User <anotheruser@example.com>
Subjec: Assunto do email a ser enviado.

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.

<?php
$text = str_replace("\n.", "\n..", $text);
?>

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('caffinated@example.com', '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 = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\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('nobody@example.com', 'the subject', 'the message', null,
'-fwebmaster@example.com');
?>
Exemplo #4 Enviando email HTML
tambm possvel enviar email HTML com mail().
<?php
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

// 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";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\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
<alguem@example.com>". 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");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

Exemplo #3 mysql_fetch_array() com MYSQL_ASSOC
<?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");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);
?>

Exemplo #4 mysql_fetch_array() com MYSQL_BOTH
<?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");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s Name: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

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
(PHP 4, PHP 5)

mysql_query Envia uma consulta MySQL

resource mysql_query ( string $query [, resource $link_identifier ] )

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.

Example #1 mysql_select_db() example
<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// 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.

Obrigado!