apresentação este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases...

96
Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica e versátil. 1

Upload: internet

Post on 16-Apr-2015

107 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Apresentação

Este módulo permitirá aos alunos

desenvolveram aplicações web com

acesso a bases de dados,

disponibilizando a informação de uma

forma dinâmica e versátil.

1

Page 2: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Objectivos

Com este módulo pretende-se que o aluno seja capaz de:

compreender e enumerar as necessidades de se desenvolverem aplicações com recurso a bases de dados remotas

utilizar a linguagem de script na ligação remota a bases de dados

criar sites dinâmicos e versáteis recorrendo a uma linguagem de script e a bases de dados

2

Page 3: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Conteúdos

Estrutura da linguagem de script Manipulação de dados com a linguagem de

script Ligação a bases de dados Expressões SQL; Interacção dos resultados das consultas com o

código da linguagem de script Fases de desenvolvimento de uma aplicação

com recurso a bases de dados

3

Page 4: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

CONDIÇÕES NECESSÁRIAS PARA ACESSO A UMA BASE DE DADOS REMOTA (VIA WEB)

4

Pedido2

Lado do cliente

Páginas Web interactivas

Páginas Web interactivas

Resposta

Cliente WWWCliente WWW

Web ServerWeb Server

(Apache; IIS; etc.)

(Apache; IIS; etc.)

Interpretador de PHP Sistema de Gestão

de Bases de Dados: MySQL;

Oracle; etc.

1

Lado do Servidor

3

456

Acesso a uma Base de Dados

Resposta ao pedido

Bases de Dados

Page 5: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

5

A figura anterior mostra-nos uma representação

esquemática do funcionamento de uma

consulta a uma base de dados via web com

scripts PHP. Esse processo passa pelas

seguintes fases:

Page 6: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

6

1. O web browser ou cliente web (por exemplo, o lnternet Explorer) envia um pedido, através de um formulário, para acesso a uma base de dados ligada a um servidor web.

2. O servidor web recebe a comunicação dos dados do formulário (pelo método Post ou Get), deteta a indicação de um script PHP (no atributo action do formulário) e chama esse script para que ele processe os dados.

Page 7: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

7

3. O interpretador de PHP faz a interpretação do script mencionado e deteta um pedido de ligação a um sistema de bases de dados; se a ligação for efetivada, envia-lhe um comando SQL a executar na base de dados em causa.

4. O servidor de bases de dados (por exemplo, MySQL) recebe o comando SQL, executa-o na base de dados visada e, se houver resultados a devolver, esses resultados são enviados ao interpretador de scripts PHP.

Page 8: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

8

5. O interpretador de scripts PHP recebe os resultados enviados pelo servidor da base de dados e prepara esses resultados para os entregar ao servidor web.

6. O servidor web recebe os dados do interpretador de PHP, insere-os num documento HTML ou página web e envia essa informação ao cliente (web browser) que a solicitou.

Page 9: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

9

Vejamos agora os passos ou etapas que um

programador deste tipo de serviços web deve

ter em conta ao escrever scripts PHP para

interagir com bases de dados:

Page 10: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Fases do processo de consulta a uma base de dados via web

10

1. Captar os dados enviados com o formulário do utilizador e verificar se esses dados satisfazem os requisitos necessários.

2. Estabelecer uma ligação com o sistema de bases de dados que estiver a ser utilizado.

3. Elaborar e aplicar um determinado comando SQL.4. Preparar os dados obtidos do servidor da base de

dados para os passar ao servidor web num formato compatível com HTML e uma boa apresentação para o cliente que os vai receber.

Page 11: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

11

Neste módulo, vamos criar uma aplicação para

exemplificar como se acede a uma base de dados no

MySQL através de scripts em PHP.

Para isso vamos começar por recordar como se cria

uma base de dados no MySQL.

Page 12: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

12

As figuras seguintes mostram as operações principais

para criarmos uma base de dados chamada Pessoal

com uma tabela chamada Contactos.

Nos exercícios que vamos apresentar nas próximas

páginas, vamos usar apenas esta tabela.

Page 13: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

13

A instrução Create Database Pessoal dá início à criação

da base de dados com o nome Pessoal. E a instrução

Use Pessoal permite-nos trabalhar com essa base de

