Per sapere di piu' sul WAP PRIMA LEGGI QUESTO !

 

COSTRUIRE UN SITO CON WML ED ASP

In questo articolo diamo per scontato che si conosca già il linguaggio ASP (Active Server Pages) e un po' di WML (Wireless Markup Language) ed il protocollo WAP (Wireless Application Protocol).

Troppo ? No, niente paura in verità l'unica cosa che bisogna conoscere un po' meglio è l'ASP, per il resto vedremo che non è niente di esoterico da capire e da realizzare.

Qui vedremo due listati uno e' di un form di ricerca che appare sul dispositivo WAP compatibile (es. Nokia 7110) da compilare e che passa i dati ad un file ASP che li elabora e poi invia un output (sempre sul display del GSM) in WML così da poterlo visionare.

Simuliamo la costruzione di un sito che permetta di cercare dei libri per TITOLO e per CASA EDITRICE.

Cominciamo col file default.asp:

DEFAULT.ASP:

Il file inizia con il Response.ContentType perché dobbiamo settare un nuovo tipo di MIME il text/vnd.wap.wml per la trasmissione di dati in WML.

<%

Response.ContentType = "text/vnd.wap.wml"

La routine che segue l'ho creata appositamente perché mi sono accorto che se qualcuno vuole provare a navigare un sito in WML con i browser per HTML (Internet Explorer o Netscape), questi gli permettono di "salvare" il file, perché non ne riconoscono il formato, insomma come quando si clicca per fare il download di un file, a quel punto chiunque può "sgarffignare" il vostro prezioso codice. Ma questa routine riconosce se il browser che si sta usando è il Nestcape o l'Explorer e in caso affermativo effettua una redirezione su un sito web in html.

brow=request.servervariables("HTTP_USER_AGENT")

k = InStr(brow, "Mozilla")

If k > 0 Then

strbuff = Mid(brow, 1, k - 1)

lun_str = Len(brow)

For k1 = k To lun_str

car = Mid(brow, k1, 7)

If car = "Mozilla" Then response.redirect "http://www.giroscopio.com"

Next

End If

%>

<?xml version="1.0"?>

<wml>

Dopi i tag standard per creare la pagina WML ecco che creiamo la prima "card", ossia la scheda che è visualizzata sul display.

<card id="ricerc" title="Ricerca">

<p>

Titolo: <input name="titolo" title="titolo:"/><br/>

Abbiamo un'etichetta "Titolo:" ed un elemento di input che sarebbe una box di testo, chiamata "titolo", nella quale adremo a scrivere un titolo di un libro.

In seguito abbaimo una menu a tendina, chiamato "selez", dal quale possiamo selezionare due case editrici.

Casa Editrice:

<select name="selez" title="Editrice" value="editrice">

<option value="seleziona">-----</option>

<option value="Feltrinelli">Feltrinelli</option>

<option value="Mondadori">Mondadori</option>

</select><br/>

Infine creiamo il tasto "CERCA" che una volta cliccato, tramite il tag <go href="…. ci porta al sito (fittizio)http://www.provawml.com/wap e chiama il file lista.asp passandogli le variabili su linea di comando.

Le variabili selez e tit prendono rispettivamente i valori contenuti nelle variabili WML "selez" e "titolo", il codice "&#38;" rappresenta la "&" che in WML è un carattere "proibito", però ci serve per comporre la querystring che sarà letta dal file lista.asp.

<do type="accept" label="Cerca">

<go href="http://www.provawml.com/wap/lista.asp?selez=$(selez)&#38;tit=$(titolo) "/>

</do>

</p>

</card>

</wml>

 

LISTA.ASP

<%

Response.ContentType = "text/vnd.wap.wml"

brow=request.servervariables("HTTP_USER_AGENT")

k = InStr(brow, "Mozilla")

If k > 0 Then

strbuff = Mid(brow, 1, k - 1)

lun_str = Len(brow)

For k1 = k To lun_str

car = Mid(brow, k1, 7)

If car = "Mozilla" Then response.redirect "http://www.giroscopio.com"

Next

End If

%>

<?xml version="1.0"?>

<wml>

<%

Qui il c'è la lettura delle variabili selez e tit prese dalla querystring.

selez2=request.querystring("selez")

tit2=request.querystring("tit")

In seguito si costruisce la query SQL e si connette il database in presente sul server.

sql="select * from libri where titolo like '"&tit2&"' and selez like '"&selez&"'"

Set OBJdbConnection = Server.CreateObject("ADODB.Connection")

OBJdbConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/biblioteca.mdb")

Set RS=OBJdbConnection.Execute(sql)

%>

Ora si costruisce la card di output in WML, inserendo opportunamente i tag ASP (<% e %>) quando servono per l'estrazione dei campi dai records del database.

<card id="lista" title="lista">

<p>

<%

if not rs.eof then

%>

<table columns="2">

<%

Do while NOT RS.EOF

%>

<tr>

<td>

<%=rs("autore")%>

</td>

<td>

<%=rs("titolo")%>

</td>

<td>

<%=rs("editrice")%>

</td>

<td>

<%=rs("data")%>

</td>

</tr>

<%

RS.MoveNext

Loop%>

</table>

<% else%>

Nessuno trovato !

<%

end if

RS.Close

OBJdbConnection.Close%>

<do type="accept" label="Indietro">

<go href="http://www.provawml.com/wap/default.asp"/>

</do>

</p>

</card>

</wml>

Concludendo se si sa già programmare in ASP basta soltanto modificare l'output fatto dai tag HTML con i tag WML, chiaramente questo discorso vale anche per chi usa il PERL o il PHP, l'importante è che l'interfaccia utente (input ed output) sia in WML altrimenti il telefonino non visualizzerà alcunchè…oppure….aspettate l'UMTS…ma questa è un'altra storia.

________________________________________________________

Sito WAP http://www.giroscopio.com/wap.