You are on page 1of 64

Programació web dinàmica

en ASP
Montserrat Mir Porcel

Desenvolupament de funcions en el sistema


informàtic
Desenvolupament de funcions en el sistema informàtic Programació web dinàmica en ASP

Índex

Introducció ............................................................................................... 5

Objectius ................................................................................................... 7

1. El llenguatge script de servidor ASP ............................................. 9


1.1. Introducció als llenguatges de script ........................................ 9
1.1.1. Llenguatges script de client enfront de
llenguatges script de servidor ......................................... 10
1.1.2. Característiques del llenguatge ASP .............................. 12
1.1.3. Configuració de l’entorn de treball ................................. 14
1.2. Sentències de codi en ASP ......................................................... 15
1.2.1. Instruccions ....................................................................... 15
1.2.2. Comentaris ........................................................................ 16
1.3. Constants ..................................................................................... 17
1.4. Variables ....................................................................................... 17
1.5. Sentència write ............................................................................ 18
1.6. Operadors ..................................................................................... 19
1.6.1. Operadors aritmètics ........................................................ 19
1.6.2. Operadors de comparació ................................................ 20
1.6.3. Operadors lògics ............................................................... 20
1.7. Cadenes de text ........................................................................... 21
1.8. Estructures de control bàsiques ................................................ 23
1.8.1. Sentències condicionals ................................................... 23
1.8.2. Sentències iteratives ....................................................... 24

2. Pàgina bàsica de script de servidor ASP ........................................ 27


2.1. Funcions i procediments ............................................................ 27
2.1.1. Funcions ............................................................................ 27
2.1.2. Procediments .................................................................... 28
2.2. Model d’objectes d’ASP .............................................................. 29
2.3. Treball amb formularis ............................................................... 30
2.3.1. Pas de variables entre formularis ................................... 31
2.4. Construcció d’una pàgina bàsica amb ASP.
Exemple d’enquesta ................................................................... 34

3. Ús de funcions en els scripts de servidor ASP .............................. 45


3.1. Cookies o galetes ......................................................................... 45
3.1.1. Enviar una galeta .............................................................. 45
3.1.2. Temps de vida d’una galeta ............................................. 46
3.1.3. Recuperar el valor d’una galeta ...................................... 46
3.1.4. Exemple de comptador de visites amb galetes ............. 47
Desenvolupament de funcions en el sistema informàtic Programació web dinàmica en ASP

3.2. Sessions ........................................................................................ 48


3.2.1. Definició de variables sessió ........................................... 48
3.2.2. Eliminació de variables de sessió ................................... 48
3.2.3. Finalització de la sessió .................................................... 49
3.2.4. Exemple de treball amb sessions ................................... 49
3.3. Accés a bases de dades ................................................................ 52
3.3.1. Creació de la base de dades ............................................. 52
3.3.2. Connexió a la base de dades ............................................ 54
3.3.3. Consultes a la base de dades ........................................... 55
3.3.4. Inserció de registres ......................................................... 56
3.3.5. Esborrament de registres ................................................ 61
Desenvolupament de funcions en el sistema informàtic 5 Programació web dinàmica en ASP

Introducció

Una de les característiques fonamentals dels sistemes d’informació és que


han de ser oportuns. És a dir, han de generar i notificar les dades de mane-
ra fidel als fets reals perquè es puguin prendre decisions i dur a terme ac-
tuacions immediates. Si es trasllada aquesta definició al món d’Internet,
els continguts han de reflectir la realitat d’una informació dinàmica i can-
viant segons unes regles predefinides o uns criteris que estableix l’usuari,
la qual cosa permet la personalització i tractament totals de la informació
en el navegador.

Les pàgines web dinàmiques responen a aquesta necessitat d’oferir con-


tinguts interactius mitjançant els llenguatges script. En la vida quotidia-
na, utilitzem multitud d’aplicacions d’aquest estil com, per exemple,
reservar les entrades per a qualsevol espectacle, reservar viatges, contrac-
tar assegurances, consultar els llibres disponibles en la xarxa de bibliote-
ques, sol·licitar hora per a la consulta del metge, etc.

Al llarg d’aquesta unitat veureu el llenguatge de script ASP que permet la


construcció de les active server pages de Microsoft per generar pàgines
web amb contingut dinàmic.

En el nucli d’activitat “El llenguatge script de servidor ASP”, es descriu el


concepte de llenguatge de script, es detallen les característiques del llen-
guatge de programació web ASP i les diferències amb altres llenguatges de
script, i també l’entorn de treball adequat per a la seva utilització. Tanma-
teix, exposarem les sentències bàsiques per programar amb el llenguatge
ASP.

En el nucli d’activitat “Pàgina bàsica de script de servidor ASP”, es detalla


com es defineixen funcions i procediments propis, però també com s’utilit-
zen els objectes d’ASP. Igualment s’aplicaran els mètodes GET i POST per
passar informació entre diferents pàgines web i es codifica, com a exemple
de pàgina bàsica, un sistema d’enquesta per Internet amb accés a base de
dades.

Finalment, en el nucli d’activitat “Ús de funcions en els scripts de servi-


dor ASP” ampliareu el conjunt d’instruccions que cal utilitzar en les pàgi-
nes ASP amb l’ús de galetes i sessions, i també amb la implementació de
les operacions de manteniment d’una base de dades.

Per assolir els continguts d’aquesta unitat, és recomanable repassar els


coneixements bàsics del llenguatge de marques HTML i del llenguatge
Desenvolupament de funcions en el sistema informàtic 6 Programació web dinàmica en ASP

de consulta de base de dades SQL (structured query language), i també


fer les activitats i els exercicis d’autoavaluació proposats.
Desenvolupament de funcions en el sistema informàtic 7 Programació web dinàmica en ASP

Objectius

En acabar la unitat heu de ser capaços del següent:

1. Dissenyar i codificar programes senzills que permetin millorar l’ex-


plotació del sistema i aplicacions, amb l’ús adequat de les interfícies
de programació que ofereix el programari base del sistema.

2. Relacionar les principals biblioteques, funcions, serveis i utilitats


del sistema en ús amb les necessitats requerides per al desenvolu-
pament del programa.

3. Emprar les biblioteques del sistema i d’usuari, els traductors, els de-
puradors i els generadors de codi i pantalles.

4. Implantar programes de millora d’explotació en el sistema a partir


dels canvis proposats, i amb l’ús de la informació tècnica correspo-
nent.

5. Establir procediments de prova que verifiquin el funcionament del


sistema i dels programes desenvolupats, i que preservin la configu-
ració i operativitat del sistema o aplicació.

6. Documentar, d’una manera clara i concisa, els canvis introduïts en


el sistema o programes desenvolupats amb relació a les estructures
de control, dades i característiques del sistema.
Desenvolupament de funcions en el sistema informàtic 9 Programació web dinàmica en ASP

1. El llenguatge script de servidor ASP

El llenguatge de script de servidor ASP és un dels llenguatges més utilit-


zats actualment per al desenvolupament d’aplicacions web per la seva fun-
cionalitat i facilitat d’ús.

Hi ha una sèrie de conceptes molt relacionats amb el desenvolupament


web professional com llenguatges de script de servidor, pàgines dinàmi-
ques i interacció amb bases de dades. Amb un entorn adequat de treball
i el llenguatge ASP podem dissenyar aplicacions web comercials.

1.1. Introducció als llenguatges de script

Les primeres versions de navegadors i servidors de pàgines web oferien


uns continguts bàsics i orientats només a la presentació d’una empresa,
corporació, entitat, etc. per donar a conèixer de manera genèrica els seus
productes o serveis per Internet o, dit d’una altra manera, tenir presència
web bàsica.

Actualment, a Internet trobem multitud de pàgines senzilles que general-


ment consten d’una petita presentació de continguts mitjançant text, fo-
tos, vídeos, menús i navegació. Són ideals en entorns en què no hi ha
previsió de fer canvis o de creixement, són pàgines web estàtiques o clàs-
siques. El temps de resposta és òptim quan es carreguen els continguts, ja
que el servidor web no ha de fer cap esforç addicional a l’hora de transme-
tre les dades i, de la mateixa manera, el navegador només ha d’interpretar
un conjunt senzill d’ordres per poder-los visualitzar.

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.

canviant amb informació variable en el temps. Per adaptar-nos a aquest


entorn cal desenvolupar projectes que utilitzin llenguatges que permetin
una gestió dinàmica de la informació.
Desenvolupament de funcions en el sistema informàtic 10 Programació web dinàmica en ASP

En les pàgines web dinàmiques els continguts visualitzats en el


navegador són actualitzats en funció de les necessitats o requeri-
ments de l’aplicació web.

Per al tractament i la presentació de la informació dinàmica és imprescin-


dible l’ús de llenguatges de script. Bàsicament, hi ha dos tipus de llenguat-
ges de scripts:

1) Els llenguatges script de navegador o client.


2) Els llenguatges script de servidor.

1.1.1. Llenguatges script de client enfront de


llenguatges script de servidor