dados.

Page 14: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

14

A seguinte instrução cria a tabela Contactos (com os

campos Nome, Telef e Email):

Create Table Contactos

(Nome varchar(20) Primary Key,

Telef Varchar(9),

Email Varchar(30) );

Page 15: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

15

O campo Nome está definido como chave primária

para evitar dois nomes iguais.

Page 16: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

16

A seguinte instrução insere, na tabela Contactos, um conjunto de três registos:

Insert Contactos Values

(‘Abel’ , ‘912345678’, ‘[email protected]’) ,

(‘Bela’, ‘923456789’ , ‘[email protected]’) ,

(‘Dina’, ‘960123456’, ‘[email protected]’);

Page 17: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Preparar uma base de dados no MySQL para acesso com PHP

17

Page 18: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

18

Procurar.phpProcurar.php

Listar.phpListar.php

Inserir.php

Inserir.phpInserir.php

Remover.html

Remover.phpRemover.php

Página de entrada

Nome:

ListarInserir

Remover

Procurar

Esquema global de uma aplicação para interagir com uma base de dados através dos scripts PHP.

Page 19: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Esquema global de uma aplicação para interagir com uma base de dados através dos scripts PHP.

19

Legenda:

Form action

Link HTML

Procurar.phpProcurar.php

Remover.html

Script PHP

Formulários HTML

Page 20: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA ACESSO REMOTO A UMA BASE DE DADOS

20

Neste capítulo, vamos desenvolver uma aplicação para

acesso remoto (via web) à base de dados criada no

diapositivo anterior. Para isso, vamos criar algumas

páginas HTML com formulários e escrever alguns

scripts em PHP

Page 21: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA ACESSO REMOTO A UMA BASE DE DADOS

21

A figura anterior apresenta um esquema global da

aplicação. Como página de entrada desta aplicação,

vamos criar um documento HTML muito simples

com o nome Entrada.html.

Page 22: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA ACESSO REMOTO A UMA BASE DE DADOS

22

Essa página contém um formulário com um campo (input, do

tipo “text”) para a introdução de um nome a procurar na

base de dados e um botão de comando que aciona essa

procura, através de um script chamado procurar.php

Além disso, conforme se pode ver na figura seguinte, à direita,

a página de entrada vai conter também três links para

podermos aceder a outras secções da nossa aplicação:

Page 23: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA ACESSO REMOTO A UMA BASE DE DADOS

23

listar.php — é um link para um script que faz listar todos os

Contactos na base de dados,

inserir.html — é um link para um formulário onde podemos

inserir novos dados; este formulário aciona o script

inserir.php que insere os dados na tabela Contactos;

remover.html — é um link para um formulário que pede um

nome a remover; este formulário aciona o script

remover.php que remove efetivamente o contato.

Page 24: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

Página de entrada para a aplicação24

Page 25: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

25

Na figura anterior, temos o documento entrada.html que

vai funcionar como página de entrada na nossa

aplicação. Nesta página, temos um formulário com o

seguinte cabeçalho:

Página de entrada para a aplicação

Page 26: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

26

Estamos a prever enviar dados pelo método post que

deverão ser tratados por um script PHP com o nome

procurar.php.

Este ficheiro (procurar.php) estará dentro de uma pasta

com o nome /aplic/ situada na pasta /htdocs/ de

localhost — o Apache Server. Daí o endereço que

aparece em action:

Página de entrada para a aplicação

Page 27: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

27

Os restantes ficheiros da aplicação serão todos colocados

dentro dessa pasta /htdocs/aplic para uma melhor

identificação e utilização.

Dentro do formulário, temos o seguinte texto e elemento

input do tipo text para a introdução do nome a enviar

para procurar na base de dados:

Página de entrada para a aplicação

Page 28: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

28

Ainda dentro do formulário, temos um botão do tipo

submit com a palavra “ Procurar”:

Página de entrada para a aplicação

Page 29: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

29

Para além destes elementos, temos ainda três links para as

outras secções da aplicação:

Este link passa-nos para um outro script da nossa aplicação

— listar.php — que apresenta todos os registos da tabela

Contactos.

Página de entrada para a aplicação

Page 30: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

30

