Professional Documents
Culture Documents
en ASP
Montserrat Mir Porcel
Índex
Introducció ............................................................................................... 5
Objectius ................................................................................................... 7
Introducció
Objectius
3. Emprar les biblioteques del sistema i d’usuari, els traductors, els de-
puradors i els generadors de codi i pantalles.
Pàgines estàtiques
En les pàgines web estàtiques els continguts que es mostren en
el navegador sempre són els mateixos que els que s’emmagatze- Les pàgines estàtiques utilitzen el
llenguatge HTML(hypertext
men en el servidor web. S’utilitzen quan no calen modificacions markup language) com a base per
o ampliacions per adaptar-los a les noves necessitats i requeri- a la seva codificació. L’escriptura
del codi es pot fer amb un editor
ments que es puguin presentar; no admeten cap interacció amb senzill tipus llibreta o amb altres
editors més avançats com, per
l’usuari. exemple, el Notepad++ o l’Adobe
Dreamweaver. Val a dir, també,
que la majoria d’editors de textos
professionals com el Microsoft
Word també admeten desar els
Evidentment, avui en dia els sistemes han evolucionat i vivim en un món documents en format HTML.
nir un format correcte abans de ser enviades cap al servidor. Per tant, po-
dríem enumerar els casos següents d’aplicació dels llenguatges de script:
• Validació del tipus de dades dels camps dels formularis de les aplica-
cions web: preus d’articles (moneda), codi de productes (alfanumèric),
notes (decimal), noms d’alumnes (text), etc. Hi ha camps especials, com
el NIF o el número de compte bancari, que per ser validats requereixen
uns algoritmes determinats que es poden executar en el navegador web.
El llenguatge C i les seves variants eren utilitzats per a les primeres ver-
sions dels llenguatges script de servidor mitjançant la interfície comuna
de passarel·la, més coneguda com a CGI (common gateway interface).
Per executar-los, el servidor web deixava pas al sistema operatiu. Actual-
ment el codi generat s’executa mitjançant un complement o add-on, que
consisteix en una ampliació del motor del mateix servidor web amb inde-
pendència del sistema operatiu.
• PHP (*.php)
• ASP/ASP.net (*.asp/*.aspx)
• Perl (*.pl)
• Java Server Pages (*.jsp)
• ColdFusion (*.cfm)
El llenguatge ASP és propietat de Microsoft.
• Python (*.py)
Propietat Descripció
Servidor web Microsoft Internet Information Server (IIS) Microsoft Information Server és un dels
servidors web més utilitzats per a la programació
Apache (amb biblioteca asp.dll) amb llenguatge ASP.
Propietat Descripció
Per organitzar l’espai web, cal agrupar els fitxers en carpetes segons les di-
ferents categories (imatges, codi...). Els noms dels fitxers de l’aplicació
web han de ser significatius. Els fitxers que continguin instruccions en el
llenguatge script ASP haurien de tenir extensió .asp. Els fitxers que no-
més contenen codi HTML és important que tinguin extensió .html per
raons d’eficiència. !
Per desenvolupar una aplicació web amb el llenguatge ASP cal un progra-
mari específic que és el que detallarem a continuació.
formation Server. Hi ha, però, altres opcions que també cal conèixer i que
es detallen en la taula 2.
De totes maneres, cal tenir en compte que és molt probable que el projec-
te web accedeixi a dades emmagatzemades en una base de dades. Per tant,
també caldrà disposar d’una màquina amb les funcions de servidor de ba-
ses de dades. Sovint, a l’empresa, el servidor web i el servidor de base de
dades són físicament separats per raons de seguretat.
1.2.1. Instruccions
Podeu escriure les sentències d’ordres ASP entremig del codi HTML uti-
litzant el delimitador <% per indicar l’inici de les instruccions i el delimita-
Desenvolupament de funcions en el sistema informàtic 16 Programació web dinàmica en ASP
dor %> per indicar-ne el final. Així, doncs, observeu aquest codi a tall
d’exemple:
<HTML>
<TITLE>Exemple de codi ASP</TITLE>
<BODY>
Aquest codi està escrit en HTML.<BR>
<%
Response.Write("Aquest codi, en canvi, està escrit en ASP<BR>")
%>
</BODY>
</HTML>
<HTML>
<TITLE>Exemple de codi ASP</TITLE>
<BODY>
Aquest codi està escrit en HTML.<BR>
<SCRIPT LANGUAGE=”VBSCRIPT” RUNAT=”SERVER”>
Response.Write("Aquest codi, en canvi, està escrit en ASP<BR>")
</SCRIPT>
</BODY>
</HTML>
1.2.2. Comentaris
<HTML>
<TITLE>Utilització de comentaris al codi ASP</TITLE>
<BODY>
Aquest codi està escrit en HTML.<BR>
<%
’Això és un comentari
’i no es visualitzarà al navegador.
Response.Write("Benvingut al sistema!<BR>")
%>
</BODY>
</HTML>
Desenvolupament de funcions en el sistema informàtic 17 Programació web dinàmica en ASP
1.3. Constants
<HTML>
<TITLE>Utilització de constants al codi ASP</TITLE>
<BODY>
<%
’Declarem la constant missatge
const missatge="Benvingut al Sistema!<BR>"
’Visualitzem el valor de la constant al navegador
Response.Write(missatge)
%>
</BODY>
</HTML>
1.4. Variables
Per definició una variable és un espai de memòria que reservem per em-
magatzemar i/o consultar informació d’un determinat tipus, numèric,
text, caràcter, etc. El contingut d’una variable es pot modificar durant
l’execució d’un programa. El codi ASP és un llenguatge força flexible que
El caràcter & s’utilitza per
fins i tot permet utilitzar les variables sense haver-les definit abans. De to- concatenar, és a dir, ajuntar
cadenes de text.
tes maneres existeix la paraula reservada dim, que serveix per definir-les.
De la mateixa manera tampoc no cal que una variable emmagatzemi du-
rant tota l’execució del programa el mateix tipus d’informació, és a dir, en Quan el tipus de dada que s’ha
un moment donat pot emmagatzemar un caràcter i en un altre moment d’emmagatzemar en la variable és
text, ha d’anar emmarcat amb el
pot emmagatzemar un nombre. caràcter de cometes dobles.
<html>
<head>
<title>Utilització de variables al codi ASP</title>
</head>
<body>
<%
’ Exemple de variables amb text i números
Dim nom, cognom1, cognom2,edat
nom = "Eva"
cognom1 = "Sánchez"
cognom2 = "Merino"
edat = 19
Response.Write("El teu nom compet és " & nom & " " & cognom1 & " " & cognom2 &_
"<br>" & " i la teva edat és " & edat)
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 18 Programació web dinàmica en ASP
El llenguatge ASP permet produir una sortida de text per pantalla utilit-
zant l’objecte del servidor Response. Aquest objecte té diferents mètodes,
entre ells, el mètode Write ens permet produir una sortida que anirà al
navegador. La sintaxi que cal utilitzar amb el mètode Write és:
Com podeu veure, cal escriure la cadena de text entre cometes dobles.
Una altra possibilitat és visualitzar el valor d’una variable. En aquest cas,
podem utilitzar la sintaxi següent:
Observeu el codi següent que utilitza el mètode Write passant com a parà-
metres, en el primer cas, una cadena de text i, en el segon cas, la variable
nom.
<html>
<head>
<title>Utilització del mètode Write al llenguatge ASP</title>
</head>
<body>
<%
Dim nom
nom="Maria"
Response.Write("El teu nom és: ")
Response.Write(nom)
%>
</body>
</html>
<html>
<head>
<title>Utilització del mètode Write al llenguatge ASP</title>
</head>
<body>
<%
Dim nom
nom="Maria"
%>
El teu nom és: <%=nom%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 19 Programació web dinàmica en ASP
1.6. Operadors
Sovint cal fer càlculs matemàtics amb variables i/o constants numèriques.
La taula 3 mostra els operadors aritmètics més habituals i un fragment de
codi en què els utilitzem.
<html>
<head>
<title> Utilització d’operadors aritmètics al codi ASP </title>
</head>
<body>
<%
Dim num1,num2
num1 = 4
num2 = 2
Response.Write("num1 té valor "&num1&"<br>")
Response.Write("num2 té valor "&num2&"<br>")
Response.Write("num1 + num2 =" & (num1+ num2) & "<br>")
Response.Write("num1 - num2 =" & (num1 - num2) & "<br>")
Response.Write("num1 * num2 =" & (num1 * num2) & "<br>")
Response.Write("num1 / num2 =" & (num1 / num2) & "<br>")
Response.Write("El residu de dividir num1 per num2 és " & (num1 mod num2) & "<br>")
Response.Write("num1 elevat a num2 és" & (num1^num2) & "<br>")
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 20 Programació web dinàmica en ASP
< Més petit que a<b Avalua cert si a és més petit que b.
> Més gran que a>b Avalua cert si a és més gran que b.
<= Més petit o a <= b Avalua cert si a és més petit o igual que b.
igual
>= Més gran o a <= b Avalua cert si a és més gran o igual que b.
igual
<html>
<head>
<title>Exemple d’utilització dels operadors de comparació amb ASP</title>
</head>
<body>
<%
Dim num1,num2
num1 = 5
num2 = 1
Response.Write("Num1 té valor "&num1&"<br>")
Response.Write("Num2 té valor "&num2&"<br>")
Response.Write("Num1 i num2 són iguals?"&(num1 = num2)&"<br>")
Response.Write("Num1 i num2 són iguals?"&(num1 = num2)&"<br>")
Response.Write("Num1 i num2 són diferents?"&(num1 <> num2)&"<br>")
Response.Write("Num1 menor que num2?"&(num1 < num2)&"<br>")
Response.Write("Num1 major que num2?"&(num1 > num2)&"<br>")
Response.Write("Num1 menor o igual que num2"&(num1 <= num2)&"<br>")
Response.Write("Num1 major o igual que num2?"&(num1 >= num2)&"<br>")
%>
</body>
</html>
Sovint hem d’avaluar si són certes o falses expressions més complexes for-
mulades utilitzant operadors lògics (AND, OR, XOR, NOT) que són combi-
nacions d’altres expressions. En la taula 5 es descriuen els operadors
lògics del llenguatge ASP.
Desenvolupament de funcions en el sistema informàtic 21 Programació web dinàmica en ASP
And I (5>1) and (1<3) Avalua cert si totes dues expressions són
certes.
Xor XOR (5>1) xor (1<3) Avalua cert si una i només una de les
expressions és certa.
<html>
<head>
<title>Exemple d’utilització dels operadors lògics amb ASP </title>
</head>
<body>
<%
Dim num1,num2,num3
num1 = 5
num2 = 2
num3 = 2
Response.Write("Num1 té valor "&num1&"<br>")
Response.Write("Num2 té valor "&num2&"<br>")
Response.Write("Num3 té valor "&num3&"<br>")
Response.Write("Num1 és major que num2 I num3 és major que num2 :")
Response.Write(((num1 > num2) and (num3 > num2)) & "<br>")
%>
</body>
</html>
Atès que el llenguatge ASP s’utilitza sovint per treballar amb informació
emmagatzemada en bases de dades, és fonamental que disposi de fun-
cions específiques per al tractament de cadenes de text. A continuació, de-
tallem les funcions més bàsiques per a la presentació d’informació tipus
text al navegador.
• len(cadena)
La funció len té com a únic paràmetre la cadena de text i retorna la
seva longitud, és a dir, el nombre de caràcters.
• split(cadena,separador)
La funció split té dos paràmetres: la cadena de text i un caràcter se-
parador. Tal com el seu nom indica, la funció split divideix una cade-
na en diverses utilitzant el caràcter separador per dividir.
• trim(cadena)
La funció trim s’encarrega d’eliminar els espais inicials i finals de la
cadena de text passada com a paràmetre.
• instr(cadena1, cadena2)
La funció instr cerca la cadena2 dintre de la cadena1, totes dues pas-
sades com a paràmetre. El resultat retornat és la posició del primer ca-
ràcter de la cadena2 dins la cadena1.
• left(cadena, num)
La funció left té dos paràmetres: la cadena i un nombre. Retorna els
num caràcters de la cadena començant per l’esquerra.
<html>
<head>
<title> Exemple d'utilització de les funcions de text d'ASP</title>
</head>
<body>
<%
Dim frase, paraules
'funció mid
Response.Write("Extraiem de la frase del caràcter 8 al 14 i obtenim la paraula...."& _
mid(frase,8,6) & "<br>")
'funció trim
if trim(" paraula ") = "paraula" then
Response.Write("Iguals<br>")
end if
'funció instr
Response.Write("Posició de 'la' dintre de la frase: " & instr(frase, "la") & "<br>")
'funció replace
Response.Write("Substituïm 'Hola' per 'Adéu' a la frase i queda:" _
& replace(frase,"Hola","Adéu") & "<br>")
'funció left
Response.Write("Obtenim 2 caràcters de l'esquerra de la frase:"&left(frase,2))
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 23 Programació web dinàmica en ASP
1) Instrucció if...then
if condició then
acció/ns que cal dur a terme si es compleix la condició
else
acció/ns que cal dur a terme si no es compleix la condició
end if
Cal dir que l’apartat de l’else és opcional, però el que sempre cal indicar
és el final de la instrucció amb end if.
<html>
<head>
<title>Utilització de la instrucció condicional if amb llenguatge ASP</title>
</head>
<body>
<%
Dim edat
edat = 19
Response. Write("La teva edat és: " & edat & "<br>")
if edat < 18 then
Response.Write("Ets menor d'edat")
else
Response.Write("Ets major d'edat")
end if
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 24 Programació web dinàmica en ASP
<html>
<head>
<title>Utilització de la instrucció condicional select amb llenguatge ASP</title>
</head>
<body>
<%
Dim curs
curs = "ASI"
select case curs
case "ASI"
Response.Write("Administració de Sistemes Informàtics")
case "DAI"
Response.Write("Desenvolupament d'Aplicacions Informàtiques")
case else
Response.Write("Un altre curs diferent")
end select
%>
</body>
</html>
1) Instrucció while
while condició
accions que cal executar mentre es compleixi la condició
wend
Així, per exemple, el codi següent visualitza una sèrie numèrica del 0 al 10
utilitzant la sentència iterativa while. La sèrie es va generant modificant
el valor de la variable num que s’incrementa en una unitat a cada iteració.
<html>
<head>
<title>Ús de la instrucció while al llenguatge ASP</title>
</head>
<body>
<%
Dim num
num=1
while num<11
Response.Write("El valor de num és " & num & "<br>")
num=num+1
wend
%>
</body>
</html>
2) Instrucció do
do while condició
accions que cal executar mentre es compleixi la condició
loop
<html>
<head>
<title>Ús de la instrucció do while al llenguatge ASP</title>
</head>
<body>
<%
Dim num
num=1
do while num<11
Response.Write("El valor de num és " & num & "<br>")
num=num+1
loop
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 26 Programació web dinàmica en ASP
3) Instrucció for
<html>
<head>
<title>Ús de la instrucció for al llenguatge ASP </title>
</head>
<body>
<%
Dim num
for num=1 to 10
Response.Write("El valor de num és " & num & "<br>")
next
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 27 Programació web dinàmica en ASP
Un cop coneguda la sintaxi bàsica del llenguatge ASP, potser el pas se-
güent seria aprofundir en el pas de variables entre formularis de pàgines
web i la construcció d'una pàgina senzilla, per exemple una pàgina consis-
tent en un sistema d'enquestes per internet en el que, inicialment, farem
servir fitxers .html, i seguidament els modificarem i desenvoluparem la
versió dinàmica de l’enquesta amb fitxers .asp.
2.1.1. Funcions
<html>
<head>
<title>Exemple d'ús de funció al llenguatge ASP</title>
</head>
<body>
<%
function mitjana(num1, num2)
Dim resultat
resultat=(num1 + num2)/2
mitjana = resultat
end function
%>
</body>
</html>
2.1.2. Procediments
Els procediments són molt semblants a les funcions, també agrupen sota
un nom un conjunt d’instruccions. La diferència és que poden retornar
més d’un valor.
nom_procediment paràmetre1,paràmetre2...
Desenvolupament de funcions en el sistema informàtic 29 Programació web dinàmica en ASP
<html>
<head>
<title>Exemple d'ús de procediment al llenguatge ASP</title>
</head>
<body>
<%
resultat=(num1 + num2)/2
end sub
dim resultat
resultat=0
'crida al procediment amb call i parèntesi
call mitjana(4,6,resultat)
Response.Write("Mitja de 4 i 6 =" & resultat & "<br>")
resultat=0
'crida al procediment sense parèntesi
mitjana 4,6,resultat
Response.Write("Mitjana de 4 i 6 =" & resultat & "<br>")
%>
</body>
</html>
El llenguatge ASP incorpora una sèrie d’objetes i components que ens fa-
cilita la programació d’aplicacions. Observeu la figura 2, que és una repre-
sentació simplificada del model d’objectes d’ASP.
• Objecte Request
L’objecte Request captura la informació que va del client (o visitant)
cap al servidor. Quan un navegador demana una pàgina des d’un servi-
dor, s’anomena una petició o sol·licitud (request).
• Objecte Response
L’objete Response envia informació del servidor al client, i disposa de
mètodes i propietats per modificar i crear el que s’envia cap al client.
Una altra utilitat de Response és la capacitat per redirigir cap a una al-
tra pàgina.
• Objecte ObjectContext
L’objecte ObjectContext s’utilitza per controlar transaccions de pàgi-
nes de servidor actives (ASP) que són gestionades pel servidor de tran-
sacció de Microsoft (MTS). Una transacció es pot completar (commit)
o avortar.
En el codi quan volem iniciar una transacció, la directiva de @Transac-
tion ha de ser a la primera línia del fitxer .asp. La directiva de @Tran-
saction provoca una transacció per executar-se fins a completar-se
llevat que ocorri un avortament.
• Objecte Server
L’objecte Server proporciona accés a les funcions d’utilitat del servidor.
• Objecte Application
L’objecte Application comparteix, emmagatzema i recupera informa-
ció en resposta a peticions de l’usuari cap a l’aplicació.
• Objecte Session
La primera vegada que un usuari fa una petició de document, un objec-
te Session s’assigna a l’usuari i s’utilitza per emmagatzemar, compartir
i recuperar informació pel que fa a la sessió d’usuari. Per defecte, l’ob-
jecte de sessió es destrueix després que una sessió hagi estat inactiva
durant un temps determinat.
WYSIWYG (what you see is
what you get)
de formularis serien els de contacte amb els responsables del lloc web, els
de sol·licitud d’informació, els d’alta d’usuaris, etc. Hi ha programari espe-
cífic per al disseny web del tipus WYSIWYG, que és l’acrònim de what
you see is what you get (és a dir, ‘el que veus és el que obtens’). Aquest
programari permet el treball amb formularis, marcs, taules, fulls d’estils
CSS, etc. Com a exemples d’aplicacions web WYSIWYG destaquem el
Dreamweaver d’Adobe Systems per a plataformes Mac i Windows, i l’NVU
(new view o nova visió) amb versions per al Linux, Mac i Windows de codi
lliure.
GET
<html>
<head>
<title>Exemple d'ús de GET</title>
</head>
<body>
<H1>Exemple de processament de formularis amb GET</H1>
Cridarem el fitxer procesa.asp
en fer clic al botó Enviar.<br>
Figura 3. Formulari que sol·licita un nom i l’envia amb el mètode GET al fitxer procesa.asp
Des del fitxer procesa.asp, per obtenir el valor de la variable utilitzem Re-
quest.QueryString(nom_variable), és a dir, en aquest cas Re-
quest.QueryString(“nom”).
<html>
<head>
<title>Exemple recepció variable amb GET</title>
</head>
<body>
Obtenim el nom de formulari anterior<br>
El nom que ha introduït és: <%=Request.QueryString("nom")%>
<br>
</body>
</html>
Figura 4. Fitxer procesa.asp, que recull el valor de la variable nom a partir del mètode GET
http://ruta/nom_fitxer.asp?variable1=valor1&variable2=valor2...
POST
De la mateixa manera que amb el mètode GET, amb el mètode POST tam-
bé és possible el pas de variables entre formularis. Us proposem l’exemple
Desenvolupament de funcions en el sistema informàtic 33 Programació web dinàmica en ASP
<html>
<head>
<title>Exemple d'ús de POST</title>
</head>
<body>
<H1>Exemple de processamet de formularis amb POST</H1>
Cridarem el fitxer procesa.asp
en fer clic al botó Enviar.<br>
Figura 5. Formulari que sol·licita un nom i l’envia amb el mètode POST al fitxer procesa.asp
Des del fitxer procesa.asp, per obtenir el valor de la variable utilitzem Re-
quest.Form(nom_variable), és a dir, en aquest cas Request.Form(“nom”).
<html>
<head>
<title>Exemple recepció variable amb POST</title>
</head>
<body>
Obtenim el nom de formulari anterior<br>
El nom que ha introduït és: <%=Request.Form("nom")%>
<br>
</body>
</html>
Figura 6. Fitxer procesa.asp, que recull el valor de la variable nom a partir del mètode POST
http://ruta/nom_fitxer.asp
Per aquest motiu si us connecteu, per exemple, a un lloc web en què ha-
gueu d’introduir un nom d’usuari i una contrasenya, fixeu-vos que s’utilit-
za el mètode POST en comptes del mètode GET. A efectes pràctics,
utilitzarem POST quan el formulari reculli molta informació.
Avui en dia és molt habitual en els diaris digitals, en la televisió interactiva Bases de dades
i en les revistes i/o publicacions locals trobar-nos amb una petita enquesta
sobre temes d’actualitat o que interessen la població en general. Amb el En un exemple bàsic d’enquesta
per internet podríem fer servir
llenguatge ASP construirem, a tall d’exemple, una pàgina senzilla consis- diferents tipus de base dades:
Base d’OpenOffice, Microsoft SQL
tent en un sistema d’enquestes per Internet. Server, Oracle, MySQL, Microsoft
Access, etc.
Figura 7. Organització de la carpeta enquesta1 Fixeu-vos que els fitxers són .html.
Figura 8. Fitxers que conté la subcarpeta d’imatges de l’aplicació d’enquesta Fixeu-vos que els fitxers són .gif.
El fitxer index.html únicament conté una petita taula amb una pregunta
que sigui del vostre interès i tres possibles respostes que seran controls
del tipus radio buttons del formulari.
<html>
<head>
<title>Enquesta en HTML</title>
</head>
<body>
<form name="form1" >
<table width="490" border="1">
<tr>
<td width="429"><center>ENQUESTA</center></td>
</tr>
<tr>
<td>Quin és el teu mitjà de transport habitual per anar a la feina?</td>
</tr>
<tr>
<td>
<input type="radio" name="vot" value="1">Cotxe.<br>
<input type="radio" name="vot" value="2">Moto.<br>
<input type="radio" name="vot" value="3">Transport públic.<br>
</td>
</tr>
<tr>
<td><center><a href="enquesta.html">Votar</a></center></td>
</tr>
</table>
</form>
</body>
</html>
El resultat de l’execució del codi del fitxer index.html és el que podeu veu-
re en la figura 9.
Figura 9. Execució del codi del fitxer index.html del projecte d’enquesta per Internet
<html>
<head><title>Resultats de l'enquesta en HTML</title>
</head>
<body>
<h2>RESULTATS PARCIALS DE L’ENQUESTA</h2>
Quin és el teu mitjà de transport habitual per anar a la feina?
<tr>
<td>Cotxe.</td>
<td><img src="imatges/barra1.gif" alt="barra1" width="55%" height="15"></td>
<td><center>8 votacions</center></td>
</tr>
<tr>
<td>Moto.</td>
<td><img src="imatges/barra2.gif" alt="barra1" width="30%" height="15"></td>
<td><center>3 votacions</center></td>
</tr>
<tr>
<td>Transport públic.</td>
<td><img src="imatges/barra3.gif" alt="barra1" width="15%" height="15"></td>
<td><center>2 votacions</center></td>
</tr>
</table>
<br>
Total de votacions emeses: 13 <br>
Tornar a <a href="index.html">index</a>
</body>
</html>
Figura 10. Execució del codi del fitxer index.html del projecte d’enquesta per Internet
Desenvolupament de funcions en el sistema informàtic 38 Programació web dinàmica en ASP
j) Fem clic en el menú Ver\Vista hoja de datos per emplenar el valor dels
camps. Escriviu-hi la pregunta i les respostes que siguin del vostre interès.
En la figura 12 teniu una mostra de la pregunta i respostes utilitzades en
l’enquesta per Internet del nostre exemple.
Figura 12. Vista hoja de datos de la taula preguntes del fitxer enquesta.mdb
• Canvieu l’enllaç de votar per un botó de votar que cridarà el fitxer en-
questa.asp.
Definim el botó amb <input type="submit" value="Votar">.
<html>
<head>
<title>Enquesta en HTML</title>
</head>
<body>
<%
' Realitzem la connexió a la base de dades
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
<tr>
<td>
<!-- Obtenim de la base de dades les tres possibles respostes -->
<input type="radio" name="vot" value="1"><%= rs("resposta1") %><br>
<input type="radio" name="vot" value="2"><%= rs("resposta2") %><br>
<input type="radio" name="vot" value="3"><%= rs("resposta3") %><br>
</td>
</tr>
<tr>
<!-- Definim un botó per a realitzar la votació -->
<td><center><input type="submit" value="Votar"></center></td>
</tr>
</table>
</form>
</body>
</html>
Figura 14. Fitxer index.asp corresponent a la versió dinàmica de l’enquesta per Internet
A continuació, exposem el codi del fitxer enquesta.asp, que inclou les mo-
dificacions següents respecte al fitxer de la primera versió enquesta.html:
• Lectura dels paràmetres id i vot obtinguts del formulari del fitxer in-
dex.asp.
Atès que el formulari del fitxer index.asp s’ha enviat pel mètode GET
per obtenir els paràmetres id i vot, utilitzem Request.QueryS-
tring(“nom_variable”). En aquest cas, definim dues variables pid=Re-
quest.QueryString("id") i pvot=Request.QueryString("vot").
UPDATE nom_taula
SET nom_camp1=valor1, nom_camp2=valor2...
WHERE condició
if err<>0 then
for each objErr in conn.Errors
response.write("Description: ")
response.write(objErr.Description & "<br />")
response.write("Error number: ")
response.write(objErr.Number & "<br />")
next
response.write("Error a la votació!")
else
' Votació correcta
set rs=Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM preguntes WHERE id=" & pid
rs.open sql,conn
end if
En la figura 15 podem veure el resultat de l’execució del codi del fitxer en-
questa.asp de la versió dinàmica de l’aplicació d’enquesta per Internet.
Figura 15. Fitxer enquesta.asp corresponent a la versió dinàmica de l’enquesta per Internet
Si heu seguit tots els passos corresponents, ara ja només queda executar i
provar l’aplicació d’aquesta segona versió d’enquesta dinàmica per Inter-
net. Si utilitzeu un servidor local, escriviu a la barra d’adreces del navega-
dor: http://localhost/exemples/enquesta2/index.asp.
git l’usuari IUSR_nomserver. Si en fer clic amb el botó secundari del ratolí
a sobre del fitxer enquesta.mdb no visualitzeu la pestanya de seguretat,
heu de desactivar l’opció Utilizar uso compartido simple de archivos tal
com mostra la figura 16.
Cada vegada que un client sol·licita una pàgina amb un navegador, també
enviarà la galeta. El llenguatge ASP permet tant la creació com la recupe-
ració de valors de galetes.
Les galetes s’implementen com una col·lecció i s’utilitzen amb els objec-
tes d’ASP Request i Response.
<% Response.cookies("color")("fons")="blau"%>
<% Response.cookies("color")("text")="blanc"%>
Per exemple, el codi perquè la galeta color expiri el dia 10/10/2009 seria:
El servidor, quan rep una petició de pàgina d’un client, recupera el valor
de les galetes per consultar-les o modificar-les.
Variable=Request.cookies(nom_cookie)[(clau)]
Per exemple, per tal de recuperar el color de les preferències d’usuari, es-
criuríem el següent codi:
<% ColorPreferit=Request.cookies("color")%>
En cas que la galeta tingui claus, també en podem recuperar el valor. Així
per exemple, per recuperar el color de fons (blau) i el color de text (blanc)
escriuríem:
<% ColorFons=Request.cookies("color")("fons")%>
<% ColorText=Request.cookies("color")("text") %>
Desenvolupament de funcions en el sistema informàtic 47 Programació web dinàmica en ASP
<html>
<body>
<%
dim nrevisites
response.cookies("NreVisites").Expires=date+365
nrevisites=request.cookies("NreVisites")
if nrevisites="" then
response.cookies("NreVisites")=1
response.write("Benvingut! És el primer cop que visites la nostra pàgina.")
else
response.cookies("NreVisites")=nrevisites+1
response.write("Has visitat aquesta pàgina web " & nrevisites)
if nrevisites=1 then
response.write " cop!"
else
response.write " cops!"
end if
end if
%>
</body>
</html>
Cada vegada que es refresca la pàgina s’incrementa el valor de la galeta Nre- Per exemple, en el Mozilla Firefox
Visites en una unitat. Si ja heu fet diverses càrregues de la pàgina i ara voleu l’opció de netejar galetes és en el
menú Herramientas\Limpiar datos
reiniciar el valor de la galeta, l’únic que heu de fer és netejar les galetes. privados, i heu d’activar l’opció de
galetes.
3.2. Sessions
El llenguatge ASP crea una única galeta per a cada usuari, que s’envia al
client i conté informació que identifica l’usuari. La seva interfície és el que
anomenem objecte sessió.
Session(nom_variable)=valor
<%
Session.Contents.Remove(nom_variable)
%>
Desenvolupament de funcions en el sistema informàtic 49 Programació web dinàmica en ASP
Si volem eliminar ràpidament totes les variables d’una sessió podem uti-
litzar el mètode RemoveAll.
<%
Session.Contents.RemoveAll()
%>
<%
Session.Abandon
%>
<%
Session.Timeout=5
%>
<%
' si és la primera vegada que visualitzem
' la pàgina fem omplir el formulari
if Request.form="" then
%>
<html>
<head>
<title>Accés privat a pàgines</title>
</head>
<body>
<tr>
<td>Contrasenya:</td>
<td> <input type="password" name="password" size="15"><BR></td>
</tr>
<tr colspan="2">
<td><center><input type="Submit" value="Entrar"></center></td><td> </td>
</tr>
</table>
</form>
</body>
</html>
<%
'Si l'usuari ja ha omplert prèviament el formulari comprovem que la
'contrasenya sigui correcta i omplim les dades de la sessió
else
<html>
<title>Accés privat a pàgines</title>
<body>
<% else
Response.write("Error usuari i/o contrasenya incorrectes!")
end if
end if
%>
Desenvolupament de funcions en el sistema informàtic 51 Programació web dinàmica en ASP
<%
'accedim a la sessió per a comprovar si tenim permís d'accés
if session("permis")="si" then %>
<html>
<title>Sessió d'usuari</title>
<body>
Hola <% =session("login") %>, benvingut a la sessió.<BR>
</body>
</html>
<%
else
Response.write("Accés denegat")
end if
%>
10) Feu clic en el menú Ver\Vista hoja de datos per emplenar el valor dels
camps. Escriviu el vostre nom i cognoms i el d’alguns amics o coneguts per
disposar d’alguns registres de prova. En la figura 24 teniu una mostra de
tres registres introduïts a tall d’exemple.
Desenvolupament de funcions en el sistema informàtic 54 Programació web dinàmica en ASP
Figura 24. Vista Full de dades de la taula usuari de la base de dades usuaris.mdb
<html>
<head>
<title>Exemple de connexió ADO d’ASP</title>
</head>
<body>
<%
' Realitzem la connexió a la base de dades
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Close
set conn = nothing
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 55 Programació web dinàmica en ASP
Variable_cadena=”sentència_SQL_de_selecció”
Variable_recordset=nom_connexió.Execute(variable_cadena)
<html>
<head>
<title>Exemple de SELECT en ASP</title>
</head>
<body>
<H1>Selecció de registres de la taula usuari</H1>
<%
Dim Conn,strSQL, objRS
%>
<table border=1>
<tr><td>Nom</td><td>Cognoms</td></tr>
<%
'mentre quedin registres
while (not objRS.Eof)
'visualitzem el contingut dels camps nom i cognoms
Response.Write("<tr><td>"& objRS("nom") & "</td><td>" & objRS("cognoms") & "</td></tr>")
objRS.MoveNext
wend
'tanquem connexió
Conn.Close
set objRS = nothing
set Conn = nothing
%>
</table>
</body>
</html>
Figura 25. Execució del fitxer seleccio.asp que visualitza els usuaris de la base de dades usuaris.mdb
Quan un usuari emplena els camps d’un formulari web i fa clic en el botó
Errors a l’hora d’inserir un
Enviar, normalment ja es fa una primera verificació de formats de camps registre nou
Per inserir registres nous en la base de dades cal seguir un parell de passos:
Variable_cadena=”sentència_SQL_de_selecció”
nom_connexió.Execute(variable_cadena)
<html>
<head>
<title>Exemple d'INSERT en ASP</title>
</head>
<body>
<%
Dim Conn,strSQL, objRS
'tanquem connexió
Conn.Close
set objRS = nothing
set Conn = nothing
%>
</table>
</body>
</html>
És important que els noms dels camps del formulari siguin significatius i
que admetin valors compatibles amb els valors que podem inserir en la
taula de la base de dades. !
A tall d’exemple, hem definit els camps nom i cognoms amb mida màxima
del camp de 250 caràcters, al igual que definiríem a la taula usuari de la
base de dades usuaris.mdb.
Desenvolupament de funcions en el sistema informàtic 59 Programació web dinàmica en ASP
Figura 26. Execució del fitxer formalta.asp, que permet insertir un nou usuari a la base de dades
usuaris.mdb
Amb el fitxer formalta.asp hem introduït els valors dels camps per al nou
usuari, i en fer clic en el botó Inserir executem el fitxer insereix.asp.
<%
' fitxer que realitza la inserció del nou usuari
' recull les dades del fitxer formalta.asp
Dim Conn,strSQL
Conn.Execute(strSQL)
Conn.Close
set Conn = nothing
%>
2) Genera la sentència d’inserció recollint els valors dels camps del for-
mulari del fitxer formalta.asp: Request.Form("nom") i Request.Form
("cognoms”), que s’havien enviat amb el mètode post.
Figura 27. Resultat de l’execució del fitxer insereix.asp que redirigeix cap al fitxer formalta.asp que visu-
alitza tots els registres de la taula d’usuaris, inclòs el registre nou
Desenvolupament de funcions en el sistema informàtic 61 Programació web dinàmica en ASP
Per tant, a l’hora d’eliminar registres d’una taula cal seguir els passos se-
güents:
DELETE
FROM taula
WHERE condició
Variable_cadena=”sentència_SQL_de_selecció”
nom_connexió.Execute(variable_cadena)
Quan escrivim la sentència d’eliminació cal formular correctament la con- Errors a l’hora d’esborrar un
dició de la clàusula WHERE, ja que si no es compleix la condició no s’eli- registre nou
<html>
<head>
<title>Exemple de DELETE en ASP</title>
</head>
<body>
<H1>Exemple d'eliminació de registres</H1>
<%
Dim Conn,strSQL, objRS
%>
<table border=1>
<tr><td>Nom</td><td>Cognoms</td><td>Esborrar</td></tr>
<%
'mentre quedin registres
while (not objRS.Eof)
'visualitzem el contingut dels camps nom i cognoms
Response.Write("<tr><td>" & objRS("nom") & "</td><td>" & objRS("cognoms"))
'visualitzem un enllaç que crida al fitxer borra.asp
'i li passa com a paràmetre l'identificador de l'usuari
Response.Write("</td><td><a href=""esborra.asp?id=" & objRS("id") &""">esborrar</a></
td></tr>")
objRS.MoveNext
wend
'tanquem connexió
Conn.Close
set objRS = nothing
set Conn = nothing
%>
</table>
</body>
</html>
Figura 28. Resultat de l’execució del fitxer baixa.asp, que visualitza els registres de la taula usuari de la
base de dades usuaris.mdb
Desenvolupament de funcions en el sistema informàtic 63 Programació web dinàmica en ASP
<%
Dim Conn,strSQL
Response.Redirect("baixa.asp")
%>
Figura 29. Resultat de l’execució del fitxer esborra.asp que retorna el control al fitxer baixa.asp que vi-
sualitza els registres de la taula usuari amb el registre eliminat
Desenvolupament de funcions en el sistema informàtic 64 Programació web dinàmica en ASP