Minicurso PHP + MySQL (Release Candidate)

2,452 views

Published on

Minicurso de PHP + MySQL que eu (@g0nc1n) ministrarei nos dias 25 e 26 de maio de 2011 durante a II Semana de Sistemas de Informação do Uni-FACEF (@UniFACEF)

Published in: Education
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,452
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
189
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Minicurso PHP + MySQL (Release Candidate)

  1. 1. Introdução ao desenvolvimento Web com PHP e MySQL<br />Fausto Gonçalves Cintra<br />Oficial de Tecnologia e Informática do Uni-FACEF<br />fausto@facef.br<br />Twitter: @g0nc1n<br />II Semana de Sistemas de Informação<br />25 e 26 de maio de 2011<br />
  2. 2. Sobre o ministrante<br />Formação Acadêmica<br />Bacharel em Ciência da Computação com Ênfase em Análise de Sistemas – Universidade de Franca (1997)<br />Bacharel em Direito pela Universidade Estadual Paulista “Júlio de Mesquita Filho” – UNESP (2008)<br />Experiência Profissional<br />Andes Informática (1997-2001): Delphi, Interbase, Firebird<br />Prefeitura Municipal de Franca (2001-2005): Visual Basic 6, MS SQL Server, ASP<br />Centro Universitário de Franca (2005-): PHP, MS SQL Server, MySQL<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />2<br />
  3. 3. Objetivos do minicurso<br />Expor uma visão geral do fluxo de desenvolvimento de aplicações para Web, utilizando: <br />PHP como linguagem de script server-side e<br />MySQL como sistema de gerenciamento de banco de dados. <br />Explicitar a forma como estes interagem com outras linguagens tecnologicamente fundamentais para aquela plataforma, tais como HTML, CSS e Javascript.<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />3<br />
  4. 4. O que veremos no minicurso<br />Conceitos básicos de funcionamento da Internet e da Web. O papel dos servidores Web e dos navegadores<br />HTML: surgimento e importância para a Internet tal como a conhecemos hoje<br />Automatizando a geração de documentos HTML: PHP + MySQL<br />MySQL: criação de um banco de dados simples<br />PHP: implementação dos processos de CRUD (Create, Retrieve, Update, Delete) sobre o banco de dados criado no MySQL<br />CSS e Javascript: abordagem eventual e transversal aos demais conteúdos<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />4<br />
  5. 5. Muita coisa? Esperem...<br />“não é só apenas isso”...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />5<br />
  6. 6. Vocês verão o ministrante:<br />Ga-ga-ga-gueeejar<br />Suar como um gordinho na sauna (!?)<br />Tremer as pernas<br />Perder o fio da meada<br />Derrubar coisas no chão<br />Não saber tudo<br />Tentar (!?) ser simpático<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />6<br />
  7. 7. Vamos começar do começo...<br />Prontos?<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />7<br />
  8. 8. Tudo começou assim...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />8<br />http://www.youtube.com/watch?v=LlwL-6iqFJI<br />
  9. 9. AS Origens da internet<br />Brincadeiras à parte...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />9<br />
  10. 10. ARPANET<br />Surgimento: 1969<br />Objetivo<br />Conectar, nos EUA, instalações militares e centros de pesquisa<br />Característica<br />Arquitetura descentralizada, na qual dois pontos poderiam manter a comunicação mesmo se outros pontos perdessem a conexão<br />Pacotes<br />A informação é dividida em pacotes na origem<br />Cada pacote pode tomar um caminho (rota) diferente<br />Os pacotes são reagrupados no destino, restaurando a informação original<br />Considerada a “avó” da Internet<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />10<br />
  11. 11. Esquema de roteamento <br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />11<br />A<br />D<br />Rotas de A a C<br />Topologia em anel. Se mais de um elo se quebrar, a comunicação fica comprometida<br />B<br />C<br />Conexões redundantes para criar rotas alternativas<br />
  12. 12. Consequências do surgimento da ARPANET<br />Aparição de outras redes baseadas em pacotes e roteamento<br />Problemas<br />Cada rede implementou a troca de pacotes à sua maneira<br />Quando essas redes precisaram se comunicar entre si, elas não se entendiam<br />Solução<br />O desenvolvimento de um protocolo de comunicação inter-redes (INTERNETworking): o TCP/IP<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />12<br />
  13. 13. Protocolo?<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />13<br />早上好,我是刘星<br />???<br />???<br />Prazer em conhecê-lo.<br />Goodmorning, I am Liu Xing.<br />Gladtomeetyou.<br />
  14. 14. Com o TCP/IP, surge a Internet<br />Em seus primórdios (1973-1989), era bem diferente de como a conhecemos hoje:<br />Não havia navegadores (browsers)<br />Não existiam buscadores – era necessário saber o endereço de uma máquina para acessar seu conteúdo<br />Textos, imagens e sons eram armazenados separadamente, e não havia uma forma de integrá-los num único conteúdo<br />Não havia uma forma de um documento fazer referência a outro (hyperlink) <br />MAS O E-MAIL JÁ EXISTIA (com @ e tudo!)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />14<br />
  15. 15. A WWW e o HTML<br />O mundo nunca mais seria o mesmo<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />15<br />
  16. 16. Agradeça todos os dias a este sujeito<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />16<br />Trouxe o conceito de hyperlink (que existia desde os anos 60) à Internet<br />Como ele fez isso?<br />Idealizou uma forma de endereçamento que pudesse identificar unicamente um documento na Internet (URL)<br />Criou uma forma de escrever esses documentos, unindo textos e imagens (e, mais tarde, também sons e vídeos) – o HTML (HyperTextMarkupLanguage– linguagem de marcação de hipertexto)<br />(cont.)<br />Tim Berners-Lee<br />Idealizador da WWW (1989)<br />
  17. 17. Esse é o cara<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />17<br />Como ele fez isso (cont.)?<br />Concebeu o modo pelo qual documentos HTML seriam transportados através da Internet – o HTTP (HyperTextTransferProtocol – protocolo de transferência de hipertexto)<br />Escreveu o primeiro programa capaz de interpretar a HTML e exibir documentos que reuniam, ao mesmo tempo, texto, imagens e hyperlinks para outros documentos – o primeiro navegador (browser), chamado WorldWideWeb.<br />Logo, haveria uma rede de servidores com documentos HTML para serem acessados – surgiria a World Wide Web (“teia de alcance mundial”)<br />O http:// fui eu quem fiz, ó!<br />Tim Berners-Lee<br />Idealizador da WWW (1989)<br />
  18. 18. O Que é HTML?<br />Mas, afinal de contas...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />18<br />
  19. 19. Linguagem de marcação de hipertexto<br />É um arquivo de texto, legível por seres humanos, normalmente com extensão .htm ou .html<br />O que não significa que você vai entender de primeira o que está escrito em um... <br />É uma linguagem de MARCAÇÃO: serve para MARCAR como conteúdos de diferentes mídias aparecerão numa página<br />Pelamordedeus: HTML não é linguagem de programação!<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />19<br />
  20. 20. Estrutura básica de um arquivo HTML<br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /><html><br /><head><br /><title>Título da Página</title><br /></head><br /><body><br /><p>Conteúdo da página</p> <br /></body><br /></html><br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />20<br />Isto é uma etiqueta (tag) de abertura<br />Aqui vão as informações do cabeçalho da página...<br />Não se preocupe, ninguém decora o DOCTYPE. Ele ou é gerado por um editor HTML ou você pode copiar e colar de uma página já existente.<br />No body, vão as informações que o usuário verá na página<br />E essa aqui é a tag de fechamento<br />Entendeu, cabeção?<br />
  21. 21. Atividade com HTML<br />Criar/visualizar um arquivo HTML<br />Para criar: PSPad<br />Para visualizar: navegador web (Firefox ou IE)<br />Apresentação das tags<br /><h1> a <h6><br /><p><br /><br /><br /><img><br /><a><br />Brevíssima introdução ao CSS<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />21<br />
  22. 22. Agora vamos pensar um pouco...<br />Criar e editar arquivos HTML não é muito produtivo, apesar de existirem editores visuais (Adobe Dreamweaver, KompoZer, Bluefish)<br />Imagine um site noticioso (g1.globo.com, folha.com) e sua enorme quantidade de páginas de notícias...<br />Na maioria dos sites, as páginas têm um aspecto padrão, variando apenas o conteúdo<br />Calcule o trabalho necessário para trocar o layout de um portal inteiro...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />22<br />
  23. 23. Enfim...<br />Deve existir alguma coisa que<br />Minimize o trabalho (repetitivo e enfadonho) de criar arquivos HTML<br />Melhor ainda se...<br />As páginas HTML pudessem geradas automaticamente a partir de um modelo predefinido<br />TCHARAN!<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />23<br />
  24. 24. O servidor web<br />O começo da solução<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />24<br />www<br />
  25. 25. Você sabia que...<br />Quando abre uma página da Internet, você não tem acesso direto à pagina HTML?<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />25<br />Servidor Web<br />Navegador Web<br />Arquivo HTML<br />Computador do usuário<br />Computador servidor<br />
  26. 26. Mas por que eu não posso acessar os arquivos diretamente?<br />(Ou: por que existe o servidor web?)<br />Controle de acesso e segurança<br />Muitas vezes, alguns arquivos devem ser vistos apenas por alguns usuários<br />Porque o servidor web é capaz de processar os arquivos originais e entregar ao navegador um conteúdo diferente<br />TCHARAN!<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />26<br />
  27. 27. Então, o servidor web é...<br />um software<br />que fica executando num servidor, em modo serviço (daemon)<br />e recebe requisições (requests) do navegador, devolvendo respostas (responses)<br />Exemplos de resposta:<br />200: OK (a página foi enviada normalmente)<br />403: Proibido (você não tem autorização para acessar a página)<br />404: Não encontrado (você pediu para ver uma página que não existe ou não foi encontrada)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />27<br />
  28. 28. E aquela história de “processar” arquivos?<br />Para isso, o servidor web utiliza módulos que executam scripts do lado do servidor (server-side)<br />São exemplos de linguagens que podem ser utilizadas em scripts server-side:<br />ASP (*.asp)<br />ASP.NET (*.aspx)<br />Cold Fusion (*.cfm)<br />Ruby (*.rb)<br />PHP (*.php;*.php5)<br />TCHARAN!<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />28<br />
  29. 29. Funciona assim...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />29<br />Ô PHP, toma que é tua!<br />(REQUEST)<br />Manda aí o arquivo “gostosas.html”<br />(RESPONSE)<br />Arquivo “gostosas.html”<br />(RESPONSE)<br />Arquivo “gatas.php” (conteúdo HTML)<br />Manda o HTML que eu gerei pro navegador, ele só entende isso!<br />Servidor Web<br />Navegador Web<br />Módulo PHP<br />(REQUEST)<br />Manda agora o arquivo “gatas.php”<br />Arquivo HTML<br />Arquivo PHP<br />Computador do usuário<br />Computador servidor<br />
  30. 30. E onde entra o MySQL nessa história?<br />O módulo PHP é que tem capacidade de acesso a bancos de dados<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />30<br />MySQL<br />Módulo PHP<br />
  31. 31. Enfim...<br />O servidor Web utiliza o módulo PHP para processar requisições que contém scripts server-side naquela linguagem e entregar respostas em HTML ao navegador<br />Nesse processo, o módulo PHP pode acessar um SGBD (como, por exemplo, o MySQL) para acessar, inserir, alterar e excluir dados<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />31<br />
  32. 32. Conhecer as ferramentas<br />Antes de por as mãos à massa, vamos...<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />32<br />
  33. 33. O servidor web: Apache<br />Por que o Apache?<br />Existe desde 1995<br />Multiplataforma (IIS)<br />Código aberto (IIS)<br />Desenvolvido por uma sólida fundação sem fins lucrativos - Apache Foundation (nginx, lighttpd)<br />Serve 63% dos websites do mundo (Netcraft.com, maio/2011)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />33<br />
  34. 34. A linguagem de script server-side: PHP<br />Por que PHP?<br />Existe desde 1995<br />Multiplataforma (ASP, ASP.NET)<br />Código aberto (ASP, ASP.NET, Ruby, Python...)<br />Presente em 63% dos websites do mundo (W3Techs.com, out/2010)<br />Conectividade (suporta vários SGBDs), bibliotecas nativas (gráficos, manipulação e (des)compressão de de arquivos...)<br />Facilidade em obter ajuda/suporte/emprego...<br />(...)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />34<br />
  35. 35. O sistema de gerenciamento de banco de dados: MySQL<br />Por que MySQL?<br />Existe desde 1995<br />Multiplataforma (MS SQL Server)<br />Código aberto (MS SQL Server, Oracle, PostgresSQL, Firebird, SQLite...)<br />Leve (MS SQL Server, Oracle, PostgresSQL, Firebird, SQLite...)<br />Suporte a transações (MS SQL Server, Oracle, PostgresSQL, Firebird, SQLite...)<br />Usado por Wikipédia, Wordpress, Facebook...<br />Um porém:<br />Oracle Corporation: a comunidade de código aberto passou a desenvolver o MariaDB, cuja API é compatível com a do MySQL<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />35<br />
  36. 36. Windows + Apache + MySQL + PHP = WAMP<br />Pacotes WAMP instalam o Apache, o MySQL e o PHP, em conjunto e pré-configurados, na plataforma Windows<br />XAMPP<br />EasyPHP<br />WampServer<br />Para as plataformas Linux (LAMP) e MacOS (MAMP), pacotes semelhantes estão disponíveis<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />36<br />
  37. 37. WampServer 2.1<br />Apache 2.2.1.7<br />PHP 5.3.5<br />MySQL 5.5.8<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />37<br />
  38. 38. Uma lista telefônica simples<br />O primeiro projeto PHP + MySQL, para chamar de seu<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />38<br />
  39. 39. Sumário do projeto<br />Lista telefônica simples, com nome, telefone e um indicador (“flag”) para distinguir celulares<br />Criar a estrutura de um banco de dados no MySQL, utilizando o MySQLWorkbench<br />Implementar as quatro operações básicas (CRUD) com os dados da lista telefônica:<br />inserir (creation);<br />recuper (retrieve);<br />atualizar (update); e<br />Excluir (delete)<br />Utilizar o PSPad para edição de PHP/HTML<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />39<br />
  40. 40. Criação do banco de dados<br />No MySQLWorkbench<br />Configurar a conexão<br />Criar um novo banco de dados (schema): lista_telefonica<br />Criar uma tabela no banco de dados: tb_contato<br />cod_contato – integer, primarykey, autoincrement<br />nome – varchar(100)<br />telefone – varchar(15)<br />celular – boolean<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />40<br />
  41. 41. Inserindo dados – o formulário<br />Criação do arquivo “inserir.php”<br />Forms: métodos (GET e POST) e action<br />Campos de formulário<br />Botão de salvar/enviar (submit)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />41<br />
  42. 42. Inserindo dados – a gravação no BD<br />Criação do arquivo “gravar.php”<br />A variável superglobal$_POST<br />PDO (PHP Data Objects) versus funções mysql_*<br />$db = new PDO('mysql:host=localhost; dbname=lista_telefonica', 'root', '');<br />Instrução SQL INSERT<br />Redirecionamento de páginas<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />42<br />
  43. 43. Recuperando e listando dados<br />Criação do arquivo “index.php”<br />Colocar link para inserção de novo contato<br />Instrução SQL SELECT<br />Instrução PHP foreach e sintaxe alternativa<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />43<br />
  44. 44. Alterando dados<br />Criação do arquivo “atualizar.php”, copiando “inserir.php”<br />A variável superglobal$_GET<br />Campos ocultos (input type=“hidden”)<br />Modificação do arquivo “gravar.php” para aceitar atualização de dados<br />Instrução SQL UPDATE<br />Modificação do arquivo “index.php” – colocar link para alteração<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />44<br />
  45. 45. Excluindo dados<br />Criação do arquivo “excluir.php”, copiando “inserir.php”<br />Por que POST na exclusão<br />Modificação do arquivo “index.php” – adicionar formulário de exclusão<br />Confirmação da exclusão com Javascript<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />45<br />
  46. 46. Indo além do CRUD<br />Otimizando o código e suprimindo as duplicidades – a instrução include<br />Validação de dados server-side(PHP)<br />Validação de dados client-side(Javascript)<br />Trabalhando o aspecto visual da aplicação – CSS (Cascading Style Sheets)<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />46<br />
  47. 47. E o ornitorrinco?<br />“O ornitorrinco é um pato com todas as alterações pedidas pelo cliente.”<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />47<br />
  48. 48. Perguntas<br /><?php<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />48<br />
  49. 49. Que este minicurso não seja um fim, e sim, um começo...<br /><?phpecho “Obrigado!”; ?><br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />49<br />
  50. 50. Para aprender mais<br />Documentação do PHP(em português): http://www.php.net/manual/pt_BR/<br />Documentação do MySQL 5.5 (em inglês): http://dev.mysql.com/doc/refman/5.5/en/index.html<br />Referência do HTML 4.01 (em português): http://desenaviegas.com/cover.html<br />GUTMANS, Andi; BAKKEN, Stig Saether; RETHANS, Derick. PHP 5 – Programação poderosa. Rio de Janeiro : Alta Books, 2005.<br />SILVA, Maurício Samy. Construindo sites com CSS e (X)HTML: sites controlados por folhas de estilo em cascata. São Paulo : Novatec, 2008.<br />Siga o autor no Twitter: @maujor<br />Introdução ao desenvolvimento Web com PHP e MySQL :: Fausto G. Cintra (fausto@facef.br)<br />50<br />

×