helyoWAP

PÁGINAS WML GERADAS DINAMICAMENTE EM AMBIENTE ASP
 
(15)
Consulta ao bancoCinema.mdb (1)

Autores: Helio Fonseca Rosa e Andrea de Mello Rosa

Esta página contém 4 figuras grandes. Aguarde a carga se a conexão estiver lenta.


Consulta ao bancoCinema.mdb (1)

Instalado o bancoCinema.mdb vamos ver como se faz um consulta, a partir de uma tela inicial, como a vista abaixo:

Antes de prosseguir, vamos fazer um paralelo com o mundo real. O bancoCinema estaria hospedado no servidor de um provedor de serviços de internet, que em lugar do PWS estaria usando um IIS; a mini-page acima estaria sendo vista em um celular WAP, que acessou o endereço da mini-page, que seria algo como http://www.guiacine.com.br/index.asp; este endereço teria sido alcançado através de um hyperlink fornecido pela própria operadora ou por meio da digitação direta no teclado do celular.

De volta ao mundo virtual, vamos ver que o programa que gerou a mini-page acima não tem nada de especial; é constituído de comandos simples de WML; foi gravado na pasta c:\inetpub\wwwroot\asp, com o nome de guiacine100.asp, opção "somente texto".
Eis o código:

Programa guiacine100.asp

<%
Response.ContentType = "text/vnd.wap.wml" 
%>
<?xml version="1.0"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" 
"http://www.wapforum.org/DTD/wml_1.1.xml"> 
<wml> 
<card>
<p align="center">
******HELYOWAP*****<br/>
*****GUIA CINE****
<br/>
</p>
<p>
<a href="filmes100.asp">FILMES</a><br/> 
<a href="cinemas100.asp">CINEMAS</a><br/> 

</p> 
</card> 
</wml> 

O programa acima "chama" dois outro programas denominados filmes100.asp e cinemas100.asp.
Escolhendo-se, por exemplo, o hyperlink [Filmes], obteremos outra tela (abaixo, à esquerda) montada on-the-fly, por um programa chamado filmes100.asp. O nome deste programa não vai aparecer no campo de endereços do simulador pois foi acessado a partir do hyperlink (e não por digitação), ou seja, o endereço da página guiacine.asp continua a ser mostrado no simulador. Os nomes dos filmes que aparecem na tela serão retirados do banco de dados através de uma consulta SQL embutida no programa filmes100.asp.
Do mesmo modo, se a opção for pelo hiperlink [Cinemas] , será gerada a tela abaixo (à direita), por um programa chamado cinemas100.asp .

        

Vamos comentar o programa filmes100.asp (mudando o que deve ser mudado, os comentários se aplicam ao programa cinemas100.asp, que possui exatamente a mesma estrutura).
Eis o código:

Programa filmes100.asp

<%
Response.ContentType = "text/vnd.wap.wml" 
%>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
" http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p>
***** HELYOWAP *****<br/>
*******FILMES*******<br/>
<%
DIM conCinema
DIM recFilmes
DIM cod
const cntCaminho = "c:\inetpub\wwwroot\asp\bancoCinema.mdb"
Set conCinema = Server.CreateObject("ADODB.Connection")
Set recFilmes = Server.CreateObject("ADODB.Recordset")
conCinema.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
 & cntCaminho