Este link envia-nos para a página com o nome inserir.html

— a partir da qual poderemos inserir novos dados na

tabela Contactos.

Página de entrada para a aplicação

Page 31: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

31

Este último link remete-nos para a página com o nome

remover.html — onde podere- mos indicar um nome a

remover dos nossos contactos.

Página de entrada para a aplicação

Page 32: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

32

Um script para Listar os dados da tabela Contactos

Page 33: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

33

Na figura anterior, temos o script listar.php que faz listar os

dados da tabela Contactos da nossa base de dados

Pessoal (criada anteriormente).

Recordemos que este script é chamado a partir da página

de entrada da nossa aplicação (criada na página

anterior), através do link:

Um script para Listar os dados da tabela Contactos

Page 34: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

34

o script começa com a seguinte instrução:

Esta instrução procura efetuar uma conexão ou ligação ao

servidor MySQL, através do servidor Apache. Vejamos os

seus elementos:

Um script para Listar os dados da tabela Contactos

Page 35: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

35

$conexao — é uma variável criada por nós para captar o resultado da ligação ao servidor; o seu conteúdo permite-nos saber se a ligação se efetuou ou não, além disso, vai ser usada num outro comando para ligar à base de dados;

mysql_connect — é um comando PHP para estabelecer uma ligação ao MySQL.

Um script para Listar os dados da tabela Contactos

Page 36: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

36

o comando mysql_connect requer os seguintes três

parâmetros:

Um script para Listar os dados da tabela Contactos

Page 37: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

37

‘adress’ — indica o endereço do servidor; neste caso, como estamos a utilizar o servidor local (no próprio computador), o endereço que indicámos foi ‘127.0.0.1’; também poderia ser ‘localhost’ (servidor local);‘user’ — é um nome de utilizador do MySQL autorizado a entrar no sistema; neste exemplo, indicámos o superutilizador ‘root’; mas, numa situação real, é preferível criar um utilizador no MySQL apenas com direitos sobre a base de dados que se vai utilizar;‘password’ — refere-se à palavra-passe do utilizador mencionado no ponto anterior.

Um script para Listar os dados da tabela Contactos

Page 38: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

38

Segue-se uma estrutura de decisão com if:

Um script para Listar os dados da tabela Contactos

Page 39: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

39

A variável $conexao terá um valor positivo se a ligação teve

sucesso. A expressão !$conexao corresponde a uma

falha na ligação. E, se for esse o caso, é escrita a

mensagem “Falha na ligação” e uma indicação do

servidor acerca do erro ocorrido com mysql_error().

Além disso o script termina por ação do comando PHP

exit.

Um script para Listar os dados da tabela Contactos

Page 40: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

40

Se a ligação se efetuou com êxito, passamos às instruções

abrangidas pela cláusula else. Aí, recomeçamos com a

seguinte instrução:

Um script para Listar os dados da tabela Contactos

Page 41: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

41

Esta instrução usa o comando mysql_select_db para

indicar (selecionar) a base de dados a que nós queremos

ligar. Neste caso, a nossa base de dados chama-se

Pessoal. Também é necessário indicar a variável com que

efectuámos a ligação ($conexao).

Um script para Listar os dados da tabela Contactos

Page 42: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

42

Segue-se uma instrução que faz uma consulta à tabela

Contactos:

Um script para Listar os dados da tabela Contactos

Page 43: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

43

Neste caso, também é usada uma variável para captar o

resultado — a variável $resultado.

A função mysql_query() destina-se (como o nome sugere)

a fazer consultas ao MySQL. Dentro dos parênteses

curvos deve ser indicada uma string com uma instrução

em SQL. Neste caso, foi indicada a seguinte consulta:

Um script para Listar os dados da tabela Contactos

Page 44: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

44

ou seja, pretendemos ver todos os registos existentes na

tabela Contactos.

Segue-se um ciclo while que se destina a percorrer os

registos captados, na instrução anterior, pela variável

$resultado:

Um script para Listar os dados da tabela Contactos

Page 45: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

45

No cabeçalho do ciclo foi criada a variável $registo que

recebe cada registo captado na variável $resultado

através da função:

Um script para Listar os dados da tabela Contactos

Page 46: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

46

A função mysql_fetch_array() permite aceder a cada um

