Autore:
Nicola Ceccon
Classe:
QUINTA INFORMAT ICA (5IA)
Anno scolastico:
2003/2004
Scuola:
Itis Euganeo
ASP: DOMANDE E RISPOSTE (Q&A)
Dispensa
La dispensa presenta i contenuti
fondamentali di ASP nella forma di
risposte a domande.
Le domande sono suddivise in 5
gruppi: basic, database, SQL, Cookies e
carrello (per la realizzazione di siti di
ecommerce).
ASP: Q&A
Basic
Quali sono le prime istruzioni di una pagina ASP?
Le prime istruzioni consistono in specifiche per la pagina riguardanti l’obbligo di dichiarazione
delle variabili, la bufferizzazione e il caching della pagina.
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1024
%>
Cosa sono i parametri ?
I parametri sono coppie Nome e Valore che si utilizzano per scambiare dati tra le pagine ASP: i dati
quindi che si inviano alle pagine ASP o che si passano tra una pagina e un'altra sono nel linguaggio
ASP chiamati parametri.
Per esempio, il codice di autenticazione é un parametro inviato dal Form di autenticazione.
Come si passano i parametri?
Le pagine dell'applicazione interagiscono tra di loro passandosi, con diverse tecniche, dei parametri
che determinano la creazione della pagina HTML inviata al Browser.
Esistono diversi tipi di parametri e a seconda del tipo si utilizzano meccanismi diversi.
Tipi di parametri:
1. Parametri a livello a livello di pagina
2. Parametri a livello di sessione
3. Parametri al livello di applicazione
I metodi di passaggio dei parametri consistono in:
1. A livello di pagina con il passaggio mediante Form: passaggio da una pagina sorgente (la
pagina del Form) ad una pagina destinazione (la pagina specificata nell’attributo Action del
Form).
2. A livello di pagina con il passaggio mediante URL o collegamento: passaggio da una pagina
sorgente (la pagina contenente il collegamento con il passaggio dei parametri) e la pagina di
destinazione (specificata nel collegamento) mediante, nel sorgente, la costruzione di una
stringa dei parametri con accodamento e, nella destinazione, con le istruzioni di lettura dei
parametri. La sintassi del passaggio mediante URL è la seguente:
NomePaginaDest.asp?NomePar1=Val1&NomePa2=Val2...
in cui le coppie (parametro,valore) sono accodate con il simbolo di ecommerciale (&).
3. Passaggio a livello di sessione utente: i parametri sono disponibili a tutte le pagine e solo per
l’utente (un esempio è il Nickname di entrata in una area protetta del sito).
4. Passaggio a livello di applicazione: i parametri sono disponibili a tutte le pagine e a tutti gli
utenti (un esempio è il numero di utenti che sono all’interno di un’area protetta del sito).
Itis Euganeo - Nicola Ceccon
2
ASP: Q&A
Come si acquisiscono i parametri passati mediante Form con il metodo Get?
I parametri si acquiscono utilizzando Request.QueryString specificando il nome del parametro tra
virgolette esattamente come è stato scritto nel Form.
<%
<%
<%
<%
<%
<%
Option Explicit %>
Response.Buffer = True %>
Response.Expires = -1024 %>
Dim strNic, strPas, strPass %>
strNic = Request.QueryString("COGDOC") %>
strPass = Request.QueryString("PASSW") %>
Come si acquisiscono i parametri passati mediante Form con il metodo Post?
I parametri si acquiscono utilizzando Request.Form specificando il nome del parametro tra
virgolette esattamente come è stato scritto nel Form.
<%
<%
<%
<%
<%
<%
Option Explicit %>
Response.Buffer = True %>
Response.Expires = -1024 %>
Dim strNic, strPas, strPass %>
strNic = Request.Form("COGDOC") %>
strPass = Request.Form("PASSW") %>
Come si passa un parametro mediante un collegamento?
Il passaggio mediante collegamento, detto passaggio mediante URL, consiste nell’accodare alla
pagina collegata i parametri come coppie Parametro=valore separate dal carattere &.
<% intCodice = Request.QueryString("CODICE") %>
<% intScorte = Request.QueryString("SCORTID") %>
<a href="inscar.asp?CODICE=<% =intCodice %>&CODSCORTE=<%
=intScorte %>">Inserisci</a>
…
Itis Euganeo - Nicola Ceccon
3
ASP: Q&A
In alternativa:
<% intCodice = Request.QueryString("CODICE") %>
<% intScorte = Request.QueryString("SCORTID")%>
<% Dim strParUrl %>
…
<% strParUrl = “CODICE=” & <% =intCodice %> & “&” & “CODSCORTE=” &
intScorte %>
<a href="inscar.asp?<% =strParUrl %>">Inserisci</a>
…
Come si rende disponibile un parametro per una intera sessione utente?
Per rendere disponibile un parametro per tutta la sessione utente (che termina per esempio con la
chiusura del browser) Distinguiamo tra parametri passati mediante l'oggetto Session e parametri
passati mediante cookies.
Per esempio con Session.
<% Dim intVotato %>
<% intVotato = 1 %>
<% Session(“VOTATO”) = intVotato %>
Come si legge un parametro Session e come si controlla l’eventuale esistenza?
La lettura avviene utilizzando Session(“nome parametro”) e se dalla lettura risulta una stringa vuota
questo significa che non esiste.
<%
If Session(“VOTATO”) = “” Then
Session(“VOTATO”) = 1
Else
Hai già votato!
End If
%>
Come si rende disponibile un parametro per tutti gli utenti?
Si utilizza l’oggetto Application.
<%
Application.Lock
Application("NVisite") = Application("NVisite") + 1
Application.UnLock
%>
...
Visitata: <% =Application("NVisite") %> volte!
...
Il metodo Lock previene la scrittura simultanea da parte di due utenti nella variabile NVisiste e il
metodo UnLock libera il blocco.
L'esempio pone un interrogativo: come inizializzo la variabile NVisite?
Itis Euganeo - Nicola Ceccon
4
ASP: Q&A
DataBase
Come si connette un database?
La connessione DSN Less consiste nell’effettuare la connessione, mediante la creazione di un
connettore al database come istanza dell’oggetto connettore server, direttamente al percorso fisico
del file secondo una specifica sintassi legata alla tipologia di database.
Nel caso di un database Access la sequenza di istruzioni ASP è:
<%
Dim connDB, strDriver, strPercorso
Set connDB = Server.CreateObject("ADODB.Connection")
strDriver = "Driver={Microsoft Access Driver (*.mdb)};"
strPercorso = " DBQ=C:\WINDOWS\Desktop\siti\quitaia\prodotti.mdb"
strPercorso = strDriver & strPercorso
connDB.open(strPercorso)
%>
Un altro modo che permette di slegare la posizione nelal cartella del server prevede l’utilizzo di
Server.MapPath:
<%
<%
<%
<%
<%
<%
Dim connCW, strDriver, strPercorso %>
Set connCW = Server.CreateObject("ADODB.Connection") %>
strDriver = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" %>
strPercorso = "prodotti.mdb" %>
strPercorso = strDriver & server.MapPath(strPercorso) %>
connCW.open(strPercorso) %>
Come rendere disponibile il codice di connessione per tutte le pagine?
Il metodo per rendere disponibile le istruzioni di connessione a tutte le pagine consiste nel creare un
file di connessione e richiamarlo all’interno della pagina Asp utilizzando una direttiva di include.
Questa soluzione permette anche di modificare una sola volta il percorso del database per tutte le
pagine.
<% Option Explicit %>
<% Response.Buffer = True %>
<% Response.Expires = -1024 %>
<!-- #INCLUDE FILE="conndatabase.inc"-->
Itis Euganeo - Nicola Ceccon
5
ASP: Q&A
SQL
Come si esegue una query SELECT?
L’esecuzione della query comporta la scrittura della stessa rispettando la sintassi SQL e la sua
esecuzione applicando il metodo execute al connettore al database. L’esecuzione, infine, associa ad
un recordset.
<%
<%
<%
<%
Dim strQuery,rsProdotti %>
strQuery = "SELECT * FROM articoli" %>
connDB.open(strPercorso) %>
Set rsProdotti = connDB.Execute(strQuery) %>
Come si accede ad un valore della colonna (campo) del recordset?
Si utilizza il recordset specificando tra apici il nome del campo.
<% Dim strDescrizione %>
<% strDescrizione = rsProdotti("ARTICOLODESC") %>
Come visualizzo il contenuto di una variabile, una funzione o di un campo del recordset (della
tabella) nella pagina del browser?
Per visualizzare il contenuto posso utilizzare il metodo rapido che consiste nell’utilizzare = prima
dell’oggetto da visualizzare oppure Response.Write(oggetto).
Data di oggi: <% =date() %>
Ora: <% Response.Write(time()) %>
Itis Euganeo - Nicola Ceccon
6
ASP: Q&A
Come visualizzo sul browser il risultato di una query SQL, cioè il contenuto dell’intero
recordset?
Questa operazione nota come scansione della tabella comporta in primo luogo la definizione in
HTML della tabella e della riga di intestazione (prima riga della tabella con i nomi dei campi) con
l’impostazione, eventuale, del colore di sfondo e della larghezza della cella (in percentuale o pixel).
Successivamente si creano dinamicamente le righe dei dati visualizzando i contenuti delle colonne
all’interno di una struttura di iterazione Do While…Loop al cui interno c’è l’istruzione per spostare
il puntatore alla riga del recordset. La condizione del ciclo di iterazione è il controllo che il
puntatore non punti alla riga speciale EOF.
<% Dim strQuery, rsProdotti , intConta %>
<% strQuery = "SELECT * FROM articoli ORDER BY categoria" %>
<% Set rsProdotti = connDB.Execute(strQuery) %>
<table>
<tr>
<td><b>N</b></td>
<td><b>Cod</b></td>
<td><b>Descrizione</b></td>
<td><b>Categoria</b></td>
<td><b>Promo</b></td>
</tr>
<% intConta = 0 %>
<% Do While NOT rsProdotti.EOF %>
<% intConta = intConta + 1 %>
<tr>
<td><% =intConta %></td>
<td><% =rsProdotti("ARTICID") %> </td>
<td><% =rsProdotti("ARTICOLODESC") %> </td>
<td><% =rsProdotti("CATEGORIA") %> </td>
<td><% =rsProdotti("PROMOZIONE") %> </td>
</tr>
<% rsProdotti.MoveNext %>
<% Loop %>
<% connDB.Close %>
</table>
Itis Euganeo - Nicola Ceccon
7
ASP: Q&A
Come scrivo una query con condizione Where?
La creazione della stringa strQuery che contiene la query deve essere effettuata rispettando la
sintassi SQL che prevede che i dati alfanumerici, comprese la data, siano racchiusi tra apici.
La condizione della clausola Where è normalmente una variabile o una funzione e quindi la stringa
di query si crea come concatenazione di stringhe utilizzando l’operatore &.
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1024
Dim strQuery, intIddoc, rsProdotti , intConta, strDescrizione
%>
<!-- #INCLUDE FILE="conndatabase.inc"-->
<%
strDescrizione = Request.QueryString("DES")
strQuery = "SELECT * FROM articoli WHERE articolodesc=" & “’” &
strDescrizione & "'" & " ORDER BY promozione DESC"
Set rsProdotti = connDB.Execute(strQuery)
%>
Come inserisco un record in una tabella?
Si utilizza l’istruzione SQL INSERT INTO tabella (campi) VALUES (valori) in cui i nomi dei
campi e i valori sono separati da virgole e i valori alfanumerici sono tra apici. Successivamente si
esegue la query con il metodo Execute del connettore al database.
<%
If Session("CARRELLO") = "" Then
Dim strInserimento
strQuery = "SELECT MAX(IDCARRELLO) AS ultimo FROM carrello"
set rsUltimoCarrello = connDB.Execute(strQuery)
Session("CARRELLO") = rsUltimoCarrello("ULTIMO") + 1
intCarrello = rsUltimoCarrello("ULTIMO") + 1
strInserimento = "INSERT INTO carrello (idcarrello, data) VALUES
(" & intCarrello & "," & “’” & date() & "'” & “)"
connDB.Execute(strInserimento)
End If
%>
Itis Euganeo - Nicola Ceccon
8
ASP: Q&A
Cookies
Un cookie registra le informazioni sotto forma do coppie nome/valori, formate dal
nome di una variabile e dal valore associato. Ciascuna coppia é separata dalla
successiva mediante il carattere punto e virgola (;).
Per esempio un cookie che memorizza il codice di un utente e la password per un Login
potrebbe avere una variabile cookie chiamata IDCodice che memorizza il valore
“sonofigo” e una seconda variabile cookie chiama ta Passw che memorizza il valore
propriovero12.
In questo caso il cookie memorizza le coppie nella seguente forma:
§
IDCodice=’sonofigo’ e Passw=’propriovero12’
Un singolo cookie memorizza un massimo di 20 coppie oppure 4096 caratteri.
Esistono due tipi di cookie:
§
Temporanei,che sono memorizzati nella RAM del Client come stringa e
disponibili sino a che l'utente non esce dalla sessione corrente del browser (non
chiude il browser)
§
Permanenti, che sono memorizzati nell'HD del Client come file di testo e
quindi sempre disponibili sino ad una data di scadenza oltre la quale il sistema
del client li cancella automaticamente.Un cookie permanente si crea
aggiungendo una data di scadenza di tipo data.
La scrittura di un cookie temporaneo si effettua con:
<% Response.Cookies("Nome") = Valore %>
mentre la creazione di un cookie permanente si effettua con:
<% Response.Cookies("Nome") = Valore %>
<% Response.Cookies("Nome").Expires = data
La forma generale della data è giorno, gg-mm-aa hh:mm:ss GMT, ma anche"
venerdì, 03 maggio, 2002" oppure "03 Maggio, 2002 " o "03/05/2002" vanno bene.
La lettura di un cookie avviene con l'istruzione:
<% Request.Cookies("Nome") %>
e il controllo si effettua verificando che la variabile non sia vuota, con l'istruzione:<%
If Request.Cookies("Nome")<>"" Then... %>
Itis Euganeo - Nicola Ceccon
9
ASP: Q&A
Itis Euganeo - Nicola Ceccon
10
ASP: Q&A
Carrello (ecommerce)
Come implemento il carrello?
Per implementare il carrello si possono utilizzare due tabelle che contengono i dati del carrello e i
carrelli degli utenti come singoli record. In questo caso la visualizzazione del carrello di un utente è
data da una query che estrae i record con il codice del carrello.
Nel caso di un catalogo organizzato a due livelli:
1. Livello Master contenente la descrizione del prodotto
2. Livello Detail contenente più record
La tabella dei carrelli contiene oltre al codice del prodotto anche il codice della dettaglio.
Per esempio il database potrebbe essere:
1. Articoli(Articid, descrizione, commento)
2. Scorte (Scortid, taglia, colore, prezzo, diponibilita)
3. Carrello(Idcarrello, data)
4. Carrelli(Id, Articid, Scortid, Idcarrello, Quantita)
L’inserimento nel carrello comporta l’inserimento dei codici delle varie tabelle coinvolte, del codice
del carrello assegnato e della quantità acquistata, mentre la visualizzazione comporta la costruzione
del carrello dei prodotti come query su più tabelle partendo dai codici delle righe di Carrelli che
hanno lo stesso codice carrello.
Risulta quindi fondamentale arrivare alla pagina di inserimento nel carrello con i parametri
(variabili) relativi al codice del prodotto (Articid), codice del dettaglio (Scortid) e codice del
carrello (Idcarrello).
I primi due codici si passano tra le pagine come parametri di tipo Url mentre il codice del carrello è
disponibile in tutte le pagine come parametro Session o eventualmente come Cookie. Quindi, nel
caso si utilizzi una pagina Asp per visualizzare il catalogo, una per visualizzare il dettaglio e una per
l’inserimento nel carrello si devono passare di volta in volta i seguenti parametri:
Scansione.asp
Visualizza il catalogo
Passaggio del codice del prodotto come parametro URL
Dettaglio.asp
Visualizza il dettaglio
Inscarrello.asp
Passaggio del codice del codice prodotto e del codice del
dettaglio come parametro URL
Creazione
Inserimento nel catalogo
Variabili SESSION
“CARRELLO”
Lettura
Itis Euganeo - Nicola Ceccon
11
ASP: Q&A
Come visualizzo il carrello di un utente?
Semplicemente estraggo dalla tabella Carrelli i record che presentato il codice Articid uguale al
codice del carrello assegnato all’utente e visualizzo i dati prelevandoli dalle altre tabelle (poiché la
tabella Carrelli contiene solamente i codici).
Come svuoto il carrello?
Svuotare il carrello di un utente nl caso in cui il carrello sia impostato come parte della tabella
Carrelli consiste nell’effettuare la query SQL DELETE per i record che hanno come valore di
Articid il valore del carrello dell’utente.
E’ evidente che la pagina che effettua l’operazione deve ricevere il codice del carrello e visualizzare
il risultato dell’operazione.
<%
intCarrello = Session(“CARRELLO”)
strDel = “DELETE FROM carrelli WHERE articid=” & intCarrello
connDB.Execute(strDel)
%>
…
Carrello svuotato con successo.
…
Come cancello dal carrello un item (prodotto)?
Si effettua una operazione SQL DELETE per il record che presenta contemporaneamente il valore
del carrello dell’utente e il valore della chiave primaria Idrighe.
Il codice Idrighe serve appunto per la cancellazione poiché senza questa chiave non sarebbe
possibile cancellare un unico prodotto.
Itis Euganeo - Nicola Ceccon
12
Titolo:
ASP: domande e risposte (Q&A)
Autore:
Nicola Ceccon
Email:
[email protected]
Classe:
QUINTA INFORMATICA (5IA)
Anno scolastico:
2003/2004
Scuola:
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]
Note legali:
Nessuna restrizione all'utilizzo
Scarica

ASP: DOMANDE E RISPOSTE (Q&A)