CONSTRUÇÃO DE PÁGINAS WEB III Prof. Antonio Miguel Faustini Zarth [email protected] 1 Construção de páginas web I Construção de páginas web II Construção de páginas web III Durante o curso... 2 • Caderno para anotações • Pen drive • Software de autoria para páginas (x)HTML • Notepad ++ • Editor de imagens • Navegadores • Internet Explorer • Firefox • Chrome • Kit Apache MySQL e PHP • xampp Recursos 3 • • • • • • • Construção dinâmica de páginas web. Construção dinâmica de menus de seleção. Manipulação de arquivos. Conexão com bancos de dados. Utilização de sessões e cookies. Geração de relatórios. Criação de uma aplicação web completa. Ementa 4 • Desenvolvido originalmente por Rasmus Lerdorf em 1994 • site do PHP: http://www.php.net • PHP 2.0 1995 • PHP 3.0 Junho/1998 • PHP 4.0 Maio/2000 • PHP 5.0 Julho/2007 • Versão atual: 5.5 PHP 5 • • • • • Código aberto Embutido no HTML Baseado no servidor Suporte a diversos Banco de Dados Portabilidade Características do PHP 6 • Scripts no lado do servidor (server-side) • Scripts de linha de comando • Aplicações Desktop Áreas que os scripts PHP são usados 7 1. 2. 3. 4. 5. 6. PHP é uma linguagem interpretada ou compilada? O que é uma linguagem interpretada e uma compilada? O que é um programa executável? PHP é executável? O seu código fonte PHP é executável? Quanto custa o PHP? Review... 8 9 • Linux • Unix like: Solaris, OpenBSD, MacOS X, ... • Microsoft Windows Sistemas operacionais 10 • Apache • IIS (Internet Information Service) Servidores HTTP 11 • Procedural • Orientada a Objetos Tipo de programação 12 • Gerar HTML • Geração de imagens • Arquivos PDF Funcionalidades do PHP 13 • • • • • • MySQL Oracle Interbase PostgresSQL Outros ... Suporte a banco de dados 14 • Todo trecho de programa PHP deve estar entre as tags <?php e ?>para que o servidor Web saiba que esse trecho trata-se de um código em PHP e que deve ser processado Exemplo: <?php echo "Hello, world !"; ?> Criação de scripts PHP 15 1. Crie um script PHP que receba uma temperatura em Celsius via GET e imprima na escala Fahrenheit: Fahrenheit = ((Celsius * 9)/5)+32 Review... 16 • Variáveis proveem uma maneira de atribuir um nome a uma área de memória que conterá um dado • Inicia por $ seguido de uma letra ou _ - é case sensitive, isto é, sensível ao caso (distinção entre letras maiúsculas e minúsculas) • Por exemplo, a variável $Cor é completamente diferente da variável $cor Variáveis 17 • De uma linha: // este é o comentário de uma linha # este é o comentário de uma linha • De mais de uma linha: delimitado por /* e */ Comentários 18 Não é necessário declarar uma variável antes de usá-la. Basta atribuir um valor inicial. A checagem de tipos é feita dinamicamente. Exemplo: $x=5; $x="policamp"; $x=3.14; • • • • • Inteiro Ponto flutuante String Array Objeto Checagem dinâmica de tipos Tipos de dados 19 • • • • $x = 4567; # inteiro $y = -127; # inteiro negativo $o = 0116; # inteiro em representação octal (base 8) $hex = 0x0F; # inteiro em representação hexadecimal (base 16) Inteiros (integer ou long) 20 • $PI=3.14; • $MOL=6.02e23; # uso da notação científica Ponto Flutuante (double ou float) 21 • Uma string é uma cadeia (sequência) de caracteres delimitadas pelos caracteres " ou ' Exemplos: "1", "Policamp", 'Campinas', 'Minas Gerais' • Strings podem ser concatenadas usando o operador '.' Exemplos: $paragrafo_html = "<p>" . $texto . "</p>"; Strings 22 • Podem ser delimitadas por aspas simples (literal) ou aspas duplas (onde há interpretação de varáveis e caracteres especiais). • Caracteres especiais: • • • • • • • \n (new line) \r (carriage return) \t (tab) \\ (barra invertida) \$ (cifrão) \' (aspa simple) \" (aspa dupla) Strings 23 • Expressa um valor lógico que pode ser verdadeiro (TRUE) ou falso (FALSE) • Exemplo: <?php $valida=true; if($valida) { print "Validado\n"; } ?> Booleano 24 • São estruturas de dados que podem armazenar múltiplos valores Exemplo: $cores= array('vermelho', 'verde', 'azul'); $cor = $cores[1]; // retorna "verde" (2º elemento do array) $cores[1]='amarelo'; // atribui novo valor (ao 2º elemento do array) Arrays 25 • Podem ser definidos como mapeamentos ou vetores indexados Exemplo: <?php $cores[0]="Red"; $cores[1]="Green"; $cores[2]="Blue"; ?> Arrays 26 • Ordenado baseado em número (começa no 0) (indexada numericamente) • Associativo formado por caracteres alfanuméricos (indexada por nome) Arrays - tipos de índices 27 // cria e inicializa um array (indexada numericamente) $cores = array("Red", "Green", "Blue"); ou // cria e inicializa um array usando índices (explicitamente) $cores = array(0=>'Red', 1=> "Green", 2=>"Blue"); ou // cria e inicializa um array usando índices (numéricos) $cores[]="Red"; $cores[]="Green"; $cores[]="Blue"; Arrays 28 São conjunto ordenados de chaves e valores, onde cada valor é acessado através de uma chave associada. Exemplo: $estados_e_capital = array ( 'SP' => 'São Paulo', 'MG' => 'Belo Horizonte', 'RJ' => 'Rio de Janeiro', 'ES' => 'Vitória' ); Arrays Associativos 29 <?php $cor['red']=0; $cor['green']=255; $cor['blue']=0; ?> ou <?php $cores=array('red'=>0, 'green'=>1, 'blue'=>2); ?> Arrays Associativos 30 • Usamos a função unset() para destruir todo o array. Arrays (3) 31 • array_pop($array) retira e retorna o último elemento do array • array_push ($array,$var) insere um ou mais elementos no fim de um array • array_shift ($array) retira e retorna o primeiro elemento de um array • array_unshift ($a,$val) insere um novo elemento no inicio de um array • array_rand ($array) retorna um ou mais elementos do array • array_reverse ($array) retorna um array com ordem inversa • array_keys ($array) retorna as chaves de um array • array_values ($array) retorna os valores de um array • sizeof () retorna o número de elementos do array • count () retorna a quantidade de elementos de um array Funções de array 32 São tipos "falso" que ajudam da legibilidade: • mixed: indica que o parâmetro pode aceitar múltiplos tipos mas não necessariamente todos os tipos. • number: indica que o parâmetro pode ser tanto integer ou float • callback Pseudo-Types 33 • Função each Retorna o par chave/valor corrente de um array e avança o seu cursor • Percorre os elemento de uma lista $chamada = array ( "aluno1" => "francisco", "alunos2" => "jose" ); while(list($chave,$valor)=each($chamada) { echo "<p>Chave=[$chave], Valor=[$valor]\n"; } Função each 34 • Cria variáveis como se fossem arrays • Assim como array(), não é exatamente uma função, e sim uma construção da própria linguagem. • list() é usada para criar uma lista de variáveis em apenas uma operação. • Exemplo: list($a,$b,$c)=array("a","b","c"); É uma forma de atribuição de vários valores ao mesmo tempo a diferentes variáveis Listas 35 Coerção é a conversão de um tipo em outro tipo diferente mediante operação realizada com tipos diferentes. Por exemplo: $a=1; $a = $a + "5"; Nesse exemplo a variável $a é numérica (integer) na primeira atribuição e string na segunda atribuição Transformação de Tipos por coerção 36 • Feita via typecast (como em linguagem C) • Exemplo: $a = 6; # a é um integer (6) $a = (float) 6; # é um float (6.0) Transformação explicita de tipos 37 Casts permitidos (int), (integer) Integer (real), (double), (float) Float (string) String (array) Array (objeto) objeto 38 Uma constante é um identificador (nome) para um único valor que não se altera durante a execução de um script) • Pré-definidas • Definidas pelo usuário Exemplo: define("MOL", 6.14e22); define("PI", 3.1415); echo MOL; echo PI; Constantes 39 <?php // Nomes de constantes válidos define("FOO", "alguma coisa"); define("FOO2", "alguma outra coisa"); define("FOO_BAR", "alguma coisa mais"); // Nomes de constantes inválidas define("2FOO", "alguma coisa"); // Isto é válido, // O PHP pode vir mágica // que danificará define("__FOO__", ?> mas deve ser evitado: a fornecer uma constante seu script "alguma coisa"); Constantes - Exemplo 40 <?php print __FILE__ ; # nome do arquivo echo "\n"; echo __LINE__; # nº da linha echo "\n"; echo __FUNCTION__; # nome da função echo "\n"; ?> Constantes "Mágicas" 41 • • • • • • • Aritméticos Atribuição Bit a bit Lógicos Comparação Expressão condicional Incremento e decremento Operadores 42 • • • • • + Adição - Subtração * Multiplicação / Divisão % Resto da divisão (módulo) Operadores Aritméticos 43 • • • • • • • = ($a=5); += ($a = $a + 5; $a+=5;) -= *= /= %= .= Operadores de Atribuição 44 • • • • • <<= >> &= |= ^= Operadores de Atribuição (2) 45 • • • • • & (and) – operação E | (or) – operação OU ^ (xor) – operação OU-exclusivo ~ (not) – operação NÃO << - deslocamento de bits a esquerda multiplicação por 2 • >> - deslocamento de bits a direita divisão por 2 Operadores Bit a Bit 46 • • • • • • and (e) or (ou) xor (ou-exclusivo) ! (negação) && (e) || (ou) Operadores Lógicos 47 • • • • • • == (igualdade) != (diferença) < (menor que) > (maior que) <= (menor ou igual a) >= (maior ou igual a) Operadores de Comparação (ou Condicionais) 48 (expressão) ? (expressão2) : (expressão3); Exemplo: $a=5; $a > 5 ? $b="1" : $b="0"; é equivalente a: if($a>5) $b="1"; else $b="0"; Operador Ternário (ou Condicional) 49 • -oper : troca o sinal do operando • ++ • -• ++$a : depois • $a++ : • --$a : • $a-- : pré-incremento (incrementa $a em um e retorna $a) pós-incremento pré-decremento pós-decremento Operadores Unários 50 - ! ~ ++ -* / % + - . << >> > < >= <= == != <> & ^ | && || ?: = += -= *= /= %= &= ~= <<= >>= ^= AND XOR OR Precedência de Operadores 51 • Blocos • Comandos condicionais • Comando de repetição Estruturas de Controle 52 • São sequência de comandos delimitados por abre e fecha chaves ({ e }) Blocos 53 • if (expressão) comando; • if(expressão) { comando1; ... comandoN; } Comando Condicional 54 • If (expressão) comando1; else comando2; Comando Condicional (2) 55 if(expressão1) { comando1; } elseif(expressão2) { comando2; } ... else{ comandoN; } Comando Condicional (3) 56 <?php $salario = 1000; $desconto = 0.10; // 10% $total = $salario - $salario*$desconto; if($total>900) { echo ""; } ?> Exemplo 57 switch (expressão) { case valor1: comando1; break; case valor2: comando2; break; } switch 58 <?php $i = 1; switch($i) { case 0: print "i break; case 1: print "i break; case 2: print "i break; default: print "i break; } ?> é igual a 0"; é igual a 1"; é igual a 2"; não é igual a 0, 1 ou 2"; Exemplo - switch 59 • • • • while do .. while for foreach Comandos de repetição (laços) 60 • while (expressão) { comando; } while 61 <?php $a = 1; while ($a < 5) { print $a; $a++; } ?> Exemplo – comando while 62 $a=0; do { echo "a=$a\n"; $a++; } while ($a<=10); do..while 63 <?php $acabou = false; do { print "loop ..."; $acabou=true; } while (!$acabou); ?> Exemplo – do .. while 64 for (expr1; expr2; expr3 ) { comando1 .. comandoN } for 65 Apresenta duas sintaxes: foreach ($nome_array as $elemento) { comandos } ou foreach ($nome_array as $chave => $valor) { comandos } foreach 66 <?php // define um array com cinco elementos $a = array(1,2,3,4,5); foreach ($a as $valor) { echo "valor=$valor<br>"; } ?> foreach (exemplo) 67 <?php $a = array ( "cod1" => 10, "cod2" => 20, "cod3" => 30, "cod4" => 40); foreach ($a as $chave => $valor) { echo "<p>chave=$chave, valor=$valor"; } ?> foreach (exemplo) 68 break: pode ser usado em laços do, for e while. O break "quebra" a execução e continua executando o próximo comando break [n]; // onde n indica o número de estruturas que deverão ser finalizadas Comandos break e continue 69 • continue: interrompe a execução e avalia novamente a condição de teste continue [n]; // onde n indica o número de níveis que deverão ser iniciados Comandos break e continue 70 <?php # break.php for($i=0; $i < 100; $i++) { if($i == 10) { break; } echo " $i "; } ?> Exemplo - break 71 <?php // exibe os números pares for($i=0; $i < 100; $i++) { if($i % 2) { continue; } echo " $i " . '<br>'; } ?> Exemplo - continue 72 1. O caso default é requerido nas instruções de seleção switch? R: Não 2. A instrução break é requerida no caso padrão de uma instrução de seleção switch? R: Sim 3. A expressão (x>y && a<b) é true se a expressão x>y for true ou a expressão a<b for true. Verdadeiro ou falso? R: falso Review... 73 1. Uma expressão contendo o operador || é true se qualquer um ou ambos operandos for true? R: Verdadeiro 2. Uma expressão contendo o operador xor é true se qualquer um ou ambos operandos for true? R: Falso Review... 74 Escreva uma instrução em PHP para: 1. Somar os números impares de 1 a 99 e exibir a soma. 2. Calcular o valor de X elevado a Y, sendo ambos fornecidos via GET. 3. Receber um número via GET, defini-lo como uma constante e informar textualmente se ele é primo. 4. Escreva um programa PHP que recebe 3 parâmetros via GET. O primeiro e o segundo são números. O terceiro é operador (multiplicar, somar, dividir, subtrair). Imprima o resultado. 5. Faça um formulário HTML 5 para o programa acima. Review... 75 • • • • Definição Argumentos Passagem de parâmetros (valor ou referência) Argumentos com valores pré-definidos Funções 76 function nome_da_função( [arg1, [arg2, ...,[argN]]] ) { comando1; ... comandoN; [ return valor_de_retorno ]; } Funções - Sintaxe 77 Uma função deve ser definida com a usando a sintaxe indicada abaixo: <?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Função Exemplo.\n"; return $retval; } ?> Funções definidas pelo usuário 78 A declaração return é opcional Qualquer tipo poderá ser retornado incluindo listas e objetos. Valores Retorno 79 <?php function quadrado($num) { return $num * $num; } echo quadrado(4); // saída '16'. ?> Exemplo do uso do return 80 <?php function numeros_pequenos() { return array (0, 1, 2); } list($zero,$um,$dois)=numeros_pequenos(); Exemplo: Retornando um array com múltiplos elementos ?> 81 • Existem dois tipos de passagem de parâmetros: • por valor (by value) • por referência (by reference) • O padrão é a passagem por valor. Passagem de parâmetros 82 <?php function incByValue($var, $valor) { $var += $valor; } function incByRef(&$var, $valor) { $var += $valor; } $a = 1; echo incByValue($a,2); // retorna a=1 echo "a=$a\n"; $a = 1; echo incByRef($a,2); // retorna a=3 echo "a=$a\n"; ?> Exemplo de passagem de parâmetros 83 <?php function incrementa($x, $valor=1) { $x += $valor; return $x; } $a = 5; echo "1. " . incrementa($a) . "<br>"; echo "2. " . incrementa($a,-4) . "<br>"; echo "3. " . incrementa($a,5) . "<br>"; Definição de valores padrões na chamada de funções ?> 84 • Variáveis estáticas (static) • mantém o valor que lhes foi atribuído na última execução. Usa o operador static. • Variáveis variáveis ($$) • Variáveis de ambiente Modificadores de variáveis 85 <?php function obtemProximo() { static $contador=0; return ++$contador; } echo obtemProximo(),"\n"; // retorna 1 echo obtemProximo(),"\n"; // retorna 2 echo obtemProximo(),"\n"; // retorna 3 ?> Exemplo: uso de variável estática 86 <?php phpinfo(); ?> Variáveis de Ambiente 87 • include caso o arquivo não seja encontrado, é retornado um warning e o processamento da página continua • require caso o arquivo não seja encontrado, é retornado um erro fatal • include_once se o arquivo já estiver sido incluso ele será ignorado • require_once Obs: • include e include_once retornam uma advertência (warning) no caso de erro. • require e require_once retornam um erro fatal em caso de erro. Inclusão de arquivos 88 • O comando include é reavaliado a cada chamada • A instrução require pode incluir apenas um arquivo (a função require não inclui arquivos dinamicamente) Include x Require 89 biblioteca.php <?php /* * função quadrado * retorna o quadrado de um número * */ function quadrado($num) { return $num * $num; } ?> Exemplo 90 teste_include.php <?php // carrega o arquivo com a função necessária include 'biblioteca.php'; // imprime o quadrado de 2 echo quadrado(2); ?> Exemplo 91 • string gettype(mixed var); • Possíveis valores de retorno: • • • • • • Integer Double String Array Object Unknown type Tipo de variável 92 93