Beruflich Dokumente
Kultur Dokumente
b PHP e mySQL
PROFISSIONAL EM WEBDESIGN
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
?
0155 - Bases de dados para Internet
(server-side)
Que raio de nome!
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
O QUE O PHP
- uma linguagem de programao comummente usada em servidores web
- Quer dizer PHP: HyperText PreProcessor
- Cdigo Aberto
- Cdigo embebido em pginas web
EMAIL
HTML
&
JS
Dvidas?
Pergunte. Agora!
PHP
Qualquer coisa:
eu@afonsogomes.com
SQL
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
www.php.net
Unanimemente, a melhor fonte de informao.z
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP: Fundamentais
PHP embebido dentro de pginas HTML com as tags:
<?php ... ?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP: Fundamentais
Todos os nossos documentos tero de estar dentro da pasta:
C:\xampp\htdocs
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
Ttulo da pgina
localhost/
10
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
<html>
PHP
index.php
<head>
<title>Ol Mundo</title>
</head>
<body>
<?php echo <p>Ol Mundo</p>; ?>
</body>
</html>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
11
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
<?php
phpinfo.php
PHP
phpinfo();
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
12
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
13
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Comentrios em PHP
// Isto um comentrio
# Isto outro comentrio
/* Isto tambm
um comentrio*/
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
14
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Mostrar dados
- Existem duas funes disponveis para mostrar dados:
print() e o echo()
Qualquer coisa:
eu@afonsogomes.com
15
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
<?php
echoprint.php
PHP
Mostrar dados
Qualquer coisa:
eu@afonsogomes.com
16
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Escapando Caracteres
- Alguns caracteres so considerados especiais
- Temos de escapar estes caracteres com o smbolo \
(a barra para trs ou backslash)
- Caracteres especiais sero flagueados quando aparecerem,
por exemplo uma aspa simples ou aspas duplas, e se estiver
escapado o PHP processa-os, seno interpreta-os como sendo
parte do cdigo e vai gerar erros...
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
17
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Escapando Caracteres
PHP
Um exemplo:
escaping.php
<?php
echo A minha amiga irlandesa;
echo Mary O\Bradley ;
echo disse \Ol Mundo\.;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
18
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS: O que so
Quando trabalhamos com PHP, quase sempre precisamos de
um stio onde guardar um valor (string, numero, booleano, etc)
para que mais tarde possamos usar este valor noutros stios
do nosso programa.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
19
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
20
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
VARIVEIS: Um exemplo
variaveis.php
<?php
$nome = Afonso;
$idade = 31;
echo O . $nome;
echo tem ;
echo $idade;
// Resultado: O Afonso tem 31
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
21
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
<?php
$nome = Afonso;
$idade = 31;
$idade = 22;
Qualquer coisa:
eu@afonsogomes.com
22
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
USO DE OU DE
Uma dvida recorrente o uso de aspa dupla ou aspa simples
- H uma diferena entre strings escritas com ou com
- Numa string com aspas duplas, qualquer varivel
expandida para o seus valor.
- Numa string com aspa simples, no h expanso da
varivel para o seu valor.
Qualquer coisa:
eu@afonsogomes.com
23
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
USO DE OU DE
aspasteste.php
<?php
$nome = Afonso;
$idade = 31;
echo O $nome tem $idade anos;
// Resultado: O Afonso tem 31 anos
echo O $nome tem $idade anos;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
24
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS: Em profundidade!
Agora que j vimos os conceitos globais de variveis e constantes,
vamos aprofundar um bocadinho mais nos diferentes tipos de
variveis:
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
25
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS: BOOLEANOS
Exprimem valores lgicos. TRUE (verdadeiro) ou FALSE (falso)
Podem ser escritos em minsculas ou maisculas
PHP
$b1 = true;
$b2 = false;
$b1 = TRUE;
$b2 = FALSE;
PHP
ORIGINA =>
$b3 = 5;
$b4 = TRUE;
Qualquer coisa:
eu@afonsogomes.com
26
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS: INTEIROS
PHP
$b = -1234;
Negativo
$c = 0x1A;
Hexadecimal
VARIVEIS: REAIS
PHP
Dvidas?
Pergunte. Agora!
$b = 1.2E3;
1200
Qualquer coisa:
eu@afonsogomes.com
$c = 7E-5;
0.000005
27
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS: STRINGS
PHP
$b = Afonso Gomes;
Afonso Gomes
PHP
Qualquer coisa:
eu@afonsogomes.com
28
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
// A
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
29
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES
Outra maneira de armazenar dados em vectores (Arrays)
Um vector pode ser criado utilizando a funo array() que usa,
como parmetro uma sequncia de pares chave => valor
separados por vrgula.
<?php
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
30
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES
No gostou como apareceram as coisas no browser quando
PHP
<?php
$e = array(1 => Valor1, 2 => Valor2, 3 => Valor3);
echo <pre>;
print_r( $e);
echo </pre>;
echo O segundo valor do vector : . $e[2];
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
d
31
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES
Reparamos que podemos ver o valor de uma chave do vector...
Mas tambm podemos apagar, acrescentar e at editar chaves .
<?php
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
32
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
VECTORES
<?php
$e = array(1 => Valor1, 2 => Valor2, 3 => Valor3);
print_r ( $e);
echo $e[2];
unset( $e[2] ) ; // Funo que apaga elemento de um vector
echo $e[3];
$e[4] = Que seca de sesso!;
$e[4] = Est a ser porreiro!;
print_r ( $e);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
33
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES
Tambm podemos criar vectores vazios e depois introduzir-lhe
<?php
PHP
elemento a elemento!
$a = 10;
$b = Afonso;
$e = array();
$e[1] = $a;
$e[2] = $b;
$e[3] = Um teste;
print_r($e) ;
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
34
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES ASSOCIATIVOS
Neste tipo de vectores associamos um valor a uma chave qual
damos um nome. Nos vectores anteriores no davamos nomes
<?php
PHP
s nossas chaves!
$f[clube] = FC Porto;
$f[cidade] = Porto;
$f[pas] = Portugal;
$f[umasocor ] = Azul e Branco;
print_r ( $f);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
35
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES MULTIDIMENSIONAIS
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
36
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VECTORES MULTIDIMENSIONAIS
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
37
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Exemplo:
nome = Afonso
sobrenome = Gomes
idade = 31
funcao = formador
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
38
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OBJECTOS
PHP
Qualquer coisa:
eu@afonsogomes.com
39
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Recursos
Um recurso uma varivel especial que contem uma referncia
PHP
<?php
$servidor = localhost;
$user = admin;
$password = 12345;
$ligao = mysqli_connect($servidor, $user, $password);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
40
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NULL
O tipo especial NULL representa uma varivel que no tem
valor definido. O termo NULL pode ser escrito em maisculas
PHP
ou minsculas.
<?php
$variavelvazia = NULL;
echo $variavelvazia;
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
41
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
42
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
43
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS REVISO
PHP
<?php
$nome = Felismino ;
$Nome = Felisberto ;
echo $nome, $Nome<br>; // Funciona!
$1teste = Teste; // D ERRO!
$_1teste = Teste; // Funciona!
echo $_SERVER[DOCUMENT_ROOT]; // V. Superglobal
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
44
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
<?php
includo!
$i = 5 ;
include ( ficheiro.php) ;
?>
Qualquer coisa:
eu@afonsogomes.com
45
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
VARIVEIS GLOBAIS
Ao contrrio dos ficheiros, as variveis no se estendem para
funes. No exemplo seguinte, nada imprimido porque a
<?php
PHP
$b = 5;
function teste(){
echo $b;
}
teste();
?>
Qualquer coisa:
eu@afonsogomes.com
46
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
definida
<?php
$a = 5;
echo "Antes: " . $a . "<br>";
function teste2() {
static $a;
teste2();
$a = 10;
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
47
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CONSTANTES
Enquanto uma varivel pode, l est, variar ao longo do cdigo,
uma constante mantem-se inaltervel de inicio ao fim.
- Os nomes no comeam com o $ (cifro)
- As constantes so definidas com a funo define();
- As constantes so GLOBAIS. Podem ser acedidas dentro de
outras funes.
- As constantes no podem ser redefinidas nem eliminadas.
Qualquer coisa:
eu@afonsogomes.com
48
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
CONSTANTES
contantes.php
<?php
define (_NOME_,Afonso);
define (_IDADE_, 31);
Qualquer coisa:
eu@afonsogomes.com
49
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
EXPRESSES
Agora que sabemos tudo sobre variveis... o que podemos fazer
com elas? E como o podemos fazer? Usamos expresses.
.
<?php
PHP
$nome = Afonso;
EXPRESSO
echo $nome;
?>
Dvidas?
Pergunte. Agora!
OPERADOR
Qualquer coisa:
eu@afonsogomes.com
50
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
EXPRESSES
PHP
44
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
51
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
FUNES
Uma funo tambm uma expresso. As funes so usadas
<?php
PHP
function dizOla(){
echo Ol Mundo;
}
dizOla();
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
52
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
FUNES
Parmetros de entrada? Que isso??
<?php
PHP
function dizOla2($nome){
echo Ol . $nome;
}
Experimentem esta!
$nome = Afonso;
dizOla2($nome);
?>
Dvidas?
Pergunte. Agora!
53
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
FUNES
Vamos ver mais exemplos com parmetros de entrada...
PHP
<?php
PHP
<?php
function soma($a, $b){
echo $a + $b;
}
soma(4154,10124);
return $a + $b;
}
$c = soma(457,215);
echo $c;
?>
?>
Qualquer coisa:
eu@afonsogomes.com
54
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
FUNES
Em funes podemos permitir que no seja necessrio introduzir
PHP
44
Qualquer coisa:
eu@afonsogomes.com
55
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
44
Qualquer coisa:
eu@afonsogomes.com
56
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
function soma2nums($a,$b){
PHP
return $a + $b;
}
echo soma2nums(15,soma2nums(3,6));
Simples
no ?
44
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
57
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES
Em PHP h imensos operadores para muitas operaes diferentes
Vamos ver os mais usuais! (Alguns j foram vistos antes!)
<?php
PHP
de uma expresso
$nome = Afonso;
EXPRESSO
echo $nome;
?>
Dvidas?
Pergunte. Agora!
OPERADOR
Qualquer coisa:
eu@afonsogomes.com
58
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: Aritmticos
EXEMPLO
NOME
RESULTADO
$a + $b
Adio
Soma de $a com $b
$a - $b
Subtraco
Diferena entre $a e $b
$a * $b
Multiplicao
Produto de $a por $b
$a / $b
Diviso
$a % $b
Mdulo
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
59
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: Relacionais
EXEMPLO
NOME
RESULTADO
$a == $b
Igual
Verdade se $a igual a $b
$a === $b
Idntico
$a != $b
Diferente
Verdade se $a diferente de $b
$a !== $b
No Idntico
Verdade se $a diferente de $b
(ou de tipos diferentes)
$a < $b
Menor
$a > $b
Maior
$a <= $b
Menor/Igual
$a >= $b
Maior/Igual
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
60
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: Lgicos
EXEMPLO
NOME
RESULTADO
$a AND $b
Conjuno
$a && $b
Conjuno
$a OR $b
Disjuno
Inclusiva
$a || $b
Disjuno
Inclusiva
$a XOR $b
Disjuno
Inclusiva
!$a
Negao
Lgica
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
61
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: Incremento/Decremento
EXEMPLO
NOME
RESULTADO
$a++
Ps-Incremento
++$a
Pr-Incremento
$a--
Ps-Decremento
--$a
Pre-Decremento
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
62
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: Condicional
Representa-se por ? e tem uma estrutura muito semelhante
a uma estrutura de controlo SE. Sintaxe: expr1 ? expr2 : expr3
.
PHP
$b = 10;
$d = 5; $e = $d * $d; // $e o quadrado de $d
55
51
Qualquer coisa:
eu@afonsogomes.com
63
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
OPERADORES: De Strings
PHP
Operador de concatenao
$k = Ol;
$k = $k . Mundo !; // Ol Mundo !
55
51
PHP
55
51
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
64
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
http://php.net/manual/en/language.operators.php
(basta ir a php.net e pesquisar Operators)
55
51
55
51
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
65
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
EXERCICIOS
1) Escreva uma funo que faa a soma de dois nmeros
PHP
55
51
$a = 10;
$b = 15;
echo soma2nums($a, $b);
echo soma2nums(27,$b);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
55
51
55
51
66
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
EXERCICIOS
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
67
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
EXERCICIOS
<?php
function cubomaiorquemil($a){
$b = $a * $a * $a;
55
51
echo ($b >= 1000 ? "SIM ($b >= 1000)<br>" : "NO ($b)<br>");
}
function parouimpar($a){
echo ($a % 2 == 0 ? "($a) PAR<br>" : "($a) IMPAR<br>");
}
55
51
55
51
parouimpar(10);
parouimpar(7);
cubomaiorquemil(9);
cubomaiorquemil(15);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
68
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Qualquer coisa:
eu@afonsogomes.com
55
51
55
51
69
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
Esta estrutura a famosa SE ENTO SENO da programao.
a estrutura mais usada em qualquer linguagem de programao
Tambm conhecida como sendo uma Estrutura de controlo
55
51
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
70
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
INSTRUES CONDICIONAIS: If
Um exemplo:
$a = 10;
$b = 15;
55
51
if($a > $b) {
echo $a maior que $b;
}
elseif($a == $b) {
echo $a igual a $b;
}
else {
echo $a menor que $b;
55
51
55
51
55
51
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
71
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
INSTRUES CONDICIONAIS: If
$a = 10;
$b = 15;
if($a > $b) {
$msg = $a maior que $b;
Um exemplo:
Preparamos uma
mensagem e s
a imprimimos no51
55
fim.
}
elseif($a == $b) {
$msg = $a igual a $b;
}
else {
$msg = $a menor que $b;
}
55
51
55
51
55
51
echo $msg;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
72
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
Um uso tpico de um IF simples quando recebemos variveis
PHP
$nome = $_GET[nome];
echo $nome;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
73
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
PHP
$nome = $_GET[nome];
echo $nome;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
74
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
Usa-se um IF para verificar se a varivel est ou no definida
PHP
if( isset($_GET[nome]) ) {
$nome = $_GET[nome];
} else {
$nome = desconhecido;
}
echo Ol . $nome;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
75
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
PHP
Qualquer coisa:
eu@afonsogomes.com
76
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
PHP
Qualquer coisa:
eu@afonsogomes.com
77
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
Outro bom uso recorrente do IF quando definimos as nossas
funes. J tinhamos visto que ocorre um erro se tivermos 2
if(!function_exists(encurtaTexto)){
PHP
function encurtaTexto($text,$chars='25'){
.
...
.
}
}
Qualquer coisa:
eu@afonsogomes.com
78
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
PHP
if ($a == 5):
PHP
echo "...";
elseif ($a == 6):
Qualquer coisa:
eu@afonsogomes.com
79
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
INSTRUES CONDICIONAIS: If
if(1){
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
80
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
81
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
O funcionamento de um SWITCH
PHP
igual ao de um IF.
$i = 2;
switch($i){
case 0:
echo $i igual a 0;
break;
case 1:
echo $i igual a 1;
valores...
break;
case 2:
echo $i igual a 2;
break;
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
82
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Qualquer coisa:
eu@afonsogomes.com
83
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Qualquer coisa:
eu@afonsogomes.com
84
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
85
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
EXPLODE
$pizza = fatia1|fatia2|fatia3|fatia4|fatia5|fatia6;
$fatias = explode(|, $pizza);
echo $fatias[0] . <br>; // fatia1
echo $fatias[1]; // fatia2
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
86
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
EXPLODE
$carro = rodas, motor, volante, pedais;
$pecas = explode(, , $carro, 2);
echo $pecas[0] . <br>; // rodas
echo $pecas[1]; // motor, volante, pedais
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
87
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
IMPLODE
$dados = array(pnome,unome,email,telemovel);
echo $dados[1]; // unome
$todosjuntos = implode( | , $dados);
echo $todosjuntos; // pnome | unome | email | telemovel
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
88
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
89
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
CICLOS: WHILE
$contador = 1;
while($contador <= 10){
echo $contador igual a . $contador++;
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
90
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
CICLOS: WHILE
$contador = 1;
while($contador <= 10){
echo $contador igual a . ++$contador;
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
91
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
$contador = 1;
do {
Qualquer coisa:
eu@afonsogomes.com
92
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
$contador = 1;
while($contador <= 10){
echo $contador igual a . $contador++;
PHP
$contador = 1;
do {
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
93
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: Exerccio 1
Faa um contador que comece no 1 e quando chegar a 10
imprima a linha Ol Mundo!.
Dever aparecer no ecr algo do gnero:
1
2
...
8
9
Ol Mundo
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
94
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
$i = 1;
echo $i . <br>;
}else
echo Ol Mundo!;
7
8
Dvidas?
Pergunte. Agora!
Ol Mundo!
Qualquer coisa:
eu@afonsogomes.com
95
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
...
...
...
echo ...<br>;
Podia ter
ficado melhor!
...
}else
echo Ol Mundo!;
8
9
Ol Mundo!
Dvidas?
Pergunte. Agora!
...
Qualquer coisa:
eu@afonsogomes.com
96
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: Exerccio 1
Resoluo (Floreada!)
PHP
$i = 1;
$flag = false;
echo $i . "<br>";
...
if($flag == false) {
echo "...<br>";
$flag = true;
Ol Mundo!
}
}elseif($i == 10){
echo "Ol Mundo!";
}
$i++;
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
97
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: Exerccio 2
Faa um contador decrescente que comece no 20 e mostre
linha a linha a contagem at 0.
Dever aparecer no ecr algo tipo:
Falta 20...
Falta 19...
Falta 18...
Mas quando chegar ao zero. Em vez de dizer Falta 0...
deve dizer J est!
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
98
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
99
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: FOR
Tipo um While... com os comandos definidos no nicio do bloco.
.
PHP
de controlo.
for($conta = 1; $conta < 10; $conta++){
echo Nmero: <b> . $i . </b><br>;
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
100
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: FOREACH
A instruo 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) { Instrues }
foreach($vector AS $chave => $valor) { Instrues }
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
101
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: FOREACH
A instruo FOREACH, funciona exclusivamente com vectores.
Podemos utiliza-la para chegar ao valor do vector ou ao
PHP
SINTAXE: foreach($vector
AS $valor)
tres
=> 3, { Instrues }
quatro
=> 4);
foreach($vector
AS $chave
=> $valor) { Instrues }
foreach($vector AS $valor){
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
102
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
CICLOS: FOREACH
A instruo FOREACH, funciona exclusivamente com vectores.
Podemos utiliza-la para chegar ao valor do vector ou ao
PHP
SINTAXE: foreach($vector
AS $valor)
tres
=> 3, { Instrues }
quatro
=> 4);
foreach($vector
AS $chave
=> $valor) { Instrues }
foreach($vector AS $chave => $valor){
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
103
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
?
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
104
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
CICLOS: FOREACH
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
105
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
// Novo Valor: 5
// Novo Valor: 6
tres => 3,
// Novo Valor: 7
// Novo Valor: 8
?
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
106
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
// Novo Valor: 5
// Novo Valor: 6
tres => 3,
// Novo Valor: 7
// Novo Valor: 8
$contador = 5;
foreach($vector AS $chave => $valor){
$vector[$chave] = $contador;
$contador++;
}
print_r($vector);
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
107
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
RESUMO INSTRUES
Instrues Condicionais:
- IF
- Switch (Uma espcie de IF para quando h mtas instrues)
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
108
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
109
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
date_default_timezone_set(Europe/Lisbon);
$hoje = date(Y-m-d H:i:s);
echo $hoje . <br>;
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
110
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
// 02:04:50
$hoje = date("l");
// Monday
Qualquer coisa:
eu@afonsogomes.com
111
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
112
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
113
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
PHP
Ou assim:
$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>";
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
114
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
115
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
<?php
PHP
com cdigo PHP ou no! Podemos incluir ficheiros .txt, .html, etc.
require ("php/connection.php");
require ("php/functions.php");
?>
Qualquer coisa:
eu@afonsogomes.com
116
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
<?php
PHP
require_once ("php/connection.php");
include_once ("php/functions.php");
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
117
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Qualquer coisa:
eu@afonsogomes.com
118
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP SESSIONS
As SESSES so uma forma de guardar info sobre um visitante.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
119
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP SESSIONS
Vamos fazer um pequeno site para ver um exemplo de SESSES.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
120
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP SESSIONS
Verificar se a Sesso j est definida.
PHP
Qualquer coisa:
eu@afonsogomes.com
121
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP SESSIONS
O cdigo anterior cria um simples contador de pginas vistas.
PHP
Dvidas?
Pergunte. Agora!
session_start();
unset($_SESSION['contador']);
Qualquer coisa:
eu@afonsogomes.com
122
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP COOKIES
Os Cookies funcionam de maneira idntica s
Sesses.
Qualquer coisa:
eu@afonsogomes.com
123
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP COOKIES
Para definirmos um cookie temos de dar um nome e um valor
varivel e definirmos uma durao (validade).
<?php
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
124
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP COOKIES
Para usarmos informaes guardadas numa cookie...
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
125
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP COOKIES
Para apagarmos uma cookie, definimos uma validade j
<?php
PHP
setcookie(utilizador , , time()-60*60*24*30);
setcookie(contadorvisitas, , time()-60*60*24*30);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
126
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP COOKIES
Vamos ver um pequeno exemplo
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
127
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
128
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
<?php
$filename = onossoficheiro.txt;
Pode ser:
W, R ou A
$filehandle = fopen($filename, w )
or die(Erro: Impossvel abrir!);
fclose($filehandle);
?>
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
129
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
130
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Problemas? :)
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
131
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Qualquer coisa:
eu@afonsogomes.com
132
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
133
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
134
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
$filename = onossoficheiro.txt;
unlink($filename);
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
135
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
136
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
137
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
if(!function_exists("seguranca_dados")){
PHP
function seguranca_dados($dados){
$dados = trim($dados);
$dados = stripslashes($dados);
$dados = htmlspecialchars($dados);
return $dados;
}
}
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
138
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
139
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
140
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Para que possa ser utilizada como apoio eficaz tomada de deciso
nas organizaes, a informao s tem valor se se verificarem,
simultaneamente, algumas condies: actualidade, correco,
relevncia, disponibilidade e legibilidade .
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
142
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
143
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
143
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Aplicao
1
Aplicao
2
SGBD
BD
Aplicao
3
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
144
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SGBD
BD
Aplicao
3
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
145
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Conceito de transao
um dos conceitos mais importantes num sistema BDs. Praticamente
todas as tarefas de gesto de base de dados vivem custa deste conceito.
.
Qualquer coisa:
eu@afonsogomes.com
146
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Conceito de transao
Atomicidade: o conjunto de operaes que constituem uma transaco
formam um grupo indivisvel (atmico), no sentido em que ou todas elas
so executadas com sucesso ou nenhuma executada.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
147
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Conceito de transao
Isolamento: apesar de as transaces executarem concorrentemente,
o sistema deve dar a cada transaco a iluso de que a nica a
executar no sistema executa isoladamente das outras
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
148
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
149
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
150
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Modelo Conceptual
Problema
Real
de Dados
EX: Diagrama E-R
Modelo Fsico de
Modelo de
Base de Dados
Base de Dados
EX: Oracle,
mySQL, MSSQL
EX: hierrquico
rede, relacional
Base de Dados
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
151
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
152
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
153
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Pessoa
Cidade
Ana Lusa
Penafiel
Isabel
Porto
Cristiana
Gaia
Qualquer coisa:
eu@afonsogomes.com
154
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Pessoa
Residncia
Cidade
Ana Lusa
Penafiel
Isabel
Porto
Cristiana
Gaia
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
155
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Equipa
Tem
Jogador
Qualquer coisa:
eu@afonsogomes.com
156
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Equipa
Tem
Jogador
Qualquer coisa:
eu@afonsogomes.com
157
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Livro
Autoria
Pessoa
Qualquer coisa:
eu@afonsogomes.com
158
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Num
Nome
Piloto
Idade
Corrida
Circuito
Nome
Kms
Classificao
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
159
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NumBI
Corrida
Nome
Ano
Cidado
Dvidas?
Pergunte. Agora!
Classificao
Qualquer coisa:
eu@afonsogomes.com
160
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Atributo Derivado
Num
Idade
Rua
Atributo Composto
Morada
Porta
Cidade
Cod Postal
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
161
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
162
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
163
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
164
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
A pergunta:
Desenhe o diagrama conceptual para a base de dados do sistema
de gesto de reparaes em estaes de extraco de petrleo.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
165
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
166
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
167
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
168
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Linhas
Cod_formando
Nome
Sexo
1001
Francisco Telles
1002
Felismino Felizardo
1003
Ana Magalhes
Qualquer coisa:
eu@afonsogomes.com
169
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
170
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Curso
Formando
Dvidas?
Pergunte. Agora!
Cod_curso
Nome
15
Web Design
16
Multimedia
Cod_formando
Nome
1001
Felizardo Felicidade M
15
1002
Felismino Felizardo M
16
1003
Felisberto Felismino F
15
Qualquer coisa:
eu@afonsogomes.com
Sexo
Cod_curso
171
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Qualquer coisa:
eu@afonsogomes.com
172
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Docente
Nome
1
Ensina
Disc
Tel
N
Disciplina
PreReq
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
173
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:1
Docente
Ensina
Disciplina
Ndoc
Nome
Tel
Disc
Prereq
101
Afonso
12345
Amat2
Amat1
P1
D1
125
Felismino 54321
Inf1
Nenhum
P2
D2
P3
D3
Qualquer coisa:
eu@afonsogomes.com
174
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:1
Docente
Nome
Tel
Disc
Prereq
101
Afonso
12345
Amat2
Amat1
Inf1
Nenhum
1
Disciplina
Ndoc
Nome
Tel
Disc
Disc
Prereq
101
Afonso
12345
Amat2
Amat2
Amat1
Inf1
Nenhum
Ensina
P1
P2
P3
D1
D2
D3
D4
Qualquer coisa:
eu@afonsogomes.com
175
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:N
CASO 3
Ndoc
Nome
Tel
Disc
Prereq
Ndoc
101
Afonso
12345
Amat2
Amat1
101
125
Felismino 54321
PHP Av
PHP
101
Necessria 2 tabelas.
Cada com a sua chave primria.
Chave primria do lado 1 (Ndoc) tem de ser usada como atributo
na entidade do lado N
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
176
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:N
Docente
Ensina
Disciplina
Ndoc
Nome
Tel
Disc
Prereq
101
Afonso
12345
Amat2
Amat1
101
Afonso
12345
PHP Av.
PHP
P1
125
Felismino 54321
P2
P3
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
D1
D2
D3
D4
177
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:N
Docente
Ensina
Disciplina
Ndoc
Nome
Tel
Disc
Prereq
101
Afonso
12345
Amat2
Amat1
101
Afonso
12345
PHP Av.
PHP
P1
125
Felismino 54321
P2
CSS
HTML
P3
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
D1
D2
D3
D4
178
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento 1:N
CASO 4
Ndoc
Nome
Tel
101
Afonso
12345
125
Felismino 54321
Disc
Prereq
Amat2
Amat1
PHP Av
PHP
CSS
HTML
Disc
Ndoc
Amat2
101
PHP Av
101
Necessrias 3 tabelas.
Qualquer coisa:
eu@afonsogomes.com
179
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Relacionamento N:N
Docente
Ensina
vrios docentes
Disciplina
Ndoc
Nome
Tel
Disc
Prereq
101
Afonso
12345
Amat2
Amat1
101
Afonso
12345
PHP Av.
PHP
125
Felismino 54321
CSS
HTML
P2
P3
P4
P1
Qualquer coisa:
eu@afonsogomes.com
D1
D2
D3
D4
D5
180
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Seminrio
Inscrito
Orientador
Inscrio (Id_aluno,Id_orient,Id_sem)
Necessrias 4 tabelas.
As tabelas principais, cada com a sua chave primria.
A tabela do relacionamento tem como atributos as chaves primrias
de cada uma das outras tabelas.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
181
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
A normalizao o processo sistemtico de remover dados redundantes
de tabelas, como vista a melhorar armazenamento, eficincia,
integridade de dados, e escalabilidade.
No modelo relacional, existem mtodos para quantificar o quo
eficiente uma BD. Estes estados so chamados Forma Normais (FN)
Este processo de normalizao pelas vrias fases FN normalmente
envolve dividir uma tabela em mltiplas tabelas
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
182
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
BoyceCodd
1FN
2FN
mais Redundncia
menos Relaes
3FN
5FN
FN
Ponto
6FN
menos Redundncia
de
mais Relaes
Equilibrio
Edgar Codd, inicialmente definiu as 3 primeiras FNs
Agora h tambm a 4FN e a 5FN que so ainda mais trabalhadas mas
a 3FN considerada suficiene para a maioria das aplicaes.
Quando uma BD atinge a 3FN tambm esto na FN Boyce-Codd (BCFN)
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
183
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
1FN
2FN
3FN
BC-FN
5FN
6FN
Qualquer coisa:
eu@afonsogomes.com
184
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
1FN
2FN
3FN
BC-FN
5FN
6FN
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
185
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
1FN
NORMALIZAO
2FN
3FN
BC-FN
5FN
6FN
Autor1
Autor2
ISBN
Assunto
Pgs
DB System
Concepts
Abraham
Silberschatz
Henry F.
Korth
McGraw-Hill
OS System
concepts
Abraham
Silberschatz
Henry F.
Korth
0471694665 Pcs
McGraw-Hill
944
Editor
Qualquer coisa:
eu@afonsogomes.com
186
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
A mesma tabela mas ... na PRIMEIRA FORMA NORMAL !
Ttulo
Autor
ISBN
DB System
Concepts
Abraham
Silberschatz
DB System
Concepts
Assunto
Pgs
Editor
0072958863 MySQL
1168
McGraw-Hill
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
Temos agora 2 linhas para cada livro (para alm de) estarmos a
violar a 2FN. Uma soluo para o 1 problema separar as tabelas...
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
187
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
Ttulo
ISBN
Pgs
DB System
Concepts
0072958863 1168
OS System
concepts
0471694665 944
ID_autor
Pnome
Unome
Abraham
Silberschatz
Henry
F. Korth
Editor
ID_assunto Assunto
McGraw-Hill
MySQL
Pcs
McGraw-Hill
Cada tabela tem uma Primary Key, usadas para juntar tabelas quando
pedirmos os dados. Uma Primary Key tambm um index o que ajuda
a acelerar este processo. Agora temos de definir tabelas de relao!
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
188
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
LivroAutor
ISBN
Id_autor
ISBN
Id_assunto
0072958863 1
0072958863 1
0072958863 2
0072958863 2
0471694665 1
0471694665 2
0471694665 2
Qualquer coisa:
eu@afonsogomes.com
189
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
Livro
Editor
Editor
ID_editor
Editor
0072958863 1168
McGraw-Hill
0471694665 944
Ttulo
ISBN
DB System
Concepts
OS System
concepts
Pgs
Qualquer coisa:
eu@afonsogomes.com
190
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
NORMALIZAO
Livro
Ttulo
ISBN
DB System
Concepts
0072958863 1168
OS System
concepts
0471694665 944
Editor
LivroEditor
Id_editor Editor
ISBN
0072958863 1
Pgs
McGraw-Hill
Id_editor
0471694665 1
Qualquer coisa:
eu@afonsogomes.com
191
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SQL
Dvidas?
Pergunte. Agora!
192
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Dvidas?
Pergunte. Agora!
SQL
Exemplo
a
SQL
Sintaxe Bsica
tipo,
nome
VARCHAR(50),
...
...,
data_nasc
DATETIME,
colunan
tipo,
salario
FLOAT)
coluna1
tipo,
coluna2
Qualquer coisa:
eu@afonsogomes.com
193
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
clusula DEFAULT
Dvidas?
Pergunte. Agora!
nome
VARCHAR(50),
data_nasc
DATETIME NULL,
salario
Qualquer coisa:
eu@afonsogomes.com
194
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Tipos de Dados
Descrio
CHAR
Um nico caracter
CHAR(N)
VARCHAR(N)
INTEGER ou INT
SMALINT
Pequeno Inteiro
FLOAT
BOOL ou BOOLEAN
DATE
Data (DD-MM-AAAA)
TIME
Tempo (HH:MM:SS)
DATETIME ou TIMESTAMP
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
195
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: Restries
So regras a que os valores de uma ou mais colunas devem obedecer.
A utilizao de restries a nica garantia que temos de que os dados
existentes nas colunas esto de acordo com as regras especificadas
no desenho da base de dados ( esta verificao feita no servidor SQL,
a aplicao que programarmos, deve fazer verificaes antes d
submeter dados a uma BD! ). Restries mais frequentes:
- NOT NULL : a restrio de uso mais generalizado, pois impede
a introduo de valores nulos na coluna.
- CHECK() - permite realizar a validao os dados introduzidos numa
coluna atravs da especificao de condies. So admitidos apenas
dados cujo resultado da avaliao da condio resulte em Verdadeiro.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
196
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
RELACIONAIS: =, <, >, >=, <= ou != OUTROS: BETWEEN, IN, IS, LIKE
Qualquer coisa:
eu@afonsogomes.com
197
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Id_prof INT,
Nome VARCHAR(50) UNIQUE ,
Telefone VARCHAR(9),
BI INT UNIQUE
)
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
198
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
199
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Id_prof INT,
Nome VARCHAR(50) NOT NULL ,
Telefone VARCHAR(9),
BI NUMERIC NOT NULL UNIQUE ,
Cod_Postal NUMERIC(4) REFERENCES Postal(Codigo) ,
Salario FLOAT(10,2) NOT NULL CHECK(Salario >= 0) ,
PRIMARY KEY(Id_prof) ,
FOREIGN KEY(BI) REFERENCES Seg_Social(BId)
)
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
200
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SQL
so apagados)
DROP TABLE nome_tabela
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
201
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: INSERT
A SQL enquanto Linguagem de Manipulao de Dados, disponibiliza
um conjunto de comandos que podem ser classificados em 2 grupos:
- Actualizao da BD (comandos INSERT, UPDATE e DELETE )
- Interrogao BD (comando SELECT )
SQL
OU
.
Qualquer coisa:
eu@afonsogomes.com
202
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: INSERT
SQL
SQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
203
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: UPDATE
SQL
Qualquer coisa:
eu@afonsogomes.com
204
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: UPDATE
SQL
EXEMPLO:
UPDATE Professor
SET Salario = Salario * 100
SQL
OUTRO EXEMPLO:
UPDATE Professor
SET Salario = Salario * 100
WHERE Categoria = Professor Catedrtico
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
205
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: SELECT
SQL
Qualquer coisa:
eu@afonsogomes.com
206
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: DELETE
SQL
SQL
EXEMPLO:
DELETE FROM Professor
SQL
OUTRO EXEMPLO:
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
207
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: SELECT
SQL
SQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
208
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Operadores Relacionais:
SELECT *
FROM Aluno
SQL
WHERE Idade = 21
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
209
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
210
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
211
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
212
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
213
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
214
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SELECT *
FROM Aluno
FROM Aluno
ORDER BY Idade
SQL
E outro exemplo:
SELECT Nome, Propina
FROM Aluno
WHERE Telefone IS NOT NULL
ORDER BY Propina DESC
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
215
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SELECT *
SQL
e entre os valores iguais ordenada pela segunda coluna, etc etc etc...
FROM Aluno
ORDER BY Idade, Propina
Dvidas?
Pergunte. Agora!
SELECT *
FROM Aluno
ORDER BY Idade DESC , Propina
Qualquer coisa:
eu@afonsogomes.com
216
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
Para seleccionar este tipo de dados poderiamos fazer, por ex, assim:
SELECT *
FROM Livro, Autor, LivroAutor
WHERE Livro.ISBN = LivroAutor.ISBN
AND Autor.ISBN = LivroAutor.ISBN
ORDER BY Livro.ISBN
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
217
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL
SELECT titulo
FROM filmes F, actores A, filmesactores FA
WHERE F.id_filme = FA.id_filme
AND A.id_actor = FA.id_actor
AND A.nome = 'Clint Eastwood'
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
218
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
Considerando a seguinte BD:
1) Quais os docentes registados no
sistema? [informao completa]
2) Quantos equipamentos esto
registados no sistema?
3) Qual a distribuio de
equipamentos por docente? (Quantos)
4) Quantos equipamentos existem no edifcio com nome Engenharias I?
5) Quais os equipamentos possui o docente com o nome
Joo Antnio no edifcio Geocincias?
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
219
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
1) Quais os docentes registados no
sistema? [informao completa]
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
220
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
3) Qual a distribuio de equips
por docente? (Quantos)
SELECT idDocente,
COUNT(*) FROM Equipamento E
AS numero_equips1,
Docente D
WHERE E.idDocente = D.idDocente
GROUP BY idDocente
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
221
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
4) Quantos equipamentos existem no edifcio com nome Engenharias I?
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
222
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
4) Quais os equipamentos possui o docente com o nome
Joo Antnio no edifcio Geocincias?
SELECT * FROM Equipamentos E, Docente D, Departamento X,
EdificioDepartamento Y, Edificio Z
WHERE D.nome = Joo Antnio
AND Z.nome = Geocincias
AND E.idDocente = D.idDocente
AND D.idDepartamento = X.idDepartamento
AND X.idDepartamento = Y.idDepartamento
AND Y.idEdificio = Z.idEdificio
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
223
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
Considerando a seguinte BD:
1) Quais os filmes registados no sistema? [informao completa]
2) Quais os filmes nomeados para scares em 2007?
3) Quantas categorias existem registadas no sistema?
4) Quantos filmes distintos ganharam
scares em 2007?
5) Qual o filme tipo Drama
que venceu na categoria de
Melhor Filme no ano
de 2003?
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
224
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
1) Quais os filmes registados no sistema? [informao completa]
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
225
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
3) Quantas categorias existem registadas no sistema?
Qualquer coisa:
eu@afonsogomes.com
226
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
SQL: EXERCCIOS
5) Qual o filme tipo Drama que venceu na categoria de Melhor
Filme no ano de 2003?
SELECT titulo FROM Filme F, Nomeacao N, Categoria C,
Tipo T, TipoFilme X
WHERE N.ano = 2003
AND T.tipo = Drama
AND C.nome = Melhor Filme
AND C.idCategoria = N.idCategoria
AND N.idFilme = F.idFilme
AND F.idFilme = X.idFilme AND X.idTipo = T.idTipo
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
227
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
EMAIL
HTML
&
JS
Dvidas?
Pergunte. Agora!
PHP
Qualquer coisa:
eu@afonsogomes.com
SQL
228
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
O PHP e MYSQL
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
229
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
O PHP e MYSQL
Agora vamos ao browser ao endereo localhost/phpmyadmin
Qualquer coisa:
eu@afonsogomes.com
230
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
liga.php
$dbuser = XXXXXXXX;
$dbpass = YYYYYYYYY;
$db = filmescesae;
$liga = mysqli_connect($dbhost,$dbuser,$dbpass,$db)
or die("Erro: " . mysqli_error($liga));
mysql_set_charset($liga,utf8);
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
231
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
APENAS EXEMPLO
include(liga.php);
PHP
Qualquer coisa:
eu@afonsogomes.com
232
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
APENAS EXEMPLO
include(liga.php);
PHP
Qualquer coisa:
eu@afonsogomes.com
233
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
APENAS EXEMPLO
include(liga.php);
PHP
Qualquer coisa:
eu@afonsogomes.com
234
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
include(liga.php);
[...?]
Qualquer coisa:
eu@afonsogomes.com
235
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP
include(liga.php);
$nome = $_GET[nome];
$idade = $_GET[idade];
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
236
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
PHP/MYSQL
Como puderam constatar, PHP e SQL um mundo grande, cheio
de coisas para explorar.
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
237
PROFISSIONAL EM WEBDESIGN
b PHP e mySQL
Acabou!
Dvidas?
Pergunte. Agora!
Qualquer coisa:
eu@afonsogomes.com
238