• Nenhum resultado encontrado

PHP blocos construtivos arrays instruções condicionais ciclos redireccionamento sessões

N/A
N/A
Protected

Academic year: 2021

Share "PHP blocos construtivos arrays instruções condicionais ciclos redireccionamento sessões"

Copied!
25
0
0

Texto

(1)

Bases de Dados

Introdução à linguagem PHP

Tópicos

ƒ

PHP

• blocos construtivos

• arrays

• instruções condicionais

• ciclos

• redireccionamento

• sessões

ƒ

PHP and Postgres

• interacção com o Postgres

• utilização de formulários HTML

(2)

Introdução ao PHP

ƒ

PHP: PHP Hypertext Preprocessor

• linguagem de server-side scripting

• concebida para geração dinâmica de páginas Web

• corre em muitas plataformas

• integrada com vários servidores Web

• suporte para muitos SGBDs

• possui um vasto conjunto de extensões

3 IST ▪ DEI ▪ Bases de Dados

• é software livre

Arquitectura

Browser Browser 1 1 Servidor Web Servidor Web PHPPHP SGBDSGBD pedido HTTP HTML extensão *.php ficheiro *.php código PHP queries SQL HTML dados 2 2 3 3 4 4 5 5 6 6 7 7 8 8 Sistema de ficheiros Sistema de ficheiros 4 4

(3)

Uma página em PHP

variáveis

HTML

HTML

PHP

PHP

HTML

HTML

SGBD SGBD

HTML

HTML

HTML

HTML

HTML

HTML

5 IST ▪ DEI ▪ Bases de Dados

Servidor Cliente

<html>

<head>

"Hello World" em PHP

<title>PHP Test</title>

</head>

<body>

<?php echo('<p>Hello World!</p>'); ?>

</body>

</html>

Demo: helloworld.php

(4)

Variáveis

ƒ Não é preciso declarar variáveis, simplesmente atribuir valor $age = 12; $price = 2 55; $price = 2.55; $number = -2; $name = "Jones"; ƒ Os nomes de variáveis • começam com um $

• podem incluir apenas letras, algarismos e underscore

7 IST ▪ DEI ▪ Bases de Dados

p p , g

• não podem começar por número

ƒ Para "destruir" variáveis usa-se: unset($age); ƒ PHP é case-sensitive!

Operadores

ƒ

Operadores aritméticos

• +, −, *, %

• exemplo: $result = (1 + 2) * 4 + 1;

ƒ

Operadores de comparação

• ==, >, <, >=, <=, != (ou <>)

• exemplos:

$weather == "raining"

$age < 13

ƒ

Operadores lógicos:

(5)

Instrução if

$message = ""; if ($country == "Germany" ) { $message = "Willkommen!";g }