recFilmes.Open "tblFilme",conCinema
Do While Not recFilmes.Eof
Response.Write "<a href=""tela100.asp?cod=" &
 recFilmes.Fields("CodFilme") & """>" & recFilmes.Fields("NomeFilme") &
 "</a><br/>" 
recFilmes.MoveNext
Loop
recFilmes.Close
conCinema.Close
%>
</p>
</card>
</wml>

O que faz este programa?
Gera um outro programa, "escrito" on-the-fly, já com os dados coletados no bancoCinema.mdb.
Qual a vantagem?
Quando mudar a programação de filmes na sexta-feira, não é preciso mudar o programa, basta atualizar o banco.
Onde posso ver a nova listagem?
Na janela Phone Information, associada ao simulador. Veja abaixo:

Difícil de ler, não? Tudo tem solução. Na própria janela "Phone Information", através dos botões "Mark"e "Copy" , podemos copiar/colar e obter a listagem no NotePad, por exemplo ( depois de uma pequena arrumação nas linhas):


<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
" http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p>
***** HELYOWAP *****<br/>
*******FILMES*******<br/>
<a href="tela100.asp?cod=1">X-Men</a><br/>
<a href="tela100.asp?cod=2">Feitico do coracao</a><br/>
<a href="tela100.asp?cod=3">60 Segundos</a><br/>
<a href="tela100.asp?cod=4">Verao feliz</a><br/>
<a href="tela100.asp?cod=5">Fanny Games - Violencia Gratuita</a><br/>
<a href="tela100.asp?cod=6">Meu nome e Joe</a><br/>
<a href="tela100.asp?cod=7">Fogo Sagrado</a><br/>
<a href="tela100.asp?cod=8">Pokemon 2000</a><br/>
<a href="tela100.asp?cod=9">O Patriota</a><br/>
<a href="tela100.asp?cod=10">A Lenda do Pianista do Mar</a><br/>
<a href="tela100.asp?cod=11">Premonicao</a><br/>
<a href="tela100.asp?cod=12">O caminho para Eldorado</a><br/>
<a href="tela100.asp?cod=13">De caso com o acaso</a><br/>
<a href="tela100.asp?cod=14">Assedio</a><br/>
<a href="tela100.asp?cod=15">Missao Impossivel-II</a><br/>
<a href="tela100.asp?cod=16">Dinossauro</a><br/>
<a href="tela100.asp?cod=17">Tenha Fe</a><br/>
<a href="tela100.asp?cod=18">Trem da Vida</a><br/>
<a href="tela100.asp?cod=19">A musa</a><br/>
<a href="tela100.asp?cod=20">Gladiador</a><br/>
</p>
</card>
</wml>

Que conforto, não?
Todos os hyperlinks acima são direcionados para um mesmo programa chamado tela100.asp, ou seja, qualquer que seja o filme escolhido, vai abrir-se uma mesma tela básica, gerada por um mesmo programa, mas com novos dados retirados novamente "on-the-fly" (no momento da consulta), a partir do código do filme.
Repare que o código do filme vai "de carona" no endereço do programa tela100.asp, após o sinal de interrogação. Este endereço "variável" também é gerado "on-the-fly". No caso da escolha do hiperlink [Feitiço do Coração], cujo código é 2, a tag WML do hyperlink deve ter este formato : <a href="tela1.asp?codF=
2">Feitico do coracao</a> sendo que a parte "variável" está em vermelho.

O trecho principal do programa está dentro de um loop DO WHILE e é o seguinte:

Response.Write "<a href=""tela1.asp?codF="
&
recFilmes.Fields("CodFilme") & """>" & recFilmes.Fields("NomeFilme") & "</a><br/>"

As partes em vermelho são os comandos SQL de consulta ao banco. São substituidos pelos valores retornados do banco. Os símbolos em azul - & -("e"comercial) representam a concatenação ou "juntamento" das partes separadas, num único comando.

Atenção para as aspas duplas, ressaltadas em vermelho, para melhor identificação:

Response.Write "<a href=
""tela1.asp?codF=" & recFilmes.Fields("CodFilme") & """>"......

As "aspas" dentro de um script "entre aspas", são representadas por "aspas" duplas !

Eis o resultado após a montagem: <a href="tela1.asp?codF=2">Feitico do coracao</a><br/>

Tudo entendido? Falta mostrar a listagem do programa cinemas100.asp .
Eis o código:

Programa cinemas100.asp

<%
Response.ContentType = "text/vnd.wap.wml" 
%>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
" http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p>
***** HELYOWAP *****<br/>
******CINEMAS*******<br/>
<%
DIM conCinema
DIM recCines
DIM cod
const cntCaminho = "c:\inetpub\wwwroot\asp\bancoCinema.mdb"
Set conCinema = Server.CreateObject("ADODB.Connection")
Set recCines = Server.CreateObject("ADODB.Recordset")
conCinema.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
 & cntCaminho
recCines.Open "tblCinema",conCinema
Do While Not recCines.Eof
Response.Write "<a href=""tela200.asp?cod=" &
 recCines.Fields("CodCinema") & """>" &
 recCines.Fields("NomeCinema") & "</a><br/>" 

recCines.MoveNext
Loop
recCines.Close
conCinema.Close
%>
</p>
</card>
</wml>

Atenção: estamos testando programas em um simulador. Numa aplicação real há que ser feita a devida consideração ao tamanho do deck gerado neste processo. Provavelmente o resultado do programa acima deverá ser fracionado em 3 ou mais decks; estamos usando como teste a cidade de Brasília que possui mais de 40 cinemas.

Lembrando:
- o programa filmes100.asp "chama" o programa tela100.asp;
- o programa cinemas100.asp "chama"o programa tela200.asp.

Na "Parte 2" a seguir, comentaremos estes programas.

WirelessBRASIL                 Portal helyoWAP                    Anterior                    Próxima