dos conjuntos de dados do array associativo que é a

variável $resultado. Assim, a variável $registo passa a

ser também um array associativo que, neste caso,

contém os dados de um registo da tabela Contactos.

Enquanto houver registos no array $resultado, eles são

captados pela variável $registo.

Um script para Listar os dados da tabela Contactos

Page 47: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

47

Em seguida, fazemos escrever cada campo do registo

captado; por exemplo, a instrução:

—faz escrever o campo Nome de um registo captado da

tabela Contactos.

Um script para Listar os dados da tabela Contactos

Page 48: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

48

Repare-se que é necessário incluir o nome dos campos (da

tabela Contactos) dentro de apóstrofes e dentro de

parênteses retos; os nomes dos campos funcionam como

chaves para aceder aos dados que estão realmente dentro

desses campos.

Ainda dentro do ciclo, a instrução:

apenas acrescenta uma quebra <br> de linha.

Um script para Listar os dados da tabela Contactos

Page 49: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

49

Por fim, a instrução:

faz com que a ligação seja fechada.

Um script para Listar os dados da tabela Contactos

Page 50: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

50

Repare-se também como é possível terminar o código do

script e acrescentar elementos HTML para serem

apresentados na página. Neste caso, acrescentámos um

link para podermos voltar à página de entrada:

Um script para Listar os dados da tabela Contactos

Page 51: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

51

Formulário e script para inserir novos dados

Page 52: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

52

Na figura anterior, temos o documento inserir.html que

contém um formulário destinado a receber novos dados

para inserir na nossa tabela de Contactos.

Esta secção da nossa aplicação é chamada a partir da

página de entrada através do link:

Formulário e script para inserir novos dados

Page 53: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

53

Na página inserir.html, temos um formulário com o seguinte

cabeçalho:

Estamos a prever enviar dados pelo método post — que

deverão ser tratados por um script PHP com o nome

inserir.php.

Formulário e script para inserir novos dados

Page 54: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

54

Estes ficheiros (inserir.html e inserir.php) serão guardados

na pasta com o nome /aplic/ situada na directoria

/htdocs/ do servidor local.

Dentro do formulário, temos os seguintes elementos input

do tipo text para a introdução dos dados de novos

contactos:

Formulário e script para inserir novos dados

Page 55: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

55

Ainda dentro do formulário, temos um botão do tipo

submit (“lnserir contato”):

Formulário e script para inserir novos dados

Page 56: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

56

Para além destes elementos, temos também um link para

voltar à página de entrada:

Formulário e script para inserir novos dados

Page 57: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

57

Na figura anterior, à direita, podemos ver o formulário

aberto no lnternet Explorer, já com alguns dados

introduzidos para exemplificação.

Agora, vamos supor que utilizamos o botão “lnserir

contacto” (que é um botão do tipo “submit”) para enviar

os dados para o script inserir.php e, daí para a nossa

base de dados.

Formulário e script para inserir novos dados

Page 58: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

58

O código do ficheiro inserir.php é apresentado na figura

seguinte. Nessa mesma figura, à direita, podemos ver o

lnternet Explorer com o resultado do envio dos dados

inseridos na figura anterior.

Formulário e script para inserir novos dados

Page 59: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

59

Formulário e script para inserir novos dados

Page 60: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

60

Este script começa com as seguintes instruções:

Com estas instruções são criadas três variáveis ($nome;

$telef e $email) para captar os dados enviados pelo

formulário anterior.

Formulário e script para inserir novos dados

Page 61: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

61

A instrução seguinte começa com if (!$nome) e avalia se o

campo $nome está vazio; se for esse o caso, é

apresentada uma mensagem e o script termina a

execução com o comando exit.

Portanto, só quando não se verifica aquela situação é que

as operações continuam.

Formulário e script para inserir novos dados

Page 62: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

62

Os dados recebidos através das variáveis $nome, $telef e

$email são escritos na janela do browser apenas para se

ter uma indicação que eles foram recebidos no

interpretador PHP.

Em seguida, temos a já conhecida ligação ao servidor com:

Formulário e script para inserir novos dados

Page 63: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

63

Se não houver problemas com aquela ligação, é

selecionada da base de dados “Pessoal”:

Segue-se uma instrução que cria a variável $insere para

receber o comando SQL com que vamos efetuar a

inserção na tabela Contactos:

Formulário e script para inserir novos dados

Page 64: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

64

Repare-se que os nomes das variáveis são incluídos dentro

de apóstrofes, aspas e pontos. A inserção só é feita com

a instrução seguinte:

Formulário e script para inserir novos dados

Page 65: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

65

O que efetua a inserção é mysql_query().

Esta é a já conhecida função PHP que executa queries no

MySQL. Neste caso, o comando SQL vai dentro da variável

$insere.

Se o resultado da operação anterior for positivo, a variável

$resultado tem um valor igual a 1 e isso permite-nos saber

se podemos informar que os dados foram (ou não)

inseridos na nossa base de dados.

Formulário e script para inserir novos dados

Page 66: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

66

Formulário e script para remover dados

Page 67: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

67

Na figura anterior, temos o documento com o nome

remover.html, contendo um formulário que pede um

nome, para eliminar o correspondente registo na tabela

Contactos.

Esta secção da nossa aplicação é chamada a partir da

página de entrada, através do link:

Formulário e script para remover dados

Page 68: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

68

À semelhança dos anteriores, o formulário desta página tem

o seguinte cabeçalho:

Neste caso, será chamado o script PHP com o nome

remover.php.

Formulário e script para remover dados

Page 69: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

69

Tal como nos casos anteriores, estes ficheiros

(remover.html e remover.php) serão guardados na

pasta /aplic/ na diretoria /htdocs/.

No formulário, temos um elemento input do tipo text para

a introdução do nome a remover:

Formulário e script para remover dados

Page 70: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

70

Ainda dentro do formulário, temos um botão do tipo

submit com a palavra”Remover”:

Formulário e script para remover dados

Page 71: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

71

Na figura anterior, à direita, podemos ver o formulário

aberto no lnternet Explorer, com um nome já

introduzido para exemplificação.

O código do ficheiro remover.php é apresentado na figura

seguinte. Nessa mesma figura, à direita, podemos ver o

lnternet Explorer com o resultado da execução do script.

Este script começa com a seguinte instrução:

Formulário e script para remover dados

Page 72: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

72

Como já vimos, esta instrução cria uma variável ($nome) para

captar o dado enviado pelo formulário anterior.

A estrutura if que se segue avalia se o campo nome está vazio

e, se for o caso, pede para voltar atrás e termina o script

com exit.

Se, efetivamente, foi recebido um nome a remover, o script

continua com as instruções seguintes, começando por

escrever na janela do browser o nome recebido:

Formulário e script para remover dados

Page 73: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

73

Segue-se a conhecida instrução com que se faz a ligação ao

servidor:

Formulário e script para remover dados

Page 74: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

74

Formulário e script para remover dados

Page 75: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

75

Se não houver problemas com aquela ligação, é

selecionada da base de dados “Pessoal”:

Em seguida, vamos controlar o número de registos antes e

depois da operação de remoção. Para isso, começamos

com a instrução:

Formulário e script para remover dados

Page 76: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

76

— que define a consulta; seguindo-se a instrução:

Formulário e script para remover dados

Page 77: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

77

A função predefinida mysql_num_rows() devolve o

número de linhas (rows) encontra- das numa consulta

(neste caso, na variável $resultado). Assim, a variável

$nr_antes conterá o número de registos na tabela

Contactos, antes das operações que se seguem. Essas

operações começam com:

Formulário e script para remover dados

Page 78: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

78

Esta instrução cria a variável $remove que recebe a string

com o comando SQL.

Nota: Repare-se como a variável $nome é incluída na string

do comando SQL. Temos de incluir o nome da variável

dentro de apóstrofes, aspas e pontos.

Formulário e script para remover dados

Page 79: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

79

A instrução que se segue:

utiliza a função do PHP mysql_query() com a referida

variável $remove para concretizar o comando SQL

(Delete) na base de dados.

Formulário e script para remover dados

Page 80: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

80

As duas instruções que se seguem aplicam de novo o comando SQL

“select * from Contactos” para determinar o número de registos

existentes na tabela Contactos, após a operação de remoção.

Agora, a variável $nr_depois conterá o número de registos depois da