La diferència bàsica entre els llenguatges script de client i els llenguatges


script de servidor rau a la màquina on s’executa el codi font: els scripts de
client s’executen en local, mentre que els scripts de servidor s’executen
en una màquina remota.

El codi resultant dels llenguatges script de client és el que s’exe-


cuta en el navegador de l’usuari i normalment forma part del codi
HTML d’un document (genèricament DHTML, dynamic hyper-
text markup language).

L’avantatge principal del llenguatge de script de client és que no satura la


CPU del servidor i no consumeix amplada de banda, i s’utilitza principal-
ment per a petites tasques que no requereixen comunicació amb el servi-
dor. Exemples típics d’utilització de scripts de client són totes les pàgines
que inclouen formularis en què cal validar dades, ja que les dades han de te- Formulari de validació d’entrada al sistema

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:

• Verificació dels camps d’informació d’usuari corresponent al formulari


d’alta de nous comptes de correu electrònic. Segurament hi haurà uns
camps obligatoris que no es poden deixar en blanc i amb el llenguatge
de script és fàcilment controlable que aquests camps tinguin valor.

• Validació del format de determinats camps d’un formulari com, per


exemple, la contrasenya d’un nou usuari que vol entrar en una deter-
minada aplicació. Típicament aquests camps han de complir uns re-
queriments de formats específics, per exemple, la llargada mínima i la
combinació de majúscules o minúscules, caràcters especials i símbols,
En cas d’error, és típic visualitzar en una finestra
que es verifiquen amb el llenguatge de script de client. un missatge informatiu
Desenvolupament de funcions en el sistema informàtic 11 Programació web dinàmica en ASP

• 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.

Per al desenvolupament de pàgines amb script de navegador podeu utilitzar


multitud de llenguatges com el JavaScript o el VBScript (Visual Basic Script).

Les aplicacions web desenvolupades amb llenguatges script de ser-


vidor s’executen directament en el servidor web i produeixen com a
resultat codi HTML dinàmic en què el client no té accès al codi font
del servidor. La finalitat principal és proporcionar molta interacció
amb l’usuari segons els seus requeriments o criteris.

Per entendre millor aquesta definició observeu l’esquema de la figura 1,


