apresentação este módulo permitirá aos alunos desenvolveram aplicações web com acesso a bases...
Post on 16-Apr-2015
107 Views
Preview:
TRANSCRIPT
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
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
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
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
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:
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.
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.
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.
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:
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.
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.
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.
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.
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) );
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.
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’, ‘abel@mail.pt’) ,
(‘Bela’, ‘923456789’ , ‘bela@hotmail.com’) ,
(‘Dina’, ‘960123456’, ‘dina@gmail.com’);
Preparar uma base de dados no MySQL para acesso com PHP
17
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.
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
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
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.
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:
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.
Página de entrada para a aplicação24
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
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
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
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
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
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
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
32
Um script para Listar os dados da tabela Contactos
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
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
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
36
o comando mysql_connect requer os seguintes três
parâmetros:
Um script para Listar os dados da tabela Contactos
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
38
Segue-se uma estrutura de decisão com if:
Um script para Listar os dados da tabela Contactos
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
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
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
42
Segue-se uma instrução que faz uma consulta à tabela
Contactos:
Um script para Listar os dados da tabela Contactos
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
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
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
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
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
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
49
Por fim, a instrução:
faz com que a ligação seja fechada.
Um script para Listar os dados da tabela Contactos
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
51
Formulário e script para inserir novos dados
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
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
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
55
Ainda dentro do formulário, temos um botão do tipo
submit (“lnserir contato”):
Formulário e script para inserir novos dados
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
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
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
59
Formulário e script para inserir novos dados
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
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
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
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
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
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
66
Formulário e script para remover dados
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
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
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
70
Ainda dentro do formulário, temos um botão do tipo
submit com a palavra”Remover”:
Formulário e script para remover dados
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
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
73
Segue-se a conhecida instrução com que se faz a ligação ao
servidor:
Formulário e script para remover dados
74
Formulário e script para remover dados
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
76
— que define a consulta; seguindo-se a instrução:
Formulário e script para remover dados
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
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
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
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
81
dá-nos a indicação se foi removido algum registo ou não.
Formulário e script para remover dados
82
Um script para procurar um nome na tabela Contactos
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
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
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
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
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
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
89
Um script para procurar um nome na tabela Contactos
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
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
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
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
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
95
Um script para procurar um nome na tabela Contactos
escreve o nome (campo ‘Nome’) do registo contido na variável $registo; etc.
96
top related