A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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ções semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 e versátil. 1

2 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

3 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

4 CONDIÇÕES NECESSÁRIAS PARA ACESSO A UMA BASE DE DADOS REMOTA (VIA WEB) 4 Pedido 2 Lado do cliente Cliente WWW Web Browser (Internet Explorer; etc.) Páginas Web interactivas Resposta Cliente WWW Web Server (Apache; IIS; etc.) Interpre tador de PHP Sistema de Gestão de Bases de Dados: MySQL; Oracle; etc. 1 Lado do Servidor Acesso a uma Base de Dados Resposta ao pedido Bases de Dados

5 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:

6 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.

7 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.

8 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.

9 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:

10 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.

11 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.

12 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.

13 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.

14 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 ): Create Table Contactos (Nome varchar(20) Primary Key, Telef Varchar(9), Varchar(30) );

15 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.

16 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, , (Bela, , (Dina, ,

17 Preparar uma base de dados no MySQL para acesso com PHP 17

18 18 Procurar.php Listar.php Inserir.php Remover.html Remover.php Página de entrada Nome: Listar Inserir Remover Procurar Esquema global de uma aplicação para interagir com uma base de dados através dos scripts PHP.

19 19 Legenda: Form action Link HTML Procurar.php Remover.htm l Script PHP Formulários HTML

20 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

21 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.

22 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:figura seguinte

23 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.

24 Página de entrada para a aplicação 24

25 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 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 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 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 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 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 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 32 Um script para Listar os dados da tabela Contactos

33 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 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 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 36 o comando mysql_connect requer os seguintes três parâmetros: Um script para Listar os dados da tabela Contactos

37 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 ; 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 38 Segue-se uma estrutura de decisão com if: Um script para Listar os dados da tabela Contactos

39 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 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 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 42 Segue-se uma instrução que faz uma consulta à tabela Contactos: Um script para Listar os dados da tabela Contactos

43 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 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 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 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 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 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 de linha. Um script para Listar os dados da tabela Contactos

49 49 Por fim, a instrução: faz com que a ligação seja fechada. Um script para Listar os dados da tabela Contactos

50 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 51 Formulário e script para inserir novos dados

52 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 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 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 55 Ainda dentro do formulário, temos um botão do tipo submit (lnserir contato): Formulário e script para inserir novos dados

56 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 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 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 59 Formulário e script para inserir novos dados

60 60 Este script começa com as seguintes instruções: Com estas instruções são criadas três variáveis ($nome; $telef e $ ) para captar os dados enviados pelo formulário anterior. Formulário e script para inserir novos dados

61 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 62 Os dados recebidos através das variáveis $nome, $telef e $ 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 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 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 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 66 Formulário e script para remover dados

67 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 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 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 70 Ainda dentro do formulário, temos um botão do tipo submit com a palavraRemover: Formulário e script para remover dados

71 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 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 73 Segue-se a conhecida instrução com que se faz a ligação ao servidor: Formulário e script para remover dados

74 74 Formulário e script para remover dados

75 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 76 que define a consulta; seguindo-se a instrução: Formulário e script para remover dados

77 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 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 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 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 81 dá-nos a indicação se foi removido algum registo ou não. Formulário e script para remover dados

82 82 Um script para procurar um nome na tabela Contactos

83 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 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 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 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 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 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 89 Um script para procurar um nome na tabela Contactos

90 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 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 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 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 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 95 Um script para procurar um nome na tabela Contactos escreve o nome (campo Nome) do registo contido na variável $registo; etc.

96 96


Carregar ppt "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ções semelhantes


Anúncios Google