ASP: esercizi e soluzioni

annuncio pubblicitario
Autore:
Nicola Ceccon
Classe:
QUINTA INFORMATICA (5IA)
Anno scolastico:
2003/2004
Scuola:
Itis Euganeo
ASP: ESERCIZI E SOLUZIONI
Esercizi
Si propongono tre esercizi in
ASP che prevedono l'utilizzo di
un database Access.
I primi due esercizi sono di
difficoltà medio/bassa e
coinvolgono l'accesso ad una
tabella del database, mentre
l'utlimo esercizio è di difficoltà
media e prevede l'accesso a
due tabelle.
In tutti gli esercizi sono
previste le operazioni di
scansione e di inserimento.
INDICE
Esercizio A....................................................................................................... 3
(difficoltà bassa)
Esercizio B....................................................................................................... 4
(difficoltà media)
Esercizio C ...................................................................................................... 5
(difficoltà media)
Suluzione A ..................................................................................................... 7
Soluzione B ..................................................................................................... 9
Soluzione C ..................................................................................................... 11
ASP: esercizi e soluzioni
Esercizio A
Scrivere il codice HTML e ASP della pagina registra.asp che effettua la registrazione di un utente
per accedere al servizio di mailing list di un sito.
La pagina registra.asp viene elaborata da server web a seguito dell’invio di un form presente nella
home page del sito di nome index.asp con il metodo GET.
Il form invia i seguenti dati:
•
Nominativo (testo di dimensione 40, dato obbligatorio)
•
Email (testo di dimensione 20, dato obbligatorio)
•
Password (intero di dimensione 5, dato obbligatorio)
La pagina registra.asp deve effettuare il controllo della obbligatorietà dei dati e l’inserimento nella
tabella di supporto di nome Navigatori presente nel database Access 2000 di nome
Serviziweb.mdb memorizzato nella cartella C:\SITOPRINCIPALE\ECOMMERCE.
La struttura della tabella Navigatori è la seguente:
•
Nominativo, tipo testo lunghezza 40, chiave primaria che rappresenta il Nickname
•
Passw, tipo intero corto che rappresenta la Password
•
Email, tipo testo lunghezza 20 che rappresenta l’indirizzo Email
In caso di fallimento dell’inserimento il server web restituisce la pagina index2.asp con la
visualizzazione del messaggio di errore passato dalla pagina registra.asp.
In caso di successo la pagina oltre ad effettuare l’inserimento mette a disposizione di tutte le pagine
del sito web il Nickname per la sua visualizzazione e restituisce la pagina index.asp che in questo
caso visualizza anch’essa il Nickname.
Nella scrittura del codice della pagina registra.asp utilizzare il seguente file di inclusione
conndatabase.inc, che deve essere opportunamente completato, per la connessione al database
Access e memorizzato nella stessa cartella delle pagina ASP:
<%
<%
<%
<%
<%
<%
Dim connDB, strDriver, strPercorso %>
Set connDB = Server.CreateObject("ADODB.Connection") %>
strDriver = "Driver={Microsoft Access Driver (*.mdb)};" %>
strPercorso = " DBQ=_________________________ " %>
strPercorso = strDriver & strPercorso %>
connDB.open(strPercorso) %>
Presentare al fine della valutazione:
•
Analisi del problema (individuazione dei possibili casi di fallimento dell’inserimento e
risposta al verificarsi dei diversi eventi)
•
Lo schema tra le pagine coinvolte in cui sono evidenziati gli eventuali parametri passati
•
Il codice della pagina registra.asp
ASP: esercizi e soluzioni
Esercizio B
Scrivere il codice HTML e ASP della pagina ordini.asp che inserisce l’ordine di un cliente nella
tabella Ordini del database Ecomm.mdb in Access 2000.
La pagina ordini.asp riceve dalla pagina ordina.asp i parametri codice del prodotto (di nome
ProdID) e quantità (di nome ProdQ) con la tecnica del passaggio mediante URL (su
collegamento). Il codice del cliente è invece ricevuto con la tecnica dei parametri a livello di
sessione utente(di nome CodCli).
La struttura della tabella Ordini è la seguente:
•
Nitem, tipo intero corto, chiave primaria e rappresenta il numero dell’ordine
•
CodProdotto, tipo testo 5 e rappresenta il codice del prodotto ordinato
•
Q, tipo intero corto e rappresenta la quantità ordinata
•
CodCliente, intero corto e rappresenta il codice del cliente
•
Consegna, tipo testo lunghezza 1, possibili valori (S e N) e rappresenta se l’ordine è stato
consegnato oppure no.
La pagina ordini.asp effettua l’inserimento nella tabella e visualizza gli ordini del cliente non
ancora consegnati.
Nella scrittura del codice della pagina ordini.asp utilizzare il seguente file di inclusione
conndati.inc, che deve essere opportunamente completato, per la connessione al database Access
che e memorizzato nella cartella CONF contenuta nella cartelle che contiene le ASP.
Il file Access Ecomm.mdb è invece memorizzato nella cartella C:\ DB.
<%
<%
<%
<%
<%
<%
Dim connDB, strDriver, strPercorso %>
Set connDB = Server.CreateObject("ADODB.Connection") %>
strDriver = "Driver={Microsoft Access Driver (*.mdb)};" %>
strPercorso = " DBQ=_________________________ " %>
strPercorso = strDriver & strPercorso %>
connDB.open(strPercorso) %>
Presentare al fine della valutazione:
•
Analisi del problema (individuazione dei possibili casi di fallimento dell’inserimento e
risposta al verificarsi dei diversi eventi)
•
Lo schema tra le pagine coinvolte in cui sono evidenziati gli eventuali parametri passati
•
Il codice della pagina ordini.asp
ASP: esercizi e soluzioni
Esercizio C
Scrivere il codice HTML e ASP della pagina consegna.asp che visualizza lo stato della consegna di
un ordine effettuato nel sito di ecommerce dell’azienda e memorizza le richieste di controllo.
La pagina consegna.asp viene elaborata da server web a seguito dell’invio di un form presente nella
home page del sito che di nome index.asp con il metodo POST.
Il form invia i seguenti dati:
•
CodiceUtente (testo di dimensione 5, dato obbligatorio) che rappresenta il codice del cliente
•
NumOrdine (intero di dimensione 5, dato obbligatorio) che rappresenta il numero
dell’ordine
La pagina consegna.asp deve effettuare il controllo della obbligatorietà dei dati (con passaggio
dell’errore alla pagina index.asp) e dopo aver effettuato la visualizzazione dello stato dell’ordine, in
forma tabellare, mediante interrogazione nella tabella Ordini effettua l’inserimento della richiesta
nella tabella Richieste presente nel database Access 2000 di nome Serviziweb.mdb memorizzata
nella cartella C:\DB.
La struttura della tabella Ordini è la seguente:
•
•
•
•
•
Nitem, tipo intero corto, chiave primaria e rappresenta il numero dell’ordine
CodProdotto, tipo testo lunghezza 5 e rappresenta il codice del prodotto ordinato
Q, tipo intero corto e rappresenta la quantità ordina ta
CodCliente, tipo testo lunghezza 5 e rappresenta il codice del cliente
Consegna, tipo testo lunghezza 1, possibili valori (S e N) e rappresenta se l’ordine è stato
consegnato oppure no.
La struttura della tabella Richieste è la seguente:
•
•
•
CodCliente, tipo testo lunghezza 5 che rappresenta il codice del cliente
Data, tipo data che rappresenta la data della richiesta
Nitem, tipo intero corto, che rappresenta il numero dell’ordine
La pagina consegna.asp visualizza l’ordine specificato dal cliente, memorizzati nella tabella
Ordini, e inserisce i dati della richiesta nella tabella Richieste.
Nella scrittura del codice della pagina consegna.asp utilizzare il seguente file di inclusione
conndati.inc, che deve essere opportunamente completato, per la connessione al database Access
che e memorizzato nella cartella CONF contenuta nella cartelle che contiene le ASP.
<%
<%
<%
<%
<%
<%
Dim connDB, strDriver, strPercorso %>
Set connDB = Server.CreateObject("ADODB.Connection") %>
strDriver = "Driver={Microsoft Access Driver (*.mdb)};" %>
strPercorso = " DBQ=_________________________ " %>
strPercorso = strDriver & strPercorso %>
connDB.open(strPercorso) %>
Presentare al fine della valutazione:
•
•
•
Analisi del problema (individuazione dei possibili casi di fallimento dell’inserimento e
risposta al verificarsi dei diversi eventi)
Lo schema tra le pagine coinvolte in cui sono evidenziati gli eventuali parametri passati
Il codice della pagina consegna.asp
Nello svolgimento del compito è possibile utilizzare gli appunti.
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
A
<%
Option Explicit
Response.Buffer = true
Response.Expires = -1024
%>
<-- #include file=”condatabase.inc” -->
<%
Dim strNom, strEmail, intPass, strQuery, strIns, strMess, rsUtenti
‘Lettura parametri passati dalla pagina index.asp
strNom = Request.QueryString(“Nominativo”)
strEmail = Request.QueryString(“Email”)
intPass = Request.QueryString(“Password”)
‘Controllo obbligatorietà dei dati
strMess = “Errore: “
If strNom = “” Then
StrMess = strMess & “non inserito il Nominativo. Ripetere inserimento”
ConnDB.Close
Response.Redirect(“index2.asp?ERRORE=” & strMess
End If
If strEmail = “” Then
StrMess = strMess & “non inserito indirizzo email. Ripetere inserimento”
ConnDB.Close
Response.Redirect(“index2.asp?ERRORE=” & strMess
End If
If strPas = “” Then
StrMess = strMess & “non inserita la Password. Ripetere inserimento”
ConnDB.Close
Response.Redirect(“index2.asp?ERRORE=” & strMess
End If
‘I dati sono tutti presenti
‘Controllo che il Nominativo non sia già in uso
strQuery = “SELECT * FROM navigatori WHERE nominativo= “ & “’” & strNom & “’”
SET rsUtenti = connDB.Execute(strQuery)
7
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A
‘Se recordset rsUtenti è vuoto EOF allora il nominativo può essere inserito
If rsUtenti.EOF Then
StrIns = “INSERT INTO navigatori (nominativo, passw, email) VALUES “ & “(“ & “’”_
& strNom & “’” & “, “ & intPass & “, “ & “’” & strEmail & “’” & “)”
connDB.Execute(strIns)
‘Creazione parametro sessione Nome per il passaggio del nominativo
Session(“NOME”) = strNom
‘Il nominativo non può essere inserito perché esistente e si passa l’errore a index2.asp
Else
StrMess = strMess & “Nome utente già utilizzato. Cambialo.”
ConnDB.Close
Response.Redirect(“index2.asp?ERRORE=” & strMess)
End If
‘Inserimento effettuato e ritorno alla home page index.asp
ConnDB.Close
Response.Redirect(index.asp”)
8
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
B
<%
Option Explicit
Response.Buffer = true
Response.Expires = -1024
%>
<-- #include file=”CONF\condati.inc” -->
<%
Dim strProdID, intQ, strIns, intItem, rsOrdini
‘Lettura parametri passati dalla pagina ordina.asp
strProdID = Request.QueryString(“ProdID”)
intQ = Request.QueryString(“ProdQ”)
‘Lettura del codice del cliente disponibile come parametro Session
intCodCli = Session(“CODCLI”)
‘Inserimento nella tabella ordini
‘Individuazione numero ordine daterminando il max valore del campo Nitem della tabella Ordini
strQuery = “SELECT MAX(nitem)AS maxitem FROM ordini”
SET rsOrdini = connDB.Execute(strQuery)
intItem = rsOrdini(“MAXITEM”) + 1
‘inserimento nella tabella ordini
strIns = “INSERT INTO ordini (nitem, codprodotto, q, codicecliente, consegna) VALUES _
(“ & intItem $ “, “ & “’” & strProdID & “’” & “, “ & intCodCli & “, “ & “’” & “N” & “’” & “)”
connDB.Execute(strIns
‘Servizio ordini non consegnati
‘Ricerca ordini non consegnati
strQuery = “SELECT * FROM ordini WHERE codicecliente=” & intCodCli & “ AND consegna=’N’)”
SET rsOrdini = connDB.Execute(strQuery)
‘visualizzazione
%>
<HTML>
<HEAD>
<TITLE>Inserimento ordine</TABLE>
…
</HEAD>
9
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
B
<BODY>
‘Intestazione tabella
<TABLE>
<TR>
<TD>Ordine</TD>
<TD>Codice Prodotto</TD>
<TD>Q</TD>
</TR>
‘Scansione recordset rsOrdini e visualizzazione
<% Do While NOT rsOrdini.EOF %>
<TR>
<TD><% =rsOrdini(“NITEM”)%></TD>
<TD><% =rsOrdini(“CODPRODOTTO”)%></TD>
<TD><% =rsOrdini(“Q”)%></TD>
</TR>
<% rsOrdini.MoveNext %>
<% Loop %>
<% connDB.Close %>
‘Chiusura codice HTML tabella
</TABLE>
…
</BODY>
</HTML>
10
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
C
<%
Option Explicit
Response.Buffer = true
Response.Expires = -1024
%>
<-- #include file=”CONF\condati.inc” -->
<%
Dim strCodCli, strIns, intNumOrdine, rsOrdini, strMess
‘Lettura parametri FORM metodo POST passati dalla pagina index.asp
strCodCli = Request.Form(“CodiceUtente”)
intNumOrdine = Request.Form(“NumOrdine”)
‘Controllo obbligatorietà dei dati
strMess = “Errore: “
If strCodCli =”” Then
StrMess = strMess & “Codice utente non inserito. Riprovare.”
ConnDB.Close
Response.Redirect(“index.asp?ERRORE=” & strMess)
End If
If strCodCli =”” Then
StrMess = strMess & “Numero utente non inserito. Riprovare.”
ConnDB.Close
Response.Redirect(“index.asp?ERRORE=” & strMess)
End If
‘Ricerca ordini non consegnati
strQuery = “SELECT * FROM ordini WHERE = nitem” & intNumOrdine
SET rsOrdini = connDB.Execute(strQuery)
‘Controllo che ordine sia presente
If rsOrdini.EOF Then
StrMess = strMess & “Ordine non esiste. Riprovare.”
ConnDB.Close
Response.Redirect(“index.asp?ERRORE=” & strMess)
End If
‘visualizzazione ordine
11
Soluzione esercizio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
C
%>
<HTML>
<HEAD>
<TITLE>Controllo ordine</TABLE>
…
</HEAD>
<BODY>
‘Intestazione tabella
<TABLE>
<TR>
<TD>Ordine</TD>
<TD>Codice Prodotto</TD>
<TD>Q</TD>
</TR>
‘Visualizzazione stato ordine
<TR>
<TD><% =rsOrdini(“NITEM”)%></TD>
<TD><% =rsOrdini(“CODPRODOTTO”)%></TD>
<TD><% =rsOrdini(“Q”)%></TD>
</TR>
‘Inserimento richiesta nella tabella richieste
Dim strData
strData = date()
strIns = “INSERT INTO richieste (codcliente, data, nitem) VALUES (“ & “’” & strCodCli &_
“’” & “, “ & “’” & strData & “’” & “, “ & intNumOrdine & “)”
connDB.Execute(strIns)
<% connDB.Close %>
‘Chiusura codice HTML tabella
</TABLE>
…
</BODY>
</HTML>
12
Titolo:
ASP: esercizi e soluzioni
Autore:
Nicola Ceccon
Email:
[email protected]
Classe:
QUINTA INFORMATICA (5IA)
Anno scolastico:
2003/2004
Scuola:
Note legali:
Itis Euganeo
Via Borgofuro, 6
Via Borgofuro 6 - 35042 Este (PD) - Italy
Telefono 0429.21.16 - 0429.34.72
Fax 0429.41.86
http://www.itiseuganeo.it
[email protected]
Diffusione consentita con obbligo di citarne le fonti
Scarica