67
Congresso Nacional de PHP Aplicações Web usando PHP + XML + AJAX Maria Angelica de Oliveira Camargo-Brunetto [email protected] Universidade Estadual de Londrina 19 de outubro de 2008 http://www.conaphp.com.br

Aplicações Web com XML e AJAX

Embed Size (px)

DESCRIPTION

Palestra dada por Maria Angelica Brunetto no CONAPHP 2008 - Congresso Nacional de PHP que ocorreu em São Paulo nos dias 18 e 19 de Outubro dentro do CONISLI 2008

Citation preview

Page 1: Aplicações Web com XML e AJAX

Congresso Nacional de PHP

Aplicações Web usando PHP + XML + AJAX

Maria Angelica de Oliveira [email protected]

Universidade Estadual de Londrina19 de outubro de 2008

http://www.conaphp.com.br

Page 2: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 2

Agenda● Um pouco de História - Por quê PHP● Aplicações em Desenvolvimento● PHP + XML

– O que é – Quando e por quê nas aplicações desenvolvidas– Como foi usado

● PHP + AJAX● Considerações finais

Page 3: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 3

Um pouco de históriaPor quê PHP

● 2001 – aplicação Web para fins educacionais com recursos para cálculos matemáticos

● Migração de aplicações desktop para Web● 2005 – Necessidade de adaptação de

conteúdo de acordo com perfil de usuário● 2006/2007 – Necessidade de agilizar geração

de relatórios, mediante diferentes aplicações de filtros.

Page 4: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 4

Palavras-Chave● Conteúdo dinâmico: tudo que pode ser alterado

deve ser feito através do usuário (se possível)● Adaptação ao usuário: apresentações e

conteúdos apropriados ao perfil do usuário● Internacionalização: preparar aplicação para

múltiplos idiomas.● Legibilidade e Manutenibilidade: padrões de

programação PHP (PHPCodingStandard, documentação (PHPDOC) Uso de padrões (W3C).

Page 5: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 5

Laboratório de Pesquisa● Espaço para explorar soluções (precisava de

um ambiente robusto e flexível)● Web – como atividade fim e como atividade

meio (gerenciamento das atividades)● Software livre e opensource – desperta o

interesse e permite avançar sobre o que já se tem feito...

● Necessidade de usuário não tem limite ● Idéias para explorar novas soluções também

Page 6: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 6

Ponha-se no lugar do usuário

● Usuário quer facilidade de operação, rapidez, inclusão de novas funcionalidades (pra ontem...)

● É bom experimentar um pouco de cada papel:– Projetista de software– Usuário– Programador – Testador ...

Page 7: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 7

Agenda● Um pouco de História - Por quê PHP

Aplicações em Desenvolvimento● PHP + XML

– O que é – Quando e por quê nas aplicações desenvolvidas– Como foi usado

● PHP + AJAX● Considerações finais

Page 8: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 8

Aplicações em desenvolvimento

● Modificações em Software opensource – Claroline (Learning Manager System)– Nourau (Biblioteca Digital)

● Desenvolvimento de Software– Área Educacional – Anaweb– Área da Saúde – SacarWeb– Administração de Escola de Natação – AlfaWeb

Page 9: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 9

Breve apresentação dasaplicações

● Todas aplicações usam LAMP (Linux + Apache + MySQL + PHP)

● Claroline – Sistema gerenciador de cursos● SacarWeb: Sistema para controle de Avaliação

Cardiorespiratória ● AnaWeb: Sistema para auxílio no ensino de

Computação Numérica e Algébrica pela Web● AlfaWeb: Sistema para controle administrativo

de Escola de Natação

Page 10: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 10

SacarWeb

● Possui diferentes níveis de usuários– Administrador local (responsável por uma unidade

clínica)– Colaborador (introduz os dados no sistema)– Especialista da área médica

● O sistema oferece uma vasta gama de exames– Nem todos usuários usam todos

● Perfil do usuário (administrador local) – idioma, exames de seu interesse

Page 11: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 11

Arquitetura do Sacarweb

Page 12: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 12

Arquitetura do AnaWeb

Page 13: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 13

Sacarweb - Composição dos módulos

● Algumas Classes PHP Desenvolvidas

● Grafico (usa as classes JPGRAPH e JPGRAPH_LINE)● Tradução – Para auxiliar na geração de conteúdo

multidioma● Utilitários - possui métodos para converter formato de

data, notação decimal, horas em minutos, minutos em horas, remoção de caracteres estranhos em nomes de arquivos, etc)

● Páginas (PHP+HTML)● JavaScripts

Page 14: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 14

Sacarweb - Gráficos diversos

Page 15: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 15

Agenda● Um pouco de História - Por quê PHP● Aplicações em Desenvolvimento

PHP + XML – O que é – Quando e por quê nas aplicações desenvolvidas– Como foi usado

● PHP + AJAX● Considerações finais

Page 16: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 16

PHP + XML

