Aprender PHP e mySQL (UFCD0155)

1.601 visualizações

Publicada em

Publicada em: Internet
2 comentários
15 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.601
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
0
Comentários
2
Gostaram
15
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aprender PHP e mySQL (UFCD0155)

  1. 1. PROFISSIONAL EM WEBDESIGN Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS
  2. 2. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 2 0155 - Bases de dados para Internet (server-side) Que raio de nome! ?
  3. 3. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 3 0155 - PHP e mySQL Assim está melhor!
  4. 4. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 4 HTML JS & SQL EMAIL PHP O QUE É O PHP - É uma linguagem de programação comummente usada em servidores web - Quer dizer PHP: HyperText PreProcessor - Código Aberto - Código embebido em páginas web
  5. 5. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5 QUE SITE USAR PARA INFORMAÇÃO www.php.net Unanimemente, a melhor fonte de informação.z
  6. 6. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 6 FAZER DO NOSSO PC UM SERVIDOR HTTP
  7. 7. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 7 FAZER DO NOSSO PC UM SERVIDOR HTTP
  8. 8. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 8 FAZER DO NOSSO PC UM SERVIDOR HTTP
  9. 9. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 9 PHP: Fundamentais PHP é embebido dentro de páginas HTML com as tags: ... Ficheiros HTML com código PHP dentro de si, têm de ter a extensão .php (e não .html). As linhas de código em PHP são fechadas com ponto e virgula <?php ?> Isto é obrigatório!
  10. 10. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 10 PHP: Fundamentais Todos os nossos documentos terão de estar dentro da pasta: O endereço no nosso browser: C:xampphtdocs Título da página localhost/
  11. 11. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 11 Sem mais demoras... OLÁ MUNDO! aPHP index.php <html> <head> <title>Olá Mundo</title> </head> <body> ‘’<p>Olá Mundo</p>‘’; </body> </html> <?php ?>echo
  12. 12. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 12 Informações do nosso servidor Podemos também ver quais são as definições do servidor que estamos a usar, recorrendo à função phpinfo(); aPHP <?php ?> phpinfo(); phpinfo.php
  13. 13. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 13 Considerações sobre Literals (os valores de variáveis) - Todas as devem ser fechadas dentro de aspas ou aspas duplas: ou - não são fechados dentro de aspas: ou ou 3 - (true/false) podem ser directamente escritos como ou strings Números Booleanos ‘’Olá Mundo’’ ‘Olá Mundo’ 1 45 4.15 true false
  14. 14. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 14 Comentários em PHP // Isto é um comentário # Isto é outro comentário /* Isto também é um comentário*/ // # - Não usem comentários dentro de comentários - Recomenda-se o uso do e não o
  15. 15. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 15 Mostrar dados - Existem duas funções disponíveis para mostrar dados: e o - Podem ser usadas com ou sem os parêntesis () - Os dados gerados pelo PHP passam para o browser como HTML. Ao fazer «Ver fonte» só vemos o resultado e não o código PHP que o gerou. print() echo()
  16. 16. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 16 Mostrar dados O resultado é sempre o mesmo não é? aPHP <?php ?> (’Olá Mundo’); ‘’Olá Mundo’’; (‘’Olá Mundo’’); ‘’Olá Mundo’’; echo echo print print echoprint.php
  17. 17. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 17 Escapando Caracteres - Alguns caracteres são considerados ‘’especiais’’ - Temos de ‘’escapar’’ estes caracteres com o símbolo (a barra para trás ou backslash) - Caracteres especiais serão flagueados quando aparecerem, por exemplo uma aspa simples ou aspas duplas, e se estiver escapado o PHP processa-os, senão interpreta-os como sendo parte do código e vai gerar erros...
  18. 18. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS aPHP <?php ?> ‘’A minha amiga irlandesa’’; Mary O’Bradley’; ‘’disse ‘’Olá Mundo‘’.’’; echo echo ‘ echo // A minha amiga irlandesa Mary O’Bradley disse ‘’Olá Mundo’’ escaping.php 18 Escapando Caracteres Um exemplo:
  19. 19. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 19 VARIÁVEIS: O que são Quando trabalhamos com PHP, quase sempre precisamos de um sítio onde guardar um valor (string, numero, booleano, etc) para que mais tarde possamos usar este valor noutros sítios do nosso programa. A estes sítios onde guardamos valores chamamos VARIÁVEIS
  20. 20. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 20 VARIÁVEIS: Vamos chamar-lhes nomes! - Uma variável começa sempre com e depois o seu - São sensíveis a maiúsculas/minúsculas - é diferente de diferente de - O nome de uma variável deve começar sempre com uma letra ou um undescore ( _ ). por um número. $ nome $variavel $VARIAVEL$Variavel NUNCA - Escrever sempre em minúsculas para jogar pelo seguro!
  21. 21. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESASaPHP <?php ?> ‘’Afonso’’; 31; ‘’O ’’ . $nome; ‘’ tem ’’; $idade; $nome = $idade = echo echo echo // Resultado: O Afonso tem 31 variaveis.php 21 VARIÁVEIS: Um exemplo
  22. 22. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESASaPHP <?php ?> ‘’Afonso’’; 31; 22; ‘’O ’’ . $nome . ‘’ tem ’’ . $idade . ‘’ anos’’; $nome = $idade = $idade = echo // Resultado: O Afonso tem 22 anos variaveis.php 22 VARIÁVEIS: Outro exemplo É preciso um certo ...cuidado com o que fazemos Neste exemplo vemos também concatenação!
  23. 23. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 23 USO DE ‘’ OU DE ‘ Uma dúvida recorrente é o uso de aspa dupla ‘’ ou aspa simples ‘ - Há uma diferença entre strings escritas com ‘’ ou com ‘ - Numa string com aspas duplas, qualquer variável é expandida para o seus valor. - Numa string com aspa simples, não há expansão da variável para o seu valor. Vamos ver um exemplo...
  24. 24. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 24 USO DE ‘’ OU DE ‘ aPHP <?php ?> = ‘’Afonso’’; 31; ‘’O $nome tem $idade anos’’; ‘O $nome tem $idade anos’; $nome $idade = echo echo // Resultado: O Afonso tem 31 anos // Resultado: O $nome tem $idade anos aspasteste.php
  25. 25. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 25 VARIÁVEIS: Em profundidade! Agora que já vimos os conceitos globais de variáveis e constantes, vamos aprofundar um bocadinho mais nos de variáveis: - 4 escalares: , , e - 2 compostos: e - 2 especiais: e diferentes tipos O PHP suporta 8 tipo de variáveis primitivas boolean integer float string array object resource NULL
  26. 26. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 26 VARIÁVEIS: BOOLEANOS Exprimem valores lógicos. TRUE (verdadeiro) ou FALSE (falso) Podem ser escritos em minúsculas ou maiúsculas aPHP = true; false; $b1 $b2 = = TRUE; FALSE; $b1 $b2 == Passar uma variável a booleano: aPHP = 5; (bool) $b3; $b3 $b4 = = 5; = TRUE; $b3 $b4 Dá FALSE quando: - O booleano falso; O inteiro 0 (Zero); O real 0.0 (zero); - Array vazio; o tipo especial NULL; String vazio ORIGINA =>
  27. 27. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 27 VARIÁVEIS: INTEIROS Um número inteiro - integer - é um número do conjunto de Z aPHP $a $b = $c == 1234; -1234; 0x1A; // Decimal Negativo Hexadecimal VARIÁVEIS: REAIS Um número real - float - é um número do conjunto de R aPHP $a $b = $c == 1.234; 1.2E3; 7E-5; // 1,234 1200 0.000005
  28. 28. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 28 VARIÁVEIS: STRINGS Já vimos anteriormente estas: aPHP $a $b == ‘’Afonso’’; ‘Afonso Gomes’; // Afonso Afonso Gomes Assim também funciona: aPHP $c = <<<FIM Exemplo de um texto que se estende por algumas linhas usando uma sintaxe entre marca. <div class="umaclasse">Afonso</div> FIM;
  29. 29. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 29 VARIÁVEIS: STRINGS, Acesso a caracteres Também podemos aceder a caracteres de uma string... aPHP <?php ?> $d echo echo echo = ‘’Afonso!’’; ‘’String Original: ‘’ . $d; ‘’Primeiro Caracter:’’ . $d[0]; ‘’Ultimo Caracter:’’ . $d[strlen($d)-1]; // A // !
  30. 30. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 30 VECTORES Outra maneira de armazenar dados é em vectores (Arrays) Um vector pode ser criado utilizando a função array() que usa, como parâmetro uma sequência de pares chave => valor separados por vírgula. inteiro/string. qualquer coisaChave: Valor: aPHP <?php ?> $e print_r( echo = array(1 => ‘Valor1’, 2 => ‘Valor2’, 3 => ‘Valor3’); $e); $e[2];
  31. 31. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 31 VECTORES Não gostou como apareceram as coisas no browser quando testou? Experimente mudar para isto: aPHP <?php ?> $e echo print_r( echo echo = array(1 => ‘Valor1’, 2 => ‘Valor2’, 3 => ‘Valor3’); ‘’<pre>’’; $e); ‘’</pre>’’; ‘’O segundo valor do vector é: ‘’ . $e[2]; d
  32. 32. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 32 VECTORES Reparamos que podemos ver o valor de uma chave do vector... Mas também podemos . Continuando o nosso código: apagar, acrescentar e até editar chaves aPHP <?php ?> $e print_r echo unset( ) echo = array(1 => ‘Valor1’, 2 => ‘Valor2’, 3 => ‘Valor3’); $e; $e[2]; $e[2] ; $e[2];
  33. 33. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 33 VECTORES aPHP <?php ?> $e print_r ( echo unset( ) echo print_r ( = array(1 => ‘Valor1’, 2 => ‘Valor2’, 3 => ‘Valor3’); $e); $e[2]; $e[2] ; $e[3]; $e[4] = ‘’Que seca de sessão!’’; $e[4] = ‘’Está a ser porreiro!’’; $e); // Função que apaga elemento de um vector
  34. 34. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 34 VECTORES aPHP <?php ?> $a = 10; $b = ‘’Afonso’’; $e $e[1] = $a; $e[2] = $b; $e[3] = ‘’Um teste’’; print_r($e) = array(); ; Também podemos criar vectores vazios e depois introduzir-lhe elemento a elemento!
  35. 35. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 35 VECTORES ASSOCIATIVOS Neste tipo de vectores associamos um valor a uma chave à qual damos um nome. Nos vectores anteriores davamos nomes às nossas chaves! não aPHP <?php ?> $f[’clube’] $f[’cidade’] $f[’país’] $f[’umasocor’] print_r ( = ‘’FC Porto’’; = ‘’Porto’’; = ‘’Portugal’’; = ‘’Azul e Branco’’; $f);
  36. 36. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 36 VECTORES MULTIDIMENSIONAIS Nome bonito para ... vectores dentro de vectores aPHP $g = array( 1 => array( ’’clube’’ => ‘’FC Porto’’, ’’cidade’’ => ‘’Porto’’, ’’cor’’ => ‘’Azul’’ ), 2 => array( ’’clube’’ => ‘’Sporting CP’’, ’’cidade’’ => ‘’Lisboa’’, ’’cor’’ => ‘’Verde’’ ) ); print_r ($g);
  37. 37. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 37 VECTORES MULTIDIMENSIONAIS Como procurar elementos nestes vectores? aPHP <?php ?> echo print_r( ) echo echo echo echo ‘’<pre>’’; $g ; ‘’</pre>’’; $g[1][’clube’] . ‘’<br>’’; $g[2][’cidade’] . ‘’<br>’’; $g[1][’cor’] . ‘’<br>’’;
  38. 38. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 38 VECTORES MULTIDIMENSIONAIS (EXERCICIO) Prepare um vector multidimensional (com um mínimo de 4 elementos no primeiro nível). Chame-lhe $turma Em cada elemento vamos guardar, também em vector, informações sobre pessoas da turma. Nome, Sobrenome, Idade, Função, etc... nome = Afonso sobrenome = Gomes idade = 31 funcao = formador Exemplo:
  39. 39. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 39 OBJECTOS É outro tipo de dados em PHP aPHP <?php ?> class teste{ function testar() { echo "Em teste."; } } $x = new teste; $x->testar();
  40. 40. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 40 Recursos Um recurso é uma variável especial que contem uma referência para um recurso externo. Aí vai um exemplo: aPHP <?php ?> $servidor = ‘’localhost’’; $user = ‘’admin’’; $password = ‘’12345’’; $ligação = mysqli_connect($servidor, $user, $password);
  41. 41. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 41 NULL O tipo especial NULL representa uma variável que não tem valor definido. O termo NULL pode ser escrito em maiúsculas ou minúsculas. aPHP <?php ?> $variavelvazia = NULL; echo $variavelvazia;
  42. 42. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 42 VARIÁVEIS PREDEFINIDAS EM PHP O PHP tem um conjunto de variáveis já definidas que contêm informações relevantes sobre o ambiente que o rodeia e o programa em curso. São chamadas as - Variáveis da responsabilidade do servidor web - Variáveis obtidas por meio do HTTP GET - Variáveis obtidas por meio do HTTP POST - Variáveis obtidas a partir dos cookies - Variáveis associadas à sessão do utilizador actual - Variáveis respeitantes ao upload de ficheiros. SUPERGLOBAIS . $_SERVER $_GET $_POST $_COOKIE $_SESSION $_FILES
  43. 43. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 43 VARIÁVEIS SUPERGLOBAIS: $_SERVER Quero explorar todas estas com vocês aqui! vermos qualquer coisa a funcionar vamos ver a Mas, para já e para $_SERVER aPHP <?php ?> echo echo echo echo $_SERVER[’SERVER_ADDR’] . ‘’<br>’’; $_SERVER[’SERVER_NAME’] . ‘’<br>’’; $_SERVER[’REMOTE_ADDR’] . ‘’<br>’’; $_SERVER[’DOCUMENT_ROOT’] . ‘’<br>’’; //REMOTE_HOST não funciona Localhost
  44. 44. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 VARIÁVEIS REVISÃO Pequeno exemplo de variáveis... aPHP <?php ?> $nome ; $Nome ; echo ‘’ $1teste = $_1teste = echo = ‘’Felismino’’ = ‘’Felisberto’’ $nome, $Nome<br>’’; ‘’Teste’’; ‘’Teste’’; $_SERVER[’DOCUMENT_ROOT’]; // Funciona! // DÁ ERRO! // Funciona! // V. Superglobal
  45. 45. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 45 ÂMBITO DAS VARIÁVEIS As variáveis têm um âmbito de aplicação. Podem ser SuperGlobais Globais ou Estáticas aPHP <?php ?> $i ; include ( ; = 5 ‘’ficheiro.php’’) Este exemplo usa inclusão de ficheiros... não se preocupem com isso para já! VARIÁVEIS GLOBAIS A variável $i é global e pode ser utilizada pelo código que está presente no ficheiro que foi incluído!
  46. 46. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 46 VARIÁVEIS GLOBAIS Ao contrário dos ficheiros, as variáveis não se estendem para funções. No exemplo seguinte, nada é imprimido porque a dentro da funçãovariável $b não está definida aPHP <?php ?> $b = 5; function teste(){ echo $b; } teste(); Este exemplo usa funções de PHP... não se preocupem com isto!
  47. 47. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 47 VARIÁVEIS ESTÁTICAS (LOCAIS) Uma variável estática é uma variável que mantém o seu valor mesmo após o programa ter abandonado o âmbito onde ela foi definida aPHP <?php $a = 5; echo "Antes: " . $a . "<br>"; function teste2() { static $a; $a = 10; echo ‘’Durante: ‘’ . $a; } teste2(); echo ‘’<br>Depois: " . $a; ?>
  48. 48. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 48 CONSTANTES Enquanto uma variável pode, lá está, variar ao longo do código, uma constante mantem-se inalterável de inicio ao fim. - Os nomes não começam com o $ (cifrão) - As constantes são definidas com a função define(); - As constantes são GLOBAIS. Podem ser acedidas dentro de outras funções. - As constantes não podem ser redefinidas nem eliminadas. Vamos ver um exemplo...
  49. 49. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESASaPHP <?php ?> (’_NOME_’,’Afonso’); (’_IDADE_’, 31); ‘’O ’’ . _NOME_ . ‘’ tem ’’ . _IDADE_ . ‘’ anos’’; define define echo // Resultado: O Afonso tem 31 anos contantes.php 49 CONSTANTES Possível aplicação? Ficheiros de línguas de um site multi-língua
  50. 50. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 50 EXPRESSÕES Agora que sabemos tudo sobre variáveis... o que podemos fazer com elas? E o podemos fazer? Usamos expressões. . Já vimos algumas ... vamos dar-lhes um olhar mais atento para perceber como funcionam! como aPHP <?php ?> $nome echo = ‘’Afonso’’; $nome; EXPRESSÃO OPERADOR
  51. 51. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 EXPRESSÕES Alguns exemplos! (Ter em mente... OPERADORES é mais à frente!) aPHP <?php ?> $a = 10; $b = $c = 2; $d = $c + $b; $e = 10 + $d + ($c * $b); $e++; $f = $e; echo $f; // $b = 2 E $c = 2 // Incrementa um valor! // É igual a $e = $e + 1; 51
  52. 52. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS FUNÇÕES Uma função é também uma expressão. As funções são usadas para fazer ‘’re-aproveitamento’’ de código. aPHP <?php ?> function dizOla(){ echo ‘’Olá Mundo’’; } dizOla(); 52 A função do exemplo não possui qualquer parâmetro de entrada. Quando chamada apenas imprime Olá Mundo.
  53. 53. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS Parâmetros de entrada? São valores que queremos dar de entrada à função! Que é isso?? aPHP <?php ?> function dizOla2($nome){ echo ‘’Olá ’’ . $nome; } $nome = ‘’Afonso’’; dizOla2($nome); 53 Experimentem esta! Invocação (Chamada) com passagem de parâmetros FUNÇÕES
  54. 54. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 Vamos ver mais exemplos com parâmetros de entrada... Funcões podem executar uma acção ou retornar um valor aPHP <?php ?> function soma($a, $b){ echo $a + $b; } soma(4154,10124); 54 aPHP <?php ?> function soma($a, $b){ return $a + $b; } $c = soma(457,215); echo $c; = A execução de uma função pára assim que um valor for retornado FUNÇÕES
  55. 55. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 Em funções podemos permitir que não seja necessário introduzir certos parâmetros. Usamos parâmetros predefinidos... 55 aPHP <?php ?> function multiplica($a, $b = 10){ return $a * $b; } echo multiplica(5); echo multiplica(3,5); // Resultado: 50 // Resultado: 15 FUNÇÕES
  56. 56. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 Agora que somos experts em funções, voltemos ao ex de vectores! 56 aPHP $e = array(1 => 'Valor1', 2 => 'Valor2', 3 => 'Valor3'); array_pop($e); echo "<b>Depois do ARRAY_POP</b>"; print_r($e); array_push($e,"Um Valor qualquer"); echo "<b>Vector depois do ARRAY_PUSH</b>"; print_r($e); O PHP já vem cheio de funções para tarefas corriqueiras... Lista de funções p/ vectores: php.net/manual/en/ref.array.php FUNÇÕES ... mais um exemplo!
  57. 57. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 44 Muitas vezes é essencial ... e não é nada de difícil... 57 aPHP function soma2nums($a,$b){ return $a + $b; } echo soma2nums(15,soma2nums(3,6)); Simples não é ? FUNÇÕES ... dentro de Funções
  58. 58. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS OPERADORES Em PHP há imensos operadores para muitas operações diferentes Vamos ver os mais usuais! (Alguns já foram vistos antes!) Um operador indica uma acção a ser executada entre membros de uma expressão 58 aPHP <?php ?> $nome echo = ‘’Afonso’’; $nome; EXPRESSÃO OPERADOR
  59. 59. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 59 EXEMPLO NOME RESULTADO $a + $b Adição Soma de $a com $b $a - $b Subtracção Diferença entre $a e $b $a * $b Multiplicação Produto de $a por $b $a / $b Divisão Quociente entre $a por $b $a % $b Módulo Resto da divisão de $a por $b OPERADORES: Aritméticos
  60. 60. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 EXEMPLO NOME RESULTADO $a == $b Igual Verdade se $a igual a $b $a === $b Idêntico Verdade se $a igual a $b (e mesmo tipo) $a != $b Diferente Verdade se $a diferente de $b $a !== $b Não Idêntico Verdade se $a diferente de $b (ou de tipos diferentes) $a < $b Menor Verdade se $a menor que $b $a > $b Maior Verdade se $a mairo que $b $a <= $b Menor/Igual Verdade se $a menor ou igual a $b $a >= $b Maior/Igual Verdade se $a maior ou igual a $b OPERADORES: Relacionais 60
  61. 61. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 EXEMPLO NOME RESULTADO $a AND $b Conjunção TRUE se $a $b forem TRUEE $a && $b Conjunção TRUE se $a $b forem TRUEE $a OR $b Disjunção Inclusiva TRUE se $a $b forem TRUEOU $a || $b Disjunção Inclusiva TRUE se $a $b forem TRUEOU $a XOR $b Disjunção Inclusiva TRUE se $a $b forem TRUE (mas não ambos simultâneamente) OU !$a Negação Lógica TRUE se $a for FALSE OPERADORES: Lógicos 61
  62. 62. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 EXEMPLO NOME RESULTADO $a++ Pós-Incremento Incrementa $a e depois devolve $a ++$a Pré-Incremento Devolve $a e depois incrementa $a $a-- Pós-Decremento Decrementa $a e depois devolve $a --$a Pre-Decremento Devolve $a e depois decrementa $a OPERADORES: Incremento/Decremento 62 Sem medo... vamos ver mais disto nos CICLOS.
  63. 63. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS OPERADORES: Condicional 63 Representa-se por expr1 ? expr2 : expr3 Se FALSE é devolvido o valor da expr3 ? e tem uma estrutura muito semelhante a uma estrutura de controlo SE. A expr1 é avaliada. Se TRUE é devolvido o valor da expr2 Sintaxe: . 5155 aPHP $a = 9; $b = 10; print ($a > $b ? ‘’$a é maior’’ : ‘’$a é menor’’); $d = 5; $e = $d * $d; print ($e >= 100 ? ‘’É maior’’ : ‘’É menor’’); . // $e é o quadrado de $d
  64. 64. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 OPERADORES: De Strings 64 Operador de concatenação Operador de concatenação e atribuição 5155 aPHP $k = ‘’Olá’’; $k = $k . ‘’ Mundo !‘’; // Olá Mundo ! 5155 aPHP $m = ‘’Olá’’; $m .= ‘’ mundo !’’; // Olá mundo !
  65. 65. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 65 5155 5155 Referência completa de todos os operadores, aqui: http://php.net/manual/en/language.operators.php php.net(basta ir a e pesquisar Operators) OPERADORES: Lista completa
  66. 66. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 EXERCICIOS 66 5155 5155 1) Escreva uma função que faça a soma de dois números Teste 2 vezes com valores a serem imprimidos no browser aPHP <?php ?> function soma2nums($num1,$num2) { return $num1 + $num2; } $a = 10; $b = 15; echo soma2nums($a, $b); echo soma2nums(27,$b);
  67. 67. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS EXERCICIOS 67 2) Escreva uma função que calcule o cubo de um número Teste 2 vezes com valores a serem imprimidos no browser 3) Escreva uma função que diga se um número é par ou impar Teste 2 vezes com valores a serem imprimidos no browser
  68. 68. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 EXERCICIOS 68 5155 5155 aPHP <?php ?> function cubomaiorquemil($a){ $b = $a * $a * $a; echo ($b >= 1000 ? "SIM ($b >= 1000)<br>" : "NÃO ($b)<br>"); } function parouimpar($a){ echo ($a % 2 == 0 ? "($a) PAR<br>" : "($a) IMPAR<br>"); } parouimpar(10); parouimpar(7); cubomaiorquemil(9); cubomaiorquemil(15);
  69. 69. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 FUNÇÕES ESSENCIAIS NO PHP (1) 69 5155 aPHP O PHP possui uma extensa biblioteca de funções definidas para facilitar a vida à malta. Ao longo do curso, de vez em quando, vamos ver as mais importantes. Hoje ... vamos ver algumas funções para texto. Vejam a sintaxe de cada em php.net ... $string1 = ‘’olá mundo!’’; $string2 = ‘’OLÁ MUNDO!’’; echo ($string1); echo ($string1); echo ($string2); echo ($string1); ucfirst ucwords strtolower strtoupper // Olá mundo! // Olá Mundo! // olá mundo! // OLÁ MUNDO!
  70. 70. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 INSTRUÇÕES CONDICIONAIS: If 70 Esta estrutura é a famosa da programação. É a estrutura mais usada em qualquer linguagem de programação Também é conhecida como sendo uma Estrutura de controlo Pode assumir 3 formas. (expressão) Instrução (expressão) Instrução Instrução (expressão) Instrução Instrução Instrução .... SE ENTÃO SENÃO if if else if elseif else SINTAXE:
  71. 71. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 INSTRUÇÕES CONDICIONAIS: If 71 Um exemplo: 5155 5155 5155 aPHP $a = 10; $b = 15; if($a > $b) { echo ‘’$a é maior que $b’’; } elseif($a == $b) { echo ‘’$a é igual a $b’’; } else { echo ‘’$a é menor que $b’’; }
  72. 72. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 5155 INSTRUÇÕES CONDICIONAIS: If 72 Um exemplo: 5155 5155 5155 aPHP $a = 10; $b = 15; if($a > $b) { $msg = ‘’$a é maior que $b’’; } elseif($a == $b) { $msg = ‘’$a é igual a $b’’; } else { $msg = ‘’$a é menor que $b’’; } echo $msg; Preparamos uma mensagem e só a imprimimos no fim.
  73. 73. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 73 aPHP $nome = $_GET[’nome’]; echo $nome; Um uso típico de um IF simples é quando recebemos variáveis numa página através do HTTP GET Notice: Undefined index: nome in C:xampphtdocscesaeexemplos.php on line 282
  74. 74. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 74 aPHP $nome = $_GET[’nome’]; echo $nome; Mudem o endereço para: localhost/index.php?nome=Felismino Acontece que o nosso .php não estava preparado para o caso da variável $_GET[’nome’] ! Resolve-se isso de uma forma muito simples! poder não estár definida .
  75. 75. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 75 aPHP if( ) { $nome = $_GET[’nome’]; } else { $nome = ‘’desconhecido’’; } echo ‘’Olá ‘’ . $nome; isset($_GET[’nome’]) Usa-se um IF para verificar se a variável está ou não definida O PHP tem uma função que faz essa verificação: isset();
  76. 76. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 76 aPHP if( && ) { $nome = $_GET[’nome’]; $email = $_GET[’email’]; $msg = $nome . ‘’ (’’ . $email . ‘’)’’; } else { $msg = ‘’Erro na introdução de parâmetros’’; } echo $msg; isset($_GET[’nome’]) isset($_GET[’email’]) Várias variáveis de entrada? Sem problema! No endereço: index.php nome=Felisberto email=a@gmail.com? &
  77. 77. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 77 aPHP if( ) { $nome = $_GET[’nome’]; $email = $_GET[’email’]; $msg = $nome . ‘’ (’’ . $email . ‘’)’’; } else { $msg = ‘’Erro na introdução de parâmetros’’; } echo $msg; isset($_GET[’nome’], $_GET[’email’]) Se soubessemos o funcionamento da isset() melhor... No endereço: index.php nome=Felisberto email=a@gmail.com? &
  78. 78. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 78 aPHP if(!function_exists(’encurtaTexto’)){ function encurtaTexto($text,$chars='25'){ ... } } . . Outro bom uso recorrente do IF é quando definimos as nossas funções. Já tinhamos visto que ocorre um erro se tivermos 2 funções com o mesmo nome ... Ou seja, definimos a função só se já não estiver definida!
  79. 79. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 79 aPHP if ($a == 5): echo "a é igual a 5"; echo "..."; elseif ($a == 6): echo "a é igual a 6"; echo "!!!"; else: echo "a nem é 5 nem 6"; endif; Também temos o IF com uma sintaxe alternativa Simplifica a leitura mas pode ser confuso... aPHP if ($a == 5): <p> A é igual a 5!</p> endif; <?php ?> <?php ?> Também podemos ter uma coisa deste género!
  80. 80. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If 80 aPHP if(1){ echo ‘’Sou sempre verdade’’; } else { echo ‘’Esta mensagem nunca será exibido!’’; } E para acabar os IFs ... um que é !sempre verdade
  81. 81. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: If (Exercício) 81 Faça um ficheiro PHP que receba por HTTP GET 2 variáveis numéricas. E nesse ficheiro deve existir: Uma função para calcular a multiplicação dessas variáveis Uma estrutura IF que verifique se a multiplicação desses dois números dá menor que 100, igual a 100 ou maior que 100. Em cada caso deve imprimir uma mensagem para o ecrã, do género: A multiplicação entre e dá que é menor que 100 em unidades. Defina as variáveis auxiliares que achar convenientes! >> >> >> DICA: X Y Z W
  82. 82. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: Switch 82 aPHP $i = 2; switch($i){ case 0: echo ‘$i é igual a 0’; break; case 1: echo ‘$i é igual a 1’; break; case 2: echo ‘$i é igual a 2’; break; } O funcionamento de um SWITCH é igual ao de um IF. Pode e deve ser usado quando queremos comparar muitos valores...
  83. 83. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: Switch 83 aPHP $i = ‘’Ana’’; switch($formando){ case ‘’Glória’’: echo ‘’Sentada à direita’’; break; case ‘’Ana’’: echo ‘’Sentada em frente’’; break; case ‘’Marília’’: echo ‘’Sentada à esquerda’’; break; } [...]
  84. 84. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES CONDICIONAIS: Switch - Caso prático 84 aPHP function StringFloracao($mes){ switch($mes){ case 1: $stringmes = ‘’Janeiro’’; break; case 2: $stringmes = ‘’Fevereiro’’; break; case 3: $stringmes = ‘’Março’’; break; case 4: $stringmes = ‘’Abril‘’; break; case 5: $stringmes = ‘’Maio‘’; break; case 6: $stringmes = ‘’Junho‘’; break; } return $stringmes; } [...]
  85. 85. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES ITERATIVAS (CICLOS): WHILE 85 aPHP $contador = 1; while($contador <= 10){ echo ‘$contador é igual a’ . $contador; $contador++; } Num ciclo, uma qualquer acção é processada enquanto uma condição for verdadeira. Antes de se fechar o ciclo devemos ter o cuidado de incrementar o contador...
  86. 86. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 86 aPHP $pizza = ‘’fatia1|fatia2|fatia3|fatia4|fatia5|fatia6’’; $fatias = explode(’’|’’, $pizza); echo $fatias[0] . ‘’<br>’’; echo $fatias[1]; // fatia1 // fatia2 São das mais usadas funções de PHP. O condensa várias variáveis numa só, o explode uma string para vários pedaços e a facilita a definição de muitas variáveis ao mesmo tempo. IMPLODE EXPLODE LIST EXPLODE FUNÇÕES ESSENCIAIS PHP (2): e eEXPLODE LIST IMPLODE
  87. 87. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 87 aPHP $carro = ‘’rodas, motor, volante, pedais’’; $pecas = explode(’’, ’’, $carro, 2); echo $pecas[0] . ‘’<br>’’; echo $pecas[1]; // rodas // motor, volante, pedais EXPLODE aPHP $clubes = ‘’FC Porto:SL Benfica:Sporting CP’’; list($grande, $medio, $assimassim) = explode(’’:’’,$clubes); echo $grande . ‘’<br>’’; echo $assimassim; // FC Porto // Sporting CP EXPLODE com o LIST FUNÇÕES ESSENCIAIS PHP (2): e eEXPLODE LIST IMPLODE
  88. 88. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS FUNÇÕES ESSENCIAIS PHP (2): e eEXPLODE LIST IMPLODE 88 aPHP $dados = array(’’pnome’’,’’unome’’,’’email’’,’’telemovel’’); echo $dados[1]; $todosjuntos = implode(’’ | ‘’, $dados); echo $todosjuntos; // unome // pnome | unome | email | telemovel IMPLODE aPHP $elems = array(’Elemento 1’, ‘Elemento 2’, ‘Elemento 3’); echo ‘’<ul><li>’’ . implode(’’</li><li>", $elems) . ‘’</li></ul>’’; IMPLODE (Exemplo prático)
  89. 89. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS CICLOS: WHILE ... CICLOS INFINITOS 89 aPHP $contador = 1; while($contador <= 10){ echo ‘$contador é igual a’ . $contador; } $contador++; São dos erros mais comuns em programas... Entra-se em ciclos infinitos quando a . condição que estamos a verificar é sempre verdadeira
  90. 90. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS CICLOS: WHILE 90 aPHP $contador = 1; while($contador <= 10){ echo ‘$contador é igual a’ . $contador++; } Neste exemplos usamos o operador de pós-incremento dentro do próprio echo... É impresso o seu valor e logo a seguir incrementado.
  91. 91. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 91 aPHP $contador = 1; while($contador <= 10){ echo ‘$contador é igual a’ . ++$contador; } Já neste exemplo, é usado o operador de pré-incremento, a variável $contador é incrementada e só depois disso é que é impressa no ecrã CICLOS: WHILE .
  92. 92. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 92 aPHP $contador = 1; do { echo ‘$contador é igual a’ . $contador; $contador++; } while ($contador <= 10); Temos também a variante DO .... WHILE (fazer enquanto) O código pouco altera. Nesta versão, pelo PHP. a condição é apenas verificada depois do ciclo ser processado CICLOS: DO ... WHILE .
  93. 93. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS INSTRUÇÕES ITERATIVAS (CICLOS): WHILE 93 aPHP $contador = 1; do { echo ‘$contador é igual a’ . $contador++; } while ($contador <= 10); . aPHP $contador = 1; while($contador <= 10){ echo ‘$contador é igual a’ . $contador++; }
  94. 94. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 94 CICLOS: Exercício 1 Faça um contador que comece no 1 e quando chegar a 10 imprima a linha ‘’Olá Mundo!’’. Deverá aparecer no ecrã algo do género: 1 2 ... 8 9 Olá Mundo
  95. 95. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 95 aPHP $i = 1; while($i <= 10){ if($i < 10) { echo $i . ‘’<br>’’; }else echo ‘’Olá Mundo!’’; } } CICLOS: Exercício 1 Resolução 1 2 3 4 5 6 7 8 9 Olá Mundo!
  96. 96. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 96 aPHP $i = 1; while($i <= 10){ if($i < 3 || $i > 7 && $i < 10) { echo $i . ‘’<br>’’; }elseif($i > 3 && $i < 7){ echo ‘’...<br>’’; }else echo ‘’Olá Mundo!’’; } } CICLOS: Exercício 1 Resolução (Floreada!) 1 2 ... ... ... ... ... 8 9 Olá Mundo! } Podia ter ficado melhor!
  97. 97. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 97 aPHP $i = 1; $flag = false; while($i <= 10){ if($i < 3 || $i > 7 && $i < 10 ){ echo $i . "<br>"; }elseif($i >= 3 && $i <= 7){ if($flag == false) { echo "...<br>"; $flag = true; } }elseif($i == 10){ echo "Olá Mundo!"; } $i++; } CICLOS: Exercício 1 Resolução (Floreada!) 1 2 ... 8 9 Olá Mundo!
  98. 98. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 98 CICLOS: Exercício 2 Faça um contador decrescente que comece no 20 e mostre linha a linha a contagem até 0. Deverá aparecer no ecrã algo tipo: Mas quando chegar ao zero. Em vez de dizer ‘’Falta 0...’’ deve dizer Falta 20... Falta 19... Falta 18... Já está!
  99. 99. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 99 aPHP $i = 20; while($i >= 0){ if($i != 0){ echo "Falta $i ..."; }else{ echo "Já está!"; } echo "<br>"; $i--; } CICLOS: Exercício 2 Resolução
  100. 100. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 100 CICLOS: FOR aPHP for($conta = 1; $conta < 10; $conta++){ echo ‘’Número: <b>’’ . $i . ‘’</b><br>’’; } Tipo um While... com os comandos definidos no ínicio do bloco. . SINTAXE: for(expr1; expr2; expr3) { ... } expr1: expr2: expr3: Avaliada apenas uma vez na primeira iteração Avaliada a cara iteração. O ciclo pára se der . Avaliada no final de cada iteração. Contém a variável de controlo. False
  101. 101. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 101 CICLOS: FOREACH A instrução FOREACH, funciona exclusivamente com vectores. Podemos utiliza-la para chegar ao valor do vector ou ao valor e chave do vector . SINTAXE: foreach($vector AS $valor) { Instruções } foreach($vector AS $chave => $valor) { Instruções } Vamos ver exemplos
  102. 102. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 102 CICLOS: FOREACH A instrução FOREACH, funciona exclusivamente com vectores. Podemos utiliza-la para chegar ao valor do vector ou ao valor e chave do vector . SINTAXE: foreach($vector AS $valor) { Instruções } foreach($vector AS $chave => $valor) { Instruções } Vamos ver exemplos aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); foreach($vector AS $valor){ echo ‘’$valor<br>’’; }
  103. 103. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 103 CICLOS: FOREACH A instrução FOREACH, funciona exclusivamente com vectores. Podemos utiliza-la para chegar ao valor do vector ou ao valor e chave do vector . SINTAXE: foreach($vector AS $valor) { Instruções } foreach($vector AS $chave => $valor) { Instruções } Vamos ver exemplos aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); foreach($vector AS $chave => $valor){ echo ‘’A chave $chave tem o valor $valor<br>’’; }
  104. 104. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 104 CICLOS: (Como faríamos se... ?)FOREACH Quiséssemos que, se o valor da chave ‘’dois’’ for igual a ‘’Número dois’’ muda-la para 2 ? aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); foreach($vector AS $chave => $valor){ } // Novo Valor: 2 ?
  105. 105. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 105 aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); foreach($vector AS $chave => $valor){ if ($valor == "Número dois"){ $vector[$chave] = 2; } } print_r($vector); // Novo Valor: 2 CICLOS: FOREACH
  106. 106. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 106 Quiséssemos que as os valores para cada chave, fossem, respectivamente: 5 .... 6 ... 7 ... 8 ? aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); foreach($vector AS $chave => $valor){ } // Novo Valor: 5 // Novo Valor: 6 // Novo Valor: 7 // Novo Valor: 8 ? CICLOS: (Como faríamos se... ?)FOREACH
  107. 107. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 107 aPHP $vector = array(’’um’’ => 1, ‘’dois’’ => ‘’Número dois’’, ‘’tres’’ => 3, ‘’quatro’’ => 4); $contador = 5; foreach($vector AS $chave => $valor){ $vector[$chave] = $contador; $contador++; } print_r($vector); // Novo Valor: 5 // Novo Valor: 6 // Novo Valor: 7 // Novo Valor: 8 CICLOS: (Como faríamos se... ?)FOREACH
  108. 108. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 108 RESUMO INSTRUÇÕES Instruções Condicionais: Instruções Iteractivas (ou Ciclos) - IF - Switch - While - Do ... While - For - Foreach (Uma espécie de IF para quando há mtas instruções) (Só para vectores!)
  109. 109. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 109 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME Uma função extremamente usada em PHP é a É frequentemente usada com a TIME e a MKTIME que ajudam a fazer cálculos... Vamos ver uns exemplos: DATE aPHP $hoje = date("Y-m-d H:i:s"); echo $hoje . "<br>";
  110. 110. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 110 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME O timezone por defeito é o UTC. Precisamos de definir o que queremos... Assim já deve funcionar melhor: aPHP date_default_timezone_set(’’Europe/Lisbon’’); $hoje = date(’’Y-m-d H:i:s’’); echo $hoje . ‘’<br>’’;
  111. 111. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 111 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME Temos muitas maneiras de definir o formato da data desejada, dependendo das necessidades aPHP $hoje = date("d/m/y"); $hoje = date("d-m-Y"); $hoje = date("g:i:s A"); $hoje = date("H:i:s"); $hoje = date("l"); $hoje = date(’’Y-m-d H:i:s’’); // 21/10/13 // 21-10-2013 // 2:04:50 AM // 02:04:50 // Monday // 2013-10-21 02:04:50 // Esta última maneira é sempre a melhor para interações com uma Base de Dados Todas as maneiras possíveis em php.net
  112. 112. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 112 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME Usando o time para definir o momento ... O calcula um valor baseado no início da Era UNIX ! Retorna o valor em segundos desde 1 de Janeiro de 1970 ás 00:00:00 GMT time() aPHP $proxSem = time() + (7 * 24 * 60 * 60); echo ‘’<b>Agora</b>:’’ . date(’Y-m-d H:i:s’) . ‘’<br>’’; echo ‘’<b>Próxima Sem.</b>: ‘’. date(’Y-m-d H:i:s’, $proxSem);
  113. 113. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 113 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME Usando o time para definir o momento ... O calcula um valor baseado no início da Era UNIX ! Retorna o valor em segundos desde 1 de Janeiro de 1970 ás 00:00:00 GMT time() aPHP $proxSem = time() + (7 * 24 * 60 * 60); echo ‘’<b>Agora</b>:’’ . date(’Y-m-d H:i:s’) . ‘’<br>’’; echo ‘’<b>Próxima Sem.</b>: ‘’. date(’Y-m-d H:i:s’, $proxSem);
  114. 114. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 114 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME A função MKTIME usada em conjunto com o DATE é bastante útil para calcular datas seja no passado ou no futuro. Assim: aPHP echo ‘’12/05/1982 foi um ‘’ . date(’’l’’, mktime(0, 0, 0, 5, 12, 1982)); aPHP $hoje = mktime(0, 0, 0, date(’’m’’), date(’’d’’)+1, date(’’Y’’)); $mespassado = mktime(0, 0, 0, date(’’m’’)-1, date(’’d’’), date(’’Y’’)); $proxano = mktime(0, 0, 0, date(’’m’’), date(’’d’’), date(’’Y’’)+1); echo ‘’Mes Passado: ‘’ . date(’d-m-Y’,$mespassado) . "<br>"; Ou assim:
  115. 115. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 115 FUNÇÕES ESSENCIAIS DO PHP (3): e eTIME DATE MKTIME Algumas utilidades... ou não: aPHP $datadif1 = time() - strtotime(’’1982-05-12’’); $dias1 = floor($datadif1/(60*60*24)); echo ‘’O Afonso já viveu ‘’ . $dias1 . ‘’ dias!’’; $datadif2 = time() + strtotime(’’2014-02-28’’); $dias2 = floor($datadif2/(60*60*24)); echo ‘’<br>Faltam ‘’ . $dias2 . ‘’ dias para a Ana nascer!’’;
  116. 116. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 116 include() include_once() require() require_once(), , e Funções que se usam sempre em PHP! Servem para incluir dentro de um ficheiro .PHP ficheiros externos com código PHP ou não! Podemos incluir ficheiros .txt, .html, etc. aPHP require ("php/connection.php"); require ("php/functions.php"); <?php ?> Diferentes na reacção a erros. - produz erro fatal. Pára toda a execução da página. - produz aviso. Continua toda a execução da página. Se ficheiro não encontrado: REQUIRE INCLUDE
  117. 117. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 117 include() include_once() require() require_once(), , e O require_once() e include_once() diferem das anteriores, apenas por não incluir o ficheiro caso este já tenha sido incluido antes. Evita problemas como redefinição de variáveis... aPHP require_once ("php/connection.php"); include_once ("php/functions.php"); <?php ?>
  118. 118. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 118 include() include_once() require() require_once(), , e Exemplos práticos... os que vimos anteriormente de chamada a ficheiros com a nossa ligação à Base de Dados, ou ficheiros com as nossas funções... e nestes casos: aPHP <div id=’’header’’> </div> <div id=’’sh’’> <div id=’’shesq’’>Você está aqui: [...]</div> </div> <?php ?> <?php ?> include(’’inc/header.php"); include(’’inc/headersub.php’’);
  119. 119. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 119 PHP SESSIONS As são uma forma de guardar info sobre um visitante. O servidor atribui um id único ao cliente, que é mantido enquanto a sessão estiver activa. Variáveis de sessão criada, podem ser consultadas pelas páginas seguintes (do mesmo site) que o cliente visitar. A sessão é apagada no fim da visita. SESSÕES
  120. 120. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 120 PHP SESSIONS Vamos fazer um pequeno site para ver um exemplo de SESSÕES. Salvem estes código fontes no vosso localhost Mudando a extensão do ficheiro para .php http://cesae.afonsogomes.com/exemplo-sessoes.txt http://cesae.afonsogomes.com/exemplo-sessoes2.txt http://cesae.afonsogomes.com/exemplo-sessoes-unset.txt
  121. 121. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 121 PHP SESSIONS Verificar se a Sessão já está definida. Senão ... criar a variável de sessão que desejamos... aPHP session_start(); if(!isset($_SESSION['contador'])){ $_SESSION['contador'] = 1; } else { $_SESSION['contador']++; } // Sessão ainda não definida. Iniciar variável // Sessão JÁ definida. Incrementar contador.
  122. 122. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 122 PHP SESSIONS aPHP session_start(); unset($_SESSION['contador']); O código anterior cria um simples contador de páginas vistas. dele sair e isso é tão simples como, apagarmos as variáveis que criámos para essa sessão... Este contador será apagado quando o utilizador sair do site Por alguma razão podemos querer apaga-lo antes
  123. 123. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 123 PHP COOKIES Os Cookies funcionam de maneira idêntica às Sessões. A grande diferença é que as informações das variáveis que definirmos ficam armazenadas num pequeno ficheiro txt no computador do visitante do site. - Há pessoas que têm os cookies desligados nos seus browsers. - A info fica disponível para acesso numa próxima visita. Duas notas importantes:
  124. 124. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 124 PHP COOKIES Para definirmos um cookie temos de dar um nome e um valor à variável e definirmos uma duração (validade). Sintaxe: setcookie(name, value, expire, path, domain); aPHP <?php ?> setcookie(’’utilizador’’, ‘’Afonso’’, time()+60*60*24*30); setcookie(’’contadorvisitas’’, 1, time()+60*60*24*30);
  125. 125. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 125 PHP COOKIES Para usarmos informações guardadas numa cookie... Verificamos se elas estão definidas e apanhamo-las: aPHP <?php ?> if (isset($_COOKIE[’’utilizador’’])) { echo ‘’Bem Vindo ‘’ . $_COOKIE[’’utilizador’’] . ‘’!<br>’’; } else { echo ‘’Bem vindo visitante!<br>’’; }
  126. 126. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 126 PHP COOKIES Para apagarmos uma cookie, definimos uma validade já expirada (no passado!) bem como os valores do cookie vazio! aPHP <?php ?> setcookie(’’utilizador’’, ‘’ ’’, time()-60*60*24*30); setcookie(’’contadorvisitas’’, ‘’ ‘’, time()-60*60*24*30);
  127. 127. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 127 PHP COOKIES Vamos ver um pequeno exemplo Salvem estes código fontes no vosso localhost Mudando a extensão do ficheiro para .php http://cesae.afonsogomes.com/exemplo-cookies.txt http://cesae.afonsogomes.com/exemplo-cookies-apaga.txt
  128. 128. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 128 TRABALHAR COM FICHEIROS EM PHP Uma das funcionalidades do PHP é poder manipular ficheiros. Como se fossemos nós a mexer nos nossos ficheiros... E o que podemos fazer? , , , , , , No ficheiro: Nos conteúdos do ficheiro: Criar novo Abrir Fechar Apagar Escrever Ler Adicionar coisas Apagar
  129. 129. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 129 FICHEIROS EM PHP: eFOPEN FCLOSE Então ... vamos lá começar a perceber como a coisa funciona: aPHP <?php ?> $filename = ‘’onossoficheiro.txt’’; $filehandle = fopen($filename, ‘w’) or die(’’Erro: Impossível abrir!’’); fclose($filehandle); Pode ser: W, R ou A
  130. 130. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 130 FICHEIROS EM PHP: FWRITE Não adianta abrir e fechar se não for para fazer alguma coisa! aPHP // Acrescentem isto depois do fopen e antes do fclose // Salvar... executar no browser... ver como ficou no ficheiro $escreveisto = ‘’Funciona! Impacábel!’’ . PHP_EOL; fwrite($filehandle, $escreveisto); $eisto = ‘’Altamente!’’; fwrite($filehandle, $eisto);
  131. 131. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 131 FICHEIROS EM PHP: FWRITE E mais um pouco do FWRITE! aPHP // Agora troquem as linhas do slide anterior por estas! // Salvar... executar no browser... ver como ficou no ficheiro $istotambem = ‘’Isto afinal é fácil!’’ . PHP_EOL; fwrite($filehandle, $istotambem); Problemas? :)
  132. 132. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 132 FICHEIROS EM PHP: FWRITE E mais um pouco do FWRITE... com o APPEND aPHP $filename = ‘’onossoficheiro.txt’’; $filehandle = fopen($filename, ‘A’) or die(’’Erro: Impossível abrir!’’); $escreveisto = ‘’Funciona! Impacábel!’’ . PHP_EOL; fwrite($filehandle, $escreveisto); $istotambem = ‘’Isto afinal é fácil!’’ . PHP_EOL; fwrite($filehandle, $istotambem); fclose($filehandle);
  133. 133. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 133 FICHEIROS EM PHP: FREAD Para fazer leitura de conteúdos de um ficheiro... aPHP $filename = ‘’onossoficheiro.txt’’; $filehandle = fopen($filename, ‘r’) or die(’’Erro: Impossível abrir!’’); $dados = fread($filehandle, 5); echo ‘’<b>Os dados do ficheiro: </b>’’ . $dados; fclose($filehandle); * * Os primeiros 5 bytes (1 byte = 1 caracter)
  134. 134. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 134 FICHEIROS EM PHP: FREAD Para fazer leitura de conteúdos de um ficheiro... aPHP $filename = ‘’onossoficheiro.txt’’; $filehandle = fopen($filename, ‘r’) or die(’’Erro: Impossível abrir!’’); $dados = fread($filehandle, filesize($filename)); echo ‘’<b>Os dados do ficheiro: </b>’’ . $dados; fclose($filehandle); * * Assim já lê todo o ficheiro!
  135. 135. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 135 FICHEIROS EM PHP: UNLINK (Apagar) A função unlink apaga completamente o ficheiro aPHP $filename = ‘’onossoficheiro.txt’’; unlink($filename); CUIDADO! Quanto mais poderosa é uma função, maior a probabilidade de fazer borrada... A função unlink é propícia a causar acessos de raiva 1 minuto depois de a termos usado! Testem e depois deixem esta linha comentada nos exemplos.
  136. 136. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 136 PROCESSAR FORMULÁRIOS EM PHP Processar formulários é talvez a função mais importante do PHP - Gere toda a interactividade entre o utilizador e a infra-estrutura do nosso site. - Permite que o utilizador afecte de forma efectiva os recursos do nosso servidor (inserções na BD, envio de emails, etc). - Todo o cuidado é pouco ao nível da segurança quando lidamos com inputs submetidos pelos utilizadores
  137. 137. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 137 PROCESSAR FORMULÁRIOS EM PHP Vamos estudar o caso de um formulário submetido no nosso site que fará com que seja enviado um email para a nossa conta de email de uso diário. A função que trata disto em PHP é a mail() . Mas antes de deixarmos os dados entrar nessa função, temos de fazer algumas verificações e introduzir algumas seguranças.
  138. 138. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 138 Um dos lemas essenciais na segurança de um site é: Nunca confiar em nada que um utilizador submete. PROCESSAR FORMULÁRIOS EM PHP aPHP if(!function_exists("seguranca_dados")){ function seguranca_dados($dados){ $dados = trim($dados); $dados = stripslashes($dados); $dados = htmlspecialchars($dados); return $dados; } }
  139. 139. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! Vamos analisar um exemplo prático e útil... Salvem estes códigos mudando a extensão do ficheiro para .php (O envio de email só funciona no servidor e não no localhost) http://cesae.afonsogomes.com/form.txt http://cesae.afonsogomes.com/functions.txt http://cesae.afonsogomes.com/processa-form.txt PROCESSAR FORMULÁRIOS EM PHP 139 PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS
  140. 140. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 140 BASES DE DADOS: O que são Uma vez que o constituinte central de qualquer sistema de informação é a sua memória (conjunto armazenado de dados), a “solução informática”, para qualquer organização, deve assentar num depósito integrado de dados – a base de dados. Uma base de dados é, por definição, um conjunto organizado de dados, disponível a todos os utilizadores ou processamentos da organização que deles tenham necessidade
  141. 141. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 142 BASES DE DADOS: Informação É poder! Dados são apenas elementos ou valores discretos que, isoladamente, não têm qualquer valor, só se transformam em informação quando relacionados ou interpretados de alguma forma. ·Para que possa ser utilizada como apoio eficaz à tomada de decisão nas organizações, a informação só tem valor se se verificarem, simultaneamente, algumas condições: . actualidade, correcção, relevância, disponibilidade e legibilidade
  142. 142. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 143 Antes: Sistemas de Gestão de Ficheiros Os antecessores, em termos de evolução tecnológica, dos modernos sistemas de BDs foram os sistemas de gestão de ficheiros. Utilizando sistemas de gestão de ficheiros, as organizações começaram por automatizar algumas das tarefas até aí realizadas manualmente. Basta que ocorra uma alteração na estrutura dum ficheiro para que essa alteração se propague, necessariamente, para todas as aplicações que o utilizam – a partilha de dados apresenta problemas ao nível da manutenção dos próprios sistemas. PROBLEMA1:
  143. 143. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 143 Antes: Sistemas de Gestão de Ficheiros PROBLEMA2: O acesso concorrente aos dados partilhados tem de ser feito ao nível das próprias aplicações, utilizando funções de baixo-nível. Isto gera uma imensa confusão quando várias pessoas, ou processos, tentam aceder aos ficheiros simultaneamente. Os sistemas de BDs surgem como tentativa de resolver estes problemas. A abordagem pelos sistemas de Bds tem uma característica fundamental: os dados são organizados num único conjunto.
  144. 144. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 144 AGORA: Sistemas de Gestão de Ficheiros Todos os acessos aos dados passam sempre por uma entidade designada Sistema de Gestão de Bases de Dados (SGBD), que centraliza em si o acesso físico à Base de Dados. SGBD BD Aplicação 1 Aplicação 2 Aplicação 3
  145. 145. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 145 Sistemas de Gestão de Ficheiros Por definição, o Sistema de Gestão de Bases de Dados (SGBD) é um conjunto de software, destinado a gerir todo o armazenamento e manipulação dos dados do sistema, fazendo a interface entre o nível aplicacional e a base de dados propriamente dita. O SGBD “esconde” os detalhes de armazenamento físico dos dados e proporciona, ao nível aplicacional, um grau de abstracção elevado. . SGBD BD Aplicação 1 Aplicação 2 Aplicação 3
  146. 146. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 146 Conceito de transação É um dos conceitos mais importantes num sistema BDs. Praticamente todas as tarefas de gestão de base de dados vivem à custa deste conceito. transferência de valores entre duas contas bancárias. Debitar de A e creditar em B Só a sua execução conjunta produz um resultado válido. Por definição, uma transacção é um conjunto de operações sobre a base de dados, perfeitamente delimitado, que exibe algumas características importantes, conhecidas por . . . Exemplo típico: ACID (Atomicity, Consistency, Isolation and Durability)
  147. 147. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 147 Atomicidade: Consistência: o conjunto de operações que constituem uma transacção formam um grupo indivisível (atómico), no sentido em que ou todas elas são executadas com sucesso ou nenhuma é executada. uma transacção, se envolver actualização de dados, deve transportar a base de dados de um estado de integridade para outro estado também de integridade. Conceito de transação
  148. 148. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 148 Conceito de transação Isolamento: Durabilidade: apesar de as transacções executarem concorrentemente, o sistema deve dar a cada transacção a ilusão de que é a única a executar no sistema – executa isoladamente das outras o sistema deve assegurar que todos os efeitos provocados por uma transacção bem sucedida se tornam persistentes na base de dados e visíveis para as outras transacções
  149. 149. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 149 Requisitos fundamentais de um SGBD Segurança: Integridade: O objectivo das medidas de segurança dos SGBDs é proteger os dados armazenados de acessos não autorizados, garantindo que apenas os utilizadores autorizados acedem ao sistema, de acordo com os seus privilégios – através de perfis ou contas. Por definição, uma base de dados está num estado de integridade se contém apenas dados válidos, isto é, que não contradizem a realidade que estão a representar, antes a reflectem correctamente.
  150. 150. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 150 Requisitos fundamentais de um SGBD Controlo da concorrência: Recuperação/tolerância a falhas: Um dos pressupostos fundamentais dos SGBDs é a partilha dos dados armazenados pelo nível aplicacional. O controlo da concorrência relaciona-se com a coordenação dessa partilha por várias aplicações e/ou utilizadores. A unidade base do controlo da concorrência é a . É a actividade que tem por objectivo o restaurar da base de dados, após a ocorrência de uma qualquer falha, para um estado de integridade garantido. Mecanismos de recuperação: e . transacção backups transaction logs
  151. 151. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 151 BASES DE DADOS: Como chegar a um boa BD Modelo Conceptual de Dados Modelo de Base de Dados Modelo Físico de Base de Dados Base de Dados Problema Real EX: Oracle, mySQL, MSSQL EX: hierárquico rede, relacional EX: Diagrama E-R
  152. 152. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 152 BASES DE DADOS: Software muito útil brModelo: MySQL Workbench: MySQL: Pequeno executável de 500KB para desenhar Diagramas E-R ‘’A’’ ferramenta para Bases de Dados. Faz tudo! Diagramas, Modelos Relacionais, gera códigos para criar a BD, etc... O servidor de Base de Dados. Está incluído no vosso XAMPP (localhost) e nas contas de alojamento caso tenham comprado domínios. http://cesae.afonsogomes.com/brModelo.exe http://cesae.afonsogomes.com/mysql-workbench.msi (WIN) http://cesae.afonsogomes.com/mysql-workbench.dmg (MAC)
  153. 153. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 153 Modelo Conceptual de dados Diagrama E-R (Entidade-Relacionamento) - Proposto por Peter Chen em 1976 - Devido à sua notação simples e poderosa, depressa se tornou numa abordagem quase universal para a modelação de dados. Curiosamente, ainda hoje não existe uma notação E-R normalizada. - Como proposto originalmente, os elementos básicos de um diagrama E-R são as , os e os .entidades relacionamentos atributos
  154. 154. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 154 Diagrama E-R: Entidades Uma representa um conjunto de objectos (concreto ou abstrato) do mundo real que possuem características comuns. As representam uma classe de objectos do mundo real Os objectos em si são as instâncias (ocorrências) entidade entidades . Pessoa Ana Luísa Isabel Cristiana Cidade Penafiel Porto Gaia
  155. 155. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 155 Diagrama E-R: Relacionamentos Um relacionamento representa uma associação entre entidades. Pessoa Ana Luísa Isabel Cristiana Cidade Penafiel Porto Gaia Residência
  156. 156. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 156 Diagrama E-R: Cardinalidade de um Relacionamento Cardinalidade máxima (1 ou N) representa a quantidade máxima de ocorrências de uma entidade que pode estar associada a uma mesma ocorrência de outra entidade. Equipa JogadorTem 1 equipa tem N jogadores Cada jogador pode estar em apenas uma equipa 1 N
  157. 157. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 157 Diagrama E-R: Cardinalidade de um Relacionamento Quanto à , os relacionamentos podem ser do tipo: 1:1 (Um para um) 1:N (Um para muitos) N:N (Muitos para Muitos) Cardinalidade máxima Equipa JogadorTem 1 equipa tem N jogadores Cada jogador pode estar em apenas uma equipa 1 N
  158. 158. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 158 Diagrama E-R: Cardinalidade de um Relacionamento Livro PessoaAutoria 1 livro obrigatoriamente tem pelo menos 1 autor 1 pessoa pode não ser autor de 1 livro 0 1 Cardinalidade Mínima (0 ou 1) indica se a participação de todas as ocorrências de uma entidade num determinado relacionamento é obrigatória ou opcional.
  159. 159. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 159 Diagrama E-R: Atributos Piloto Corrida A cada entidade (ou relacionamento) podem estar associados um ou mais atributos que representam as suas propriedades elementares. Nome Idade Classificação KmsNome Circuito Num
  160. 160. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 160 Diagrama E-R: Atributos identificadores Corrida Um identificador é um atributo que determina inequivocamente uma entidade. Toda a entidade deve possuir um e apenas um identificador. Nome Classificação Cidadão NumBI Ano
  161. 161. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 161 Diagrama E-R: Tipos de Atributos Atributo Identificador Já vimos o que faz! Num Idade Atributo Derivado Pode ser obtido de outro atributo Atributo Composto Porta Rua Cidade Cod Postal Morada
  162. 162. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 162 Modelo Conceptual (Diagrama E-R): EXERCÍCIO Considere que se pretende criar uma BD para gerir casos de investigação policial. Numa investigação policial existe um crime, caracterizado por um identificador único, a data e local da ocorrência e uma pequena descrição do sucedido. Um crime é supostamente cometido por um ou mais suspeitos, caracterizados por um identificador, um nome, uma morada completa, um contacto e um número de um documento de identificação. Um crime está também associado a um conjunto de provas, que são recolhidas por um investigador criminal numa determinada data e local. Cada prova é caracterizada por um identificador, um nome e uma pequena descrição. Por seu lado, o investigador criminal é identificado por um número de identificação, o seu nome e o respectivo contacto.
  163. 163. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 163 Modelo Conceptual (Diagrama E-R): EXERCÍCIO Considere que se pretende criar uma BD para gerir casos de investigação policial. Numa investigação policial existe um , caracterizado por um , a e e uma do sucedido. Um crime é supostamente um ou mais s, caracterizados por um , um , uma , um e um . Um crime está também um conjunto de s, que são um investigador criminal numa determinada e . Cada prova é caracterizada por um , um e uma pequena . Por seu lado, o é identificado por um , o seu e o . crime suspeito prova investigador criminal identificador único data local da ocorrência pequena descrição identificador nome morada completa contacto número de um documento de identificação data local identificador nome descrição número de identificação nome respectivo contacto cometido por recolhidas por associado a
  164. 164. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 164 Modelo Conceptual (Diagrama E-R): EXERCÍCIO
  165. 165. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 165 Modelo Conceptual (Diagrama E-R): EXERCÍCIO 2 O exercício 2 tem muito texto e não cabe neste slide: http://cesae.afonsogomes.com/bdconceptual-ex2.txt Desenhe o diagrama conceptual para a base de dados do sistema de gestão de reparações em estações de extracção de petróleo. Abram este ficheiro: A pergunta:
  166. 166. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 166 Modelo Conceptual (Diagrama E-R): EXERCÍCIO 2
  167. 167. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 167 Modelo de Base de Dados: Modelo Relacional O Modelo Relacional tem a sua base num ramo da matemática que é, simultaneamente, simples e poderosa – a . Artigo com os fundamentos teóricos do Modelo Relacional publicado a 1970 por Edgar Cordd da IBM. Alguns dos SGDB relacionais mais representativos são a , e (ambos da Microsoft), e (da IBM) e o (código livre! Mas agora detida pela Oracle depois desta ter comprado a SUN MicroSystems. teoria dos conjuntos Oracle MSSQL DB2 InformixMS Access mySQL
  168. 168. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 168 Modelo Relacional: Tabelas A é a estrutura fundamental do modelo relacional. Uma relação é uma estrutura com um determinado esquema e zero ou mais instâncias. O esquema de uma relação é constituído por um ou mais (também designados por ). Cada atributo terá associado um tipo de dados de acordo com a informação que irá armazenar. A cada instância do esquema de uma relação designa-se por . tabela colunas linha atributos
  169. 169. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 169 Modelo Relacional: Tabelas Atributos (ou Colunas) Cod_formando Nome Sexo 1001 Francisco Telles M 1002 Felismino Felizardo M 1003 Ana Magalhães F Linhas TABELA FORMANDO Formando(Cod_formando, Nome, Sexo)
  170. 170. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 170 Modelo Relacional: Tipos de Chaves Superchave: Chave Candidata: Chave Primária: Chave Estrangeira: associação de um ou mais atributos que, em conjunto, identificam univocamente cada uma das linhas. Nota: no limite, a associação de todos os atributos de uma relação forma uma superchave. subconjunto dos atributos de uma superchave que, sendo ainda superchave, não pode ser reduzido sem perder esse estatuto chave seleccionada entre as várias chaves candidatas para, efectivamente, identificar cada linha. atributo ou conjunto de atributos de uma relação, que é chave primária noutra relação
  171. 171. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 171 Modelo Relacional: Tipos de Chaves Cod_formando Nome Sexo Cod_curso 1001 Felizardo Felicidade M 15 1002 Felismino Felizardo M 16 1003 Felisberto Felismino F 15 Formando A existência de uma chave estrangeira numa tabela prende-se com a necessidade de manter a interligação entre essa tabela e a tabela onde esse conjunto de atributos é chave primária. Cod_curso Nome 15 Web Design 16 Multimedia Curso
  172. 172. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 172 Modelo Relacional: Restrições de Integridade Implícitas Integridade de Domínio: Integridade da Entidade: Integridade Referencial: O valor de um atributo deve obedecer ao tipo de dados e às restrições de valores que lhe estão admitidos. Cada linha de uma tabela deve poder ser identificada inequivocamente. Isto quer dizer que cada tabela deverá possuir na sua definição uma chave primária. A existência de uma chave primária garante que o atributo ou os atributos que a constituem não podem ser nulos, nem podem ser repetidos. O valor dos atributos que constituem a chave estrangeira de uma tabela deve estar também presente na chave primária da tabela referenciada.
  173. 173. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 173 Mapeamento Diagrama E-R para o Modelo Relacional Chega a uma altura do desenvolvimento de Base de Dados em que temos os nossos diagramas E-R feitos e precisamos de converte-los para o Modelo Relacional. Vamos ver alguns casos de como fazer isso 1 N Ensina Nome Ndoc Tel Docente Disciplina PreReq Disc
  174. 174. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 174 Relacionamento 1:1 CASO 1: Participação obrigatória das duas entidades. Todos os docentes têm de leccionar um só disciplina. Cada disciplina tem de ser assegurada por um docente Docente 1 Ndoc Nome Tel Disc Prereq 101 Afonso 12345 Amat2 Amat1 125 Felismino 54321 Inf1 Nenhum É apenas necessária 1 entidade. A chave primária pode ser a chave primária de qualquer entidade Disciplina 1 Ensina Docente (Ndoc, Nome, Tel, Disc, Prereq) P1 P2 P3 D3 D1 D2
  175. 175. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 175 Relacionamento 1:1 CASO 2: Participação obrigatória de apenas uma entidade. Todos os docentes têm de leccionar uma só disciplina. Docente 1 Ndoc Nome Tel Disc Prereq 101 Afonso 12345 Amat2 Amat1 ? ? ? Inf1 Nenhum Necessária 2 tabelas. Cada com a sua chave primária. Chave primária Disc é chave estrangeira na tabela Docente Disciplina 1 Ensina Docente (Ndoc, Nome, Tel, Disc) Ndoc Nome Tel Disc 101 Afonso 12345 Amat2 Disc Prereq Amat2 Amat1 Inf1 Nenhum Disciplina (Disc, Prereq) P1 P2 P3 D3 D1 D2 D4
  176. 176. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 176 Relacionamento 1:N CASO 3 Necessária 2 tabelas. Cada com a sua chave primária. Chave primária do lado 1 (Ndoc) tem de ser usada como atributo na entidade do lado N Docente (Ndoc, Nome, Tel) Ndoc Nome Tel 101 Afonso 12345 125 Felismino 54321 Disc Prereq Ndoc Amat2 Amat1 101 PHP Av PHP 101 Disciplina (Disc, Prereq, Ndoc)
  177. 177. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 177 Relacionamento 1:N CASO 3: Participação obrigatória do lado N Os docentes podem leccionar várias disciplinas Cada disciplina tem de ser assegurada por um só docente Docente 1 Disciplina N Ensina Ndoc Nome Tel Disc Prereq 101 Afonso 12345 Amat2 Amat1 101 Afonso 12345 PHP Av. PHP 125 Felismino 54321 ? ? P1 P2 P3 D3 D1 D2 D4
  178. 178. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 178 Relacionamento 1:N CASO 4: Participação não obrigatória nem do lado 1 nem do lado N. Um docente pode estar dispensado do serviço. Uma disciplina pode não ter inscritos suficientes para ser leccionada nesse ano. Docente 1 Disciplina N Ensina Ndoc Nome Tel Disc Prereq 101 Afonso 12345 Amat2 Amat1 101 Afonso 12345 PHP Av. PHP 125 Felismino 54321 ? ? ? ? ? CSS HTML P1 P2 P3 D3 D1 D2 D4
  179. 179. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 179 Relacionamento 1:N CASO 4 Necessárias 3 tabelas. As tabelas principais, cada com a sua chave primária. A tabela do relacionamento tem como atributos as chaves primárias de cada uma das outras tabelas. Docente (Ndoc, Nome, Tel) Ndoc Nome Tel 101 Afonso 12345 125 Felismino 54321 Disc Prereq Amat2 Amat1 PHP Av PHP CSS HTML Disciplina (Disc, Prereq) Disc Ndoc Amat2 101 PHP Av 101 Ensina (Disc, Ndoc)
  180. 180. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 180 Relacionamento N:N CASO 5: Participação não obrigatória nem do lado 1 nem do lado N. Um docente pode ensinar várias disciplinas. Uma disciplina pode ser ensinada por vários docentes Docente 1 Disciplina N Ensina Ndoc Nome Tel Disc Prereq 101 Afonso 12345 Amat2 Amat1 101 Afonso 12345 PHP Av. PHP 125 Felismino 54321 ? ? ? ? ? CSS HTML P1 P2 P3 D3 D1 D2 D4 D5 P4 A solução é igual ao CASO 4
  181. 181. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS 181 Relacionamento TERNÁRIO N:N:N CASO 6: Nem tudo são sempre relações binárias! N Aluno OrientadorInscrito Seminário N N Necessárias 4 tabelas. As tabelas principais, cada com a sua chave primária. A tabela do relacionamento tem como atributos as chaves primárias de cada uma das outras tabelas. O modelo final seria: Aluno (Id_aluno, ...) Orientador (Id_orient, ...) Seminario (Id_sem, ...) Inscrição (Id_aluno,Id_orient,Id_sem)
  182. 182. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO A normalização é o processo sistemático de remover dados redundantes de tabelas, como vista a melhorar armazenamento, eficiência, integridade de dados, e escalabilidade. No modelo relacional, existem métodos para quantificar o quão eficiente é uma BD. Estes estados são chamados Forma Normais (FN) Este processo de normalização pelas várias fases FN normalmente envolve dividir uma tabela em múltiplas tabelas 182
  183. 183. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO Edgar Codd, inicialmente definiu as 3 primeiras FNs Agora há também a 4FN e a 5FN que são ainda mais trabalhadas mas a 3FN é considerada suficiene para a maioria das aplicações. Quando uma BD atinge a 3FN também estão na FN Boyce-Codd (BCFN) 183 mais Redundância menos Relações menos Redundância mais Relações Ponto de Equilibrio 1FN 2FN 3FN BoyceCodd FN 5FN 6FN
  184. 184. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO Uma relação diz-se na quando: - Não contém atributos multivalor e não contém grupos repetitivos Uma relação diz-se na quando: - Está na Primeira Forma Normal (1FN); - Todos os atributos não chave dependem funcionalmente da totalidade da chave. Uma relação diz-se na quando: - Está na Segunda Forma Normal (2FN); - Todos os atributos não chave não dependem funcionalmente uns dos outros. Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN) 184 1FN 2FN 3FN BC-FN 5FN 6FN
  185. 185. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO O que são dependências funcionais? Existe uma dependência funcional X -> Y entre dois conjuntos de atributos X e Y, se uma instância de valores de X determina ou identifica univocamente uma instância de valores dos atributos de Y Dependência Funcional: 185 1FN 2FN 3FN BC-FN 5FN 6FN
  186. 186. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO Consideremos esta tabela: 186 1FN 2FN 3FN BC-FN 5FN 6FN Esta tabela não é muito eficiente com o armazenamento, o design dela não protege a integridade de dados e não tem uma boa escalabilidade. Temos dois campos de autor. E o campo de Assunto contém mais de um dado. Com mais de um dado num campo seria muito difícil pesquisar todos os livros de um determinado assunto. 2 violações da 1FN!! Título Autor1 Autor2 ISBN Assunto Pgs Editor DB System Concepts Abraham Silberschatz Henry F. Korth 0072958863 MySQL, PCs 1168 McGraw-Hill OS System concepts Abraham Silberschatz Henry F. Korth 0471694665 Pcs 944 McGraw-Hill
  187. 187. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO A mesma tabela mas ... na !PRIMEIRA FORMA NORMAL 187 Temos agora 2 linhas para cada livro (para além de) Uma solução para o 1º problema é separar as tabelas... estarmos a violar a 2FN. Título Autor ISBN Assunto Pgs Editor DB System Concepts Abraham Silberschatz 0072958863 MySQL 1168 McGraw-Hill DB System Concepts Henry F. Korth 0072958863 PCs 1168 McGraw-Hill OS System concepts Abraham Silberschatz 0471694665 Pcs 944 McGraw-Hill OS System concepts Henry F. Korth 0471694665 Pcs 944 McGraw-Hill
  188. 188. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO As nossas tabelas separadas... 188 Cada tabela tem uma Primary Key, usadas para juntar tabelas quando pedirmos os dados. Uma Primary Key é também um index o que ajuda a acelerar este processo. Agora temos de definir tabelas de relação! Título ISBN Pgs Editor DB System Concepts 0072958863 1168 McGraw-Hill OS System concepts 0471694665 944 McGraw-Hill ID_autor Pnome Unome 1 Abraham Silberschatz 2 Henry F. Korth ID_assunto Assunto 1 MySQL 2 Pcs
  189. 189. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO Tabelas de relações... nada mais simples 189 Enquanto a 1FN lida com redundância de dados em filas a 2FN lida com redundância de dados em colunas. Como vimos antes, as FN são progressivas. para atingir a 2FN precisamos de ter atingido a 1FN o que já fizemos. Vamos ver a Tabela Livro para o exemplo da 2FN ISBN Id_assunto 0072958863 1 0072958863 2 0471694665 2 LivroAssunto ISBN Id_autor 0072958863 1 0072958863 2 0471694665 1 0471694665 2 LivroAutor
  190. 190. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO Passagem para a 2FN 190 E pronto ... já está na 2FN Aqui temos uma relação 1:N entre tabelas Livro e Editor. Quando temos relação 1:N, pomos a chave estrangeira na tabela Livro a apontar para a chave primária da tabela Editor. E para a 3FN? Todos os atributos não chave dependem funcionalmente ou não uns dos outros? ID_editor Editor 1 McGraw-Hill Editor Título ISBN Pgs Editor DB System Concepts 0072958863 1168 1 OS System concepts 0471694665 944 1 Livro
  191. 191. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS NORMALIZAÇÃO 191 E pronto ... já está na 3FN Isto porque já estava na 2FN e todos os atributos não-chace da tabela Livro não dependem funcionalmente uns dos outros. (ISBN, Título, Pgs) (Id_editor, Editor) (Id_autor, Pnome, Unome) (Id_assunto, Assunto) (ISBN, Id_editor) (ISBN, Id_assunto) (ISBN, Id_autor) O modelo final: Livro Editor Autor Assunto LivroEditor LivroAssunto LivroAutor Id_editor Editor 1 McGraw-Hill Editor Título ISBN Pgs DB System Concepts 0072958863 1168 OS System concepts 0471694665 944 Livro ISBN Id_editor 0072958863 1 0471694665 1 LivroEditor Passagem para a 3FN
  192. 192. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS SQL: Como linguagem de definição de Dados A SQL, enquanto Linguagem de Definição de Dados, disponibiliza um conjunto de comandos para a criação (CREATE), alteração (ALTER) e remoção (DROP) de tabelas e outras estruturas. CREATE DATABASE nome_da_base_de_dados Comando CREATE DATABASE permite criar uma BD. Comando DROP DATABASE permite remover uma determinada BD, apagando todas as tabelas e, consequentemente, todos os dados aSQL DROP DATABASE nome_da_base_de_dados 192 aSQL
  193. 193. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS SQL: Comando CREATE TABLE O comando CREATE TABLE permite criar uma tabela. aSQL CREATE TABLE nome_tabela( coluna1 tipo, coluna2 tipo, ... ..., colunan tipo, Sintaxe Básica 193 aSQL CREATE TABLE Professor( id_prof INT nome VARCHAR(50), data_nasc DATETIME, salario FLOAT) ,PRIMARY KEY Exemplo
  194. 194. Qualquer coisa: eu@afonsogomes.com Dúvidas? Pergunte. Agora! PROFISSIONAL EM WEBDESIGN b PHP e mySQLCENTRO DE SERVIÇOS EAPOIO ÀS EMPRESAS SQL: Colunas - Valores por defeito 194 Na criação de uma tabela por defeito as colunas podem assumir valores nulos. É possível especificar se admite ou não através da cláusula NULL ou NOT NULL É também possível associar um outro valor por defeito através da cláusula DEFAULT aSQL CREATE TABLE Professor( id_prof INT NOT NULL, nome VARCHAR(50), data_nasc DATETIME NULL, salario FLOAT )DEFAULT 1000

×