Table Of Content© CasadoCódigo
TodososdireitosreservadoseprotegidospelaLeinº9.610,de10/02/1998.
Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,semauto-
rizaçãopréviaporescritodaeditora,sejamquaisforemosmeios: fotográficos,
eletrônicos,mecânicos,gravaçãoouquaisqueroutros.
CasadoCódigo
Livrosparaoprogramador
RuaVergueiro,3185-8ºandar
04101-300–VilaMariana–SãoPaulo–SP–Brasil
CasadoCódigo
Agradecimentos
Avidanãoéumasequênciadeacontecimentosaleatórios.Muitacoisatevequeacon-
teceremumacertaordemparaqueestelivrofossepossível, desdeumalongínqua
oportunidadedefazeroprimeirocursodeinformática,passandoporcursotécnico,
faculdade, grupos de estudo, palestras, até a chance de trabalhar com pessoas que
me fizeram evoluir. Por isso agradeço a Deus por ter me dado as ferramentas e o
discernimento necessários para encontrar os caminhos que me trouxeram até este
livro.
EstelivronãoseriaumarealidadesemoapoiodaminhaamadaesposaCássia
Luz. Quandoeufaleiparaeladaoportunidadedeescreverumlivro,eladissevocê
tem que escrever um livro! e isso me motivou bastante a encarar essa tarefa tão
difícil. Obrigado, Cassinha! (E obrigado também pela ideia da ilustração da capa,
ficoudemais!)
Agradeçotambémaosmeuspais,SilvanaeEvaldo,meusirmãos,JennereAn-
tonioPaulo,eàsra. Creuzaeaosr. Mário,tiosdaCássia,quemedesculparampor
nãocompareceraosalmoçosejantaresemfamíliaporqueestavaescrevendosómais
umpedaçodolivro.
Naverdade,eusemprequisescreverumlivrosobreprogramaçãoeatécheguei
começar alguns rascunhos, mas acabei deixando todos de lado. Até que um dia o
CaioRibeiroPereira,queestavaterminandoseulivrodeNode.js,meperguntouse
eu não queria escrever um livro de Python e me apresentou ao Paulo Silveira da
Caelum/CasadoCódigo.Depoisdissotrocamosalgunse-mailsecomeceiaescrever
estelivrodePHPeMySQL,finalmentecolocandono“papel”oquepenseiemfazer
pormuitotempo.Obrigado,Caio!Eobrigado,Paulo!
Agradeçotambém aosmeusalunosda Unimontequepacientementeaguarda-
ramosquaseseismesesdeescritadestelivro.Nãofaleiparavocêsqueeuterminaria
logo?
Obrigadotambémaopessoalqueleualgunsrascunhosemedeuideiasdoque
i
CasadoCódigo
poderiaserabordado.
NãopossoesquecerdopessoaldoGCCSDquefoibastanteincentivadorquando
euaindadavapassospequenosemTI.
ii
CasadoCódigo
Sobre o autor
Evaldo Junior Bento trabalha com TI desde 2004. É desenvolvedor web com foco
emboaspráticasepadrõesdedesenvolvimentoutilizandoPHPcomosuaprincipal
linguagemdesde2008.Éprofessoruniversitário,ministrandodisciplinasrelaciona-
dasadesenvolvimentodesoftwareetambémpalestranteemeventosrelacionadosa
software livre e desenvolvimento de software. Possui formação em Processamento
deDadospelaFatecePósGraduaçãoemGestãoEstratégicadeTI.Mantémumblog
sobredesenvolvimentoetecnologiaemhttp://evaldojunior.com.br/blog/eprojetos
opensourcenoGitHubemhttps://github.com/InFog.
iii
CasadoCódigo
Prefácio
Muita gente que pensa em Web lembra logo de HTML, CSS e JavaScript. Claro,
são as linguagens fundamentais dos navegadores. Mas elas só contam metade da
história.Muitacoisaprecisaacontecerdooutroladodaconexão,nosservidores. E,
sevocêquerprogramarseriamentenaWeb,vaiprecisardominarumalinguagemde
programaçãoquerodenoservidor.
Nessecenário, o PHP éamelhorescolhase vocêquerevoluirsuaspáginases-
táticasHTMLparapáginasdinâmicasesistemascomplexos. Hámuitasopçõesde
linguagensdeprogramaçãoedebancosdedados,masaduplaPHPeMySQLédas
maisimportantesnomercadoWebatual,comaplicaçõesemsitesdeconteúdo,co-
mércioeletrônicoeatésistemasgrandescomoFacebook.
EsselivroéobrigatórioparaquemquercomeçarcomPHPeMySQL.OEvaldo
éumexcelenteautorcomgrandeexperiência,econseguiuchegaremumlivrofácil
delereacompanhar,comumaescritadinâmicaevibrante.Segueomodelodelivros
objetivos da Casa do Código e fará você entrar nesse mercado rapidamente e com
bastanteconhecimento.
Umaboaleitura,bonsestudosebem-vindoaoimensoeimportantemundodo
PHP.
SérgioLopes
—InstrutoredesenvolvedornaCaelum,autordolivro“AWebMobile”também
daeditoraCasadoCódigo
http://sergiolopes.org
v
CasadoCódigo Sumário
Sumário
1 Introdução 1
1.1 Ganhandoaweb2.0compáginasdinâmicas . . . . . . . . . . . . . . 1
1.2 Onavegadoreaexibiçãodepáginaswebestáticas . . . . . . . . . . . 2
1.3 Ecomofuncionaumapáginadinâmica? . . . . . . . . . . . . . . . . . 2
1.4 EondeentraoPHPeoMySQL?. . . . . . . . . . . . . . . . . . . . . . 3
1.5 Mas,porqueescolherPHPeMySQL? . . . . . . . . . . . . . . . . . . 3
1.6 Oquevouprecisarparaacompanharestelivro? . . . . . . . . . . . . . 3
1.7 Sobreestelivro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 OprimeiroprogramaemPHP 7
2.1 InstalandooPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 PHPnoLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Evamosaoprimeiroprograma! . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Aminhapáginaestámostrandoahoraerrada! . . . . . . . . . . . . . 15
2.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 ConstruindoumcalendáriocomPHP 19
3.1 Definindonossocalendário . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Começandoocalendário . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Usandofunções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Entendendoeseentendendocomoserros . . . . . . . . . . . . . . . . 26
3.5 MeuPHPnãomostrouoserros! . . . . . . . . . . . . . . . . . . . . . . 27
3.6 Finalizandoocalendário . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.8 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
vii
Sumário CasadoCódigo
4 Entradadedadoscomformulário 31
4.1 Definindoalistadetarefas . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Oformuláriodecadastrodetarefas . . . . . . . . . . . . . . . . . . . . 32
4.3 Entradadedados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4 PegandoosdadosdaURL . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5 SessõesnoPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.7 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 Tratamentodediferentescamposdeformulários 43
5.1 Organizandoocódigoemarquivosseparados . . . . . . . . . . . . . . 44
5.2 Adicionandomaisinformaçõesàstarefas . . . . . . . . . . . . . . . . 46
5.3 Conclusãodocapítuloedousodesessões . . . . . . . . . . . . . . . . 50
5.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6 Acessandoeusandoumbancodedados 53
6.1 ObancodedadosMySQL . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2 InstalandooMySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3 PHPMyAdmin,administrandoobancodedados . . . . . . . . . . . . 55
6.4 Criandoobancodedados . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.5 Criandoatabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.6 Cadastrandoelendoosdadosdeumatabela . . . . . . . . . . . . . . 61
6.7 FiltrandoosresultadosdoSELECT . . . . . . . . . . . . . . . . . . . . 62
6.8 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.9 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7 IntegrandoPHPcomMySQL 65
7.1 PHPeMySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.2 ConectandoaoMySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.3 Buscandodadosnobanco . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.4 Cadastrandoastarefasnobanco . . . . . . . . . . . . . . . . . . . . . . 72
7.5 Cadastrandooprazodasatividades . . . . . . . . . . . . . . . . . . . . 77
7.6 Marcandoumatarefacomoconcluída . . . . . . . . . . . . . . . . . . 81
7.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.8 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
viii
Description:Imagine a internet na qual você pode apenas consumir conteúdos, como se fosse um jornal, uma revista, ou ainda, um programa na televisão. Chato, né? O segredo da famosa web 2.0 é a capacidade de interação entre as pessoas e os serviços online. Aprenda com esse livro os primeiros passos para