● PHP – linguagem de programação● XML (eXtended Markup Language) é uma

linguagem de marcação – permite a livre criação e uso de tags.

● Podem ser usadas em conjunto para desenvolvimento de aplicações web, facilitando a separação de estrutura, conteúdo e apresentação.

Page 17: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 17

Estrutura – Conteúdo - Apresentação

● Estrutura ou gramática – definida por DTD (.dtd) ou XML-Schema (.xsd)

● Apresentação – define-se o quê apresentar e como através de um arquivo XSL

● Conteúdo: documento XML. ● A gramática a ser obedecida deve ser

referenciada no arquivo de documento XML e validada no programa que acessa XML

Page 18: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 18

Como PHP manipula arquivos XML

● XML é um documento que representa uma estrutura hierárquica.

● DOM (Document Object Model) é um modelo para representar um documento XML – É também uma API com funções que permitem

manipular a árvore que representa um XML disponível para diferentes linguagens de programação.

Page 19: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 19

DOM

● Classe DOMDocument ● Métodos:

– Load – carrega um documento XML– CreateElement– AppendChild (Insere um nó filho na árvore do

documento XML)– CreateTextNode– SchemaValidate

Page 20: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 20

PHP + XML

● Em PHP, um documento XML pode ser validado através do método SchemaValidate aplicado a um objeto DOMDocument

● A forma de apresentação pode ser especificada no programa PHP

Page 21: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 21

Agenda● Um pouco de História - Por quê PHP● Aplicações em Desenvolvimento● PHP + XML

– O que é Quando e por quê nas aplicações desenvolvidas

– Exemplo de uso no SacarWeb● PHP + AJAX● Considerações finais

Page 22: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 22

PHP + XML nas aplicações

● SacarWeb – Para adaptar interface

a ser apresentada– Para agregar

metadados aos recursos

– Para facilitar geração multiidioma

● AnaWeb– Para geração de

problemas exemplos– Para aplicação de um

questionário de avaliação

Page 23: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 23

PHP + XML - SACARWEB● Usando XML para gerar interfaces adaptadas

• O sistema oferece uma vasta gama de exames, mas o usuário só vai usar uma parte

● Usando XML para agregar metadados aos recursos– Usuário da área médica: como vou ter garantia que as

análises fornecidas pelo sistema coincide com as que eu faço?

● Usando XML para manipular vocabulário para geração de páginas multiidiomas– Arquivos de idiomas facilitam a criação de páginas multi-

idiomas. Tradutor pode não ter conhecimento técnico necessário para entender os arquivos

Page 24: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 24

PHP+ XML no Sacarweb● Exemplo da Classe DadosXml

– Criada para Definir um arquivo XML com os exames de interesse de um determinado usuário

● Possui os métodos– Monta Documento– Carrega Documento – chama o método

schemavalidate para validar um documento XML de acordo com um XML-schema

Page 25: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 25

Trecho da classe DadosXml

Page 26: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 26

Page 27: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 27

Page 28: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 28

XML-Schema para a seleção dos Exames

Page 29: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 29

Documento XML com exames de uma instituição

Page 30: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 30

Apresenta Exames Disponíveis

Page 31: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 31

Resultado da Interface

Page 32: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 32

Um XML-Schema para os metadados de cada exame

Page 33: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 33

Page 34: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 34

RDF e XML de um exame

Page 35: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 35

Um XML instanciado para os metadados dos exames

Page 36: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 36

Page 37: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 37

Usando XSL para apresentação de documento XML – exemplo dos metadados dos exames

Page 38: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 38

Usando XSL para apresentação de XML

Page 39: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 39

Referenciando o XSL na página dados_exame.php

Page 40: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 40

Interface com a apresentação dos metadados de um exame

Page 41: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 41

Uma classe para auxiliar na geração de conteúdo

multiidioma● Classe tradução

– Atributos: idioma, arquivo, xml– Métodos: construtor da classe

● Localiza o XML● Recupera a sentença● Retorna todas as traduções para a sentença● Retorna todas as sentenças do arquivo XML● Insere uma nova sentença● Altera uma sentença existente no arquivo XML● Remove uma sentença do arquivo XML

– Usa o schema definido em translation.xsd

Page 42: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 42

Exemplo de um arquivo XML para tradução de termos específicos da área médica e o respectivo

XML-SCHEMA)

Page 43: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 43

Page 44: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 44

Page 45: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 45

Agenda● Um pouco de História - Por quê PHP● Aplicações em Desenvolvimento● PHP + XML

– O que é – Quando e por quê nas aplicações desenvolvidas– Como foi usado

PHP + AJAX● Considerações finais

Page 46: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 46

AJAX

● Asynchronous JavaScript and XML● Não é uma nova linguagem de programação● Técnica para criar aplicações web mais

ágeis e mais interativas.● Ajax está baseado nos seguintes padrões

Web– * JavaScript– * XML– * HTML– * CSS

Page 47: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 47