en què s’il·lustra una màquina client que envia una petició de pàgina web
(http://...) i el servidor executa l’script corresponent utilitzant el motor
adequat. Sovint les peticions requereixen consultes a bases de dades. Com
a resposta, el client rep un web amb codi HTML.

Figura 1. Funcionament dels llenguatges script de servidor

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.

Una de les característiques més rellevants dels llenguatges script de ser-


vidor és que es poden comunicar amb les bases de dades més conegudes
Desenvolupament de funcions en el sistema informàtic 12 Programació web dinàmica en ASP

(SQL Server, Oracle, MySQL, etc.) i suporten llenguatges i protocols d’es-


pecificació com l’XML (extensible markup language) o el SOAP (simple
object access protocol) per a l’especificació i l’intercanvi d’informació es-
tructurada entre serveis web. Com a exemples de llenguatges script de
servidor tenim:

• PHP (*.php)
• ASP/ASP.net (*.asp/*.aspx)
• Perl (*.pl)
• Java Server Pages (*.jsp)
• ColdFusion (*.cfm)
El llenguatge ASP és propietat de Microsoft.
• Python (*.py)

1.1.2. Característiques del llenguatge ASP


Nosaltres tractarem dels ASP
(active server pages) de Microsoft
per generar pàgines web amb
Les característiques més rellevants del llenguatge de script de servidor contingut dinàmic.
ASP són les següents:

• Respecte a la sintaxi del llenguatge:

– No distingueix entre majúscules ni minúscules.


– Les intruccions finalitzen prement la tecla de retorn.
– No és necessària la delaració de variables abans d’utilitzar-les, però
sí és molt recomanable.
– Les cadenes de text es delimiten entre cometes dobles (").
– Els comentaris comencen amb el caràter cometa simple (')i finalit-
zen al final de línia.

• Les característiques genèriques del llenguatge ASP, les detallem en la


taula 1.

Taula 1. Característiques genèriques del llenguatge de programació web ASP

Propietat Descripció

Sistema operatiu Microsoft Windows

Tipus de llenguatge Script de servidor

Llicència Propietària de Microsoft

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.

Editor de codi Editor ASCII estàndard


Editors d’HTML
Microsoft Visual Interdev
Macromedia Dreamweaver

Nom dels fitxers nomfitxer.asp


nomfitxer.aspx (asp.net)
Desenvolupament de funcions en el sistema informàtic 13 Programació web dinàmica en ASP

Propietat Descripció

Accés a bases de dades Microsoft Access


Microsoft SQL Server
Oracle
Informix
MySql

Versions ASP 3.0


ASP.net

Navegadors compatibles Tots

Delimitador de codi <% codi %>

El llenguatge de script ASP és interpretat pel servidor web de Microsoft


IIS degudament instal·lat i configurat en un sistema operatiu de servidor
com, per exemple, el Microsoft Windows 2003 Server o el Microsoft Win-
dows 2008 Server.

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. !

Podeu editar el codi ASP amb qualsevol d’aquests editors:

• L’editor ASCII estàndard.


• L’editor HTML.
• Altres editors de pàgines web que ofereixen més possibilitats, com
el Microsoft Visual Interdev o el Macromedia Dreamweaver, entre
d’altres.

En principi, la majoria d’instruccions d’ASP és interpretada pels navega- Codi de script


dors més utilitzats (l’Opera, FireFox, Microsoft Internet Explorer…), però
si utilitzeu codi ASP.net, encara que els controls de servidor s’interpretin Sovint, segons estiguin
configurades les opcions de
d’una manera o d’una altra en funció del navegador que sol·licita la pàgi- seguretat del navegador del client
o l’antivirus del sistema, el codi de
na, pot passar que el resultat no sigui l’esperat. script no s’executa correctament.

Utilitzant el llenguatge ASP podem accedir a qualsevol gestor de bases


de dades mitjançant un controlador ODBC (open database connection),
però evidentment la compatibilitat és idònia amb productes Microsoft.
Donat un projecte de desenvolupament web, cal un estudi previ per se-
leccionar les eines de programari adequades, cal avaluar els punts a fa-
vor i en contra. Així, per exemple, pot ser que la connexió per ODBC
sigui més lenta que la connexió directa però permeti l’accés a un motor
més potent.
Desenvolupament de funcions en el sistema informàtic 14 Programació web dinàmica en ASP

El llenguatge ASP ha anat evolucionat juntament amb l’evolució del Mi-


crosoft Windows, i des de la primera versió ASP v1 fins a la tecnologia ac-
tual ASP.net ha anat incorporant noves instruccions i funcionalitats.

Microsoft posa a disposició dels usuaris una


versió gratuïta específica per programar en
ASP.net, la Visual Web Developer Express
Edition.
1.1.3. Configuració de l’entorn de treball

Per desenvolupar una aplicació web amb el llenguatge ASP cal un progra-
mari específic que és el que detallarem a continuació.

1) Programari necessari per a la càrrega i visualització de pàgines ASP

Per al processament de la pàgina ASP no hi ha cap restricció especial a la


màquina client, únicament ens cal disposar d’un navegador web instal·lat.
Els navegadors més utilitzats en les diferents plataformes, Mac, Linux i
Windows, són l’Apple Safari, el Mozilla Firefox, l’Opera i el Microsoft In-
ternet Explorer.

2) Programari necessari per a l’escriptura i prova de codi ASP

Per a l’escriptura de codi en llenguatge ASP ens cal un editor. Si no dis-


posem de cap d’especialitzat, amb un editor tipus llibreta és suficient;
però si ens hi volem dedicar de manera professional es recomana la uti-
lització d’un editor específic per a ASP, ja que ens facilitarà força la de-
tecció d’errors.

En el mercat hi ha multitud de productes comercials com el Macrome-


dia Dreamweaver, el Microsoft Visual Interdev, el Cute Editor, el Rich
Editor, etc., que ens agilitzen la tasca d’edició de codi en ASP. De totes
maneres, també disposem d’altres editors, com el Notepad ++, que és
de codi lliure.

3) Programari necessari per al servidor web


El Notepad++ és un editor de codi gratuït
amb suport per al llenguatge ASP.

Un cop editat el codi, el pas següent seria comprovar-ne el funcionament.


Quan el servidor web rep del client una sol·licitud de pàgina ASP, la cerca,
la interpreta i hi retorna una pàgina amb codi HTML. L’ideal és que el ser-
vidor web sigui una màquina diferent de l’estació client (servidor remot),
però si inicialment no disposem de dues màquines podríem fer una ins-
tal·lació en local (servidor local) o utilitzar un servidor d’Internet que su-
porti ASP. És important valorar diferents opcions a l’hora de triar el
nostre servidor web. En tot cas, el programari que cal utilitzar depèn de la
plataforma de desenvolupament. Si treballem amb plataforma Windows
XP, 2003 o 2008, normalment utilitzarem com a servidor web l’Internet In-
Desenvolupament de funcions en el sistema informàtic 15 Programació web dinàmica en ASP

formation Server. Hi ha, però, altres opcions que també cal conèixer i que
es detallen en la taula 2.

Taula 2. Entorns de desenvolupament web amb suport ASP multiplataforma

Programari Plataforma base Empresa propietària

Mono (ASP.net) Linux, Solaris, Mac OSX, Codi obert patrocinat


Windows, BSD per l’empresa Novell

Chilisoft (ASP) Linux, UNIX, Windows Sun Microsystems

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.

El projecte Mono és una implementació de


codi obert de la plataforma .Net de Microsoft.
Chilisoft és un programari ràpid d’instal·lar i
En el servidor la configuració de l’entorn de treball per a la pro- intuïtiu. Entre altres coses, permet la integració
del servidor web Apache amb el llenguatge ASP.
gramació en ASP inclou:

Editor de codi + Servidor web + Servidor de bases de dades

Per al desenvolupament de petites aplicacions web podríem utilitzar el


Microsoft Access com a magatzem de dades. De totes maneres, és recoma-
nable usar sistemes gestors de dades més potents com el Microsoft SQL
Server, l’Oracle, l’Informix o el MySql. Per fer la connexió a determinats
gestors podrem connectar directament o utilitzar els controladros corres-
ponents OLEDB o ODBC segons el cas.

1.2. Sentències de codi en ASP

La codificació en ASP ens permet la creació de pàgines amb contingut


dinàmic utilitzant scripts executats en el servidor. Els scripts o progra-
!!
En aquest curs no estudiarem el
mes del codi ASP es poden escriure en llenguatge VBScript o JavaS- JavaScript que s’utilitza
cript. Les sentències són un conjunt d’instruccions delimitades per habitualment per validar els
camps de formularis, sinó que ens
caràcters especials. Hi ha un tipus especial de sentència que serveix centrarem en el VBScript, que
s’utilitza molt per desenvolupar el
per introduir comentaris dels programadors en el codi font. codi dels programes que
s’executaran en el servidor web.

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>

Una altra possibilitat és utilitzar les etiquetes <SCRIPT LANGUAGE=”VBS-


CRIPT” RUNAT=”SERVER”> per indicar el principi de bloc de codi de llen-
guatge de script. Fixeu-vos que si volem indicar que el codi s’ha d’executar
en el servidor utilitzem l’etiqueta runat=”SERVER”. Per finalitzar el bloc
de codi utilitzem l’etiqueta </SCRIPT>. Observeu aquest codi il·lustratiu
a tall d’exemple:

<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

Quan programem és molt aconsellable que introduïm explicacions breus


en el codi i sobretot a les funcions que tinguin certa complexitat. D’aques-
ta manera fem que el codi sigui fàcil d’entendre i de mantenir per altres
membres de l’equip de desenvolupament. En el llenguatge ASP, els co-
Hi ha algun editor d’ASP amb
mentaris admesos són d’una línia i hem de posar el caràcter de cometa opcions avançades que sí permet
comentaris multilínia.
simple al principi de cada línia. Observeu l’exemple d’ús següent de co-
mentari:

<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

Una constant és un nom que representa un nombre o una cadena i el valor


El caràcter _ s’utilitza per a línies
de la qual, en principi, no varia durant l’execució del programa. Per decla- de codi llargues per indicar que la
instrucció continua en la línia
rar una constant, utilitzarem la paraula reservada const tal com mostra següent.
l’exemple de codi següent.

<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

1.5. Sentència write

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:

<% Response.Write(“cadena de text”)%>

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:

<% Response.Write(variable) %>

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>

També és possible utilitzar una expressió més reduïda per visualitzar el


contingut de les variables des del codi HTML:

<% =variable %>

Així, per exemple, observeu el codi següent, que visualitza el contingut de


la variable nom.

<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

Coneixem l’operador de cocatenació & que és imprescindible per a la visualit-


zació d’informació al navegador, que s’utilitza per a ajuntar cadenes de text.
A la vida real trobem infinitat d’exemples on cal la utilització dels operadors.
Així, per exemple, per al càlcul de preus amb determinats percentatges d’im-
postos o descomptes utilitzaríem operadors aritmètics. De la mateixa ma-
nera, per comparar valors necessitem els operadors de comparació
imprescindibles en qualsevol llenguatge de programació. Finalment, per
combinar diferents expressions utilitzem els connectors o operadors lògics.

Evidentment, a la pràctica, s’utilitzen segons les nostres necessitats tots


els tipus d’operadors, és a dir, els aritmètics, els de comparació i els lògics.

1.6.1. Operadors aritmètics

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.

Taula 3. Operadors aritmètics en el llenguatge ASP

Operador Nom Exemple Descripció

+ Suma 4+2 Suma dos nombres.

− Resta 4-2 Resta dos nombres.

* Multiplicació 4*2 Multiplica dos nombres.

/ Divisió 4/2 Divideix dos nombres.

Mod Mòdul 4mod2 Retorna el residu de la divisió de tots dos


nombres. En aquest cas, retornaria 0.

^ Exponencial 4^2 Calcula la potència amb base 4 i exponent 2.


En aquest cas, retornaria 16.

En el codi següent calculem el resultat d’utilitzar els operadors aritmètics


bàsics aplicats a les variables num1 i num2.

<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

1.6.2. Operadors de comparació

Quan programem prenem decisions en funció de determinats valors. Per


comparar valors utilitzem els operadors de comparació. En la taula 4 es
comparen els valors a i b.

Taula 4. Operadors de comparació al llenguatge ASP

Operador Nom Exemple Funcionament

= Igual a=b Avalua cert si a i b són iguals.

<> Diferent a <> b Avalua cert si a i b són diferents.

< 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

A continuació, exposem el codi corresponent a la comparació de dos valors


numèrics donats per les variables num1 i num2.

<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>

1.6.3. Operadors lògics

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

Taula 5. Operadors lògics en el llenguatge ASP

Operador Nom Exemple Funcionament

And I (5>1) and (1<3) Avalua cert si totes dues expressions són
certes.

Or O (5>1) or (1<3) Avalua cert si com a mínim una de les


dues expressions és certa.

Xor XOR (5>1) xor (1<3) Avalua cert si una i només una de les
expressions és certa.

Not No not (5>2) Avalua la negació de l'expressió.

En el codi següent es comparen tres valors numèrics emmagatzemats en


les variables num1, num2 i num3 utilitzant l’operador de comparació > i
l’operador lògic and.

<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>

1.7. Cadenes de text

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.

• mid(cadena, inici, longitud)


La funció mid té tres paràmetres: la cadena de text, l’inici de la subca-
dena que volem obtenir i la longitud d’aquesta subcadena.
Desenvolupament de funcions en el sistema informàtic 22 Programació web dinàmica en ASP

• 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.

• replace(text, cadena1, cadena2)


La funció replace té tres paràmetres: un text i dues cadenes. Tal com
el seu nom indica, replace substitueix la cadena1 per la cadena2 al
text passat com a primer paràmetre.

• 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.

A continuació, exposem el codi corresponent a exemples d’utilització de


les funcions bàsiques per al treball amb cadenes de text del llenguatge
ASP.

<html>
<head>
<title> Exemple d'utilització de les funcions de text d'ASP</title>
</head>
<body>
<%
Dim frase, paraules

' funció len


Response.Write("La longitud de la paraula 'hola' és "&len("hola") & "<br>")

' funció split


Response.Write("Ara obtindrem les paraules de la frase:<br>")
frase="Hola a tothom"
Response.write("frase=" & frase & "<br>")
paraules=split(frase," ")
Response.Write("Primera paraula:" & paraules(0) & "<br>")
Response.Write("Segona paraula:" & paraules(1) & "<br>")
Response.Write("Tercera paraula:" & paraules(2)&"<br>")

'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.8. Estructures de control bàsiques

Tot programa necessita unes sentències per al control de la seva execució.


Si les instruccions avaluen determinades condicions, farem referència a
sentències condicionals. En canvi, si les instruccions indiquen repetició
de determinades accions, farem referència a sentències iteratives.

1.8.1. Sentències condicionals

Les sentències condicionals ens permeten executar una instrucció o una


altra depenent del resultat d’avaluar una condició. Les sentències més uti-
litzades són la instrucció if i la instrucció select.

1) Instrucció if...then

Per a la instrucció if hem d’emprar la sintaxi:

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.

A continuació, detallem un fragment de codi en llenguatge ASP a tall


d’exemple que ens indicarà a partir d’una edat determinada si una perso-
na és major d’edat o no.

<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

2) Instrucció select ... case

Una altra instrucció força utilitzada quan necessitem expressar condici-


ons múltiples és la sentència select...case.

En la sentència select hem d’emprar la sintaxi següent:

select case variable


case valor1
instruccions que cal executar si la variable té el valor1
....
case valor_n
instruccions que cal executar si la variable té el valor_n
case else
instruccions que cal executar si la variable té un valor
diferent dels anteriors
end select

En el codi descrit a continuació veiem com, en funció del text emmagatze-


mat en la variable curs, visualitzem el nom complet dels estudis corres-
ponents.

<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.8.2. Sentències iteratives

Les sentències per iterar ens permeten repetir un conjunt d’instruccions


mentre es compleixi una determinada condició. Podem utilitzar la instruc-
ció while o la instrucció for.
Desenvolupament de funcions en el sistema informàtic 25 Programació web dinàmica en ASP

1) Instrucció while

Per a la instrucció while hem d’emprar la sintaxi següent:

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

Una instrucció iterativa similar a la instrucció while, és la instrucció do.

La sintaxi de la instrucció do és:

do while condició
accions que cal executar mentre es compleixi la condició
loop

Així, per exemple, codifiquem una sèrie numèrica del 0 al 10 utilitzant la


sentència iterativa do while:

<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

Una altra sentència és la instrucció for, que normalment s’utilitza quan


se sap exactament el nombre de vegades que s’ha d’iterar.

Per utilitzar la instrucció for, cal emprar la sintaxi següent:

for variable=valor_inicial to valor_final


instruccions que cal repetir
next

Així, per exemple, podríem construir el codi per visualitzar la sèrie de


nombres de l’1 al 10 utilitzant la sentència 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

2. Pàgina bàsica de script de servidor ASP

El llenguatge ASP és un llenguatge que permet als programadors definir les


seves pròpies funcions i procediments però al mateix temps segueix un mo-
del d’objectes amb les seves col·leccions, propietats i mètodes associats, que
esdevenen un recurs indispensable per al desenvolupament d’aplicacions.

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. Funcions i procediments

Per al desenvolupament de qualsevol tipus d’aplicació és indispensable l’ús


de funcions i procediments (o accions), ja que ajuden a estructurar el codi i
en faciliten el manteniment posterior. Un altre avantatge fonamental de les
funcions i accions és la reutilització de codi, ja que les podem cridar diverses
vegades des de diferents llocs sense necessitat de tornar-les a escriure.

Quan definim o declarem un procediment o funció seguit d’una llista de


paràmetres és molt important que després en la crida es respecti el ma-
teix nombre, ordre i tipus de paràmetres que en la declaració; en cas con-
trari, el resultat seria inesperat. !

2.1.1. Funcions

Les funcions agrupen sota un nom un conjunt d’instruccions. La caraterís-


tica principal d’una funció és que retorna un valor. En el llenguatge ASP el
valor retornat per la funció s’indica amb el nom_funció seguit del signe
igual (=). Evidentment, les funcions en ASP també admeten paràmetres.

Declaració i crida de funcions

Per a la declaració de funcions hem d’emprar la sintaxi següent:

function nom_funció (paràmetre1, paràmetre2...)


instruccions que cal executar quan es cridi la funció
nom_funció = valor_de_retorn
end function
Desenvolupament de funcions en el sistema informàtic 28 Programació web dinàmica en ASP

Per a la crida de funcions, únicament s’ha d’escriure el nom de


la funció seguit de la llista de paràmetres, si escau.

nom_funció (paràmetre1, paràmetre2)

Així, per exemple, el codi següent calcula la mitjana aritmètica de dos


nombres utilitzant la funció mitjana. En aquest cas num1 i num2 són pas-
sats com a paràmetres a la funció.

<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

Response.Write("Mitjana de 4 i 6 =" & mitjana(4,6) & "<br>")

%>
</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.

Declaració i crida de procediments (o accions)

Per a la declaració de procediments hem d’emprar la sintaxi següent:

sub nom_procediment (paràmetre1, paràmetre2...)


instruccions que cal executar quan es cridi el procediment
end sub

Per a la crida de procediments disposem de dues opcions:

• utilitzar la paraula reservada call seguida del nom de la funció


i els paràmetres entre parèntesis:

call nom_procediment (paràmetre1,paràmetre2...)

• cridar directament el procediment utilitzant el nom del proce-


diment seguit dels paràmetres sense parèntesis:

nom_procediment paràmetre1,paràmetre2...
Desenvolupament de funcions en el sistema informàtic 29 Programació web dinàmica en ASP

Així, per exemple, calculem la mitjana aritmètica de dos nombres utilit-


zant el procediment mitjà que té tres paràmetres: num1, num2 i resultat.
Si us fixeu en el codi, cridem dos cops el mateix procediment fent ús de
les dues sintaxis possibles. És a dir, fem una primera crida amb call i pa-
rèntesis en els paràmetres i una segona crida escrivint únicament el nom
de la funció.

<html>
<head>
<title>Exemple d'ús de procediment al llenguatge ASP</title>
</head>
<body>
<%

sub mitjana(num1, num2, resultat)

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>

2.2. Model d’objectes d’ASP

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.

Figura 2. Model d’objectes del llenguatge ASP versió3


Desenvolupament de funcions en el sistema informàtic 30 Programació web dinàmica en ASP

Cadascun d’aquests objectes té associades col·leccions (estructures de da-


des, conjunt d’elements tipus vectors), propietats, mètodes i esdeveni-
ments propis.

A continuació, descrivim breument aquests objectes:

• 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)

2.3. Treball amb formularis Els editors WYSIWYG de text


amb format (com els editors
HTML) permeten escriure un
El disseny web d’aplicacions implica, sens dubte, la construcció de formu- document veient directament el
resultat final.
laris fonamental per a la introducció o presentació de dades. Exemple d’ús
Desenvolupament de funcions en el sistema informàtic 31 Programació web dinàmica en ASP

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.

2.3.1. Pas de variables entre formularis

En les aplicacions web és molt habitual el treball amb formularis en dife-


rents pàgines. Per exemple, si acabem d’emplenar un formulari d’alta
d’usuari i fem clic en el botó Següent o Enviar passem a una altra pàgina
que necessita conèixer el valor dels camps del formulari de la pàgina an-
terior. Hi ha dos mètodes per passar variables entre formularis; ens refe-
rim al mètode GET i al mètode POST.

Quan dissenyem un formulari hem d’indicar el nom de la pàgina ASP que


processarà el formulari (action=nom_fitxer.asp) i el mètode pel qual es
passarà la informació a la pàgina (method=get o method=post). !

GET

Us proposem aquest exemple senzill en què emplenem el camp de formu-


lari nom i cridem el fitxer procesa.asp amb el mètode GET. El mètode get
envia informació (en aquest cas, el nom) cap al servidor com a part de
l’URL.

<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>

Introdueix el teu nom:

<FORM ACTION="procesa.asp" METHOD="GET">


<INPUT TYPE="text" NAME="nom"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>

El resultat d’executar aquest codi seria el que veiem en la figura 3.


Desenvolupament de funcions en el sistema informàtic 32 Programació web dinàmica en ASP

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>

El resultat de l’execució el veiem en la figura 4. Fixeu-vos bé en la barra


d’adreces com s’indica la variable nom passada amb el mètode GET i el
seu valor, en aquest cas, Joan Miró Planes.

Figura 4. Fitxer procesa.asp, que recull el valor de la variable nom a partir del mètode GET

Quan utilitzem el mètode GET per enviar variables entre formu-


laris, la barra d’adreces reflecteix clarament els paràmetres enviats
amb la sintaxi següent:

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

de formulari en què emplenem el camp nom i cridem el fitxer proce-


sa.asp amb el mètode POST.

<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>

Introdueix el teu nom:

<FORM ACTION="procesa.asp" METHOD="POST">


<INPUT TYPE="text" NAME="nom"><BR>

<INPUT TYPE="submit" VALUE="Enviar">


</FORM>
</body>
</html>

El resultat d’executar aquest codi seria el que veiem en la figura 5.

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>

El resultat de l’execució el veiem en la figura 6. Fixeu-vos bé perquè, a di-


ferència del mètode GET, amb el mètode POST en la barra d’adreces no
apareix enlloc el nom de la variable nom ni el seu valor, en aquest cas,
Joan Miró Planes.
Desenvolupament de funcions en el sistema informàtic 34 Programació web dinàmica en ASP

Figura 6. Fitxer procesa.asp, que recull el valor de la variable nom a partir del mètode POST

Quan utilitzem el mètode POST per enviar variables entre formu-


laris, en la barra d’adreces s’indica amb la sintaxi següent:

http://ruta/nom_fitxer.asp

Enlloc no apareix el nom de les variables enviades ni els seus va-


lors, ja que els paràmetres arriben com una entrada estàndard de
programa.

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ó.

2.4. Construcció d’una pàgina bàsica amb ASP.


Exemple d’enquesta

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.

Per entendre fàcilment l’objectiu d’aquesta enquesta, n’exposarem una


primera versió amb codi HTML; a continuació, construirem una base de
dades molt simple amb l’MSAcces i en farem una segona versió amb ASP.
Per finalitzar, farem una sensible millora del codi utilitzant galetes per de-
tectar si l’usuari que fa l’enquesta ja havia votat anteriorment.

1) Primera versió d’enquesta amb llenguatge HTML

Començarem preparant una carpeta enquesta1 per al projecte de la pri-


mera versió d’enquesta per Internet. Aquesta carpeta podria estar ubicada
a C:\Inetpub\wwwroot\ i contindrà els fitxers index.html, enquesta.html
i la carpeta imatges amb els fitxers barra1.gif, barra2.gif i barra3.gif,
Desenvolupament de funcions en el sistema informàtic 35 Programació web dinàmica en ASP

que ens serviran per representar gràficament el resultat de l’enquesta. En


la figura 7 podeu veure l’organització dels fitxers i carpetes per a aquesta
primera versió de l’aplicació d’enquesta.

Figura 7. Organització de la carpeta enquesta1 Fixeu-vos que els fitxers són .html.

En la figura 8 podeu veure el contingut de la subcarpeta imatges. Cada fit-


xer .gif conté una barra de color que representarà gràficament el percen-
tatge de vots obtinguts en cada resposta.

Figura 8. Fitxers que conté la subcarpeta d’imatges de l’aplicació d’enquesta Fixeu-vos que els fitxers són .gif.

Imatge corresponent al fitxer barra1.gif de la


subcarpeta d’imatges

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.

Indicarem l’inici del formulari amb l’etiqueta form i hi assignarem un


nom amb l’atribut name. A continuació, definim la taula amb l’etiqueta
table i les files (tr) i columnes (td) corresponents. Fixeu-vos que in-
diquem les possibles respostes amb el radio button anomenat vot, que
tindrà tres opcions amb valors 1, 2 o 3, que ens representaran la selec-
ció de l’usuari segons hagi estat la primera, la segona o la tercera, res-
pectivament. En fer clic en l’enllaç votar (etiqueta <a href>)
carregarem el fitxer enquesta.html, que visualitzarà els resultats par-
cials de l’enquesta.

A continuació, escrivim el codi corresponent al fitxer index.html que con-


té la pregunta de l’enquesta i les tres possibles respostes.
Desenvolupament de funcions en el sistema informàtic 36 Programació web dinàmica en ASP

<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

Tot seguit, escrivim el codi corresponent al fitxer enquesta.html, que res-


presenta gràficament el resultat parcial de l’enquesta per Internet.

El fitxer enquesta.html té format de taula (table) amb tres files (tr). A


cada fila de la taula hi ha tres columnes (td). La primera columna conté la
resposta de l’enquesta; la segona columna, una imatge (<img src=>) en
forma de barra de color que indica el percentatge de vots, i la tercera co-
lumna, el nombre de vots corresponents a la pregunta. Al final del codi es
Desenvolupament de funcions en el sistema informàtic 37 Programació web dinàmica en ASP

visualitza el nombre total de votacions comptabilitzades i un enllaç (<a


href>) per tornar al fitxer index.html.

Cal tenir en compte, però, que en aquesta primera versió de l’aplicació


d’enquesta treballem amb fitxers .html i sense base de dades, per tant, els
valors de resultats obtinguts seran estàtics. !

<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?

<table width="490" border="1">

<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>

El resultat de l’execució del codi del fitxer enquesta.html és el que podeu


veure en la figura 10.

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

2) Construcció de la base de dades d’enquesta amb l’MSAccess

La base de dades corresponent a l’aplicació d’enquesta per Internet és


molt simple, ja que únicament conté una taula de preguntes amb les pos-
sibles respostes i un recompte dels vots obtinguts en cada resposta.

A continuació, detallem els passos per a la creació de la base de dades en-


questa.mdb.

a) Creeu la carpeta: c:\Inetpub\wwwroot\exemples\enquesta2\bd.

b) Feu clic en el menú Inicio\Ejecutar\MSAccess.

c) Feu clic en el menú Archivo\Nuevo\Base de datos en blanco.

d) Seleccioneu la carpeta c:\Inetpub\wwwroot\exemples\enquesta2\bd.

e) Indiqueu el nom d’arxiu enquesta.mdb.

f) Feu clic en el botó Crear.

g) Creeu una taula en vista Diseño.

h) Els camps els definirem tal com mostra la figura 11.

En aquest cas, el camp id serà el camp clau identificador de la pregunta i


el definim autonumèric. Els camps pregunta, resposta1, resposta2 i
resposta3 els definim com a tipus text, de mida del camp de 250 caràcters.
Els camps valor1, valor2, valor3 i total són numèrics amb els valors per
defecte.

Figura 11. Vista Diseño de la taula de preguntes del fitxer enquesta.mdb


Desenvolupament de funcions en el sistema informàtic 39 Programació web dinàmica en ASP

i) Desem la taula amb el nom de preguntes.

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

3) Segona versió d’enquesta amb llenguatge ASP

Ara que ja hem construït la base de dades enquesta.mdb, desenvoluparem


la segona versió de l’enquesta per Internet. Fem una còpia de tot el con-
tingut de la carpeta c:\Inetpub\wwwroot\exemples\enquesta1 a la carpe-
ta c:\Inetpub\wwwroot\exemples\enquesta2 i reanomenem els fitxers
.html com a .asp. En la figura 13 mostrem l’organització dels fitxers i car-
petes del projecte de la segona versió d’enquesta per Internet.

Figura 13. Organització de la carpeta enquesta2 corresponent a la versió dinàmica de


l’enquesta per Internet

Primerament, farem els canvis corresponents al codi del fitxer index.asp.


Les modificacions que cal fer són:

• Creeu la connexió a la base de dades enquesta.mdb.


Hi ha molts mètodes per fer la connexió, però hem optat per una con-
nexió ADODB (ActiveX data object database).

• Especifiqueu en el formulari els atributs method i action.


El mètode seleccionat per a l’enviament de paràmetres és el mètode
get, i en l’atribut action hem especificat que carregarem el fitxer en-
questa.asp.
Desenvolupament de funcions en el sistema informàtic 40 Programació web dinàmica en ASP

• Obteniu de la base de dades la pregunta.


Hem creat l’objecte del tipus recordset amb nom rs a partir d’una consulta
a la base de dades. Hem fet una selecció (Select) de les preguntes ordena-
des per ordre descendent d’identificador id per tal d’obtenir l’última pre-
gunta introduïda, la més actual. Per obtenir el valor de la pregunta
utilitzem la sintaxi rs("nom_camp"), en aquest cas rs(“pregunta”).

• Definiu un camp ocult id que emmagatzema l’identificador de l’última


pregunta introduïda en la base de dades (<input type="hidden"
name="id" value="<%= rs("id") %>"> ).

• Obteniu de la base de dades les tres possibles respostes.


En aquest cas, simplement hem de llegir els valors emmagatzemats
en el recordset rs. És a dir, llegim rs(“resposta1”), rs(“resposta2”) i
rs(“resposta3”).

• 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">.

Així, doncs, el codi resultant en el fitxer index.asp és:

<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"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\enquesta2\bd\enquesta.mdb
conn.Open Server.MapPath("bd\enquesta.mdb")

' Definim l'objecte recordset que emmagatzema


' el resultat de la consulta
set rs=Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM preguntes ORDER BY id DESC",conn
%>

<form name="form1" method="get" action="enquesta.asp">


<!-- Definim un camp ocult per a passar com a paràmetre
l'identificador de la pregunta -->
<input type="hidden" name="id" value="<%= rs("id") %>">
<table width="490" border="1">
<tr>
<td width="429"><center>ENQUESTA</center></td>
</tr>
<tr>
<!-- Obtenim de la base de dades la pregunta -->
<td><%= rs("pregunta") %></td>
</tr>
Desenvolupament de funcions en el sistema informàtic 41 Programació web dinàmica en ASP

<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>

En la figura 14 podem observar el resultat de l’execució del codi del fitxer


index.asp de la versió dinàmica de l’aplicació d’enquesta per Internet.

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:

• Connexió amb la base de dades enquesta.mdb.


De la mateixa manera que en el fitxer index.asp, també en aquest cas
connectem per ADODB (ActiveX data object database).

• 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").

• Actualització del nombre de votacions de la resposta 1, 2 o 3 segons el


cas i del recompte total de votacions fetes pels usuaris.
Desenvolupament de funcions en el sistema informàtic 42 Programació web dinàmica en ASP

Definim una cadena (o string) que conté la sentència d’actualització en


llenguatge SQL (structured query language). La sintaxi genèrica per
a una sentència SQL d’actualització és:

UPDATE nom_taula
SET nom_camp1=valor1, nom_camp2=valor2...
WHERE condició

En aquest cas, definim la variable sql que conté la sentència UPDATE


vàlida per a qualsevol resposta tant si és la 1, la 2 o la 3. Hem hagut de
concatenar(&) la variable pvot al camp valor perquè funcionés correc-
tament i s’actualitzés el camp valor1, valor2 o valor3 segons el cas. El
mètode d’actualització és el següent:

Si l’usuari ha seleccionat, per exemple, la resposta3 de la pregunta


amb id=450 cal actualitzar el camp valor3 de la taula preguntes i in-
crementar-lo en una unitat. També cal actualitzar el recompte total de
votacions (total) i per això l’incrementem en una unitat. Així quedaria
la sentència d’actualització:

UPDATE preguntes En el codi del fitxer enquesta.asp


hem visualitzat la consulta amb
SET valor3=valor3+1, total=total+1 response.write(sql) per a més
claretat.
WHERE id=450

• Execució de la consulta d’actualització (conn.Execute sql).

• Detecció de possibles errors en les actualitzacions de la base de dades


d’enquesta.mdb amb la instrucció On Error Resume Next, que especi-
fica que, en cas que es produexi un error en temps d’execució, el con-
trol passi a la instrucció immediatament següent a la que ha produït
l’error. En el codi, per a cada possible error que es produeixi, visualit-
zem la descripció i el número d’error corresponents. El codi per a la de-
tecció d’errors és el següent:

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

Si no es produeix cap error (else), seleccionem la pregunta segons el pa-


ràmetre id.
Desenvolupament de funcions en el sistema informàtic 43 Programació web dinàmica en ASP

• Visualització de la pregunta de l’enquesta (<%= rs("pregunta") %>).

Seguidament, cal visualitzar els camps de resultats. Exemplificarem i


comentarem el cas de la resposta1; per a la resposta2 i la resposta3 el
procediment és similar. Així, doncs, per a cada una de les possibles res-
postes caldrà:
– Visualitzar l’enunciat de la resposta (<%=rs("resposta1")%>).
– Calcular l’amplària (width) de la imatge en forma de barra
(barra1.gif) representativa del resultat. El càlcul és un simple per-
centatge, és a dir, multipliquem (*) el nombre de vots obtinguts per
a la resposta (rs("valor1")) per 100 i dividim (/) entre el total de vots
(rs(“total”)). El resultat obtingut correspon a l’amplària de la imatge.

<img src="imatges/barra1.gif" width="<%=rs("valor1")*100/rs("total") %>%" height="15">

– Visualitzar el camp de total de votacions obtinguts per a cada respos-


ta (<%= rs("valor1") %>).

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.

Per al funcionament correcte de l’aplicació és molt important que el fitxer


de la base de dades enquesta.mdb tingui permisos assignats per als usua-
ris que l’estiguin modificant. !

Així, per exemple, si utilitzeu el Microsoft Windows assegureu-vos que


l’usuari Cuenta de invitado para Internet tingui accés per a escriptura a
la base de dades. Comproveu en la pestanya de Seguridad que s’hagi afe-
Desenvolupament de funcions en el sistema informàtic 44 Programació web dinàmica en 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.

Figura 16. Desactivació de l’opció Utilizar uso compartido simple de archivos


Desenvolupament de funcions en el sistema informàtic 45 Programació web dinàmica en ASP

3. Ús de funcions en els scripts de servidor ASP

El funcionament de les aplicacions web està lligat al de les sessions i gale-


tes (cookies). 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 in-
terfície és el que anomenem objecte sessió.

El llenguatge ASP permet la creació de variables d'aplicació i de sessió en


qualsevol moment. Les variables de sessió són locals a cada usuari, és a
dir, cada usuari té una còpia de la variable de sessió diferent de la d'un al-
tre usuari, que pot tenir valors diferents.

Les aplicacions web treballen amb informació emmagatzemada en les bases


de dades. El llenguatge ASP implementa els mètodes necessaris per crear con-
nexions a bases de dades i mantenir la informació degudament actualitzada.

3.1. Cookies o galetes

Sovint en les aplicacions web ens cal un mecanisme per emmagatzemar


informació de manera persistent durant un temps determinat. Per exem-
ple, per emmagatzemar els elements d’un cistell de la compra d’una boti-
ga virtual o per emmagatzemar les preferències de personalització d’una
aplicació de correu electrònic, etc.

Les galetes o cookies són fitxers de text que s’intercanvien entre


el client i el servidor en el protocol http.

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.

3.1.1. Enviar una galeta

Les galetes s’implementen com una col·lecció i s’utilitzen amb els objec-
tes d’ASP Request i Response.

Per definir una galeta utilitzem l’ordre Response.Cookies, i la


sintaxi que cal utilitzar és la següent:
Quan especifiquem la sintaxi
d’ordres, normalment entre
Response.Cookies(nom_cookie)[(clau)|.atribut] = valor claudàtors [ ] indiquem els valors
opcionals.
Desenvolupament de funcions en el sistema informàtic 46 Programació web dinàmica en ASP

Per exemple, el codi per emmagatzemar el color preferit de l’usuari seria:

<% Response.cookies("color")="verd" %>

Si volem especificar més la galeta, hi podem assignar claus. Per exemple,


podríem definir la galeta pel color de fons i pel color de text. El codi cor-
responent és:

<% Response.cookies("color")("fons")="blau"%>
<% Response.cookies("color")("text")="blanc"%>

3.1.2. Temps de vida d’una galeta

Per defecte, el temps de vida d’una galeta és el temps de sessió, és a dir,


el temps que és actiu el navegador.

És possible modificar el temps de vida d’una galeta especificant


l’atribut expires i la sintaxi que cal utilitzar és:

<% Response.cookies(nom_cookie).expires="data_expiració" %>

Per exemple, el codi perquè la galeta color expiri el dia 10/10/2009 seria:

<% Response.cookies(“color”).expires="10/10/2009" %>

3.1.3. Recuperar el valor d’una galeta

El servidor, quan rep una petició de pàgina d’un client, recupera el valor
de les galetes per consultar-les o modificar-les.

Per recuperar el valor d’una galeta utilitzem l’ordre següent:

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

3.1.4. Exemple de comptador de visites amb galetes

A continuació, desenvoluparem un exemple molt bàsic de galetes aplicat


per crear un comptador de visites. Detallem el codi del fitxer visites.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>

Si analitzem el codi del fitxer visites.asp, veiem que el funcionament és


molt senzill:

• Definim la galeta NreVisites amb un temps de vida d’un any (respon-


se.cookies(“NreVisites”).Expires=date+365).

• Si la galeta NreVisites no té valor, hi assignem el valor d’1 i visualitzem


el missatge de benvinguda corresponent.

• Si la galeta NreVisites ja tenia valor, l’incrementem en una unitat i vi-


sualitzem el missatge corresponent indicant el nombre de visites.

La figura 17 visualitza el resultat de l’execució del fitxer visites.asp quan


es crea la galeta de NreVisites.

Figura 17. Creació de la galeta NreVisites

La figura 18 visualitza el resultat de l’execució del fitxer visites.asp quan


ja s’ha visitat anteriorment la pàgina web i la galeta té valor 1.
Desenvolupament de funcions en el sistema informàtic 48 Programació web dinàmica en ASP

Figura 18. Fitxer visites.asp quan la galeta NreVisites té valor 1

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

Quan treballem amb una determinada aplicació la iniciem, fem determi-


nades accions o modificacions i després la tanquem. Quan naveguem, el
servidor web no sap ni qui sou ni què esteu fent perquè el protocol http no
emmagatzema aquesta informació; per això, necessitem l’objecte sessió.

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ó.

3.2.1. Definició de variables sessió

Normalment, l’objecte sessió emmagatzema informació de les preferèn-


També es crea una sessió quan
cies d’un usuari. Les variables emmagatzemades en l’objecte sessió mante- un usuari nou sol·licita un fitxer
.asp i el fitxer Global.asa inclou un
nen informació d’un únic usuari, però estan disponibles per a totes les procediment Session_OnStart.
pàgines d’una aplicació. El servidor crea una nova sessió per a cada usuari
nou.

A diferència de les galetes, les sessions s’emmagatzemen en la mà-


quina servidora. Per crear una sessió utilitzarem la sintaxi següent:

Session(nom_variable)=valor

3.2.2. Eliminació de variables de sessió

La col·lecció Contents emmagatzema totes les variables de sessió. Per eli-


minar una variable de sessió utilitzem el mètode Remove. La sintaxi per
eliminar variables de sessió és:

<%
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()
%>

3.2.3. Finalització de la sessió

El servidor destrueix l’objecte sessió quan la sessió expira.

Les sessions també finalitzen, però no fixem la data de caducitat com en


les galetes, sinó que és el mateix servidor qui les elimina en un dels casos
següents:

1) La pàgina web envia l’ordre de tancar la sessió. En aquest cas, utilitzem


el mètode Abandon i la sessió finalitza immediatament. Per tant, el codi
de fi de sessió corresponent és:

<%
Session.Abandon
%>

2) El client passa un temps inactiu. Una sessió finalitza si un usuari no ha


fet cap sol·licitud o refresc de pàgina a l’aplicació per un temps determi-
nat; per defecte, normalment vint minuts. De totes maneres, és possible
definir un interval de temps específic utilitzant la propietat Timeout. En
el codi d’exemple següent definim un interval de Timeout de cinc minuts:

<%
Session.Timeout=5
%>

3.2.4. Exemple de treball amb sessions

És molt habitual el disseny d’aplicacions amb formularis que controlen


l’accés a determinades pàgines sol·licitant a l’usuari un nom d’entrada
(camp usuari) i una contrasenya (camp password). A continuació, deta-
llem el codi del fitxer index.asp que funciona de la manera següent:

• Si és el primer cop que es carrega el fitxer index.asp en el navegador cli-


ent, es visualitza un formulari que requereix el nom_usuari i contrasenya.

• Si el nom_usuari i la constrasenya són correctes (“Joan” i “p;3tdks1”,


respectivament) es creen dues variables de sessió permis(“si”) i lo-
gin(“Joan”). En aquest cas, si es torna a carregar el fitxer index.asp es
visualitzarà el missatge “Hola” + login + “tens permís per accedir a
la informació següent” que dóna accés a la pàgina sessio.asp.
Desenvolupament de funcions en el sistema informàtic 50 Programació web dinàmica en ASP

• Si el nom_usuari i/o la contrasenya són incorrectes, es visualitza el mis-


satge “Error usuari i/o contrasenya incorrectes!”.

<%
' 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>

Per tal d'accedir a les pàgines omple els camps:<BR>


<form method="post" action="index.asp">
<table border=1>
<tr>
<td>Usuari:</td>
<td><input type="text" name="usuari" size="20"></td>
</tr>

<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>&nbsp</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

if Request.form("usuari")="Joan" AND Request.form("password")="p;3tdks1" then


Session("permis")="si"
Session("login")="Joan"
%>

<html>
<title>Accés privat a pàgines</title>
<body>

<!-- llegim els valors de la sessió -->


Hola <% =Session("login") %>, tens permís per a visualitzar la següent
<A HREF="sessio.asp">Informació</A><BR>
</body>
</html>

<% 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

En la figura 19 visualitzem la pantalla d’execució del fitxer index.asp quan


és la primera vegada que es carrega la pàgina.

Figura 19. Fitxer index.asp quan és la primera visita a la pàgina web

A la figura 20 visualitzem la pantalla d’execució del fitxer index.asp quan


la identificació de l’usuari falla.

Figura 20. Fitxer index.asp quan la identificació d’usuari falla

En la figura 21 visualitzem la pantalla d’execució del fitxer index.asp quan


la identificació de l’usuari és correcta.

Figura 21. Fitxer index.asp quan la identificació d’usuari és correcta

A continuació, detallem el codi del fitxer sessio.asp, que únicament con-


sulta la variable de sessió permis i funciona de la manera següent:

• Si permis és igual a “si” llavors visualitza el missatge: “Hola” + login


+ “,benvingut a la sessió.”

• Si permis no és igual a “si” llavors visualitza el missatge “Accés dene-


gat”.
Desenvolupament de funcions en el sistema informàtic 52 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
%>

En la figura 22 visualitzem la pantalla d’execució del fitxer sessio.asp.

Figura 22. Fitxer sessio.asp quan la variable de sessió és permis=”si”

3.3. Accés a bases de dades

Les pàgines actives de servidor normalment interactuen amb una base de


dades. El procediment habitual és el següent:

1) El client, mitjançant el navegador, emplena un formulari de petició de


dades segons uns paràmetres determinats.

2) El servidor web interpreta la petició i si cal l’envia al servidor de dades.

3) El servidor de dades executa la consulta a la base de dades i retorna el


resultat corresponent al servidor web.

4) Finalment, és el servidor web el que genera el codi HTML per a la pre-


sentació de resultats al navegador client.

3.3.1. Creació de la base de dades

Segons les característiques de l’aplicació web que hàgim de desenvolupar


(volum de dades que cal tractar, velocitat d’execució, etc.), seleccionarem
un motor de dades o un altre.

El llenguatge ASP és propietari de Microsoft i permet treballar amb el Mi-


crosoft Access o el Microsoft SQL Server, però també amb altres gestors
Desenvolupament de funcions en el sistema informàtic 53 Programació web dinàmica en ASP

de dades com l’Oracle, el MySQL, l’Informix, el Sybase, la Base d’Openof-


fice, etc. sempre que disposem dels controladors adequats.

Per treballar amb les operacions bàsiques de tractament de dades, crea-


rem una simple base de dades d’usuaris.mdb amb el Microsoft Access.

El procediment per crear la base de dades d’usuaris.mdb és el següent:

1) Creeu la carpeta: c:\Inetpub\wwwroot\exemples\usuaris\bd.

2) Feu clic en el menú Inicio\Ejecutar\MSAccess.

3) Feu clic en el menú Archivo\Nuevo\Base de datos en blanco.

4) Seleccioneu la carpeta c:\Inetpub\wwwroot\exemples\usuaris\bd.

5) Indiqueu el nom d’arxiu usuaris.mdb.

6) Feu clic en el botó Crear.

7) Escollir la opción Crear una tabla en vista Diseño.

8) Els camps, els definirem tal com mostra la figura 23.

En aquest cas, el camp id serà el camp clau identificador de l’usuari i el


definim autonumèric. Els camps nom i cognoms els definim com a tipus
text, amb mida del camp de 250 caràcters.

Figura 23. Vista de disseny de la taula usuari de la base de dades usuaris.mdb

9) Deseu la taula amb el nom d’usuari.

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

3.3.2. Connexió a la base de dades

Un cop definida la base de dades usuaris.mdb, ens cal un mètode de con-


nexió adequat que permeti l’accés des de la pàgina web amb extensió .asp.
Hi ha diferents mètodes de connexió que cal valorar segons el volum de
dades que tractem i la velocitat de resposta que vulguem obtenir. Per in-
Actualment, en el projecte Mono hi
troduir-nos al tema del tractament de base de dades per web, utilitzarem ha una biblioteca similar a
ADO.net per a plataformes Linux,
ADO (ActiveX data objects) perquè és un producte relativament senzill Mac OS X, BSD i Solaris.
d’entendre i programar.

Una connexió ADO permet manipular la informació emmagatzemada a


les taules de base de dades: llegir, inserir, editar i esborrar. Tanmateix,
permet modificar l’estructura de la pròpia base de dades, és a dir: crear,
modificar o eliminar estructures de dades.

A continuació, detallem el codi del fitxer index.asp que crea la connexió a la


base de dades usuaris.mdb a c:\Intetpub\wwwroot\exemples\usuaris\bd.

<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"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")

Response.Write("Connexió amb la base de dades realitzada!.<br>")

conn.Close
set conn = nothing
%>
</body>
</html>
Desenvolupament de funcions en el sistema informàtic 55 Programació web dinàmica en ASP

En el codi del fitxer index.asp fixeu-vos que quan ja no és necessària la


connexió cal tancar-la (conn.Close, conn=nothing).

3.3.3. Consultes a la base de dades

Ja estem connectats a la base de dades usuaris.mdb i, per tant, ja ens és


possible fer les consultes que vulguem. L’expressió consulta de dades
s’utilitza normalment quan volem obtenir una sèrie de registres que com-
pleixen una condició determinada. Totes les consultes es basen en el llen-
guatge SQL (structured query language). Quan definim la consulta de
dades cal:

1) Crear la cadena que conté la sentència SQL de la consulta. De manera


simplificada, la sintaxi genèrica de consulta SQL de selecció és:

SELECT camp1, camp2...


FROM taula
WHERE condició

Per tant, la sintaxi per emmagatzemar la consulta de selecció en una vari-


able en ASP és:

Variable_cadena=”sentència_SQL_de_selecció”

2) Executar la consulta de selecció i emmagatzemar el resultat (re-


cordset) en una variable. La instrucció ADO en llenguatge ASP per execu-
tar sentències SQL és:

Variable_recordset=nom_connexió.Execute(variable_cadena)

A continuació, detallem el codi del fitxer seleccio.asp, que selecciona tots


els registres introduïts en la taula usuari de la base de dades usua-
ris.mdb.

<html>
<head>
<title>Exemple de SELECT en ASP</title>
</head>
<body>
<H1>Selecció de registres de la taula usuari</H1>
<%
Dim Conn,strSQL, objRS

' Realitzem la connexió a la base de dades


set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")
Desenvolupament de funcions en el sistema informàtic 56 Programació web dinàmica en ASP

'cadena que conté la consulta en SQL


strSQL = "SELECT nom, cognoms FROM usuari"

'variable tipus recordset que recull el resultat de la consulta


Set objRS = Conn.Execute(strSQL)

%>
<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>

El fitxer seleccio.asp visualitza en forma de taula HTML els diferents usua-


ris de la base de dades. Com que el resultat de la consulta SELECT és un
conjunt de registres (recordset), el programa itera mentre no trobi la mar-
ca de final (while not objRS.Eof) i visualitza en cada fila de la taula els
camps nom (objRS(“nom”)) i cognoms (objRS(“cognoms”)).

En la figura 25 visualitzem el resultat de l’execució del fitxer seleccio.asp


que recupera la informació de la taula usuari de la base de dades usua-
ris.mdb.

Figura 25. Execució del fitxer seleccio.asp que visualitza els usuaris de la base de dades usuaris.mdb

3.3.4. Inserció de registres

Els magatzems de dades no són estàtics; contínuament estem actualitzant


la informació que contenen en modificar dades ja existents o introduir-ne
Desenvolupament de funcions en el sistema informàtic 57 Programació web dinàmica en ASP

de noves. D’una manera genèrica, l’operació d’emmagatzemar dades no-


ves en la base de dades rep el nom d’inserció.

A l’hora d’inserir registres en les taules de dades, és fonamental que no hi


hagi claus duplicades i que el tipus de dada sigui l’adequat segons la defi-
nició i criteris de cada camp d’informació. !

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

en llenguatge script de navegador (JavaScript, per exemple). Les valida-


Els motius d’error a l’hora d’inserir
cions que es fan en primera instància en la màquina client fan referència a un registre nou es poden deure a
la duplicitat de claus, errors de
la llargària del camp, tipus de dada (numèrica, de text, data, hora...), etc. Un formats de camps, errors
cop passat el primer filtre amb el llenguatge script del client, s’envia la sen- d’integritat referencial i d’altres
com, per exemple, pèrdua de la
tència d’inserció de dades SQL incrustada (embedded) al llenguatge ASP. El connexió amb el servidor o error
de permisos.
servidor web envia la sol·licitud de registre nou al servidor de dades i, final-
ment, aquesta sol·licitud pot reeixir o fallar en funció de molts factors.

Per inserir registres nous en la base de dades cal seguir un parell de passos:

1) Creeu la cadena que conté una sentència SQL de la inserció. De mane-


ra simplificada, la sintaxi genèrica d’instrucció SQL d’inserció és:

INSERT INTO taula


VALUES valor_camp1, valor_camp2...

Per tant, la sintaxi per emmagatzemar la instrucció d’inserció a una vari-


able en ASP és:

Variable_cadena=”sentència_SQL_de_selecció”

2) Executeu la sentència d’inserció. La instrucció ADO en llenguatge ASP


per executar sentències SQL és:

nom_connexió.Execute(variable_cadena)

A continuació, detallem el codi del fitxer formalta.asp, que presenta un


formulari per emplenar els camps del registre nou que vulguem donar
d’alta i una llista en forma de taula HTML amb el contingut actual de la
taula usuaris.

<html>
<head>
<title>Exemple d'INSERT en ASP</title>
</head>
<body>

<H1>Formulari d'entrada de dades</H1>


<form action="insereix.asp" method="post">
<table>
<tr>
<td>Nom:</TD>
Desenvolupament de funcions en el sistema informàtic 58 Programació web dinàmica en ASP

<td><input type="text" name="nom" size="20" maxlength="250"></td>


</tr>
<tr>
<td>Cognoms:</td>
<td><input type="text" name="cognoms" size="20" maxlength="250"></td>
</tr>
</table>
<input type="submit" name="boto" value="Inserir">
</form>
<hr>

<%
Dim Conn,strSQL, objRS

' Realitzem la connexió a la base de dades


set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")

'cadena que conté la consulta en SQL


strSQL = "SELECT nom, cognoms FROM usuari"

'variable tipus recordset que recull el resultat de la consulta


Set objRS = Conn.Execute(strSQL)
%>
<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>

Fixeu-vos en el codi del fitxer formalta.asp que en la definició del formu-


lari ja s’indica que s’executarà en el fitxer insereix.asp (<form action="in-
sereix.asp" method="post">), que és el que realment executarà la
instrucció INSERT.

É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

El fitxer formalta.asp visualitza en forma de taula HTML els diferents


usuaris de la base de dades. Com que el resultat de la consulta SELECT és
un conjunt de registres (recordset), el programa itera mentre no trobi la
marca de final (while not objRS.Eof) i visualitza en cada fila de la taula els
camps nom (objRS(“nom”)) i cognoms (objRS(“cognoms”)).

En la figura 26 visualitzem el resultat de l’execució del fitxer formalta.asp,


que presenta el formulari amb els camps que cal emplenar per fer l’ope-
ració d’inserció corresponent a un nou registre de la taula usuari de la
base de dades usuaris.mdb.

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.

A continuació, exposem el codi corresponent al fitxer insereix.asp.

<%
' fitxer que realitza la inserció del nou usuari
' recull les dades del fitxer formalta.asp

Dim Conn,strSQL

' Realitzem la connexió a la base de dades


set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")

'cadena que conté la consulta en SQL


strSQL = "insert into usuari (nom, cognoms) values "
strSQL = strSQL & "('" & Request.Form("nom") & "','" & Request.Form("cognoms") & "')"

Conn.Execute(strSQL)

' tanquem la connexió


Desenvolupament de funcions en el sistema informàtic 60 Programació web dinàmica en ASP

Conn.Close
set Conn = nothing

' Tornem al formulari anterior


' i visualitzem la taula amb el nou registre
Response.Redirect("formalta.asp")

%>

Si analitzem el funcionament del fitxer insereix.asp veurem el següent:

1) Es connecta a la base de dades usuaris.mdb.

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.

3) Executa la sentència d’inserció emmagatzemada en la variable strSQL:


Conn.Execute(strSQL).

4) Tanca la connexió (Conn.Close).

5) Torna a carregar el fitxer formalta.asp, que finalment visualitzarà la


taula amb el nou registre incorporat: Response.Redirect(“formalta.asp”).

En la figura 27 visualitzem el resultat de l’execució del fitxer insereix.asp,


és a dir, per mitjà del fitxer formalta.asp visualitzem tots els registres de
la taula d’usuaris amb el nou registre incorporat.

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

3.3.5. Esborrament de registres

L’esborrament de registres és un dels processos més simples; únicament


cal seleccionar el registre que volem eliminar i executar la instrucció
DELETE corresponent.

Per tant, a l’hora d’eliminar registres d’una taula cal seguir els passos se-
güents:

1) Creeu la cadena que conté la sentència SQL de l’eliminació. De manera


simplificada, la sintaxi genèrica d’instrucció SQL d’eliminació és:

DELETE
FROM taula
WHERE condició

Per tant, la sintaxi per emmagatzemar la sentència d’esborrament en una


variable en ASP és:

Variable_cadena=”sentència_SQL_de_selecció”

2) Executeu la sentència d’eliminació. La instrucció ADO en llenguatge


ASP per executar sentències SQL és:

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

minarà cap registre. !


Els errors a l’hora d’esborrar un
registre nou es poden deure a la
Cal dir, però, que l’operació d’eliminació no sempre serà exitosa, sinó que presència de camps relacionats
amb altres taules amb integritat
dependrà de molts factors. referencial i altres errors diversos
com, per exemple, la pèrdua de la
connexió amb el servidor o error
A continuació, exposem el codi del fitxer baixa.asp, que presenta en for- de permisos.
ma de taula HTML la llista de registres de la taula usuari de la base de
dades usuaris.mdb.

<html>
<head>
<title>Exemple de DELETE en ASP</title>
</head>
<body>
<H1>Exemple d'eliminació de registres</H1>
<%
Dim Conn,strSQL, objRS

' Realitzem la connexió a la base de dades


set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")

'Seleccionem tots els camps de la taula usuari


Desenvolupament de funcions en el sistema informàtic 62 Programació web dinàmica en ASP

strSQL = "SELECT * FROM usuari"

'variable tipus recordset que recull el resultat de la consulta


Set objRS = Conn.Execute(strSQL)

%>
<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>

Fixeu-vos en el codi del fitxer baixa.asp, que quan construeix la taula, la


tercera columna conté un enllaç amb la paraula esborrar:

<a href=""esborra.asp?id=" & objRS("id") &""">esborrar</a>

Fixeu-vos que aquest enllaç executa el fitxer esborra.asp i li envia com a


paràmetre l’identificador de l’usuari (objRS(“id)).

En la figura 28 visualitzem el resultat de l’execució del fitxer baixa.asp, que


presenta els registres de la taula usuari de la base de dades usuaris.mdb.

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

A continuació, detallem el codi del fitxer esborra.asp, que és el que execu-


ta la instrucció DELETE d’eliminació de registres.

<%
Dim Conn,strSQL

' Realitzem la connexió a la base de dades


set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"

'La funció MapPath retorna la ruta física completa


'és a dir, c:\Inetpub\wwwroot\exemple\usuaris\bd\usuaris.mdb
conn.Open Server.MapPath("bd\usuaris.mdb")

strSQL = "delete from usuari where id = " & Request.QueryString("id")


Conn.Execute(strSQL)
Conn.Close
set oConn = nothing

Response.Redirect("baixa.asp")
%>

Analitzem el codi del fitxer esborra.asp i observem que:

1) Es construeix la sentència SQL de DELETE que selecciona el fitxer que


cal eliminar segons l’identificador rebut com a paràmetre: Re-
quest.QueryString("id").

2) S’executa la sentència de DELETE: Conn.Execute(strSQL).

3) Es tanca la connexió: Conn.Close.

4) Es retorna cap al fitxer baixa.asp: Response.Redirect(“baixa.asp”).

A la figura 29 observem el resultat d’executar el fitxer esborra.asp, és a


dir, retornem al fitxer baixa.asp però es visualitza la taula amb el registre
eliminat.

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

You might also like