engº pedro costaacessibilidade e programação web 1 workshop comunicação inclusiva...
TRANSCRIPT
Engº Pedro Costa Acessibilidade e Programação Web 1
Workshop
Comunicação Inclusiva
Acessibilidade e Programação Web
Mysql
Engº Pedro Costa Acessibilidade e Programação Web 2
Base de Dados
Uma base de dados é a melhor forma de guardar informação de
modo organizado e de fácil visualização.
Uma base de dados é composta por tabelas, que são compostas por campos. Esses é que contêm a informação e podem ser de qualquer tipo: numérico (inteiros ou reais), texto, data, booleano, etc..
Nome Localidade Telefone Data de Nascimento
Pedro Porto 224544555 12-07-78
Susana Braga 967865666 28-09-80
João Coimbra 912344588 22-04-76
Esta tabela tem 4 campos ( Nome,Localidade,Telefone, Data de nascimento)
Engº Pedro Costa Acessibilidade e Programação Web 3
Base dados
Para a construção das tabelas temos de seguir certas regras:
Exemplo da construção de uma base de dados
Construir uma base dados para um concurso de perguntas tipo quem quer ser milionário, ou seja, cada pergunta tem quatro possíveis respostas. E queremos guardar a informação dos concorrentes.
1º Passo – Fazer uma lista de toda a informação que se pretende guardar.
Pergunta, RespostaA, RespostaB, RespostaC, RespostaD, Resposta Certa, Categoria da resposta.
Nome do concorrente, Localidade, data de nascimento, pontuação, resposta dada a determinada pergunta.
Engº Pedro Costa Acessibilidade e Programação Web 4
Base de dados
2º passo – por em tabelas a informação apurada
Pergunta Resposta A
Resposta B
Resposta C
Resposta D
Resposta Certa
Categoria
Quem ganhou o oscar de melhor filme 2008
Atonement Michael Clayton
No Country for Old Men
There Will be Blood
No Country for Old Men
Espectaculo
Quem ganhou o oscar de melhor actor 2008
George Clooney
Daniel Day-Lewis
Johnny Depp
Tommy Lee Jones
Daniel Day-Lewis
Espectaculo
Quem ganhou o oscar de melhor actriz 2008
Cate Blanchett
Julie Christie Laura Linney Marion Cotillard
Marion Cotillard
Espectaculo
Engº Pedro Costa Acessibilidade e Programação Web 5
Base de dados
2º passo (continuação )– por em tabelas a informação apurada
Nome Localidade Telefone Data de Nascimento
Pontuação
Pedro Porto 224544555 12-07-78 10
Teresa Porto 224544555 12-07-78 12
Susana Braga 967865666 28-09-80 20
João Porto 912344588 22-04-76 5
Engº Pedro Costa Acessibilidade e Programação Web 6
Base de dados
3º passo – aplicação de algumas regras de modo a simplificar
1º Regra – As tabelas devem de ter um ou mais campos cujos os valores sejam únicos (passamos a chamar de chaves da tabela )
Na tabela Pergunta, temos que o campo pergunta é único ou seja não existem perguntas repetidas.
As chaves devem de ser preferencialmente numéricas porque assim precisamos de menos espaço para identificar uma linha .
Perguntar pela pergunta número 3 ocupa menor espaço do que perguntar pela pergunta ” Quem ganhou o Óscar de melhor actriz 2008”
Assim criamos um novo campo chamado IDpergunta que vai ser um número inteiro.
Engº Pedro Costa Acessibilidade e Programação Web 7
Base de dados
IDpergunta Pergunta Resposta A
Resposta B
Resposta C
Resposta D
Resposta Certa
Categoria
1 Quem ganhou o Óscar de melhor filme 2008
Atonement Michael Clayton
No Country for Old Men
There Will be Blood
No Country for Old Men
Espectáculo
2 Quem ganhou o Óscar de melhor actor 2008
George Clooney
Daniel Day-Lewis
Johnny Depp
Tommy Lee Jones
Daniel Day-Lewis
Espectáculo
3 Quem ganhou o Óscar de melhor actriz 2008
Cate Blanchett
Julie Christie Laura Linney Marion Cotillard
Marion Cotillard
Espectáculo
Engº Pedro Costa Acessibilidade e Programação Web 8
Base de dadosFazemos o mesmo para a tabela Concorrente- passamos a ter um campo chamado idconcorrente que identifica o concorrente e é único
IDconcorrente
Nome Localidade Telefone Data de Nascimento
Pontuação
1 Pedro Porto 224544555 12-07-78 10
2 Teresa Porto 224224555 22-01-71 12
3 Susana Braga 967865666 28-09-80 20
4 João Porto 912344588 22-04-76 5
Engº Pedro Costa Acessibilidade e Programação Web 9
Base de dados
2º Regra – Se numa tabelas tivermos um campo cujos os valores se repetem muitas vezes, o melhor é criar uma nova tabela.
Na tabela Pergunta, temos que o campo categoria vai ter valores repetidos por isso podemos criar uma tabela nova chamada categoria.
IDcategoria Designação Descrição
1 Espectáculo Cinema, Musica, Pintura, etc.
2 Desporto Todos os desportos
3 Ciência Matemática, Fisica, Engenharia
Engº Pedro Costa Acessibilidade e Programação Web 10
Base de dados
IDpergunta Pergunta Resposta A
Resposta B
Resposta C
Resposta D
Resposta Certa
IDcategoria
1 Quem ganhou o Óscar de melhor filme 2008
Atonement Michael Clayton
No Country for Old Men
There Will be Blood
No Country for Old Men
1
2 Quem ganhou o Óscar de melhor actor 2008
George Clooney
Daniel Day-Lewis
Johnny Depp
Tommy Lee Jones
Daniel Day-Lewis
1
3 Quem ganhou o Óscar de melhor actriz 2008
Cate Blanchett
Julie Christie Laura Linney Marion Cotillard
Marion Cotillard
1
Engº Pedro Costa Acessibilidade e Programação Web 11
Base de Dados
Falta a informação relacionada com as respostas dadas pelos concorrentes.
Para guardar essa informação cria-se uma tabela que tem a identificação do concorrente, a identificação da pergunta, a resposta dada e qual era o numero da pergunta.
IDconcorrente IDpergunta Resposta Numero
1 2 Johnny Depp 1
1 1 Atonement 2
2 1 Tommy Lee Jones 1
Nesta tabela não existe um campo que tenha valores únicos, temos é dois campos cujos os valores são únicos. Que são o IDconcorrente e o IDpergunta que vão ser chave.
Por exemplo não pode existir mais nenhuma linha a não ser a primeira que tenha IDconcorrente =1 e IDpergunta=2. A pergunta não pode ser perguntada duas vezes.
Engº Pedro Costa Acessibilidade e Programação Web 12
Phpmyadmin
No endereço phpmyadmin.icicom.up.pt podemos criar a base de dados no Mysql.
No Mysql se não formos administradores não podemos criar base de dados, por isso a base de dados já está criada.
Temos de criar as tabelas e os seus campos com os respectivos tipos de valores e dizer quais os campos que são chave.
Em seguida podemos inserir alguns valores.
Engº Pedro Costa Acessibilidade e Programação Web 13
SQL
A linguagem SQL serve para conseguirmos extrair , inserir, editar e apagar informação das base de dados.
Vamos começar pelas duas principais funções
Select – mostra os campos pretendidos
From – escolhe a tabela ou tabelas
Select concorrente.nome
from concorrente
Estamos a pedir todos os nomes que existem na tabela concorrentes
Nome
Pedro
Teresa
Susana
João
Engº Pedro Costa Acessibilidade e Programação Web 14
SQL
Pergunta
Quem ganhou o Óscar de melhor filme 2008
Quem ganhou o Óscar de melhor actor 2008
Quem ganhou o Óscar de melhor actriz 2008
Todas as perguntas que existem ?
Todas as categorias que existem ?
Select pergunta.pergunta
from pergunta
Select categoria.designação
from categoria
Designação
Espectáculo
Desporto
Ciência
Engº Pedro Costa Acessibilidade e Programação Web 15
SQL
Nome
Pedro
Teresa
João
Quais são os nomes dos concorrentes do porto ?
Qual é a data de nascimento e localidade da concorrente Susana ?
Select concorrente.nome
from concorrente
Where concorrente.localidade=‘Porto’;
Quando queremos por restrições usamos a função - Where
Select concorrente.localidade, concorrente.[data de nascimento]
from concorrentes
Where concorrentes.nome=‘Susana’;
Braga 28-09-80
Engº Pedro Costa Acessibilidade e Programação Web 16
SQL
Nome
Teresa
João
Quais são os nomes dos concorrentes com pontuação maior que 10 ?
Quem tem este telefone 224544555 ?
Select concorrente.nome
from concorrente
Where concorrente.pontuação>10;
Select *
from concorrentes
Where concorrentes.telefone=‘224544555’;
1 Pedro Porto 224544555 12-07-78 10
Se usarmos * após o select estamos a dizer que queremos todos os campos
Engº Pedro Costa Acessibilidade e Programação Web 17
SQL
Quantos concorrentes são do porto ?
3
Também podemos usar algumas funções dentro do select para
Count – contar
Max – ver o máximo
Sum – somar
Min – ver o mínimo
Select count(concorrente.nome)
from concorrente
Where concorrente.localidade=‘Porto’;
Engº Pedro Costa Acessibilidade e Programação Web 18
SQL
De que categoria são as perguntas as duas primeiras perguntas ?
3
Quando queremos usar informação de duas tabelas ligamos essas tabelas através dos campos que fazem essa ligação
Select pergunta.pergunta,categoria.designação
from pergunta, categoria
Where (pergunta.idcategoria=categoria.idcategoria) and (pergunta.idpergunta<3);
É o que faz a ligaçãoPergunta menor que três é a 1 e 2
Engº Pedro Costa Acessibilidade e Programação Web 19
SQL
Queremos saber quantas pessoas existem de cada localidade ?
Quando queremos agrupar a informação por valores usamos o group by
Select concorrente.localidade , count(concorrente.localidade),
from concorrente
Group by concorrente.localidade
Localidade Count(localidade)
Porto 3
Braga 1
Engº Pedro Costa Acessibilidade e Programação Web 20
SQL
Para inserir informação usando o sql temos- INSERT
Insert INTO pergunta (idpergunta,respostaA, respostaB, respostaC, respostaD, resposta,categoria) values(4,“Quantos oscar ganhou Atonement “,”1”,”0”,”2”,”3”,”1”,1);
Inserir na tabela pergunta
Inserir na tabela categoria
Insert INTO categoria(idcategoria,designação,descrição) values (4,”Politica”,”Nacional e Inernacional”);
Para apagar temos - DELETE
delete from concorrente where idconcorrente=4;
Engº Pedro Costa Acessibilidade e Programação Web 21
SQL
Quando queremos modificar alguma linha usamos - UPDATE
UPDATE concorrente set localidade=“Aveiro”, Telefone=“228987464” where idconcorrente=2;
A seguir a set pomos os valores dos campos que queremos alterar
Engº Pedro Costa Acessibilidade e Programação Web 22
Conectar
A primeira função a usar é a função mysql_connect para ligarmo-nos ao servidor que tem a base de dados
mysql_connect(nome_do_servidor,user,password);
<?php $con = mysql_connect("localhost","pedro",“12345"); if (!$con) { die(‘Não se consegue ligar à base de dados’ . mysql_error()); } ?>
Quando estamos a utilizar o nosso computador, ou seja, as nossas páginas não estão na net. O nome do servidor é localhost.
Neste exemplo usamos a função die que aborta a página e mostra uma mensagem. Neste caso se não conseguimos ligar à base de dados, não precisamos de continuar.
Engº Pedro Costa Acessibilidade e Programação Web 23
Mysql
A segunda função é ligarmo-nos à nossa base de dados
mysql_select_db(nome_da_base_de_dados,coneção);
Em seguida vamos fazer uma pergunta à base de dados para termos a informação pretendida
$resultado_da_query=mysql_query(pergunta_em_sql);
O resultado é uma tabela com varias linhas.
Para percorremos essas linhas usamos a seguinte função.
$linha = mysql_fetch_array($resultado_da_query)
Para ler campo da linha usamos o seguinte:
$linha[‘nome_do_campo’]
Engº Pedro Costa Acessibilidade e Programação Web 24
Exemplo
<?php $con = mysql_connect("localhost","pedro",“12345"); if (!$con) { die(‘Não se consegue ligar à base de dados’ .
mysql_error()); } mysql_select_db(“concurso", $con); $resultado = mysql_query("SELECT * FROM concorrente"); while($linha = mysql_fetch_array($resultado)) { echo $row[‘Nome'] . " " . $row['Localidade']; echo "<br />"; } ?>
Engº Pedro Costa Acessibilidade e Programação Web 25
Exercício
• Criar pequeno site a simular o concurso, em vamos as seguintes páginas:– Lista de todas as perguntas.– Lista de todos os concorrentes.– Lista de todas as categorias.– Inserir novas perguntas– Inserir novos concorrentes.– Inserir novas categorias.– Escolher o concorrente para jogar.– O concorrente responde as perguntas– Dizer se a pergunta está correcta ou não e a pontuação actual.– Pontuação final do concorrente– Ranking da pontuação