18.02.2014 Visualizações

Acesso a Base de Dados Via Web

Acesso a Base de Dados Via Web

Acesso a Base de Dados Via Web

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!