Comunicação Digital – Elementos de TI
Banco de Dados
implementaçã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
Cliente
+
http
MS Internet Explorer
Netscape Navigator
Opera
NeoPlanet
Amaya
.......
http://www.unisinos.br
1
2
4
3
<html>
...
</html>
Servidor Web
+
http
MS IIS
Apache
Nestcape
<xml>
...
</xml>
.......
Arquitetura Cliente Servidor na Internet
Servidor Web, documentos e scripts
Internet Information Server
CGI
Internet:
Requisições
http
Filtros
W
W
W
scripts
xml
....
html
....
Cliente Web: linguagens de script
Usuário
Navegador
html
Javascript
VBScript
Web Server
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ção
Editores 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/96
function go1(){
if
(document.selecter1.select1.options[document.selecter1.select1.selectedInde
x].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 HTML
Arquivo 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
(400,0)
(0,0)
x
z
(0,200)
y
(400,200)
CSS: Posicionamento
PROPRIEDADES:
position
left
top
width
height
clip
overflow
z-index
visibility
absolute relative static
valor porcentagem auto
valor porcentagem auto
valor porcentagem auto
valor porcentagem auto
retângulo auto
none clip scroll
auto valor
inherit visible hidden
width
clip
height
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
<style type="text/css">
#imagem {position:relative;top:10; left:10}
</style>
<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>
<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;
}
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>”);
}
Aplicação exemplo
lista.htm
SGBD
Lista.....
lista.php
Index.htm
Insere Lista
insere.htm
Formulário
inseriu.htm
Resultado.....
insere.php
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>
Interação por Voz – Voice XML
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)
Resposta (voz)
Pedido(voz)
clientes
Interação por Voz – Voice XML
Exemplo uso do voicexml
Resultado:
Computador:
Say one of: Sports; Weather;
<?xml version="1.0"?>
News.
<vxml version="2.0">
Humano:Astrology
<menu>
Computador :I did not
<prompt> Say one of: <enumerate/>
understand
</prompt>
what you said.
<choice next="http://www.sports.example/start.vxml"> Sports
Computador :
</choice>
Say one of: Sports; Weather;
<choice next="http://www.weather.example/intro.vxml">
News.
Weather </choice>
Humano:Sports
<choice next="http://www.news.example/news.vxml"> News
Computador :
</choice>
(acessa http://www.sports.
<noinput>Please say one of <enumerate/></noinput>
example/start.vxml)
</menu>
</vxml>
Interação por Voz – Voice XML
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>
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
Beaver
Figby
dynamicobjects spaces
ForumZilla
Headline Viewer
HotSheet
Meerkat
My UserLand
News Is Free
Novobot
Peerkat
Radio UserLand
rss2email
SOAPClient.com RSS News Reader
(fonte: http://blogspace.com/rss/readers)
1. RSS
1. RSS
1. RSS
1. RSS
1.RSS
Sintaxe 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.RSS
Sintaxe 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.RSS
Sintaxe 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=182
3
</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
</item>
</channel>
</rss>
</description>
1. RSS
Outros exemplos: uso com o Dublin Core
Módulo RSS-DC: http://web.resource.org/rss/1.0/modules/dc/
Metadados p/ descrição de documentos
Exemplo:
1. RSS
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntaxns#"
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
</item>
</channel>
</rss>
</description>
1.RSS
Sintaxe 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.RSS
Exercí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.RSS
Exercício:
<?xml version="1.0" encoding="ISO-8859-1" ?>
Notas de acompanhamento:
<!DOCTYPE rss (View Source for full doctype...)>
<rss version="0.91">
Aula 1 - 29/07/2003 (Sandro & Renata)
<channel>
Apresentação geral da disciplina, datas e avaliação; Revisão geral: arquitetura da web, linguagens de marcação, aplicações web.
<title>Tópicos
Sugestão de material de leitura com resumo do
assunto inicial. V - Notas de acompanhamento</title>
<link>http://www.inf.unisinos.br/~rigo/.../topicosv</link>
<description>Notas de acompanhamento da disciplina 60250
Aula 2 - 05/08/2003 (Sandro)
Revisão da aula 1; apresentação de css(1)(2),- xml(1)(2),
de uso
de DTD,
xmlSchema
e xsl.
Tópicosexemplos
especiais
em
informática
V</description>
Exercício proposto: "descrição de alguma estrutura
de informação em Vieira
xml". e sandro Rigo</publisher>
<publisher>Renata
Aviso: as próximas duas aulas no laboratório(6L116).
<language>pt</language>
<item>
Aula 3 - 12/08/2003 (Sandro e Renata)
<title>Notas
dadeaula1</title>
Revisão da aula 2; apresentação de xml e xsl/xslt(1),
exemplos
criação de documentos xml e modificação com xsl (exemplos).
<link>http://www.inf.unisinos.br/~rigo/graduacao/topicosv/i
Exercícios em aula.
Aviso: a próxima aula no laboratório(6L116).ndex.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/i
ndex.htm#aula02</link>
<description>Troca de sala: aulas em
laboratório</description>
</item>
</channel>
</rss>
1.RSS
Recursos:
•
•
•
•
•
•
•
•
•
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
Campo
Tabela
“filmes”
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”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(30)
Não
observacoes
varchar(255)
Não
Padrão
e
Campo
Tipo
Nulo
“tipo”
id
int(11)
Não
nome
varchar(30)
Não
obs
varchar(255)
Não
Padrão
Resumo das propostas
tabela
“equipe”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(60)
Não
nacionalidade
varchar(60)
Não
data_nascim
date
Não
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
Padrão
0000-00-00
Resumo das propostas
tabela
“funcao”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(60)
Não
obs
varchar(255)
Não
Padrão
Resumo das propostas
Tabelas de ligação
“filme-atores
Campo
Tipo
Nulo
Padrão
id_filme
int(11)
Não
0
id_atores
int(11)
Não
0
Campo
Tipo
Nulo
Padrão
Equipe-funcao
id_equipe
int(11)
Não
0
id_funcao
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:
Não foi implementada
como documento
HTML
A tabela “equipe” foi
consultada para a
montagem da lista de
seleção de diretores
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
Download

semana_04 - sandrorigo.pro.br