Acesso a Base de Dados Via Web
Acesso a Base de Dados Via Web
Acesso a Base de Dados Via Web
Transforme seus PDFs em revista digital e aumente sua receita!
Otimize suas revistas digitais para SEO, use backlinks fortes e conteúdo multimídia para aumentar sua visibilidade e receita.
Módulo 7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
<strong>Acesso</strong> a <strong>Base</strong> <strong>de</strong> <strong>Dados</strong> <strong>Via</strong> <strong>Web</strong><br />
Hernani Costa<br />
hpcosta@<strong>de</strong>i.uc.pt<br />
Re<strong>de</strong>s <strong>de</strong> Comunicação 2011/2012<br />
Exercícios
Módulo 7<br />
Avaliação<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
N o do Exercício<br />
Valores<br />
1 1.05v<br />
2 1.05v<br />
3 1.05v<br />
4 1.05v<br />
Total 4.2v
Módulo 7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Descreva o modo <strong>de</strong> funcionamento do acesso a uma BD<br />
através da linguagem PhP.
Módulo 7<br />
1/7<br />
Resolva os pontos seguintes executando os comandos em MySQL.<br />
Crie as seguintes tabelas:<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Table: Tabela Jogador.<br />
NomeJogador Ida<strong>de</strong> NomeClube Posicao Nacionalida<strong>de</strong><br />
Deco 28 Chelsea Médio Portuguesa<br />
Raul Meireles 26 FC Porto Médio Portuguesa<br />
Ronaldinho 28 AC Milan Avançado Brasileira<br />
Lucho 28 FC Porto Médio Argentina<br />
João Moutinho 22 Sporting Médio Portuguesa<br />
Laranjeira 30 Leixões Defesa Portuguesa
Módulo 7 2/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Table: Tabela Clube.<br />
NomeClube Pais Ida<strong>de</strong> Estádio<br />
FC Porto Portugal 115 Dragão<br />
Real Madrid Espanha 120 Santiago Barnabéu<br />
Manchester U. Inglaterra 100 Old Trafford<br />
Sporting Portugal 90 Alvala<strong>de</strong> XXI
Módulo 7 3/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Inserir os dados nas respetivas tabelas.<br />
Listar todos os clubes.<br />
Listar o nome e o estádio <strong>de</strong> cada clube.<br />
Listar os nomes <strong>de</strong> todos os jogadores com mais <strong>de</strong> 23<br />
anos (inclusive).
Módulo 7 4/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Listar o nome dos jogadores com 26 ou 30 anos.<br />
Listar toda a informação dos jogadores com ida<strong>de</strong>s entre<br />
os 22 (inclusive) e os 26.<br />
Listar o nome dos clubes e ida<strong>de</strong> on<strong>de</strong> a ida<strong>de</strong> é maior que<br />
110 e menor que 95.<br />
Listar todos os nomes <strong>de</strong> jogadores começados por ‘R’.<br />
Listar todos os nomes <strong>de</strong> jogadores que contenham “inh”<br />
no nome.
Módulo 7 5/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Listar os nomes dos jogadores e a sua ida<strong>de</strong> por or<strong>de</strong>m<br />
crescente <strong>de</strong> ida<strong>de</strong>.<br />
Listar os nomes dos jogadores com ida<strong>de</strong>s iguais a 26 anos<br />
ou com mais <strong>de</strong> 28 por or<strong>de</strong>m alfabética.<br />
Contar o número <strong>de</strong> jogadores da tabela jogador.<br />
Contar o número <strong>de</strong> médios da tabela jogador.
Módulo 7 6/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Contar o número <strong>de</strong> jogadores que não jogam no FC Porto.<br />
Listar a ida<strong>de</strong> do clube mais velho da tabela alertclube.<br />
Indicar a ida<strong>de</strong> do jogador mais novo da tabela jogador<br />
que seja médio.<br />
Calcular a média <strong>de</strong> ida<strong>de</strong>s dos jogadores <strong>de</strong> nacionalida<strong>de</strong><br />
portuguesa.
Módulo 7 7/7<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Calcular a soma das ida<strong>de</strong>s dos clubes portugueses<br />
centenários.<br />
Listar todos os nomes dos jogadores portugueses que<br />
joguem em clubes <strong>de</strong> Portugal.<br />
Listar todos os jogadores portugueses que joguem em<br />
clubes <strong>de</strong> Portugal e tenham mais <strong>de</strong> 25 anos.<br />
Listar todos os jogadores estrangeiros que joguem em<br />
equipas portuguesas.
Módulo 7<br />
1/14<br />
Resolva os pontos seguintes em linguagem PhP, HTML e SQL.<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Criar uma tabela <strong>de</strong> nome Aluno através do MySQL como<br />
a que se mostra <strong>de</strong> seguida.<br />
Nota: Criar apenas a tabela. Deixe o seu conteúdo vazio.a<br />
Table: Tabela Aluno.<br />
Nome<br />
Ida<strong>de</strong><br />
... ...
Módulo 7 2/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Criar um novo ficheiro <strong>de</strong> nome form.html on<strong>de</strong> <strong>de</strong>ve<br />
escrever o código que permita obter o seguinte formulário:
Módulo 7 3/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Criar um ficheiro <strong>de</strong> nome inserir.php on<strong>de</strong> <strong>de</strong>verá constar<br />
o código para captar o nome e ida<strong>de</strong> escrito nas caixas <strong>de</strong><br />
texto.<br />
Ajuda: use o método GET ou POST e baseia-se nos<br />
seguintes códigos $ GET[‘nome da caixa <strong>de</strong> texto’] ou<br />
$ POST[‘nome da caixa <strong>de</strong> texto’] para captar o valor da<br />
caixa <strong>de</strong> texto.<br />
Na página inserir.php <strong>de</strong>ve ser mostrada a seguinte frase:<br />
O seu nome é “valor da caixa <strong>de</strong> texto nome”<br />
A sua ida<strong>de</strong> é “valor da caixa <strong>de</strong> texto ida<strong>de</strong>”
Módulo 7 4/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Acrescentar o código necessário para ligar à BD e para<br />
conseguir introduzir os dados nela através do formulário.<br />
Alterar o código da página inserir.php on<strong>de</strong> agora <strong>de</strong>ve ser<br />
mostrada a seguinte mensagem:<br />
Os dados foram inseridos com sucesso!<br />
No caso <strong>de</strong> existir um erro <strong>de</strong>ve conseguir <strong>de</strong>tetá-lo<br />
através <strong>de</strong> códigos <strong>de</strong> erro que <strong>de</strong>vem estar presentes<br />
em todas as funções relacionadas com a BD no seu<br />
código PhP.<br />
Veja o seguinte exemplo do que se preten<strong>de</strong>, na função<br />
associada à ligação à BD.
Módulo 7 5/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
$Iigax = mysqI connect(‘localhost’, ‘root’, ‘ ’);<br />
If (!$ligax){<br />
echo ‘ Erro: Falha na ligação à BD.’;<br />
exit;<br />
}
Módulo 7 6/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Proce<strong>de</strong>r às alterações do código anterior para o seu caso<br />
particular, não se esquecendo <strong>de</strong> aplicar, da mesma forma,<br />
o código <strong>de</strong> erros às restantes funções.<br />
No caso <strong>de</strong> já existir um nome na tabela igual ao que se<br />
preten<strong>de</strong> inserir <strong>de</strong>ve aparecer no ecrã a seguinte<br />
mensagem:<br />
O aluno x já se encontra registado.
Módulo 7 7/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie um ficheiro <strong>de</strong> nome ligabd.php on<strong>de</strong> <strong>de</strong>verão constar<br />
os códigos responsáveis pela ligação à BD bem como pela<br />
escolha da BD.<br />
Substitua no ficheiro inserir.php as linhas <strong>de</strong> código que<br />
colocou no ficheiro Iigabd.php pela seguinte:<br />
inclu<strong>de</strong> (“ligabd.php”);
Módulo 7 8/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Tente inserir um novo aluno para garantir que apesar<br />
<strong>de</strong>sta alteração, tudo funciona normalmente.<br />
Nota: Em todos os ficheiros que serão criados a partir<br />
<strong>de</strong>ste momento, que necessitem <strong>de</strong> ace<strong>de</strong>r à BD, <strong>de</strong>verão<br />
incluir apenas o código inclu<strong>de</strong> (“ligabd.php”);<br />
Acrescente ao form.html um link <strong>de</strong> nome “Listar<br />
Registos” para uma página <strong>de</strong> nome listar.php que irá criar<br />
<strong>de</strong> seguida.
Módulo 7 9/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie a página listar.php que mostre todos os registos da<br />
tabela Aluno.<br />
Ajuda: a porção do código seguinte lista todos os nomes<br />
<strong>de</strong> jogadores, ida<strong>de</strong> e clube da tabela jogador na forma <strong>de</strong><br />
uma tabela.<br />
<strong>Base</strong>ie-se neste código, proce<strong>de</strong>ndo às alterações<br />
necessárias para que funcione quando lista os registos da<br />
tabela aluno.
Módulo 7 10/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
<br />
Nome Jogador lda<strong>de</strong> Nome Clube <br />
Módulo 7 11/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Acrescentar ao form.html um link <strong>de</strong> nome “Pesquisar”<br />
para uma página <strong>de</strong> nome pesquisa.html que iremos criar<br />
<strong>de</strong> seguida.<br />
Crie uma página <strong>de</strong> nome pesquisa.html com o seguinte<br />
aspeto:<br />
Nota: o botão <strong>de</strong> submit <strong>de</strong>verá estar direcionado para o<br />
ficheiro pesquisa.php
Módulo 7 12/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie um ficheiro <strong>de</strong> nome pesquisa.php on<strong>de</strong> liste numa<br />
tabela, à semelhança do listar.php, os nomes e ida<strong>de</strong>s dos<br />
alunos da tabela aluno que resultem da pesquisa.<br />
Acrescente ao final da página pesquisa.php o seguinte<br />
formulário:<br />
Nota: o botão <strong>de</strong> submit <strong>de</strong>verá estar direcionado para o<br />
ficheiro apagar.php
Módulo 7 13/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4
Módulo 7 14/14<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie um ficheiro <strong>de</strong> nome apagar.php que apague um<br />
registo da tabela Aluno conforme o nome inserido na<br />
caixa <strong>de</strong> texto acima.
Módulo 7 1/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie uma BD e respetiva tabela que permita interagir com<br />
os dados dos formulários seguintes. Não se esqueça <strong>de</strong><br />
escolher uma chave primária para a tabela.<br />
Notas: A palavra “Registe-se” é um hyperlink para a<br />
página form.html on<strong>de</strong> <strong>de</strong>ve constar os campos que<br />
aparecem na figura do próximo sli<strong>de</strong>.
Módulo 7 2/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Crie um ficheiro <strong>de</strong> nome login.php.<br />
Neste ficheiro <strong>de</strong>ve constar o código responsável por<br />
verificar os dados do utilizador.
Módulo 7 3/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Caso este introduza corretamente os dados no formulário<br />
anterior, <strong>de</strong>ve-lhe ser mostrada a página main.php e ainda<br />
a seguinte mensagem:<br />
Olá X!<br />
No caso do utilizador não se encontrar registado então a<br />
página a ler <strong>de</strong>ve ser novamente a entrar.html.<br />
Ajuda: a forma <strong>de</strong> redirecionar para outros ficheiros é<br />
apresentado em seguida.
Módulo 7 4/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
if (condição para verificar username e password){<br />
hea<strong>de</strong>r[‘Location: main.php’];<br />
exit;<br />
} else{<br />
hea<strong>de</strong>r[‘Location: entrar.html’];<br />
exit;<br />
}
Módulo 7 5/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
No ficheiro login.php <strong>de</strong>verá ficar gravada uma variável <strong>de</strong><br />
sessão. Adapte o seguinte código ao seu.<br />
Session start();<br />
$ SESSION[“nome”]=$nome;<br />
No código do ficheiro main.php já po<strong>de</strong>rá fazer aparecer o<br />
nome (em vez do X) <strong>de</strong> quem fez o login através da sua<br />
variável <strong>de</strong> sessão.<br />
Session start();<br />
echo ‘Olá’. $ SESSION[“nome”]. ‘!’;
Módulo 7 6/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Neste momento, se preten<strong>de</strong>sse entrar no main.php<br />
bastava escrever essa página diretamente no browser.<br />
Como <strong>de</strong>vem compreen<strong>de</strong>r esta é uma falha grave <strong>de</strong><br />
segurança, visto permitir a entrada numa página<br />
supostamente privada.<br />
Para impedir que isto aconteça, proce<strong>de</strong>r às seguintes<br />
alterações:
Módulo 7 7/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Incluir (com inclu<strong>de</strong>) um ficheiro <strong>de</strong> nome validacao.php<br />
no código do main.php.<br />
De seguida, no ficheiro validacao.php <strong>de</strong>verá encontrar-se<br />
o código que verifique se a variável <strong>de</strong> sessão relativa ao<br />
nome do utilizador está <strong>de</strong>finida<br />
dica: po<strong>de</strong> usar a função isset(nome da variável)<br />
No caso <strong>de</strong> não se encontrar <strong>de</strong>finida, <strong>de</strong>ve saltar para a<br />
página erro.php (dica: po<strong>de</strong> usar a função hea<strong>de</strong>r()) que<br />
mostrará no ecrã “<strong>Acesso</strong> reservado a utilizadores<br />
registados!”.
Módulo 7 8/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Na página main.php <strong>de</strong>verá ser criado um botão do tipo<br />
submit <strong>de</strong> nome “sair”.<br />
Ao clicar nesse botão um ficheiro <strong>de</strong> nome logout.php<br />
<strong>de</strong>ve ser chamado.<br />
No ficheiro <strong>de</strong>ve constar o seguinte código:<br />
Session start();<br />
unset($ SESSION [“nome”]);
Módulo 7 9/9<br />
Lista<br />
Exercício 1<br />
Exercício 2<br />
Exercício 3<br />
Exercício 4<br />
Adicionalmente <strong>de</strong>verá constar no final do código acima<br />
mostrado, o redirecionamento para a página entrar.html.<br />
Teste o seu código tentando ace<strong>de</strong>r diretamente à página<br />
main.php após clicar no botão sair.