Comunicação Digital – Elementos de TI Banco de Dados implementação e integração com...

Preview:

Citation preview

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&iacute;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&iacute;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&iacute;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

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

Recommended