operação de remoção. Se não ocorreu nenhuma remoção, a

diferença entre $nr_antes e $nr_depois será 0 (zero). Se ocorreu

alguma remoção essa diferença será 1. Assim, a última instrução

do script

Formulário e script para remover dados

Page 81: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

81

dá-nos a indicação se foi removido algum registo ou não.

Formulário e script para remover dados

Page 82: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

82

Um script para procurar um nome na tabela Contactos

Page 83: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

83

Na figura anterior, é apresentado o documento entrada.html

e o seu formulário, com o seguinte cabeçalho:

Um script para procurar um nome na tabela Contactos

Page 84: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

84

Ainda na figura anterior, à direita, podemos ver o formulário

com o campo Nome, onde foi escrito o nome Abel.

O botão “ Procurar” é um botão do tipo “submit”. Como se

sabe, isto quer dizer que, quando esse botão for utilizado,

ocorre a ação prevista no cabeçalho do formulário e os

dados são enviados para serem processa- dos pelo script

com o nome procurar.php.

Um script para procurar um nome na tabela Contactos

Page 85: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

85

Vejamos então como deverá ser o código deste script. Na

figura seguinte, podemos ver o código do ficheiro

procurar.php. À direita, na mesma figura, temos o

resultado da execução do script para o dado inserido no

exemplo da figura anterior (com o nome Abel).

O script começa com a seguinte instrução:

Um script para procurar um nome na tabela Contactos

Page 86: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

86

Esta instrução cria a variável $nome para receber o conteúdo do

campo ‘nome’ vindo do formulário da página de entrada.

A instrução seguinte:

escreve uma string indicada por nós, seguida do nome captado na

variável $nome — usando o sinal . (ponto) para juntar as strings.

Um script para procurar um nome na tabela Contactos

Page 87: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

87

O script continua com a instrução que procura fazer a ligação

ao servidor MySQL:

Segue-se a avaliação, através da estrutura if, se a ligação

ocorreu com sucesso ou não:

Um script para procurar um nome na tabela Contactos

Page 88: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

88

Se a ligação não se tiver concretizado, é escrita a mensagem

indicada e o script termina com o comando PHP exit.

Um script para procurar um nome na tabela Contactos

Page 89: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

89

Um script para procurar um nome na tabela Contactos

Page 90: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

90

O passo seguinte é selecionar a base de dados em que

pretendemos efetuar a consulta:

A função PHP mysql_select_db() seleciona a base de dados que

indicarmos dentro dos parênteses curvos. Aí, é também

indicada a variável que captou o resultado da conexão.

Um script para procurar um nome na tabela Contactos

Page 91: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

91

Em seguida, vamos escrever o comando SQL para executar na

base de dados visada. Neste caso, começamos por criar uma

variável à qual atribuímos o comando SQL:

portanto, pedimos para selecionar os registos da tabela

Contactos em que o campo nome seja igual ao conteúdo da

variável $nome.

Um script para procurar um nome na tabela Contactos

Page 92: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

92

A instrução seguinte:

- utiliza a variável $resultado para receber o resultado da

execução da consulta (query).

A instrução que se segue

Um script para procurar um nome na tabela Contactos

Page 93: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

93

utiliza a variável $n_registos para saber quantos registos

(rows) foram encontrados na consulta anterior. Este valor é

dado pela função predefinida do PHP mysql_num_rows().

Segue-se uma estrutura condicional que começa com if

($n_registos == 0). Se o número de registos for 0, o nome

não foi encontrado e apenas é escrita essa informação.

Caso contrário, vamos escrever os dados encontrados. Para

tal é usada a instrução:

Um script para procurar um nome na tabela Contactos

Page 94: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

94

A função PHP mysql_fetch_array() permite captar os dados

no array do resultado da consulta feita com mysql_quer().

A partir daí, a variável $registo contém os dados à maneira

de um registo associativo. Por isso, a instrução

Um script para procurar um nome na tabela Contactos

Page 95: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

95

Um script para procurar um nome na tabela Contactos

escreve o nome (campo ‘Nome’) do registo contido na variável $registo; etc.

Page 96: Apresentação Este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases de dados, disponibilizando a informação de uma forma dinâmica

96