elseif ($country == "France" ) { $message = "Bienvenue!"; } else { 9 IST ▪ DEI ▪ Bases de Dados

{ $message = "Welcome!"; } echo("$message<br>");

Strings

ƒ Uma string

$string = 'Hello World!';

ƒ Caracteres especiais (" e ')p ( )

$string = 'It is Tom\'s house';

ƒ Concatenação de strings $string1 = 'Hello'; $string2 = 'World!';

$stringall = $string1 . ' ' . $string2;

ƒ Formatação de strings $price = 25;

(6)

Aspas e plicas

ƒ

Texto entre plicas não é processado

$age = 12;

echo('The age is $age');

h

i

$

The age is $age

ƒ

Texto entre aspas é processado

$age = 12;

echo("The age is $age");

The age is 12

11 IST ▪ DEI ▪ Bases de Dados

ƒ

Caracteres especiais

• \n, \t, ...

Data e hora

ƒ

Data e hora actual

$today = time();

(7)

Data e hora

ƒ

Formatar uma data

$cdate = date("d/m/y", $today);

$ctime = date("G:i:s", $today);

13 IST ▪ DEI ▪ Bases de Dados

http://www.php.net/manual/en/

Data e hora

ƒ

Conversão de strings para datas

$prazo = strtotime("January 15 2003");

(8)

Operações com datas

ƒ

Operações aritméticas com datas

$timeSpan = $today - $importantDate;

• devolve o número de segundos entre as 2 datas

ƒ

Conversão de strings aceita muitas variantes

$importantDate = strtotime("tomorrow");

$importantDate = strtotime("now + 24 hours"); $importantDate = strtotime("last saturday"); $importantDate = strtotime("8pm + 3 days");

15 IST ▪ DEI ▪ Bases de Dados

p p y

$importantDate = strtotime("2 weeks ago"); $importantDate = strtotime("this 4am"); ...

Outros elementos úteis

ƒ

Mais operadores aritméticos

$counter += 2;

$

3

$counter -= 3;

$counter *= 2;

$counter /= 3;

ƒ

Sair do script

exit("The program is exiting");

die("The program is dying");

(9)

Funções

ƒ

Exemplo

• adição de 2 números (argumentos opcionais)

function addnumbers($num1 = 1, $num2 = 1) {

$total = $num1 + $num2; return $total;

}

17 IST ▪ DEI ▪ Bases de Dados

Arrays

ƒ Array simples

$animais[1] = "gato"; $animais[2] = "tigre"; $animais[4] = "elefante"; $animais = array("gato","tigre","elefante"); (inicializa elementos [0], [1] e [2])

(10)

Arrays

ƒ Array associativos

$airlines['BA'] = "British Airways"; $airlines['LH'] = "Lufthansa";

$airlines['AF'] = "Air France";

$airlines = array("BA" => "British Airways", "LH" => "Lufthansa", "AF" => "Air France");

19 IST ▪ DEI ▪ Bases de Dados

Ordenação de arrays

ƒ

Ordenação de arrays simples

sort($pets);

ƒ

Ordenação de arrays associativos

asort($airlines);

ƒ

Outros métodos de ordenação

• rsort, arsort (ordenação inversa)

• ksort, krsort (ordenação por chave)

(11)

Iterar por um array

ƒ

Os arrays podem comportar-se como iteradores

reset($airlines);

$

l

($ i li

)

$value = current($airlines);

echo("$value<br>");

$value = next($airlines);

echo("$value<br>");

$value = next($airlines);

echo("$value<br>");

21 IST ▪ DEI ▪ Bases de Dados

ƒ

Outras funções:

• prev(), end(), sizeof()

Iterar por um array com foreach

ƒ

Também é possível utilizar o ciclo foreach

$airlines = array("BA" => "British Airways", "LH" => "Lufthansa", "AF" => "Air France"); ksort ($airlines);

foreach($airlines as $symbol => $name) {

echo("$name ($symbol)<br>"); }

(12)

Arrays multidimensionais

ƒ

Como criar um array multidimensional

$ d tP i [' l thi '][' hi t'] 20 00 $productPrices['clothing']['shirt'] = 20.00; $productPrices['clothing']['pants'] = 22.50; $productPrices['linens']['blanket'] = 25.00; $productPrices['linens']['bedspread'] = 50.00; $productPrices['furniture']['lamp'] = 44.00; $productPrices['furniture']['rug'] = 75.00; 23 IST ▪ DEI ▪ Bases de Dados

ƒ

Como usar um array multidimensional

$shirtPrice = $productPrices['clothing']['shirt'];

Arrays multidimensionais

<?php

echo("<table border=1>");

foreach($productPrices as $category => $prices) {

f h($ i $ d t > $ i ) foreach($prices as $product => $price) {

echo("<tr>");

echo("<td>$category</td>"); echo("<td>$product</td>");

$f_price = sprintf("%01.2f", $price); echo("<td>$f_price</td>"); echo("</tr>");( / ); } } echo("</table>"); ?> Demo: multidim.php

(13)

Ciclo for

for ($i = 0; $i < sizeof($customerNames); $i++) {

echo("$customerNames[$i]<br>"); echo( $customerNames[$i]<br> ); }

for ($i = 0, $j = 1; $t <= 4; $i++, $j++) {

$t = $i + $j; echo("$t<br>");

25 IST ▪ DEI ▪ Bases de Dados

( $ ) }

Ciclo while

while($testvar != "yes") { if ($customers[$k] == "Smith") { { $testvar = "yes"; echo("Smith<br>"); } else {

echo("$customers[$k], not Smith<br>");( $ [$ ], ) }

$k++; }

(14)

Ciclo do…while

do { if ($customers[$k] == "Smith") { $t t " " $testvar = "yes"; echo("Smith<br>"); } else {

echo("$customers[$k], not Smith<br>"); }

$k++;

27 IST ▪ DEI ▪ Bases de Dados

$ ;

} while($testvar != "yes")

• também é possível utilizar break e continue

Bases de Dados

(15)

Formulários HTML

ƒ

Exemplo

<html> <body>

<form action="submit.php" method="post">

<p>Your name: <input type="text" name="name"/></p> <p>Your age: <input type="text" name="age"/></p> <p><input type="submit"/></p> </form> 29 </body> </html> Demo: form.php

Processamento de formulários

ƒ Um formulário HTML

<form action="submit1.php" method="post">

<p>Your name: <input type="text" name="name"/></p> <p>Your age: <input type="text" name="age"/></p> <p><input type="submit"/></p>

</form>

ƒ O script submit.php terá acesso aos campos do formulário através dos arrays

• $_POST – se o método utilizado for POST • $_GET – se o método utilizado for GET

$ Q S iá i d $ OS $ G $ COO • $_REQUEST – variáveis de $_POST, $_GET e $_COOKIE ƒ Exemplo: $name = $_REQUEST["name"];

(16)

Processamento de formulários

ƒ

Exemplo

<html> <body> <p> O nome é: <?php echo($_REQUEST["name"]); ?> </p> <p> A idade é: <?php echo($_REQUEST["age"]); ?> </p> </body> </html> 31

Processamento de formulários

ƒ

Outro exemplo

<html> <head><title>Customer Info</title></head> <head><title>Customer Info</title></head> <body> <?php

foreach ($_REQUEST as $field => $value) {

echo("$field = $value<br>"); }

?> </body>

(17)

Utilização de outros controlos

ƒ Radio buttons

<input name="curso" type="radio" value="diurno"/>Frequentar

di b

curso diurno<br>

<input name="curso" type="radio" value="nocturno"/>Frequentar curso nocturno<br>

ƒ Checkboxes

<input type="checkbox" name="ingrediente1" value="queijo"> Queijo<br>

33 IST ▪ DEI ▪ Bases de Dados

<input type="checkbox" name="ingrediente2" value="fiambre"> Fiambre<br>

<input type="checkbox" name="ingrediente3" value="tomate"> Tomate<br>

Demo: form2.php

Bases de Dados

(18)

Sessões em PHP

ƒ

PHP implementa mecanismos de sessões

ƒ

Quando uma sessão é iniciada

• se a sessão já existe usa essa, senão cria nova

• passa o identificador de sessão em cada página

▫ através de cookies, no URL, ou variáveis POST escondidas (transparente para o utilizador)

• armazena variáveis no array $ SESSION

35 IST ▪ DEI ▪ Bases de Dados

• armazena variáveis no array $_SESSION

Utilização de sessões

ƒ

Iniciar uma sessão

• sempre antes de qualquer outro output

session_start();

ƒ

Criar variáveis de sessão numa página:

$_SESSION['user'] = "João";

• e usá-las noutra:

echo($_SESSION['user']);

ƒ

Fechar a sessão

(19)

Exemplo de sessão – página 1

<?php session_start(); ?> <html> <body> <? h <?php

$_SESSION['session_var'] = "valor de sessão"; echo("Foi criada uma variável de sessão."); ?>

<form action="session2.php" method="POST">

<input type="hidden" name="form_var" value="valor de formulário">

<input type="submit" value="go to next page">

37 IST ▪ DEI ▪ Bases de Dados

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

Demo: session1.php

Exemplo de sessão – página 2

<?php session_start(); ?> <html> <b d > <body> <?php echo("session_var = {$_SESSION['session_var']}<br/>"); echo("form_var = {$_REQUEST['form_var']}<br/>"); ?> </body> </html> Demo: session2.php

(20)

Redireccionamento de páginas

ƒ

A função header() pode ser usada para

redireccionamento

• mas sempre antes de qualquer outro output !

• mas sempre antes de qualquer outro output !

if ($customer_age < 13) { header("Location: ToyCatalog.php"); } else 39 IST ▪ DEI ▪ Bases de Dados

{

header("Location: ElectronicsCatalog.php"); }

Bases de Dados

(21)

PHP e Postgres

1. Abrir a ligação e escolher a BD

$user = “istxxxxxx"; /* username sigma */ $host = “db.ist.utl.pt";

$port = 5432;

$password = “xxxxxxxx“; /* password psql_reset */

$dbname = $user; /* porquê? */

$connection = pg_connect("host=$host port=$port

41 IST ▪ DEI ▪ Bases de Dados

user=$user password=$password dbname=$dbname") or die(pg_last_error());

PHP e Postgres

2. Fazer uma consulta

$sql = "select * from customer";

(22)

PHP e Postgres

3. Determinar o número de colunas e de registos

devolvidos (opcional)

echo("No. columns: " . pg_num_fields($result) . "<br/>");

echo("No. records: " . pg_num_rows($result) . "<br/>");

43 IST ▪ DEI ▪ Bases de Dados

PHP e Postgres

4. Iterar pelos resultados

echo("<table>"); while($row_array = pg_fetch_assoc($result)) { echo("<tr>"); echo("<td>{$row_array['customer_name']}</td>"); echo("<td>{$row_array['customer_street']}</td>"); echo("<td>{$row_array['customer_city']}</td>"); echo("</tr>"); } echo("</table>");

(23)

PHP e Postgres

5. Fechar a ligação

pg_close($connection);

45 IST ▪ DEI ▪ Bases de Dados

Consultas e modificações à BD

$result = pg_query($query)

di ("C ld t t ") or die("Could not execute query.");

ƒ

Para perguntas que devolvem um resultado

• $result é um apontador para os dados

ƒ

Para perguntas que não devolvem um resultado

p g

q

• verdadeiro ou falso, conforme sucesso da operação

(24)

Acesso aos resultados – exemplo

<table border=1> <tr><td><b>Name</b></td><td><b>Street</b></td> <td><b>City</b></td></tr> <?php $ l " l t * f t "

$sql = "select * from customer";

$result = pg_query($sql) or die(pg_last_error());

echo("N. of results: " . pg_num_rows($result) . "<br/>"); echo("N. of columns: " . pg_num_fields($result) . "<br/>"); while($row_array = pg_fetch_assoc($result))

{

echo("<tr>");

echo("<td>{$row_array['customer_name']}</td>"); echo("<td>{$row_array['customer_street']}</td>"); echo("<td>{$row array['customer city']}</td>");

47 IST ▪ DEI ▪ Bases de Dados

echo( <td>{$row_array[ customer_city ]}</td> ); echo("</tr>";

} ?>

</table> Demo: customers.php

Limpeza de dados

ƒ

Formatação adequada dos dados (texto vs. HTML)

• strip_tags() – remove elementos HTML

$last_name = strip_tags("<p>Assunção</p>");

• htmlspecialchars() – converte caracteres

especiais para entidades HTML

especiais para entidades HTML

(25)

PHP e Postgres

ƒ

Documentação das funções utilizadas

• http://www.php.net/manual/en/book.pgsql.php

Referências

Documentos relacionados

A ilegalidade resultante da inobservância das disposições sobre a convocação de reuniões só se encontra sanada quando todos os membros do plenário do

O presente trabalho tem como objetivo analisar como as páginas dos técnicos Wanderley Luxemburgo e Mano Menezes no Twitter vem sendo usadas como fontes de informação pelo

A quinta, sexta, sétima e oitava análises destinaram-se a investigar as relações existentes entre os resultados nas dimensões de personalidade obtidos com o inventário de

Caraguatatuba (MPD106; MPD 107; MPD108; MPD109; MPD110) Material de referência: República Tcheca (KF447894) Inicialmente o objetivo deste estudo era fazer análise molecular do

Penalizações de faltas pessoais – Se a falta for cometida sobre um jogador que não está em pacto de lançamento, a falta será cobrada por forma de uma reposição de bola

Resultados: O grupo com maior tercil de VOP mostrou maiores médias de pressão arterial sistólica, pressão arterial diastólica, pressão arterial média, índice de massa

Uma das vantagens da polimerização in situ é que o processo de incorporação do polímero nas galerias da argila é iniciado com a difusão do monômero, ou mesmo na

Apesar dos estudos estarem mostrando que a iniciação sexual está ocorrendo mais cedo entre os jovens HSH, não foram encontrados estudos onde se questionou a associação