comunicação digital – elementos de ti banco de dados implementação e integração com...
TRANSCRIPT
Comunicação Digital – Elementos de TI
Banco de Dadosimplementação e integração
com aplicações
Prof.: Sandro Rigo
Banco de dados: implementação e integração
Roteiro:
• Revisão de conceitos básicos
• Caso de estudo: filmes
• BD Filmes / RSS
• Acesso com HTML/PHP
• Exercícios
Arquitetura Cliente Servidor na Internet
Servidor Web+
http
Cliente+
http
1 2
34
http://www.unisinos.br
<html>...</html>
MS Internet ExplorerNetscape NavigatorOperaNeoPlanetAmaya.......
MS IISApacheNestcape
....... <xml>...</xml>
xml....
Arquitetura Cliente Servidor na Internet
Servidor Web, documentos e scripts
Internet:
Requisições http
Filtros WWW
scripts
Internet Information Server
CGI
html....
Cliente Web: linguagens de script
Usuário
Navegador Web Server
JavascriptVBScript
html
Documentos HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <TITLE>Primeiro documento html</TITLE> </HEAD> <BODY> <p>Primeiro parágrafo</p>
<h1>Título grande</h1> <h2 align=center>Título centralizado</h2>
</BODY> </HTML>
Documentos HTML
HTML - Editores WYSIWYG
HTML - Editores WYSIWYG
IntroduçãoEditores WYSIWYG
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>Untitled</title></head><body><script language="JavaScript" type="text/javascript"><!--// original code by Bill Trefzger 12/12/96function go1(){if (document.selecter1.select1.options[document.selecter1.select1.selectedIndex].value != "none") {location = document.selecter1.select1.options[document.selecter1.select1.selectedIndex].value
}}
//--></script><script language="JavaScript" type="text/javascript"><!--document.write('<form name="selecter1"><select name="select1" size=1>');document.write('<option value=none>Select your destination');document.write('<option value=none>--------------------');document.write('<option value="www.local1.br">U1');document.write('<option value="www.l2.com">R5');document.write('</select>');document.write('<input type="button" value="Go" onclick="go1()">');document.write('</form>');// end hiding contents --></script></body></html>
Documentos HTMLArquivo 1:
<a href="descricao.htm#parte1”>Parte 1</a> <br> <a href="descricao.htm#parte2”>Parte 2</a> <br>
Arquivo 2 (descricao.htm)
.....<a name="parte1"> ......
.....<a name="parte2"> ......
CSSP – Cascading Style Sheets Positioning
x
yz
(0,0) (400,0)
(0,200) (400,200)
CSS: Posicionamento
PROPRIEDADES:
position absolute relative staticleft valor porcentagem autotop valor porcentagem autowidth valor porcentagem autoheight valor porcentagem autoclip retângulo autooverflow none clip scrollz-index auto valorvisibility inherit visible hidden
width
heightclip
CSS: Posicionamento
CSS: Posicionamento
<body bgcolor="#FFFFFF"><div id="Layer1“ style="position:absolute; width:200px; height:115px; z-index:1; left: 240px; top: 176px; overflow: scroll; clip: rect(10 100 50 12); visibility: visible; background-color: #6699FF; layer-background-color: #6699FF; border: 1px none #000000"></div></body>
CSS: Posicionamento
z-index=1
z-index=0
CSS: Posicionamento
CSS: Posicionamento
CSS: Posicionamento
CSS: Posicionamento
CSS: Posicionamento
CSS: Posicionamento
CSS: Posicionamento <div id="imagem"> <img src="seta.gif" width=50 height=31 border=0></div>
<form name="move" action="javascript:movimenta()">X:<input type=text size=4 name="p_x" value=20><br>Y:<input type=text size=4 name="p_y" value=10><br><input type=submit value="muda"><input type=button value="volta ao início“ onclick="javascript:retorna()"></form>
CSS: Posicionamento
<script language="javascript">function movimenta(){
a_p_x=document.forms[0].elements[0].value;a_p_y=document.forms[0].elements[1].value;imagem.style.left = a_p_x;imagem.style.top = a_p_y;
}
<div id="imagem"> <img src="seta.gif" width=50 height=31 border=0></div>
<form name="move" action="javascript:movimenta()">X:<input type=text size=4 name="p_x" value=20><br>Y:<input type=text size=4 name="p_y" value=10><br><input type=submit value="muda"><input type=button value="volta ao início“ onclick="javascript:retorna()"></form>
<style type="text/css">#imagem {position:relative;top:10; left:10}</style>
CSS: Posicionamento
<div id="imagem"> <img src="seta.gif" width=50 height=31 border=0></div>
<form name="move" action="javascript:movimenta()">X:<input type=text size=4 name="p_x" value=20><br>Y:<input type=text size=4 name="p_y" value=10><br><input type=submit value="muda"><input type=button value="volta ao início“ onclick="javascript:retorna()"></form>
CSS: Posicionamento
<style type="text/css">#imagem {position:relative;top:10; left:10}
</style><script language="javascript">function movimenta(){
a_p_x=document.forms[0].elements[0].value;a_p_y=document.forms[0].elements[1].value;imagem.style.left = a_p_x;imagem.style.top = a_p_y;
}function retorna(){
imagem.style.top = 10;imagem.style.left = 20;imagem.style.visibility = 1;
}
PHP
- Execução no servidor web- Integração com HTML
<html><head><title>Teste com PHP</title></head><body> <?php echo “Primeira mensagem!<P>"; ?></body></html>
PHP
Exemplo com formulário:
<form action=“teste.php3" method="POST"> Nome: <input type=text name=nome> Idade: <input type=text name=idade> <input type=submit> </form>
Teste.php3:....Seu nome é: <?php echo $nome?>. Você tem mesmo <?php echo $idade?> anos de idade?....
Suporte em PHP para acesso a BD
$pguser=“nome_usuario";$pgpass=“senha_usuario";$db = mysql_connect("freesql.org", $username, $password); ...$query="select * from tabela1";$resultado=mysql_query($query);…$nro_registros=pg_num_rows($resultado);for($i=0; $i<$nro_registros;$i++){
$linha = pg_fetch_row($conn, $i);echo(“reg.:”.$i.” id = “.$linha[0].” nome= “.$linha[1].”<br>”);
}
SGBD
Aplicação exemplo
Insere Lista
lista.php
Index.htm
insere.php
Lista.....
insere.htm
lista.htm
Formulário
Resultado.....
inseriu.htm
Uso de XML (eXtensible Markup Language):
Exemplo de documento xml:
<?xml version="1.0" standalone="no"?><!DOCTYPE mail system “http://infowest.com/DTDS/mail.dtd”><Mail> <From>Autor</From> <To>Alguém</To> <-- ISTO É UM COMENTÁRIO --> <Date> Terça - 14 de agosto de 2000</Date> <Subject>Introdução ao XML </Subject> <body>Comentários:<p align=“left”>Obrigado pela leitura<Br/> desta introdução</p> </body></Mail>
Características:
Um documento VoiceXML descreve:• Texto sintetizado (prompts) • Saídas de áudio e stream• Reconhecimento de palavras e frases• Reconhecimento de teclas pressionadas• Gravação de entradas faladas• Controle do fluxo de diálogo• Controle do telefone
Interação por Voz – Voice XML
Modelo: Servidor de documentos
Interpretador VoiceXML (gateway)
clientes
Pedido(voz)Resposta (voz)
Interação por Voz – Voice XML
Exemplo uso do voicexml
<?xml version="1.0"?> <vxml version="2.0"> <menu> <prompt> Say one of: <enumerate/> </prompt> <choice next="http://www.sports.example/start.vxml"> Sports </choice> <choice next="http://www.weather.example/intro.vxml"> Weather </choice> <choice next="http://www.news.example/news.vxml"> News </choice> <noinput>Please say one of <enumerate/></noinput> </menu> </vxml>
Interação por Voz – Voice XMLResultado:Computador:Say one of: Sports; Weather; News.Humano:AstrologyComputador :I did not understand what you said. Computador :Say one of: Sports; Weather; News.Humano:SportsComputador :(acessa http://www.sports.example/start.vxml)
Exemplo 2:<form id=”informacao_do_tempo">
<block>Bem vindo ao serviço de informações de tempo.</block>
<field name=”estado"> <prompt>Qual estado?</prompt>
<grammar src="state.gram" type="application/x-jsgf"/>
<catch event=”ajuda"> Por favor, fale o nome do estado onde você está.</catch>
</field>
</form>
Interação por Voz – Voice XML
1. RSS
RSS:“Rich Site Summary”“RDF Site Summary”“Really Simple Syndication”
Origem: UserLand (1997) Netscape “channels” para o Netcenter
Referência:http://my.netscape.com/publish/formats/rss-0.91.dtd
1.RSS
“Syndication” – compartilhamento/troca de conteúdo entre sites- notícias- listas de eventos- atualizações em projetos- avisos- informação corporativa- ....
“Push” – envio automático de informação, mediante um cadastro prévio do interessado
1. RSS
Sites “usuários”:• Netscape Netcenter• Userland Software• Slashdot• Wired News• Linux Today• diversos jornais (CNN, Reuters, ...)• portais ...• blogs ...
1.RSS
“Syndication”
Métodos:- “copy-paste”- APIs- Acesso a bases de dados- Aplicações específicas
OU:- RSS
1.RSS
Roteiro básico:
- o site de origem disponibiliza as notícias em rss, xml, texto ou outro formato.- se necessário é realizada uma transformação (texto -> rss, BD -> rss, html->rss, .....)- o documento no formato rss é publicado na web- leitores de rss realizam a verificação e informam usuários cadastrados
1.RSS
Leitores:
FeedReader (http://www.feedreader.com)AmphetaDesk BeaverFigby dynamicobjects spacesForumZilla Headline ViewerHotSheet MeerkatMy UserLand News Is FreeNovobot PeerkatRadio UserLand rss2emailSOAPClient.com RSS News Reader
(fonte: http://blogspace.com/rss/readers)
1. RSS
1. RSS
1. RSS
1. RSS
1.RSSSintaxe básica:
<?xml version="1.0"?> <!DOCTYPE rss PUBLIC "-//Netscape
Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/ formats/rss-
0.91.dtd">
<rss version="0.91" encoding= "ISO_8859-1"> <channel ><item>.......</item</channel ></rss>
1. RSS
http://my.netscape.com/publish/formats/rss-0.91.dtd
........<!ELEMENT rss (channel)> <!ATTLIST rss version CDATA #REQUIRED> <!ELEMENT channel (title | description | link | language | item+ | rating? | image? | textinput? | copyright? | pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? | skipHours? | skipDays?)*> <!ELEMENT title (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT link (#PCDATA)> <!ELEMENT image (title | url | link | width? | height? | description?)*> <!ELEMENT url (#PCDATA)> <!ELEMENT item (title | link | description)*> <!ELEMENT textinput (title | description | name | link)*> <!ELEMENT name (#PCDATA)>.....
1.RSSSintaxe básica:<channel >
• title – o nome do canal• description – descrição breve do canal• link – um link html para o site • language – linguagem (my.netscape.com) • item – um ou mais elementos “item”
Exemplo:<channel> <title>Web Insider</title>
<link>http://webinsider.globo.com/main.php</link>
<description>Web Insider</description> <publisher>Web Insider</publisher> <language>pt</language>
1.RSSSintaxe básica:<item >
• title – o nome do item• description – descrição breve do item• link – um link html para o local referenciado
Exemplo:<item> <title>Novos players da TV brasileira</title>
<link>http://www.webinsider.com.br/vernoticia.php?id=1823</link>
<description> Boni, Gugu e J. Hawilla. Por Sergio Kulpas
</description></item>
1. RSS<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>Web Insider</title> <link>http://webinsider.globo.com/main.php</link>
<description>Web Insider</description> <publisher>Web Insider</publisher>
<language>pt</language>
<item>
<title>Novos players da TV brasileira</title>
<link>http://www.webinsider.com.br/vernoticia.php?id=1823</link>
<description> Boni, Gugu e J. Hawilla. Por Sergio Kulpas </description>
</item>
</channel>
</rss>
1. RSSOutros exemplos: uso com o Dublin CoreMódulo RSS-DC: http://web.resource.org/rss/1.0/modules/dc/
Metadados p/ descrição de documentosExemplo:
1. RSS<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" > <channel rdf:about="http://example.com/news.rss"> <title>Example Channel</title> <link>http://example.com/</link> <description>My example channel</description> <items> <rdf:Seq> <rdf:li resource="http://example.com/2002/09/01/"/> <rdf:li resource="http://example.com/2002/09/02/"/> </rdf:Seq> </items> </channel> <item rdf:about="http://example.com/2002/09/01">
<title>News for September the Second</title> <link>http://example.com/2002/09/01</link> <description>other things happened today</description> <dc:date>2002-09-01</dc:date> </item> .....
1. RSS<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" > <channel rdf:about="http://example.com/news.rss"> <title>Example Channel</title> <link>http://example.com/</link> <description>My example channel</description> <items> <rdf:Seq> <rdf:li resource="http://example.com/2002/09/01/"/> <rdf:li resource="http://example.com/2002/09/02/"/> </rdf:Seq> </items> </channel> <item rdf:about="http://example.com/2002/09/01">
<title>News for September the Second</title> <link>http://example.com/2002/09/01</link> <description>other things happened today</description> <dc:date>2002-09-01</dc:date> </item> ..... dc:subject, dc:rights
1. RSS<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>Web Insider</title> <link>http://webinsider.globo.com/main.php</link>
<description>Web Insider</description> <publisher>Web Insider</publisher>
<language>pt</language>
<item>
<title>Novos players da TV brasileira</title>
<link>http://www.webinsider.com.br/vernoticia.php?id=1823</link>
<description> Boni, Gugu e J. Hawilla. Por Sergio Kulpas </description>
</item>
</channel>
</rss>
1.RSSSintaxe básica:<channel >
• title – o nome do canal• description – descrição breve do canal• link – um link html para o site • language – linguagem (my.netscape.com) • item – um ou mais elementos “item”
<item >• title – o nome do item• description – descrição breve do item• link – um link html para o local referenciado
1.RSSExercício:
Notas de acompanhamento:
Aula 1 - 29/07/2003 (Sandro & Renata) Apresentação geral da disciplina, datas e avaliação; Revisão geral: arquitetura da web, linguagens de marcação, aplicações web. Sugestão de material de leitura com resumo do assunto inicial.
Aula 2 - 05/08/2003 (Sandro) Revisão da aula 1; apresentação de css(1)(2), xml(1)(2), exemplos de uso de DTD, xmlSchema e xsl. Exercício proposto: "descrição de alguma estrutura de informação em xml". Aviso: as próximas duas aulas no laboratório(6L116).
Aula 3 - 12/08/2003 (Sandro e Renata) Revisão da aula 2; apresentação de xml e xsl/xslt(1), exemplos de criação de documentos xml e modificação com xsl (exemplos). Exercícios em aula. Aviso: a próxima aula no laboratório(6L116).
1.RSSExercício:
Notas de acompanhamento:
Aula 1 - 29/07/2003 (Sandro & Renata) Apresentação geral da disciplina, datas e avaliação; Revisão geral: arquitetura da web, linguagens de marcação, aplicações web. Sugestão de material de leitura com resumo do assunto inicial.
Aula 2 - 05/08/2003 (Sandro) Revisão da aula 1; apresentação de css(1)(2), xml(1)(2), exemplos de uso de DTD, xmlSchema e xsl. Exercício proposto: "descrição de alguma estrutura de informação em xml". Aviso: as próximas duas aulas no laboratório(6L116).
Aula 3 - 12/08/2003 (Sandro e Renata) Revisão da aula 2; apresentação de xml e xsl/xslt(1), exemplos de criação de documentos xml e modificação com xsl (exemplos). Exercícios em aula. Aviso: a próxima aula no laboratório(6L116).
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE rss (View Source for full doctype...)> <rss version="0.91"><channel> <title>Tópicos V - Notas de acompanhamento</title> <link>http://www.inf.unisinos.br/~rigo/.../topicosv</link> <description>Notas de acompanhamento da disciplina 60250 - Tópicos especiais em informática V</description> <publisher>Renata Vieira e sandro Rigo</publisher> <language>pt</language> <item> <title>Notas da aula1</title> <link>http://www.inf.unisinos.br/~rigo/graduacao/topicosv/index.htm#aula01</link> <description>Assuntos tratados</description> </item><item> <title>Aviso: aulas em laboratório</title> <link>http://www.inf.unisinos.br/~rigo/graduacao/topicosv/index.htm#aula02</link> <description>Troca de sala: aulas em laboratório</description> </item> </channel> </rss>
1.RSSRecursos:• xpath2rss – Seleção de partes de docs HTMl/XML com XPath • RSS.py – API Python p/ geração e parsing • XML::RSS - API Perl p/ geração e parsing • Orchard RSS – Suporte para parsing em Python, Perl e C. • Site Summaries in XHTML – Serviço online para selecionar partes HTML e gerar rss• myRSS – geração online de rss • Online RSS 0.9x Validator - Valida rss(0.9x) (UserLand) • Online RSS 1.0 Validator - Valida rss(1.0) • Online RSS 1.0 Validator - Valida rss (Dave Beckett)
Sites:• Syndic8 – Portal comunitário• RSS Workshop – Introdução e tutoriais (Utah Online Services division) • Content Syndication with XML and RSS – Informações e livro de Ben Hammersley • RSSInfo - Listas de agregadores, ferramentas, tutoriais • RSS Devcenter – Portal da O'reilly para RSS
PHP
Exemplo com formulário:
<form action=“teste.php3" method="POST"> Nome: <input type=text name=nome> Idade: <input type=text name=idade> <input type=submit> </form>
Teste.php3:....Seu nome é: <?php echo $nome?>. Você tem mesmo <?php echo $idade?> anos de idade?....
Suporte em PHP para acesso a BD
$pguser=“nome_usuario";$pgpass=“senha_usuario";$db = mysql_connect("freesql.org", $username, $password); ...$query="select * from tabela1";$resultado=mysql_query($query);…$nro_registros=pg_num_rows($resultado);for($i=0; $i<$nro_registros;$i++){
$linha = pg_fetch_row($conn, $i);echo(“reg.:”.$i.” id = “.$linha[0].” nome= “.$linha[1].”<br>”);
}
Caso de estudo:
http://www.imdb.com
Exercício:
Tratar a modelagem de um conjunto de tabelas e de operações para uma base de dados de filmes produzidos por alunos de um curso de comunicação digital
Resumo das propostas
Tabela“filmes”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(80) Não
tipo int(11) Não 0
ano int(11) Não 0
duracao tinyint(4) Não 0
produtora int(11) Não 0
diretor int(11) Não 0
site varchar(160) Não
genero int(11) Não 0
roteirista int(11) Não 0
sinopse varchar(255) Não
cartaz int(11) Não 0
fotos int(11) Não 0
curiosidades varchar(200) Não
cenas int(11) Não 0
nota float Não 0
lancamento date Não 0000-00-00
professor_resp int(11) Não 0
classificacao tinyint(4) Não 0
justificativa varchar(120) Não
origem varchar(40) Não
Resumo das propostas
Tabelas“genero”
e
“tipo”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(30) Não
observacoes varchar(255) Não
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(30) Não
obs varchar(255) Não
Resumo das propostas
tabela
“equipe”Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(60) Não
nacionalidade varchar(60) Não
data_nascim date Não 0000-00-00
premios varchar(120) Não
naturalidade varchar(60) Não
mini_biografia varchar(255) Não
home_page varchar(120) Não
email varchar(120) Não
sexo char(1) Não
Resumo das propostas
tabela
“funcao”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(60) Não
obs varchar(255) Não
Resumo das propostas
Tabelas de ligação
“filme-atores
Equipe-funcaoCampo Tipo Nulo Padrão
id_equipe int(11) Não 0
id_funcao int(11) Não 0
Campo Tipo Nulo Padrão
id_filme int(11) Não 0
id_atores int(11) Não 0
Resumo das propostas
Resumo das propostas
Possibilidades:• consulta de filmes por nome• consulta de filmes por diretor/atores/....• consulta de atores por filme• consulta de filmografia• acesso a cartaz/imagens/cenas• outras...
Exercícios:
-Implementação-Inserção de dados reais-Modelagem de consultas-Modelagem de interface de acesso
Exemplos de implementação
Consulta:
Codificação HTML<b>Sql utilizado:</b> <br> SELECT * FROM filme ORDER BY nome<hr><b>Resultado:</b><br><table><tr bgcolor=#cccccc><td><b>Nome</b></td><td><b>Sinopse</b></td><td><b>Ano</b></td></tr><tr bgcolor=#CCCCCC><td>A estória de José e Maria</td> <td>Primeira linha da sinopse. Segunda linha. Terceira linha.</td> <td>1977</td></tr> <tr bgcolor=#FFFFFF><td>A Paixão de Jacobina</td><td>Texto da sinopse: a
paixão de jacobina</td>...</table><hr><a href="http://maia.unisinos.br/_elti">Home</a><hr>
Codificação PHP (1/2) include("/usr/local/website/configdb_elti.inc.php"); $link = mysql_connect($servidor, $usuario, $senha); if (!$link) { die('Não foi possível conectar: ' . mysql_error()); } $db_selected = mysql_select_db('elti_filme', $link); if (!$db_selected) { die('Não foi possível selecionar base de dados:
' . mysql_error()); } $sql = "SELECT * FROM filme ORDER BY nome"; $result = mysql_query($sql, $link); if (!$result) { die('Query inválida: ' . mysql_error()); }
Codificação PHP (2/2)$lista =""; $pos=1; while($row = mysql_fetch_array($result)){
$nome = $row["nome"]; $sinopse=$row["sinopse"]; $ano =$row["ano"]; if ($pos==1) {$cor="#FFFFFF"; $pos=0;} else{$cor="#CCCCCC"; $pos=1;} $lista .= "<tr bgcolor=".$cor.">”;
$lista .=“<td>$nome</td><td>$sinopse</td><td>$ano</td></tr>"; } mysql_close($link); $conteudo=""; $conteudo .="<b>Sql utilizado:</b> <br>".$sql."<hr><b>Resultado:</b><br>"; $conteudo .="<table><tr bgcolor=#cccccc>”; $conteudo .="<td><b>Nome</b></td><td><b>Sinopse</b></td>”; $conteudo .="<td><b>Ano</b></td><td>"; $conteudo .= $lista."</table>"; echo $conteudo; include_once ("rodape.php");
Inserção de gênero:
Inserção de gênero:Resultado do script de inserção:
servidor script parâmetros
Inserção de gênero:
Trecho da codificação:.....$sql = "INSERT INTO `genero` ( `id` , `nome` , `observacoes` ) VALUES ('', '".$nome."', '".$obs."')";$result = mysql_query($sql, $link);if (!$result) {die('Query inválida: ' . mysql_error()); }mysql_close($link);
echo("<br>Dados recebidos: <hr>Nome: $nome<br>Observações: $obs<br><hr>");
Inserção de filme:
Inserção de filme:
A tabela “equipe” foiconsultada para a montagem da lista de seleção de diretores
Não foi implementada como documento HTML
Consulta por filme/diretor:
Formulário:Opção de indicação de nome de filme ou de nome de diretor
Consulta por filme/diretor:Teste: Opção de nome de filme com a letra “A”
Geração de RSS:
Execução sempre atualiza arquivo xml com todos os filmes.
Configuração de leitor de RSS (Feedreader)
Geração de RSS:
Exemplo de acesso ao resultado: Visão de todo o canal
Geração de RSS:
Exemplo de acesso ao resultado: seleção de uma notícia
Geração de RSS:Exemplo de acesso ao resultado: acesso ao link da notícia (gera consulta ao sistema e recupera a informação do filme)
Geração de RSS:Exemplo de codificação PHP:$sql = "SELECT f.nome nomefilme, f.sinopse sinopse_filme, f.ano ano_filme, e.nome nome_diretor FROM filme f, equipe e WHERE f.diretor = e.id ORDER BY f.nome"; $result = mysql_query($sql, $link); if (!$result) {die('Query inválida: ' . mysql_error());} $lista ="";while($row = mysql_fetch_array($result)){ $nome = $row["nomefilme"]; $sinopse = $row["sinopse_filme"]; $diretor = $row["nome_diretor"]; $ano = $row["ano_filme"]; $lista_ = explode(".",$sinopse); $lista .= "<item> <title>".$nome." - ".$ano." - ".$diretor."</title> <link>http://maia.unisinos.br/_elti/consultas.php?filme=".$nome."</link> <description>".$lista_[0]."</description> </item>"; }
Geração de RSS:Exemplo de codificação PHP:$cabecalho = '<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd"><rss version="0.91"><channel> <title>Elementos de TI - Testes com RSS</title> <link>http://maia.unisinos.br/_elti/</link> <description>Testes com uso de banco de dados para geração de rss</description> <publisher>Sandro Rigo</publisher> <language>pt</language>'; $rodape = '</channel></rss>'; $conteudo = $cabecalho.$lista.$rodape; $arquivo = 'rss/elti_rss.xml'; gravar($arquivo, $conteudo);
Exercícios:
1 - Inserção de roteirista na opção de Consulta simples 1 (indicar mudanças no SQL e HTML)
2 – Indicar a consulta de filmes por diretor
3 – Listar o nome do diretor junto ao filme na consulta
4- Geração de feed RSS com escolha de filme
5 – Geração de RSS com comentários/críticas recebidos
6 – Busca de filmografia de ator/diretor