Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva...

25
Engº Pedro Costa Acessibilidade e Programação We b 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql

Transcript of Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva...

Page 1: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

Engº Pedro Costa Acessibilidade e Programação Web 1

Workshop

Comunicação Inclusiva

Acessibilidade e Programação Web

Mysql

Page 2: Engº Pedro CostaAcessibilidade 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)

Page 3: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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.

Page 4: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 5: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 6: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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.

Page 7: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 8: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 9: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 10: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 11: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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.

Page 12: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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.

Page 13: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 14: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 15: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 16: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 17: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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’;

Page 18: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 19: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 20: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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;

Page 21: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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

Page 22: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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.

Page 23: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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’]

Page 24: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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 />"; } ?>

Page 25: Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web Mysql.

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