JavaScript Convencional x com uso de AJAX

● JavaScript convencional- – para obter qualquer informação de um arquivo ou

bd no servidor, ou enviar informação do usuário para servidor – deve-se fazer um form HTML e GET/POST para o servidor.

– Após submissão, usuário precisa esperar pela resposta do servidor e então uma nova página será carregada com os resultados.

– Como o servidor retorna uma nova página a cada “submit” dado pelo usuário, aplicações Web convencionais tendem a ficar mais lentas.

Page 48: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 48

JavaScript Convencional x com uso de AJAX

● Usando AJAX, JavaScript se comunica diretamente com o servidor, através do objeto JavaScript XMLHttpRequest

● Com uma requisição HTTP uma página web pode fazer uma requisição para o servidor web e ter a resposta sem recarregar a página.

● A requisição de páginas dos scripts e o envio de dados para o servidor ficam em background.

Page 49: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 49

XMLHttpRequest

● JavaScript comunica-se com o servidor através do objeto XMLHttpRequest

● Usando o objeto XMLHttpRequest , é possível atualizar uma página com dados do servidor, após a página ter sido carregada.

Page 50: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 50

Propriedades importantes do objeto XMLHttpRequest

● onreadystatechange – Contém a função que recebe os dados do servidor

● readyState – 0 Requisição ainda não iniciada– 1 Requisição iniciada– 2 Requisição enviada– 3 Requisição em processamento. – 4 Requisição concluída.

● ResponseText ( o dado enviado pelo servidor pode ser recuperado por esta propriedade)–

Page 51: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 51

function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp;}

Criando o objeto XMLHttpRequest de acordo com o browser

Page 52: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 52

AJAX – Enviando uma requisição ao servidor HTTP

● Os métodos Open e Send● Open (3 argumentos)

● get/post● URL do script do lado servidor● Especifica se requisição deve ser manipulada

assincronamente (true/false) ● xmlHttp.open(“GET”, “url do script server side”,true)

● Send() - envia requisição para o servidor– xmlHttp.send(null)

Page 53: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 53

Ações no javascript c/ AJAX

● Chama GetXmlHttpObject para criar um objeto XmlHttp

● Define a URL onde está a página PHP para enviar ao servidor + um parâmetro com a opção selecionada● Executa o conteúdo de

xmlHttp.onreadystatechange=function ()quando XmlHttp.readyState=4

● Abre o XmlHttp com a url dada -XmlHttp.open● Envia uma requisição HTTP para o servidor

xmlHttp.send(null)

Page 54: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 54

Usando Ajax no SacarWeb

Page 55: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 55

Especificação de filtro dinâmico - Sacarweb

Page 56: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 56

Resultado da aplicação do filtro dinâmico - Sacarweb

Page 57: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 57

Page 58: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 58

Page 59: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 59

Usando AJAX no ALFA-WEB

● Em que situação ● O script client side (JavaScript)

–Atualiza horário● O script server side (PHP)

Page 60: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 60

Interface - AlfaWeb

Page 61: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 61

function atualizaHorario(opcao, contador) {

xmlHttp=GetXmlHttpObject(); if (xmlHttp==null) { alert ("Seu navegador nao suporta AJAX!"); return; } var url="seleciona_horario_diasemana.php?diasemana="+opcao.value; xmlHttp.onreadystatechange=function () { if(xmlHttp.readyState==4) { var objetoA = eval("document.cadastroAlunos.horario"+contador); var objetoB = eval("document.cadastroAlunos.professor"+contador); objetoA.innerHTML = xmlHttp.responseText;// recupera dados do servidor objetoB.innerHTML = ""; } } xmlHttp.open("GET",url,true); xmlHttp.send(null);}

Page 62: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 62

O script Server-side (PHP)

Page 63: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 63

Agenda● Um pouco de História - Por quê PHP● Aplicações em Desenvolvimento● PHP + XML

– O que é – Quando e por quê nas aplicações desenvolvidas– Como foi usado

● PHP + AJAXConsiderações finais

Page 64: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 64

Considerações Finais

● Software OpenSource ● PHP - Flexibilidade – Robustez - ● PHP + XML - oportunidade para personalizar

aplicações e agregar semântica ao conteúdo● PHP + AJAX – agilizar consultas● Projetos em andamento:

– Mecanismo de comunicação de erros/anormalidades por parte do usuário no SacarWeb

Page 65: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 65

URL's úteis● Claroline (www.claroline.net)● Sacarweb (www.protem.dc.uel.br/sacarweb)● Anaweb (www.protem.dc.uel.br/anaweb)● W3C (www.w3.org)● PHPDOC (www.phpdoc.org)● PHPCodingStandard

(http://www.dagbladet.no/development/phpcodingstandard/)

● Tutorial – (www.w3schools.com)

Page 66: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 66

Perguntas????

Contato: [email protected]

Page 67: Aplicações Web com XML e AJAX

19/10/08 Congresso Nacional de PHP 67