Il DATA BASE NEL WEB

 

 


 

 

LEZIONE 1  LEZIONE 2  LEZIONE 3  LEZIONE 4

  LEZIONE 5    LEZIONE 7 

  LEZIONE 9      

Lezione 13 

 

SOMMARIO

 

Lezione 1- WEB SERVER e ACTIVE SERVER PAGES

Lezione 2- Prime Active Service Pages :oggetto Response

 

Panoramica ambiente di programmazione:

cenni ASP

 

Lezione 3- Prime Active Service Pages :oggetto Request

Lezione 4- Active Service Pages e Database:Tecnologia ADO  caricare i dati in tabella da un form Html

Lezione 5- Active Service Pages e Database: lettura di una tabella e visualizzazione dei dati in una pagina Web.

Lezione 6-  Active Service Pages e Database: tecnologia ADO.Leggere e visualizzare i dati filtrati e calcolati di una tabella in una pagina Web.

 

 

 

Area di progetto

simulazione

 E-commerce

Lezione 7-  Panoramica del caso "Agenzia Turistica", Struttura del Database

Lezione 8- Active Service Pages e Database:Tecnologia ADO  caricare i dati in tabella da un form Html

Lezione 9-  Active Service Pages e Database: tecnologia ADO leggere e visualizzare i dati di una tabella in una pagiana Web

Lezione 10-  Active Service Pages e Database: tecnologia ADO.Leggere e visualizzare i dati filtrati e calcolati di una tabella in una pagina Web.

Lezione 11-  Utilizziamo il codice Visual Basic per effettuare dei calcoli

 

 

 

Area di progetto

simulazione

Agenzia Turistica

 AREA PROGETTO "Simulazione e-commerce"

Lo scopo di queste lezioni è quello di realizzare una simulazione di e_commerce, prevedendo un menu per navigare all'interno dell'applicazione, un form dove il gestore può caricare in magazzino le quantità in entrata o in uscita per i 9 articoli che sono messi in vetrina nell'ipotetico negozio online. Queste le schermate :

                                                       

                                    index.htm                                                                   caricamagazzino.htm

visualizzamag3.asp

 

ecommerceAsp2.asp

TORNA SU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lezione 1WEB SERVER E ACTIVE SERVICE PAGES

Quando parliamo di navigazione internet e programmazione Web, dobbiamo distinguere tra lato Client (noi) e lato Server (Host). Quando dal nostro PC digitiamo l'indirizzo del sito a cui siamo interessati, come http://www.sito.htm, il browser (internet Explorer ad esempio) invia la nostra richiesta al server WEB(il software), che dopo averla interpretata, individua sul computer Host,(server di rete),il file richiesto e lo rinvia al browser dopo aver letto e interpretato il codice html della pagina web.

Il WEB SERVER è dunque un software che permette di gestire il server di rete (HOST). Quest' ultimo è sostanzialmente un computer avente grande capacità di memoria, che ospita le pagine web dei siti, che dopo essere state interpretate dal web server verranno visualizzate sul nostro Pc senza alcuna modifica. Per questo motivo questo tipo di pagina web si dice statica, quinidi realizzata secondo i canoni della programmazione Client Side (lato client). Se però si ha la necessità di accedere ad un database che risiede nel computer Host (cioè che risiede nel web), si dovrà procedere con la programmazione Lato Server, che genera pagine web di tipo dinamico. Questo perchè accedere ad un data base, non significa solo leggere il contenuto delle sue tabelle, ma significa anche modificare tali contenuti sulla base delle azioni dell'utente navigatore. Per far fronte a questo tipo di problematica ci si riferisce alla tecnologia delle  pagine ASP ( Active Service Page): queste sono dei normali file di testo con estensione .asp che vedono integrare  il codice HTML di una semplice pagina web a parti di codice eseguibile dal lato server definito scripts. Questi scripts possono essere di diversi linguaggi di programmazione, ma in particolare vedremo come realizzare pagine Asp con vbscripts visto che già abbiamo studiato Visual Basic.

Quando realizziamo normali pagine web (.html), per testarle utilizziamo Internet Explorer, quando invece lavoriamo con le Asp, abbiamo necessità di un software in grado di interagire con il server di rete (host), quindi di un software che viene definito, come  già detto, Web Server. Il sistema operativo Windows Xp, ha un suo Web Server che si chiama IIS (INTERNET INFORMATION SERVICE) che normalmente non è installato sui nostri Pc. E' necessario provvedere alla sua installazione da: Pannello di controllo- Installa Applicazioni - Componenti di Windows. Una volta eseguita la procedura di installazione, verrà creata automaticamente nella cartella programmi, la cartella Inetpub contenente la cartella wwwroot che conterrà le pagine asp da testare in locale. Per verificare che il Web Server sia installato e funzioni correttamente, basterà scrivere nella barra dell'indirizzo: http://www.localhost oppure http://127.0.0.1 (Iindirizzo IP del server web locale)e verificare che appaia la pagina di conferma di Windows Xp.

 

IN SINTESI...

 

 WEB SERVER: software per gestire il server di rete

SERVER DI RETE (HOST):grande computer che ospita le pagine web

FTP (File Transfer Protocol ): software per inviare le pagine web all'host.

ASP ( Active Service Page): file di testo che contengono codice Html e script in linguaggio eseguibile dal server di rete attraverso un web server, pagine web dinamiche, che cambiano interagendo con l'utente.

IIS ( Internet Information Service): Web server di Windows Xp

SCRIPT: codice eseguibile lato server, di diversi linguaggi, vbscripts(visual basic),Jscripts (java).

INETPUB/WWWROOT: Cartelle generate dall'installazione di IIS nella directory radice (c:\) del nostro Pc per testare le pagine Asp in locale

TORNA SU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LEZIONE 2LE PRIME ACTIVE SERVICE PAGE: oggetto RESPONSE

Come accennato nella precedente lezione, le pagine Asp che andremo a provare sono file di testo che combinano il codice html a Vbscripts. Vediamo come. Come ben sappiamo una pagina web in codice html, è costituita da testo scritto tra  MARCATORI <...> o TAG  (se hai bisogno di rivedere il corso di HTML eccoti il Link: ),il codice vbscripts invece deve essere sempre inserito tra i simboli <%.......%>. Facciamo subito un esempio :

Codice ASP

Risultato (1.asp)

<html>

<body>

<%

response.write ("LA Mia prima ASP")

%>

</body>

</html>

Come vedete nell'esempio i tag html appaiono quasi inutili perchè non determinano nulla di particolare per il risultato che apparirà nella nostra pagina web, ma ad esempio possiamo andare a modificare questo primo codice aggiungendo alcuni tag utili alla formattazione del testo e della pagina. Ad esempio possiamo andare a indicare che il testo dovrà apparire come titolo con il tag <h2> (ricordate? h1 h2 h3 rendono il testo più o meno grande), definire il colore del testo con <font color....> e dello sfondo della pagina con <body bgcolor...>.

Codice ASP

Risultato (primaAsp.asp)

<html>

<head>

<title>Nuova pagina 1</title>
</head>

<body bgcolor="#00FFFF">
<font color="#FF00FF"><h2>
<%
response.write("LA Mia prima pagina ASP")
%>

</h2></font>
</body>

</html>

Asp è una tecnologia basata su oggetti, come il linguaggio Visual Basic, a questi oggetti si associano Proprietà (caratteristiche dell'oggetto) metodi (procedure e funzioni).La sintassi per attivare un metodo e  per utilizzare una proprietà dell'oggetto è: oggetto.metodo       oggetto.proprietà.  Cominciamo con l'analizzare il codice vbscripts scritto negli esempi qui sopra:

  • Come prima istruzione si poteva inserire <%@ language = VBScripts %> per indicare quale sia il linguaggio di scripting

  •  l'istruzione response.write ("....") invia al browser, quindi fa apparire nella pagina web, ciò che è indicato tra apici e parentesi ("....").

  • i tag html si aprono e si chiudono secondo le regole di indentazione che conoscete quindi l'ultimo ad essere aperto sarà anche il primo ad essere chiuso, mentre sarà aperto e chiuso lo script  con <%...%> indipendentemente dal codice html, quindi tra i due simboli che delimitano lo script non dovrete inserire mai codice html.

Quindi abbiamo conosciuto l'oggetto Response e il suo metodo Write,  

Continuiamo con alcuni altri esempi prima di passare ad analizzare scripts specifici per trattare i database.

Codice ASP

Risultato (2.asp)

<html>

<head>

<title>Nuova pagina 1</title>
</head>

<body bgcolor="#00FFFF">
<font color="#FF00FF"><h2>
<%
response.write("LA Mia prima pagina ASP")
%>

Oggi è il <% =date()%>
</h2></font>
</body>

</html>

In questo esempio voglio farvi notare che il testo aggiunto, Oggi è il ...., è un primo esempio di pagina dinamica, perchè lo stesso codice eseguito in giorni diversi restituirà date diverse, precisamente la data corrente. Questo è possibile grazie all'uso della  funzione VB =date(), lo stesso si può fare con =time() per ottenere l'ora corrente o ancora si può ottenere data  e ora di sistema con =now() Altra cosa che vorrei farvi notare è che nella pagina web risultato di questo codice si può leggere testo inviato al browser dallo script e testo che è invece semplicemente inserito tra i tag html (Oggi è il).

IN SINTESI...

 

 ASP: tecnologia basata su oggetti, proprietà e metodi.

<%....%>: simboli che racchiudono il codice vbscripts

RESPONSE: Oggetto Asp, che si utilizza per inviare dati alla pagina web attraverso il suo metodo write: Response.write ("....")

=DATE(): funzione Vb che restituisce la data corrente

=TIME(): funzione Vb che restituisce l'ora corrente

=NOW(): funzione Vb che restituisce data e ora di sistema

TORNA SU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lezione 3LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

L'oggetto Request può essere considerato come l'esatto contrario dell'oggetto Response, infatti mentre quest'ultimo invia dati al browser, Request serve a ricevere informazioni dal browser (quindi informazioni dal navigatore). L'utilizzo di entrambi questi oggetti con i relativi metodi, ci permettono di interagire con gli utenti del nostro sito. I metodi principali di Request sono:

  • Collection Querystring viene utilizzato quando si raccolgono dati provenienti da un indirizzo URL

  • Collection Form viene utilizzato quando i dati provengono da un form Html utilizzando i metodi

  • GET (il browser effettua la codifica all'interno dell'indirizzo e visualizza i dati codificati direttamente all'interno dell'indirizzo, quindi non adatto se i dati sono dati protetti come una password)

  • POST ( metodo adatto all'invio di dati protetti)

  • Proviamo ora a capire il funzionamento della Collection Form con un esempio di utilizzo di Request.Form: In questo esempio vedremo come visualizzare in una pagina Asp i dati inseriti dall'utente navigatore in un Form html (tipico esempio di modulo di iscrizione). cominciamo con il preparare la pagina Html.

    Codice HTML   (modulo.htm)

    Risultato (modulo.htm)

    <html>
    <head>
    <title>modulo</title>
    </head>
    <body>
    <form method="POST" action="RACCOLTA_FORM.asp">
    NOME: <input type="text" name="NOME" >
    COGNOME:<input type="text" name="COGNOME">
    <input type="submit" value="INVIA" name="INVIA">
    </form>
    </body>
    </html>

     

    Come vedete questo è il codice di una normale pagina Html (modulo.htm), scritto in blocco note, si possono riconoscere tag html che permettono di disegnare sulla pagina una casella di testo (<input type="text") e tag per l'inserimento di un pulsante (<input type="submit"> per entrambi si è fissata la proprietà name. La riga che vi ho evidenziato, definisce il form che verrà trasmesso con il metodo POST, quindi in modo "riservato", alla pagina RACCOLTA_FORM.asp quando il navigatore  (action="nomefile.asp") cliccherà sul pulsante con scritto INVIA (proprietà value="invia").

    con Frontpage per inserire le caselle di testo e il pulsante, dal menu Inserisci - Modulo - casella di testo/pulsante

    Operando con frontpage

    Dopo aver inserito gli oggetti, ci clicchiamo con il tasto DX attivando il menu di scelta rapida, scegliamo Proprietà campo modulo per definirne le proprietà come il nome e il value. Per definire il metodo action, scegliamo proprietà modulo e indichiamo la pagina RACCOLTA_FORM.asp.

    Ovviamente come sempre frontpage sporca un pò il codice originale, per questo a volte conviene partire dal blocco note e poi passare a frontpage per la formattazione piuttosto che il contrario.

     Il codice con frontpage

    <html>

    <head>
    <meta http-equiv="Content-Language" content="it">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nuova pagina 1</title>
    </head>

    <body>

    <p>&nbsp;</p>
    <form method="POST" action="--WEBBOT-SELF--"><!--webbot bot="SaveResults" S-Label-Fields="TRUE" U-File="RACCOLTA_FORM.asp" S-Format="HTML/BR" -->
    <p align="left">NOME: <input type="text" name="NOME" size="20">&nbsp;&nbsp;&nbsp;
    COGNOME: <input type="text" name="COGNOME" size="20"></p>
    <p align="left"><input type="submit" value="INVIA" name="INVIA"></p>
    </form>

    </body>

    </html>.

    Ora vediamo come realizzare la pagina asp che dovrà raccogliere le informazioni dal modulo Html, ovviamente qui vedete il risultato che apparirà a video dopo che l'utente avrà cliccato sul pulsante Invia (ricordate la Action = "Raccolta_Form.asp")

    Codice ASP

    Risultato (Raccolta_Form.asp)

    <html>
    <head>
    <title>visualizza i dati del form</title>
    </head>
    <body>
    <% language=VBscript
    nome= request.form("NOME")
    cognome= request.form("COGNOME")
    Response.write "Il tuo nome è: "& nome
    %>
    <br><br>-------<br><br>
    <%
    Response.write "Il tuo cognome è: "& cognome
    %>
    </body>
    </html>
     

    Nel codice Asp qui sopra, ho evidenziato due righe di codice, perché su queste vorrei soffermarmi un momento per capire esattamente  come funziona l'oggetto REQUEST. Il codice nome=request.form("NOME"), assegna ad una variabile denominata nome ( non l'ho dichiarata ma poteva essere dichiarata), il contenuto del text box NOME del form. Il codice Response.write "il tuo nome è:  " & nome manda a video il contenuto della variabile nome concatenata (&) alla stringa indicata dopo il metodo Write. Come vedete ho omesso le parentesi dopo il metodo Write, che possono essere omesse, e vi sottolineo che i nomi di variabile non vanno mai tra apici, come in tutti i linguaggi di programmazione che già conoscete.

     IN SINTESI...

     

    <FORM method="POST" action="pagina.asp">: crea un modulo html, che sarà inviato in modo riservato a pagina.asp.

    INPUT TYPE="text": Tag Html per inserire in un form Html un text box

    INPUT TYPE="submit": Tag Html per inserire in un form Html un pulsante

    REQUEST: Oggetto Asp che si utilizza per ricevere dati dalla pagina web, dati che vengono inseriti dall'utente navigatore in un form html e recuperati con la collection Form: Request.Form("nome oggetto del form")

    &: operatore di concatenazione stringhe.

     

    AREA PROGETTO "Simulazione E-Commerce"

    Cominciamo ad operare nell'area progetto applicando quanto esposto in questa lezione e creiamo la pagina web caricamagazzino.htm che conterrà il modulo (Form), per caricare la scheda di magazzino. Vi mostrerò codici "puliti", cioè scremati da quanto frontpage aggiunge automaticamente. quindi provando questi codici vi appariranno solo i contenuti essenziali, senza formattazione ne immagini, che potremo poi aggiungere con poche mosse direttamente da frontpage. Ho colorato il codice delle pagine del progetto in viola perchè possiate riconoscerlo facilmente.

     

    Codice HTML   (caricamagazzino.htm)

    Risultato (caricamagazzino.htm)

    <html>
    <head>
    <title>CARICA MAGAZZINO</title>
    SCHEDA ARTICOLO
    <FORM ACTION="registraMagazzino.ASP" METHOD="POST">
    ARTICOLO
    <select size="1" name="articolo">
    <option>- - -</option>
    <option>berretto Nike</option>
    <option>ciondolo cuore</option>
    <option>cinta D&G</option>
    <option>dondolo resina verde</option>
    <option>orologio Hello Kitty</option>
    <option>compressore 800W</option>
    <option>trapano avvitatore</option>
    <option>Pc Aspire One</option>
    <option>Gazebo Toyota</option>
    </select><br>
    QUANTITA'<INPUT TYPE ="TEXT" NAME="QUANTITA"><br>
    PREZZO <INPUT TYPE ="TEXT" NAME="PREZZO"><br>
    CATEGORIA <INPUT NAME="CATEGORIA"><br>
    <INPUT TYPE ="SUBMIT" VALUE="INVIA" NAME="B1"><BR>
    <BR>
    <INPUT TYPE="RESET" VALUE ="ANNULLA" NAME="B2"><BR>
    <BR>
    </FORM>
    <a href="index.htm">HOME</a></font></b></p>
    </BODY>
    </HTML>

     

    La casella di riepilogo

    Per permettere all'utente di inserire movimentazioni solo a riguardo degli articoli disponibili, creiamo una casella di riepilogo. Il tag Html per inserirla è: <select> e <option>. All'interno del tag select, definiamo gli attributi size 1 per rendere visibile una sola voce a tendina chiusa, e l'attributo name per definire il nome con cui verrà richiamata nelle pagine. Con il tag <option> è possibile definire le voci dell'elenco.

    Oltre il pulsante INVIA (type ="submit") per inviare i dati in un'altra pagina, ho previsto il pulsante ANNULLA (type="reset"), che automaticamente cancella quanto scritto nei campi del modulo per resettare appunto il form.

    Notate il tag <Form action> che invia i dati alla pagina registraMagazzino.asp per caricare i dati nella tabella del database. Vedremo come realizzare questa pagina nella prossima lezione.

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 4ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    CARICARE DATI IN UNA TABELLA DA UN FORM HTML


    Per utilizzare il Database nel Web, è necessario essere collegati al Db stesso, per far ciò, si utilizzano gli ADO (Activex Data Objects). Sostanzialmente, è come quando volete parlare al telefono con una persona, la prima cosa che dovete fare è comporre il numero della persona quindi cercarlo in rubrica, e comporlo. La stessa cosa si deve fare con i database, ossia se dovete leggere o aggiornare dati su una tabella di un database, dovrete dapprima connettervi ad esso creando una connessione diretta (=comporre il numero). Al telefono, dopo aver composto il numero, dovete restare in attesa che vi rispondano, per cominciare a parlare. La stessa cosa è con il database, dopo aver creato la connessione al db, dovete aprire questa connessione per poter comunicare con il db.  Gli oggetti ADO, disponibili per connettersi al Database, sono:

    • ADODB.Connection:  Per creare la connessione e quindi identificare in modo univoco il database, quindi se si vuole operare su più database sarà necessario aprire tante connessioni quanti sono i database.

    • ADODB.Recordset: Per conservare l'insieme delle righe della tabella a cui siamo interessati.

    AREA PROGETTO "Simulazione E-Commerce"

    Cominciamo con l'aprire una connessione al data base magazzino.mdb. Questo database sarà costituito da una sola tabella Articoli, così definita:

    1- CONNESSIONE AL DATABASE

    Set cn=Server.CreateObject("ADODB.Connection")
    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("magazzino.mdb")
    cn.Open

    Con queste istruzioni, creiamo una connessione ad un database Access chiamandola CN:

    SET CN crea la connessione nominandola CN,quindi la sintassi è SET nome_connessione

     CN.connectionstring = "DRIVER=..........SERVER.mapPath...." specifica il tipo di database (access). 

     cn.open apre la connessione quindi la sintassi è nome_connessione.open

     

    2- STRINGA SQL PER CARICARE I DATI IN TABELLA

    sql="INSERT INTO articoli (articolo,quantita,prezzo,CATEGORIA) VALUES ('"& request.form("articolo") & "','" & request.form("quantita") & "','" & request.form("prezzo") & "','" & request.form("CATEGORIA") & "')"***scrivete questo testo tutto sulla stessa riga per non commettere errori***

    Con queste istruzioni, integriamo il codice Sql per colloquiare con il database al VBScript. Assegniamo ad una variabile stringa che ho chiamato sql, il risultato del codice sql INSERT INTO per inserire i valori di una nuova riga della tabella Articoli . Come potete vedere la prima parte è semplice sql quindi come da sintassi

     INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN)    dopo Values, tra parentesi vengono indicati i valori che devono essere prelevati dal form di caricamagazzino.htm, seguendo queste poche ma essenziali regole: dopo la parentesi, apice singolo', poi doppi ",poi dovendo concatenare la & poi indichiamo l'oggetto request.form("nome_campo1") & chiudiamo i doppi apici" chiudiamo il singolo ' mettiamo una virgola e riapriamo il singolo ' , i doppi " e continuiamo con gli altri campi quindi & request.form("nome_campo2") ecc. Ovviamente nome_campo1, nome_campo2 ...sono i nomi che abbiamo assegnato nel file caricamagazzino.htm agli oggetti disegnati nel modulo, quindi i textbox, e la casella di riepilogo, non teniamo conto del campo ID della tabella, che non facciamo nemmeno figurare nel form, visto che il suo valore non deve essere inserito dall'utente: esserndo una chiave contatore si incrementa da sola. 

     

     

    3- ESEGUO IL CODICE DELLA STRINGA SQL E CHIUDO LE CONNESSIONI

    CN.EXECUTE SQL
    CN.CLOSE
    SET CN = NOTHING

    Con queste istruzioni, utilizziamo il metodo EXECUTE sull'oggetto connessione CN che abbiamo creato, indicando di eseguire il codice SQL contenuto nella stringa Sql :  nome_connessione.Execute stringa

    A questo punto è possibile chiudere la connessione con il metodo CLOSE: nome_connessione.close

    Dopo aver chiuso la connessione, con il metodo .NOTHING, azzeriamo, resettiamo la variabile Cn: nome_connessione.nothing

     

    4 - CODICE MESSAGGIO DI CONFERMA  REGISTRAZIONE

    <HTML>
    <BODY>
    <H2>
    <% RESPONSE.WRITE "IL RECORD è STATO REGISTRATO" %>
    </H2>

    Dopo aver chiuso con %> il codice VbScript, apriamo il codice html  e con il tag <H2 > definiamo la dimensione del testo di conferma che inviamo all'utente con l'oggetto RESPONSE (ovviamente riapriamo il <%....%>

    <P><A HREF="visualizzaMAG3.asp">VISUALIZZA LE MOVIMENTAZIONI DI MAGAZZINO </A>
    <P><a href="ecommerceASp2.asp">ENTRA IN NEGOZIO</a>
    <P><a href="index.htm">HOME</a>

    Con il tag <HREF>, predisponiamo la possibilità per l'utente di spostarsi sulle altre pagine del progetto tramite semplici collegamenti ipertestuali.

     

     

    Codice Asp  RegistraMagazzino.asp

    <% LANGUAGE = VBSCRIPTS %>
    <%
    'DICHIARO LE VARIABILI
    DIM CN
    DIM SQL
    'CONNESSIONE AL DATA BASE
    Set cn=Server.CreateObject("ADODB.Connection")
    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("magazzino.mdb")
    cn.Open
    sql="INSERT INTO articoli (articolo,quantita,prezzo,CATEGORIA) VALUES ('"& request.form("articolo") & "','" & request.form("quantita") & "','" & request.form("prezzo") & "','" & request.form("CATEGORIA") & "')"
    'METODO EXECUTE DELL'OGGETTO CONNECTION PER INSERIRE IL RECORD
    CN.EXECUTE SQL
    CN.CLOSE
    SET CN = NOTHING

    %>
    <HTML>

    <BODY>
    <H2>
    <% RESPONSE.WRITE "IL RECORD è STATO REGISTRATO" %>
    </H2>
    <P><A HREF="visualizzaMAG3.asp">VISUALIZZA LE MOVIMENTAZIONI DI MAGAZZINO </A>
    <P><a href="ecommerceASp2.asp">ENTRA IN NEGOZIO</a>
    <P><a href="index.htm">HOME</a>
    </BODY>
    </HTML>

     

    Risultato RegistraMagazzino.asp

     IN SINTESI...

     

    Set nome_connessione=Server.CreateObject("ADODB.Connection") Crea la connessione al database

    cn.Open:apre la connessione

    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("nome_database.mdb"): definisce il tipo di database

    INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN) : codice sql per caricare i dati in ogni riga della tabella.

    CN.EXECUTE nome stringa: metodo per eseguire il codice della stringa

    SET CN = NOTHING: azzera la connessione

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB


    Per visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset a cui abbiamo solo accennato nella lezione precedente.

    AREA PROGETTO "Simulazione E-Commerce"

    Proseguiamo realizzando la pagina visualizzamag3.asp che prevede la lettura e la visualizzazionedi tutti i record della tabella Articoli. Come per l'esempio della lezione precedente, prima cosa da fare, sarà definire l'oggetto connessione, definire il connectionstring per definire il tipo di db, e aprire la connessione.

    1 - CONNESSIONE DATABASE

    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("magazzino.mdb")
    objCon.Open

     

    2- STRINGA SQL PER SELEZIONARE TUTTI I CAMPI DELLA TABELLA

    strSQL = "SELECT * FROM articoli"
     

    Con questa istruzione, assegno alla variabile strSQL, il risultato del codice Sql risultato della query che produce l'elenco di tutti gli attributi della tabella Articoli secondo la sintassi:

    Select attributo1,attributo2,...attributoN  from  nome_tabella

     

    3 -DEFINIZIONE DI UN RECORD SET

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon

    Nella prima riga di questa istruzione, si definisce l'oggetto recordSet con sintassi;

    Set  nome_recordSet = Server.CreateObject("ADODB.recordset") questo permetterà di aprire la tabella in base alla domanda(query) che abbiamo fatto nell'istruzione sql assegnata alla variabile.Nella seconda riga, apriamo il recordSet attraverso il metodo open passando le variabili strSQL (stringa codice Sql) e ObjCon (variabile connessione) come parametri. Il risultato sarà quello di raccogliere nell'oggetto recordset, tutte le righe della nostra tabella.

     

    4 - LETTURA DI TUTTI I RECORD DELLA TABELLA

    Come detto prima, il recordset ci permetterà di aprire la tabella, ma ciò. non significa che potremo leggere e visualizzare al volo tutti i dati, ma dovremo scorrere tutte le righe per leggere una ad una i dati da queste contenuti. Per scorrere le righe all'interno del set di risultati(recordset), si deve usare il ciclo While (che già avete studiato in visual basic). Per spostarci da una riga all'altra della tabella, utilizzeremo il metodo .movenext, e scorreremo tutti i record fino alla fine del recordset (.eof) secondo la sintassi:

     while not nome_recordset.EOF

              .......

              .......

              nome_recordset.movenext

     wend

    Dove ho messo i puntini, andranno inserite le istruzioni che dovranno essere eseguite per ogni riga della tabella, quindi visto che lo scopo è quello di visualizzare i dati, il codice diventerà:

    while not rs.EOF
    response.write "CODICE: "& rs("id_articolo")
    RESPONSE.WRITE "--------"
    response.write "ARTICOLO: "& rs("articolo")
    RESPONSE.WRITE "--------"
    response.write "QUANTITA': "& rs("quantita")
    RESPONSE.WRITE "--------"
    response.write "PREZZO: "& rs("prezzo")
    RESPONSE.WRITE "--------"
    response.write "CATEGORIA: "& rs("categoria")
    %>
    <BR>
    <%
    rs.movenext
    wend
    Il risultato come potete vedere dal punto di vista grafico fa un pò desiderare, dunque si potrà con l'aiuto di frontpage, e con qualche modifica al codice ottenere un risultato diverso:

    Il codice all'interno del ciclo while sarà modificato così:

    while not rs.EOF
    strid = rs("id_articolo")
    strarticolo = rs("articolo")
    strquantita = rs("quantita")
    strprezzo = rs("prezzo")
    strcategoria = rs("categoria")
    %>
    <body>
    <form>
    <div align="center">
    <table border="1" width="99%" bgcolor="#C0C0C0">
    <tr>
    <td>CODICE: <input type="text" size="10" name="idarticolo" value="<%=strid%>">&nbsp;&nbsp;
    ARTICOLO: <input type="text" size="27" name="articolo" value="<%=strarticolo%>">&nbsp;
    QUANTITA :
    <input type="text" size="16" name="quantita" value="<%=strquantita%>">&nbsp;
    PREZZO:
    <input type="text" size="20" name="prezzo" value="<%=strprezzo%>"> CATEGORIA:&nbsp;
    <input type="text" size="31" name="categoria" value="<%=strcategoria%>"><p></td>
    </tr>
    </table>
    </div>
    <%
    rs.movenext
    wend
     

    In pratica,  ogni campo del recordset verrà scaricato in una variabile che sarà mandata a video in un textbox di un form html (input type="text") invece di essere inviate a video con response.write. Il codice sembra molto diverso ma in realtà, inserite queste variabili al resto pensa Frontpage.

     

     

    5 -CHIUSURA E AZZERAMENTO DELLE VARIABILI DI CONNESSIONE

    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    Come già detto procediamo alla chiusura degli oggetti creati e al loro azzeramento liberando così la memoria del server.

     

    Codice Asp 

    <html>
    <head>
    <title>MOVIMENTI MAGAZZINO</title>
    </head>
    <%
    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("magazzino.mdb")
    objCon.Open

    strSQL = "SELECT * FROM articoli"

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon


    while not rs.EOF
    strid = rs("id_articolo")
    strarticolo = rs("articolo")
    strquantita = rs("quantita")
    strprezzo = rs("prezzo")
    strcategoria = rs("categoria")

    %>
    <body>
    <form>
    <div align="center">
    <table border="1" width="99%" bgcolor="#C0C0C0">
    <tr>
    <td>CODICE: <input type="text" size="10" name="idarticolo" value="<%=strid%>">&nbsp;&nbsp;
    ARTICOLO: <input type="text" size="27" name="articolo" value="<%=strarticolo%>">&nbsp;
    QUANTITA :
    <input type="text" size="16" name="quantita" value="<%=strquantita%>">&nbsp;
    PREZZO:
    <input type="text" size="20" name="prezzo" value="<%=strprezzo%>"> CATEGORIA:&nbsp;
    <input type="text" size="31" name="categoria" value="<%=strcategoria%>"><p></td>

    </tr>
    </table>
    </div>
    <%
    rs.movenext
    wend


    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    %>

    <P><A HREF="http://www.scuola24ore.net/progettoonline/caricaMagazzino.htm">TORNA ALLA PAGINA CARICA MAGAZZINO</A>
    <P><a href="ecommerceASp2.asp">ENTRA IN NEGOZIO</a><P><a href="index.htm">HOME</a></form>
    <p>&nbsp;</p>
    </body>
    </html>
     

     IN SINTESI...

     

    Select attributo1,attributo2,...attributoN from nome_tabella    Codice della query sql per selezionare le colonne della tabella.

    Set nome_recordSet = Server.CreateObject("ADODB.recordset") : creazione dell'oggetto recordset che permette di conservare tutti i dati della tabella selezionati con la query.

     while not nome_recordset.EOF
    .......
    .......
    nome_recordset.movenext
     wend   
    Codice vbscript per scorrere tutte le righe della tabella, viene utililzzata l'istruzione di ripetizione While e il metodo movenext per spostarsi da un record all'altro.
     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 6ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    LEGGERE E VISUALIZZARE I DATI FILTRATI E CALCOLATI DI UNA TABELLA IN UNA PAGINA WEB


    Come nella lezione precedente, dovendo visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset. Se però questi dati dovranno essere manipolati prima di essere visualizzati, si dovrà arricchire il codice sql di funzioni di aggregazione e campi calcolati.

    AREA PROGETTO "Simulazione E-Commerce"

    Proseguiamo realizzando la pagina ecommerceAsp2.asp (vetrina del negozio online) che  prevede la lettura e la visualizzazione di tutti i record della tabella Articoli, filtrati in base ad una query di selezione che prenderà ogni volta in esame i record dove il campo articolo risulterà essere uguale alla descrizione dell'articolo della vetrina a cui il codice stesso si riferisce, Dapprima sarà necessario predisporre con l'aiuto di Frontpage la grafica della vetrina che dovrà risultare così:

    Per ottenere questo risultato, creeremo dapprima una tabella con 2 righe e 2  colonne. Formatteremo poi le celle a sinistra, con larghezza pari a 20 (percentuale) e la prima in alto con altezza pari a pixel 162. Gli sfondi saranno dei colori scelti e per la cella a destra si prevederà di usare uno sfondo che utilizzi l'immagine della serranda.  Per la parte centrale della pagina, creeremo un'altra tabella con 6 righe e 5 colonne, che verranno così formattate:

    Le celle a sinistra verranno unite in un'unica colonna, poi dimensionata a 30 (percentuale)di larghezza, colore di sfondo grigio. Le celle che diventeranno vetrine del nostro negozio, avranno larghezza pari a 20(percentuale) e le celle a destra verranno unite in un'unica colonna  stretta a fondo grigio.

    Tra un "box vetrina" e l'altro, lasceremo una fila di celle che conterrà la descrizione dell'articolo (che scriveremo direttamente da frontpage) e per ciascun articolo la quantità disponibile e il prezzo di vendita che ricaveremo dal database utilizzando il codice Asp. Infatti dovremo prevedere per ciascun articolo, una selezione di tutti i record con la stessa descrizione articolo, la somma delle quantità, e la ricerca dell'ultimo prezzo inserito per l'articolo in esame. In questo modo se l'utente vorrà anche solo utilizzare il form della pagina carica magazzino per aggiornare il prezzo di vendita, basterà indicare come quantità zero. Oppure prevedere, inserendo quantità negative, anche lo scarico di magazzino. Quando la pagina costruita in frontpage avrà più o meno l'aspetto dell'immagine qui sopra, passiamo a scrivere il codice asp, per individuare la posizione esatta dove andare ad inserire questo codice, ci posizioniamo con il mouse alla fine della descrizione dell'articolo, e diamo invio, poi passiamo alla visualizzazione codice di frontpage, il cursore lampeggerà, basterà dunque dare invio per andare a capo e cominciare a scrivere lo script.

     Come per l'esempio della lezione precedente, prima cosa da fare, sarà definire l'oggetto connessione, definire il connectionstring per definire il tipo di db, e aprire la connessione.

    1 - CONNESSIONE DATABASE

    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("magazzino.mdb")
    objCon.Open

     

    2- STRINGA SQL PER SELEZIONARE E AGGREGARE I CAMPI DELLA TABELLA E PRODURRE I CAMPI CALCOLATI

    strSQL = "SELECT SUM(quantita) as Q,LAST(prezzo) as P FROM articoli where articolo='berretto nike'"
     

    Con questa istruzione, assegno alla variabile strSQL, il risultato del codice Sql risultato della query che calcola la somma delle quantità nelle righe dove l'articolo è uguale alla condizione espressa dopo il where , chiamandola Q, e il prezzo dell'ultimo record selezionato, definendolo  P secondo la sintassi:

    Select  SUM(attributo1) as nome_campo_calcolato,LAST(attributo2) as nome_campo_selezionato FROM  nome_tabella where attributo3='XXXXXX'

     

    3 -DEFINIZIONE DI UN RECORD SET

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon

    Come nell'esempio della lezione precedente, si definisce l'oggetto recordSet con sintassi;

    Set  nome_recordSet = Server.CreateObject("ADODB.recordset") questo permetterà di aprire la tabella in base alla domanda(query) che abbiamo fatto nell'istruzione sql assegnata alla variabile.Nella seconda riga, apriamo il recordSet attraverso il metodo open passando le variabili strSQL (stringa codice Sql) e ObjCon (variabile connessione) come parametri. Il risultato sarà quello di raccogliere nell'oggetto recordset, le righe della nostra tabella secondo la selezione effettuata con la query sql.

     

    4 - LETTURA dei RECORD selezionati DELLA TABELLA

    while not rs.EOF
    response.write "disponibilità: " &rs("Q") &" prezzo: " &rs("P")
    rs.movenext
    wend

    Come nell'esempio della lezione precedentemente, scorriamo il record set con un ciclo while, ed utilizziamo response.write per mandare a video le variabili calcolate e selezionate Q e P.
     

     

    5 -CHIUSURA E AZZERAMENTO DELLE VARIABILI DI CONNESSIONE

    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    Come già detto procediamo alla chiusura degli oggetti creati e al loro azzeramento liberando così la memoria del server.

     

    Codice Asp               ecommerceAsp2.asp      per l'articolo "berretto Nike"

    <%
    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("magazzino.mdb")
    objCon.Open

    strSQL = "SELECT SUM(quantita) as Q,LAST(prezzo) as P FROM articoli where articolo='berretto nike'"


    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon


    while not rs.EOF
    response.write "disponibilità: " &rs("Q") &" prezzo: " &rs("P")
    rs.movenext
    wend


    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    %>

     
    Lo stesso codice verrà modificato nella condizione where articolo='berretto nike',  e copiato per ciascun box vetrina. 
    Questo il risultato finale

     

     Per chiudere definitivamente il progetto non resta che creare la pagina INDEX.htm che ci permetterà di navigare tra le varie pagine fungendo da PANNELLO DI CONTROLLO. Basterà prevedere i tre link (collegamenti ipertestuali) e i link di ritorno in ciascuna pagina.

     

    IN SINTESI...

     

    Select attributo1,attributo2,...attributoN from nome_tabella  where attributoX ='xxxxx'   Codice della query sql per selezionare le colonne della tabella che assolvono alla condizione espressa dopo il where.

    Set nome_recordSet = Server.CreateObject("ADODB.recordset") : creazione dell'oggetto recordset che permette di conservare tutti i dati della tabella selezionati con la query.

     while not nome_recordset.EOF
    .......
    .......
    nome_recordset.movenext
     wend   
    Codice vbscript per scorrere tutte le righe della tabella, viene utililzzata l'istruzione di ripetizione While e il metodo movenext per spostarsi da un record all'altro.
     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 7

    AREA PROGETTO "Agenzia Turistica"

    Lo scopo di questo progetto, è quello di rappresentare alcune tra le principali procedure relative alla gestione di un agenzia turistica che offre un servizio di prenotazione on-line per 4 aziende agrituristiche. In particolare si procederà alla realizzazione di alcune delle pagine web necessarie sia dal punto di vista del gestore, (dell'operatore turistico), che dal punto di vista del cliente (l'utente ) che effettuerà le prenotazioni attraverso un modulo online, Di seguito sono elencate le pagine oggetto di questo progetto :

     

    AREA GESTORE AREA CLIENTE
    VISUALIZZA PRENOTAZIONI  (pagina dinamica Asp)

    VISUALIZZA  ANAGRAFICA CLIENTI (pagina dinamica Asp)

    VISUALIZZA LISTINO STRUTTURE (pagina dinamica Asp)

    MODULO DI PRENOTAZIONE (pagina HTML) collegata con la pagina Asp che effettua la registrazione RegistraPrenotazione.asp

    Cliccando sulle miniature è possibile salvare le pagine in formato PDF.

             AREA CLIENTE

      listinoStrutture.asp

    prenotazione.htm

                  

     

     

     

     

         

     

     

      Registra.asp

     

           

     

     AREA GESTORE

     Prenotazioni.asp                                                     VisualizzaClienti.asp

     

     Per iniziare , creiamo il database che verrà collegato con il sito. Salviamo questo database con il nome AgenziaAgriturismo.mdb. Il Database in oggetto, dovrà raccogliere le informazioni relative alle prenotazioni dei soggiorni presso 4 aziende agroturistiche che abbiamo individuato nel territorio che ci circonda: l'agro pontino. Il diagramma ER avrà questo aspetto:

     Le tabelle Pacchetti e Destinazioni  verranno popolate direttamente da Access in fase preliminare, mentre le tabelle Clienti  e Prenotazioni  si popoleranno durante la prenotazione acquisendo i contenuti dal form della pagina   prenotazione.htm

    Cominciamo ad operare nell'area progetto applicando quanto esposto nella lezione 3 e creiamo la pagina web   prenotazione.htm che conterrà il modulo (Form), per caricare i dati del cliente che verranno memorizzati nella tabella Clienti e i dati della prenotazione che verranno registrati nella tabella Prenotazioni del database. Vi mostrerò codici "puliti", cioè scremati da quanto frontpage aggiunge automaticamente. quindi provando questi codici vi appariranno solo i contenuti essenziali, senza formattazione ne immagini, che potremo poi aggiungere con poche mosse direttamente da frontpage. Ho colorato il codice delle pagine del progetto in viola perchè possiate riconoscerlo facilmente.

     

    Codice HTML   (prenotazione.htm)

    Risultato (prenotazione.htm)

    <html><head><title>Modulo Prenotazione</title>            <body>Agenzia AgriTurismoPontino<BR>

    <FORM ACTION="registraPrenotazione.ASP" METHOD="POST">

    MODULO DI PRENOTAZIONE <BR>

    Codice fiscale

    <INPUT NAME="CodiceFiscale" SIZE="25"><BR>

    Cognome

    <INPUT NAME="Cognome" SIZE="25"><BR>

    Nome

    <INPUT NAME="Nome" SIZE="25"><BR>

    Telefono

    <INPUT NAME="Telefono" SIZE="25"><BR>

    Pacchetto

    <select size="1" name="PacchettoStruttura">

    <option>---</option>

    <option value="1">Small - 3 notti HB</option>

    <option value="2">Plus - 4 notti HB</option>

    <option value="3">Full - 7 notti FB</option>

    </select><BR>

    Data

    <select size="1" name="data">

    <option>---</option>

    <option>06/08/2011</option>

    <option>13/08/2011</option>

    <option>20/08/2011</option>

    <option>27/08/2011</option>

    </select><BR>

    Struttura

    <select size="1" name="struttura">

    <option>---</option>

    <option value="1">L’Ovile - Borgo Faiti</option>

    <option value="2">Casal Damiano - Aprilia</option>

    <option value="3">Castel Margherita - Cori</option>

    <option value="4">Agriturismo Sabaudia - Sabaudia</option>

    </select><BR>

    N°Camere

    <INPUT NAME="camere" SIZE="2"><BR>

    N° Persone

    <INPUT NAME="Persone" SIZE="2"><BR>

    <INPUT TYPE ="SUBMIT" VALUE="INVIA" NAME="B1">

    <INPUT TYPE="submit"" VALUE ="ANNULLA" NAME="B2"><BR>

    </FORM>

    <a href="agenzia_agriturismo_pontino.htm">HOME</a>

    </BODY>

    </HTML>

     

     

    La casella di riepilogo


    Per permettere all'utente di scegliere il tipo di pacchetto tra le tre tipologie offerte dall'agenzia, la data di partenza a scelta tra 4 date disponibili e la struttura tra le 4 aziende agroturistiche presenti, creiamo tre caselle di riepilogo. Il tag Html per inserirla è: <select> e <option>. All'interno del tag select, definiamo gli attributi size 1 per rendere visibile una sola voce a tendina chiusa, e l'attributo name per definire il nome con cui verrà richiamata nelle pagine. Con il tag <option> è possibile definire le voci dell'elenco.

    Oltre il pulsante INVIA (type ="submit") per inviare i dati in un'altra pagina, ho previsto il pulsante ANNULLA (type="reset"), che automaticamente cancella quanto scritto nei campi del modulo per resettare appunto il form.

    Notate il tag <Form action> che invia i dati alla pagina registraPrenotazioni.asp per caricare i dati nella 2 tabelle del database. Vedremo come realizzare questa pagina nella prossima lezione.

     

     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 8

    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    CARICARE DATI IN UNA TABELLA DA UN FORM HTML

    Per utilizzare il Database nel Web, è necessario essere collegati al Db stesso, per far ciò, si utilizzano gli ADO (Activex Data Objects). Sostanzialmente, è come quando volete parlare al telefono con una persona, la prima cosa che dovete fare è comporre il numero della persona quindi cercarlo in rubrica, e comporlo. La stessa cosa si deve fare con i database, ossia se dovete leggere o aggiornare dati su una tabella di un database, dovrete dapprima connettervi ad esso creando una connessione diretta (=comporre il numero). Al telefono, dopo aver composto il numero, dovete restare in attesa che vi rispondano, per cominciare a parlare. La stessa cosa è con il database, dopo aver creato la connessione al db, dovete aprire questa connessione per poter comunicare con il db.  Gli oggetti ADO, disponibili per connettersi al Database, sono:

    • ADODB.Connection:  Per creare la connessione e quindi identificare in modo univoco il database, quindi se si vuole operare su più database sarà necessario aprire tante connessioni quanti sono i database.

    • ADODB.Recordset: Per conservare l'insieme delle righe della tabella a cui siamo interessati.

    AREA PROGETTO "Agenzia Turistica"

    Cominciamo con l'aprire una connessione al data base AgenziaAgriturismo.mdb (Lezione n°4)

    1- CONNESSIONE AL DATABASE

    'CONNESSIONE AL DATA BASE
    Set cn=Server.CreateObject("ADODB.Connection")
    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("AgenziaAgriturismo.mdb")
    cn.Open
     

    Con queste istruzioni, creiamo una connessione ad un database Access chiamandola CN:

    SET CN crea la connessione nominandola CN,quindi la sintassi è SET nome_connessione

     CN.connectionstring = "DRIVER=..........SERVER.mapPath...." specifica il tipo di database (access). 

     cn.open apre la connessione quindi la sintassi è nome_connessione.open

     

    2- STRINGA SQL PER CARICARE I DATI NELLE TABELLE

    sql="INSERT INTO Clienti (codFiscaleCliente,nomeCliente,cognomeCliente,TelefonoCliente) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("Nome") & "','" & request.form("Cognome") & "','" & request.form("Telefono") & "')"
    ***scrivete questo testo tutto sulla stessa riga per non commettere errori***

    Con queste istruzioni, integriamo il codice Sql per colloquiare con il database al VBScript. Assegniamo ad una variabile stringa che ho chiamato sql, il risultato del codice sql INSERT INTO per inserire i valori di una nuova riga della tabella Clienti . Come potete vedere la prima parte è semplice sql quindi come da sintassi

     INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN)    dopo Values, tra parentesi vengono indicati i valori che devono essere prelevati dal form di prenotazione.htm, seguendo queste poche ma essenziali regole: dopo la parentesi, apice singolo', poi doppi ",poi dovendo concatenare la & poi indichiamo l'oggetto request.form("nome_campo1") & chiudiamo i doppi apici" chiudiamo il singolo ' mettiamo una virgola e riapriamo il singolo ' , i doppi " e continuiamo con gli altri campi quindi & request.form("nome_campo2") ecc. Ovviamente nome_campo1, nome_campo2 ...sono i nomi che abbiamo assegnato nel file prenotazione.htm agli oggetti disegnati nel modulo, quindi i textbox, e la casella di riepilogo, non teniamo conto dei campo ID della tabella Prenotazioni, che non facciamo nemmeno figurare nel form, visto che il suo valore non deve essere inserito dall'utente: esserndo una chiave contatore si incrementa da sola. Nella tabella Clienti invece dovremo inserire il campo codice fiscale che funge da chiave primaria.

    sql2="INSERT INTO Prenotazioni (codCliente,codPacchetto,codDestinazione,data,NumeroPacchetti,NumeroCamere) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("PacchettoStruttura") & "','" & request.form("Struttura") & "','" & request.form("data") & "','" & request.form("persone") & "','" & request.form("camere") & "')"
    ***scrivete questo testo tutto sulla stessa riga per non commettere errori***

    Assegniamo ad una variabile stringa che ho chiamato sql2, il risultato del codice sql INSERT INTO per inserire i valori di una nuova riga della tabella Prenotazioni .

     

     

    3- ESEGUO IL CODICE DELLA STRINGA SQL E CHIUDO LE CONNESSIONI

    CN.EXECUTE SQL

    CN.EXECUTE SQL2
     

    CN.CLOSE

    SET CN = NOTHING

    Con queste istruzioni, utilizziamo il metodo EXECUTE sull'oggetto connessione CN che abbiamo creato, indicando di eseguire il codice SQL contenuto nella stringa Sql  e Sql2:  nome_connessione.Execute stringa

    A questo punto è possibile chiudere la connessione con il metodo CLOSE: nome_connessione.close

    Dopo aver chiuso la connessione, con il metodo .NOTHING, azzeriamo, resettiamo la variabile Cn: nome_connessione.nothing 

     

    4 - CODICE MESSAGGIO DI CONFERMA  REGISTRAZIONE

    <HTML>
    <BODY>
    <H2>
    <% RESPONSE.WRITE "IL RECORD è STATO REGISTRATO" %>
    </H2>

    Dopo aver chiuso con %> il codice VbScript, apriamo il codice html  e con il tag <H2 > definiamo la dimensione del testo di conferma che inviamo all'utente con l'oggetto RESPONSE (ovviamente riapriamo il <%....%>

    <a href="prenotazione.htm">TORNA A
    MODULO DI PRENOTAZIONE</a>

    <a href="index.htm">HOME</a>

    Con il tag <HREF>, predisponiamo la possibilità per l'utente di spostarsi sulle altre pagine del progetto tramite semplici collegamenti ipertestuali.

     

     

    Codice Asp  RegistraPrenotazione.asp

    <% LANGUAGE = VBSCRIPTS %>

    <%

    'DICHIARO LE VARIABILI

    DIM CN

    DIM SQL

    DIM sql2

    'CONNESSIONE AL DATA BASE

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

    'cn.provider="MICROSOFT.JET.OLEDB.4.0"

    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")

    cn.Open

    sql="INSERT INTO Clienti (codFiscaleCliente,nomeCliente,cognomeCliente,TelefonoCliente) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("Nome") & "','" & request.form("Cognome") & "','" & request.form("Telefono") & "')"

    'METODO EXECUTE DELL'OGGETTO CONNECTION PER INSERIRE IL RECORD

    CN.EXECUTE SQL

    sql2="INSERT INTO Prenotazioni (codCliente,codPacchetto,codDestinazione,data,NumeroPacchetti,NumeroCamere) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("PacchettoStruttura") & "','" & request.form("Struttura") & "','" & request.form("data") & "','" & request.form("persone") & "','" & request.form("camere") & "')"

    CN.EXECUTE sql2

    CN.CLOSE

    SET CN = NOTHING

    %>

    <HTML><BODY>

    Agenzia AgriTurismoPontino

    <% RESPONSE.WRITE "LA PRENOTAZIONE E'STATA REGISTRATA CON SUCCESSO" %>

    <br>

    <a href="prenotazione.htm">TORNA A MODULO DI PRENOTAZIONE

    <br>

    <a href="agenzia_agriturismo_pontino.htm">HOME

    </BODY>

    </HTML>

    Risultato RegistraPrenotazioni.asp

     

     IN SINTESI...

     

    Set nome_connessione=Server.CreateObject("ADODB.Connection") Crea la connessione al database

    cn.Open:apre la connessione

    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath ("nome_database.mdb"): definisce il tipo di database

    INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN) : codice sql per caricare i dati in ogni riga della tabella.

    CN.EXECUTE nome stringa: metodo per eseguire il codice della stringa

    SET CN = NOTHING: azzera la connessione

     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 9

    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB


    Per visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset a cui abbiamo solo accennato nella lezione precedente.

    AREA PROGETTO "Agenzia Turistica"

    Proseguiamo realizzando la pagina visualizzaclienti.asp che prevede la lettura e la visualizzazione di tutti i record della tabella CLIENTI. Come per l'esempio della lezione precedente, prima cosa da fare, sarà definire l'oggetto connessione, definire il connectionstring per definire il tipo di db, e aprire la connessione.

    1 - CONNESSIONE DATABASE

    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    objCon.Open

     

    2- STRINGA SQL PER SELEZIONARE TUTTI I CAMPI DELLA TABELLA

    strSQL = "SELECT * FROM Clienti"
     

    Con questa istruzione, assegno alla variabile strSQL, il risultato del codice Sql risultato della query che produce l'elenco di tutti gli attributi della tabella Clienti secondo la sintassi:

    Select attributo1,attributo2,...attributoN  from  nome_tabella

     

    3 -DEFINIZIONE DI UN RECORD SET

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon

    Nella prima riga di questa istruzione, si definisce l'oggetto recordSet con sintassi;

    Set  nome_recordSet = Server.CreateObject("ADODB.recordset") questo permetterà di aprire la tabella in base alla domanda(query) che abbiamo fatto nell'istruzione sql assegnata alla variabile.Nella seconda riga, apriamo il recordSet attraverso il metodo open passando le variabili strSQL (stringa codice Sql) e ObjCon (variabile connessione) come parametri. Il risultato sarà quello di raccogliere nell'oggetto recordset, tutte le righe della nostra tabella.

     

    4 - LETTURA DI TUTTI I RECORD DELLA TABELLA

    Come detto prima, il recordset ci permetterà di aprire la tabella, ma ciò. non significa che potremo leggere e visualizzare al volo tutti i dati, ma dovremo scorrere tutte le righe per leggere una ad una i dati da queste contenuti. Per scorrere le righe all'interno del set di risultati(recordset), si deve usare il ciclo While (che già avete studiato in visual basic). Per spostarci da una riga all'altra della tabella, utilizzeremo il metodo .movenext, e scorreremo tutti i record fino alla fine del recordset (.eof) secondo la sintassi:

     while not nome_recordset.EOF

              .......

              .......

              nome_recordset.movenext

     wend

    Dove ho messo i puntini, andranno inserite le istruzioni che dovranno essere eseguite per ogni riga della tabella, quindi visto che lo scopo è quello di visualizzare i dati, il codice diventerà:

     

    Risultato VisualizzaClienti.asp

    while not rs.EOF
    response.write "CODICE: "& rs("CodFiscaleCliente")
    RESPONSE.WRITE "--------"
    response.write "Nome: "& rs("NomeCliente")
    RESPONSE.WRITE "--------"
    response.write "Cognome: "& rs("CognomeCliente")
    RESPONSE.WRITE "--------"
    response.write "Telefono: "& rs("TelefonoCliente")
    %>
    <BR>
    <%
    rs.movenext
    wend
    Il risultato come potete vedere dal punto di vista grafico fa un pò desiderare, dunque si potrà con l'aiuto di frontpage, e con qualche modifica al codice ottenere un risultato diverso. Il codice all'interno del ciclo while sarà modificato così:
     

    Risultato VisualizzaClienti.asp

    modificata con Frontpage

    while not rs.EOF
    strid = rs("CodFiscaleCliente")
    strNOME = rs("NomeCliente")
    strCOGNOME = rs("CognomeCliente")
    strTELEFONO = rs("TelefonoCliente")
    %>
    <body bgcolor="#FFFFDF">

    <form>
    <div align="center">
    <table border="1" width="94%" bgcolor="#FFFFFF">
    <tr>
    <td>CODICE FISCALE:
    <input type="text" size="10" name="codfisc" value="<%=strid%>">&nbsp;&nbsp;
    NOME: <input type="text" size="27" name="nome" value="<%=strNOME%>">&nbsp;&nbsp; COGNOME:
    <input type="text" size="10" name="cognome" value="<%=strCOGNOME%>">&nbsp;&nbsp;&nbsp;
    TELEFONO:&nbsp;
    <input type="text" size="23" name="telefono" value="<%=strTELEFONO%>"></tr>
    </table>
    </div>
    <%
    rs.movenext
    wend

     

     

     

    In pratica,  ogni campo del recordset verrà scaricato in una variabile che sarà mandata a video in un textbox di un form html (input type="text") invece di essere inviate a video con response.write. Il codice sembra molto diverso ma in realtà, inserite queste variabili al resto pensa Frontpage.

     

    5 -CHIUSURA E AZZERAMENTO DELLE VARIABILI DI CONNESSIONE

    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    Come già detto procediamo alla chiusura degli oggetti creati e al loro azzeramento liberando così la memoria del server.

     

    Codice Asp 

    <html><title>ELENCO CLIENTI</title>
    <%
    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    objCon.Open

    strSQL = "SELECT * FROM Clienti"

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, objcon


    while not rs.EOF
    strid = rs("CodFiscaleCliente")
    strNOME = rs("NomeCliente")
    strCOGNOME = rs("CognomeCliente")
    strTELEFONO = rs("TelefonoCliente")
    %>

    <body bgcolor="#FFFFDF">

    <form>
    <div align="center">
    <table border="1" width="94%" bgcolor="#FFFFFF">
    <tr>
    <td>CODICE FISCALE: <input type="text" size="10" name="codfisc" value="<%=strid%>">&nbsp;&nbsp;
    NOME: <input type="text" size="27" name="nome" value="<%=strNOME%>">&nbsp;&nbsp; COGNOME: <input type="text" size="10" name="cognome" value="<%=strCOGNOME%>">&nbsp;&nbsp;&nbsp;
    TELEFONO:&nbsp;
    <input type="text" size="23" name="telefono" value="<%=strTELEFONO%>"></tr>

    </table>
    </div>
    <%
    rs.movenext
    wend


    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    %>

    </form>
    <p>&nbsp;</p>
    <P align="center"><b><font face="Times New Roman"><a href="PRENOTAZIONI.asp">VISUALIZZA LE PRENOTAZIONI</a></font></b><P align="center">
    <b><font face="Times New Roman" size="5">
    <A HREF="AGRITURISMO/AGENZIA_AGRITURISMO_PONTINO.htm">HOME</A></font></b></body></html>
     

    IN SINTESI...

     

    Select attributo1,attributo2,...attributoN from nome_tabella    Codice della query sql per selezionare le colonne della tabella.

    Set nome_recordSet = Server.CreateObject("ADODB.recordset") : creazione dell'oggetto recordset che permette di conservare tutti i dati della tabella selezionati con la query.

     while not nome_recordset.EOF
    .......
    .......
    nome_recordset.movenext
     wend   
    Codice vbscript per scorrere tutte le righe della tabella, viene utililzzata l'istruzione di ripetizione While e il metodo movenext per spostarsi da un record all'altro.
     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    LEGGERE E VISUALIZZARE I DATI FILTRATI E CALCOLATI DI UNA TABELLA IN UNA PAGINA WEB


    Come nella lezione precedente, dovendo visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset. Se però questi dati dovranno essere manipolati prima di essere visualizzati, si dovrà arricchire il codice sql di funzioni di aggregazione e campi calcolati.

    AREA PROGETTO "Agenzia Turistica"

    Proseguiamo realizzando la pagina Prenotazioni.asp (pagina del lato gestore) che  prevede dapprima la realizzione dell'interfaccia grafica come nell'immagine seguente:

     Per realizzarla useremo  Frontpage. Dovremo dunque realizzare una tabella per ciascun Agriturismo, che riporti per ciascuna data disponibile e per ciascun pacchetto, 2 colonne che lasceremo vuote in questa fase, che dovranno contenere, l'una il numero delle camere prenotate  e l'altra il numero delle camere ancora disponibli. Queste due ultime informazioni derivano da calcoli che verranno elaborati dalla pagina asp in tempo reale, restituendo così sempre una situazione aggiornata.

    Per effettuare questi calcoli, utilizzeremo oltre che il semplice codice sql, una funzione di aggregazione che effettuerà la somma ,SUM(), delle prenotazioni per ciascuna tipologia di pacchetto-struttura-data, che poi sottratte dal valore costante delle camere disponibili per ciascuna struttura (che abbiamo supposto pari a 10), ci restituiscono le disponibilità per ogni combinazione aggiornata in tempo reale.

    Cominciamo allora con la creazione della struttura grafica con Frontpage:

    Inserire una Tabella con 9 righe 2 colonne specificando la larghezza in percentuale 80 -spaziatura interna celle 1- spaziatura tra celle 2- dimensione bordi 1.
    Posizionarsi nella prima riga ed unire le celle, impostare il colore di fondo (verde) e scrivere PRENOTAZIONI E DISPONIBILITA' (century gotic 4 - bianco)
    Nella 2° riga inserire l'immagine del primo agriturismo e procedere allo stesso modo per tutti gli agriturismi. Proseguire con l'inserimento nella seconda cella della seconda riga, di una tabella ii 6 righe e 9 colonne, con allineamento a sinistra, larghezza percentuale 100, spaziatura interna celle 1, spaziatura tra celle 2, dimensioni bordi 1. unire di tre celle in tre celle e riempire con PACCHETTO SMALL, PACCHETTO PLUS e PACCHETTO FULL. Per ciascun pacchetto inserire nella prima colonna le date fisse dei pacchetti offerti dall'agenzia.

    Dopo aver realizzato la medesima tabella per tutte le strutture, saremo pronti per la parte più importante di questo progetto, cioè collegare dinamicamente il sito al database, procedendo alla realizzazione dello script asp che conterrà la funzione SUM e un campo calcolato. Per cominciare a scrivere il codice asp, dobbiamo posizionarci sulla prima casella bianca, (quella che si riferisce al calcolo delle camere prenotate presso la struttura L'Ovile, per il 06/08/2011 Pacchetto Small . Passare dalla modalità normale di frontpage alla modalità codice e li inserire dove si sarà posizionato il cursore, il seguente codice. Come per l'esempio della lezione precedente, prima cosa da fare, sarà definire l'oggetto connessione, definire il connectionstring per definire il tipo di db, e aprire la connessione.

    1 - CONNESSIONE DATABASE e DICHIARAZIONE DELLE VARIABILI

    <% LANGUAGE = VBSCRIPTS

    DIM objCon, Prenotate1
    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    objCon.Open
     

     

    2- STRINGA SQL PER SELEZIONARE E AGGREGARE I CAMPI DELLA TABELLA E PRODURRE I CAMPI CALCOLATI

    Prenotate1= SELECT Pacchetti.codPacchetto, Destinazioni.codAgriturismo, Sum(Prenotazioni.NumeroCamere) AS Prenotate, Prenotazioni.Data FROM Pacchetti INNER JOIN (Destinazioni INNER JOIN Prenotazioni ON Destinazioni.codAgriturismo = Prenotazioni.codDestinazione) ON Pacchetti.codPacchetto = Prenotazioni.codPacchetto
    GROUP BY Pacchetti.codPacchetto, Destinazioni.codAgriturismo, Prenotazioni.Data HAVING (((Pacchetti.codPacchetto)=1) AND ((Destinazioni.codAgriturismo)=1) AND ((Prenotazioni.Data)='06/08/2011'))

    ***scrivete questo testo tutto sulla stessa riga per non commettere errori*** OPPURE CREATE LA QUERY IN ACCESS E RIPORTATE QUI LA TRADUZIONE SQL

    .


     

    Con questa istruzione, assegno alla variabile strSQL, il risultato del codice Sql risultato della query che calcola la somma delle camere prenotate nelle righe dove il codice pacchetto  è uguale a 1 il codice agriturismo è uguale ad 1 e la data è pari a 06/08/2011.

    Select  SUM(attributo1) as nome_campo_calcolato, FROM  nome_tabella where attributo='XXXXXX' and ,,,

     

    3 -DEFINIZIONE DI UN RECORD SET

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open Prenotate1,objcon
     

    Come nell'esempio della lezione precedente, si definisce l'oggetto recordSet con sintassi;

    Set  nome_recordSet = Server.CreateObject("ADODB.recordset") questo permetterà di aprire la tabella in base alla domanda(query) che abbiamo fatto nell'istruzione sql assegnata alla variabile Prenotate1.Nella seconda riga, apriamo il recordSet attraverso il metodo open passando le variabili Prenotate1 (stringa codice Sql) e ObjCon (variabile connessione) come parametri. Il risultato sarà quello di raccogliere nell'oggetto recordset, le righe della nostra tabella secondo la selezione effettuata con la query sql.

     

    4 - Emissione dell'Output

    response.write rs("Prenotate")%>
     

     utilizziamo response.write per mandare a video la variabili calcolata Prenotate
     

     

    5 - Emissione dell'Output

    Ci posizioniamo nella cella affianco, quella delle disponibilità ed effettuiamo il calcolo delle disponibilità aggiornate, sottraendo la somma delle prenotazioni dal numero delle disponibilità che noi abbiamo supposto pari a 10camere per ciascuna struttura.:

    <%response.write 10 - rs("Prenotate")

     

    6 -CHIUSURA E AZZERAMENTO DELLE VARIABILI DI CONNESSIONE

    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing
    %>
     

    Come già detto procediamo alla chiusura degli oggetti creati e al loro azzeramento liberando così la memoria del server.

     

    Codice Asp              Prenotazioni.asp      per  il pacchetto Small (1) della STruttura L'Ovile(1)  per la data 06/08/2011

    <%
    DIM objCon, Prenotate1
    Set objCon = Server.CreateObject( "ADODB.Connection" )
    objCon.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    objCon.Open
    Prenotate1 = "SELECT Pacchetti.codPacchetto, Destinazioni.codAgriturismo, Sum(Prenotazioni.NumeroCamere) AS Prenotate,Prenotazioni.Data FROM Pacchetti INNER JOIN (Destinazioni INNER JOIN Prenotazioni ON Destinazioni.codAgriturismo = Prenotazioni.codDestinazione) ON Pacchetti.codPacchetto = Prenotazioni.codPacchetto GROUP BY Pacchetti.codPacchetto, Destinazioni.codAgriturismo, Prenotazioni.Data HAVING (((Pacchetti.codPacchetto)=1) AND ((Destinazioni.codAgriturismo)=1) AND ((Prenotazioni.Data)='06/08/2011'))"
    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open Prenotate1,objcon

    response.write rs("Prenotate")%>


    Ci posizioniamo nella cella affianco, quella delle disponibilità:

    <%response.write 10 - rs("Prenotate")
    rs.close
    Set rs = Nothing
    objcon.close
    Set objcon = Nothing

    %>


     

    Lo stesso codice verrà modificato nei criteri, codPacchetto, codAgriturismo, e data, e copiato in ogni casella. 

    Ora per terminare sarà necessario procedere con la pagina ListinoStrutture.asp, che prevede l'utilizzo di tre query, una per ciascun tipo di pacchetto, che mostrano rispettivamente il costo del pacchetto per persona, che si intende unico per tutte le date e strutture. Come per la pagina delle prenotazioni, procediamo con la realizzazione della parte grafica con l'utilizzo di frontpage. Nelle caselle lasciate libere per inserire il prezzo, ci posizioniamo e inseriamo il codice asp seguente. Come al solito dovremo aprire una connessione ed un recordset, e predisporre il codice Sql che vi ho evidenziato. Lo stesso stralcio di codice dovrà essere copiato nelle altre due caselle lasciate libere provvedendo ovviamente alla modifica del criterio nella query che diventerà 2 e poi 3, a seconda del pacchetto.

    ListinoStrutture.asp

    <%
    DIM objConLISTINO, listino
    Set objConLISTINO = Server.CreateObject( "ADODB.Connection" )
    objConLISTINO.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    objConLISTINO.Open
    listino= "select CostoIndividuale as Prezzo From PAcchetti where codpacchetto=1"
    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open listino,objconLISTINO

    response.write rs("Prezzo")
    rs.close
    Set rs = Nothing
    objconLISTINO.close
    Set objconLISTINO = Nothing

    %>

     

     

     

     IN SINTESI...
     

    Select attributo1,attributo2,...attributoN from nome_tabella  where attributoX ='xxxxx'   Codice della query sql per selezionare le colonne della tabella che assolvono alla condizione espressa dopo il where.

    Set nome_recordSet = Server.CreateObject("ADODB.recordset") : creazione dell'oggetto recordset che permette di conservare tutti i dati della tabella selezionati con la query.

     
    Select  SUM(attributo1) as nome_campo_calcolato, FROM  nome_tabella where attributo='XXXXXX' and ,,,: Codice SQL da assegnare ad una variabile nel codice asp, per produrre un campo calcolato con l'utilizzo delle funzioni di aggregazione di Access (sql).

     

    TORNA SU

     

     
     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 11Utilizziamo il codice Visual Basic per effettuare dei calcoli

    CONFERMA  REGISTRAZIONE CON CALCOLO DEL PREVENTIVO  registraPrentotazione.asp

    <% LANGUAGE = VBSCRIPTS %>
    <%
    'DICHIARO LE VARIABILI
    DIM CN
    DIM SQL
    DIM sql2,sql3
    dim p, n, prev
    'CONNESSIONE AL DATA BASE
    Set cn=Server.CreateObject("ADODB.Connection")
    'cn.provider="MICROSOFT.JET.OLEDB.4.0"
    cn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("AgenziaAgriturismo.mdb")
    cn.Open
    sql="INSERT INTO Clienti (codFiscaleCliente,nomeCliente,cognomeCliente,TelefonoCliente) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("Nome") & "','" & request.form("Cognome") & "','" & request.form("Telefono") & "')"
    'METODO EXECUTE DELL'OGGETTO CONNECTION PER INSERIRE IL RECORD
    CN.EXECUTE SQL
    sql2="INSERT INTO Prenotazioni (codCliente,codPacchetto,codDestinazione,data,NumeroPacchetti,NumeroCamere) VALUES ('"& request.form("CodiceFiscale") & "','" & request.form("PacchettoStruttura") & "','" & request.form("Struttura") & "','" & request.form("data") & "','" & request.form("persone") & "','" & request.form("camere") & "')"
    CN.EXECUTE sql2
    p=request.form("Struttura")
    n=request.form("Persone")
    if p = 1 then
    prev = 330 * n
    else
    if p = 2 then
    prev = 400 * n
    else
    prev = 950 * n
    end if
    end if

    %>
    <HTML>

    <BODY bgcolor="#FFFFDF">



    <p align="center"><font size="8" face="Century Gothic">Agenzia Agri<font color="#008080">Turismo</font>
    Pontino</font></p>
    <P align="center"><b><center><% RESPONSE.WRITE "LA PRENOTAZIONE E'STATA REGISTRATA CON SUCCESSO" %><font size="5"><br>
    <font color="#008080"><b>
    <%response.write "Preventivo soggiorno: " & prev
    CN.CLOSE
    SET CN = NOTHING
    %>
    &nbsp;€</font></center>
    </b><P align="center">&nbsp;<img src="IMMAGINI AGRITURISMO/AgriturismoModuloPrenotazione.jpg">
    <b>
    </b>
    <P align="center"><b>
    <a href="http://www.patriziatarantino.net/agriturismo/prenotazione.htm">TORNA A
    MODULO DI PRENOTAZIONE</a></b><P align="center"><b>
    <a href="agenzia_agriturismo_pontino.htm"><font size="5">HOME</font></a><font size="5">
    </font></b>
    </BODY>
    </HTML>

     

     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    AREA PROGETTO "Studio Legale"

    Lo scopo di questo progetto, è quello di realizzare un semplice sito web per uno studio legale. La parte dinamica del sito consiste nell'area dedicata ai Contatti, dove si vuole prevedere un modulo per l'invio di richiesta informazioni/consulenza. Quest'ultime vengono poi inviate attraverso codice Asp, in un Database access, (Messaggi.accdb) che per l'occorrenza sarà inizialmente costituito solo dalla tabella ContattiMex. Si prevederà poi la lettura dei dati registrati nel database e l'invio dei dati raccolti ad un'altra pagina dinamica per la visualizzazione protetta da password.

    Questa è l'ipotesi di Homepage che ciascun gruppo di lavoro realizzerà secondo i propri criteri grafici e che diverrà di conseguenza la base grafica di tutte le altre pagine del sito.

     

     Per iniziare , creiamo il database che verrà collegato con il sito. Salviamo questo database con il nome Messaggi.accdb. Il Database in oggetto, dovrà raccogliere le informazioni relative alla data corrente al momento della compilazione del modulo (per questo useremo lo script asp con la funzione 'now'), i dati del richiedente (nome e indirizzo mail) , e un messaggio di testo.

    Cominciamo ad operare nell'area progetto applicando quanto esposto nella lezione 3 e creiamo la pagina web contatti.asp che conterrà il modulo (Form), per caricare le informazioni del visitatore che intendiamo raccogliere. Quando si realizza la pagina web di raccolta, il Form appunto, non è necessario utilizzare codice asp, il form di per se è realizzato con codice Html, nel nostro caso, volendo registrare nel database in modo automatico la data e l'ora della richiesta, siamo costretti ad utilizzare una funzione dinamica (now) che rende di fatto l'intera pagina asp una pagina web dinamica e non statica. La data e l'ora corrente infatti, verranno mostrate nel browser costantemente aggiornate. Vi mostrerò codici "puliti", cioè scremati da quanto frontpage aggiunge automaticamente, quindi provando questi codici vi appariranno solo i contenuti essenziali, senza formattazione ne immagini, che potremo poi aggiungere con poche mosse direttamente da frontpage. Ho colorato il codice delle pagine del progetto in viola perchè possiate riconoscerlo facilmente.

     

    Codice HTML   (contatti.asp)

    Risultato  (contatti.asp)

    <html><title>Contatti</title><body>

    <FORM ACTION="registraMESSAGGIO.ASP" METHOD="POST">
    Invia un messaggio
    mm-gg-aaaa
    ora
    <input type="text" name="dataOra" size="20" value="<%=now()%>">
    Mi chiamo  </FONT>
    <INPUT NAME="nome" SIZE="51">
    il mio indirizzo email<INPUT NAME="email" SIZE="51">
    il mio messaggio
    (scrivi il tuo messaggio max 255 caratteri nel Box senza andare a capo con
    Invio)<textarea rows="17" name="messaggio" cols="60" style="float: left"></textarea>
    <INPUT TYPE ="submit" VALUE="INVIA IL MESSAGGIO" NAME="B1">
    </FORM>
    </body></html>

    Con gli <Input type="text">, ho definito gli input box dove l'utente inserirà i propri dati, in particolare nel box DataOra, ho attribuito il contenuto direttamente da codice, utilizzando la funzione now che restituisce data ed ora corrente di sistema. Essendo uno script asp, è racchiuso tra i  "tag" <% (apri) e %> (chiudi)

    Con <textarea rows="17" name="messaggio" cols="60" style="float: left"> , inseriamo una casella di testo di 17righe e 60 colonne, dove l'utente scriverà la sua richiesta di informazioni.

    Notate il tag <Form action> che crea un modulo, che sarà inviato in modo riservato alla pagina registraMessaggio.asp per caricare i dati nella tabella del database. Vedremo come realizzare questa pagina nella prossima lezione.

     

     IN SINTESI...

     

    <FORM method="POST" action="pagina.asp">: crea un modulo html, che sarà inviato in modo riservato a pagina.asp.

    INPUT TYPE="text": Tag Html per inserire in un form Html un text box

    INPUT TYPE="submit": Tag Html per inserire in un form Html un pulsante

    TEXTAREA Tag Html per inserire in un form Html un box di testo

     

     

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 13

    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    CARICARE DATI IN UNA TABELLA DA UN FORM

    Per utilizzare il Database nel Web, è necessario essere collegati al Db stesso, per far ciò, si utilizzano gli ADO (Activex Data Objects). Sostanzialmente, è come quando volete parlare al telefono con una persona, la prima cosa che dovete fare è comporre il numero della persona quindi cercarlo in rubrica, e comporlo. La stessa cosa si deve fare con i database, ossia se dovete leggere o aggiornare dati su una tabella di un database, dovrete dapprima connettervi ad esso creando una connessione diretta (=comporre il numero). Al telefono, dopo aver composto il numero, dovete restare in attesa che vi rispondano, per cominciare a parlare. La stessa cosa è con il database, dopo aver creato la connessione al db, dovete aprire questa connessione per poter comunicare con il db.  Gli oggetti ADO, disponibili per connettersi al Database, sono:

    • ADODB.Connection:  Per creare la connessione e quindi identificare in modo univoco il database, quindi se si vuole operare su più database sarà necessario aprire tante connessioni quanti sono i database.

    • ADODB.Recordset: Per conservare l'insieme delle righe della tabella a cui siamo interessati.

    AREA PROGETTO "Studio Legale"

    Cominciamo con l'aprire una connessione al data base Messaggi.accdb (questo argomento è già stato trattato nelle lezioni 4 e 8, ma i database oggetto della connessione erano file .mdb dunque la stringa di connessione era differente.)

    1- CONNESSIONE AL DATABASE

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.connectionstring= "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=" & Server.MapPath("Messaggi.accdb")
    cn.Open

    Con queste istruzioni, creiamo una connessione ad un database Access chiamandola CN:

    SET CN crea la connessione nominandola CN,quindi la sintassi è SET nome_connessione

     CN.connectionstring = "DRIVER=..........SERVER.mapPath...." specifica il tipo di database (access), dunque questa stringa cambia in relazione alla versione del db. 

     cn.open apre la connessione quindi la sintassi è nome_connessione.open

    2- STRINGA SQL PER CARICARE I DATI IN TABELLA

    sql="INSERT INTO contattiMex (DATAeORA,nome,email,messaggio) VALUES ('"& request.form("dataOra") & "','"& request.form("nome") & "','" & request.form("email") & "','" & request.form("messaggio") & "')"
    ***scrivete questo testo tutto sulla stessa riga per non commettere errori***

    Con queste istruzioni, integriamo il codice Sql per colloquiare con il database al VBScript. Assegniamo ad una variabile stringa che ho chiamato sql, il risultato del codice sql INSERT INTO per inserire i valori di una nuova riga della tabella Articoli . Come potete vedere la prima parte è semplice sql quindi come da sintassi

     INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN)    dopo Values, tra parentesi vengono indicati i valori che devono essere prelevati dal form di contatti.asp, seguendo queste poche ma essenziali regole: dopo la parentesi, apice singolo', poi doppi ",poi dovendo concatenare la & poi indichiamo l'oggetto request.form("nome_campo1") & chiudiamo i doppi apici" chiudiamo il singolo ' mettiamo una virgola e riapriamo il singolo ' , i doppi " e continuiamo con gli altri campi quindi & request.form("nome_campo2") ecc. Ovviamente nome_campo1, nome_campo2 ...sono i nomi che abbiamo assegnato nel file contatti.asp agli oggetti disegnati nel modulo, quindi i textbox, e la textarea, non teniamo conto del campo ID della tabella, che non facciamo nemmeno figurare nel form, visto che il suo valore non deve essere inserito dall'utente: essendo una chiave contatore si incrementa da sola. 

     

    3- ESEGUO IL CODICE DELLA STRINGA SQL E CHIUDO LE CONNESSIONI

    CN.EXECUTE SQL
    CN.CLOSE
    SET CN = NOTHING

    Con queste istruzioni, utilizziamo il metodo EXECUTE sull'oggetto connessione CN che abbiamo creato, indicando di eseguire il codice SQL contenuto nella stringa Sql :  nome_connessione.Execute stringa

    A questo punto è possibile chiudere la connessione con il metodo CLOSE: nome_connessione.close

    Dopo aver chiuso la connessione, con il metodo .NOTHING, azzeriamo, resettiamo la variabile Cn: nome_connessione.nothing

     

    4 - CODICE MESSAGGIO DI CONFERMA  REGISTRAZIONE

    <HTML>
    <BODY>
    <H2>
    <% RESPONSE.WRITE "IL MESSAGGIO E' STATO INOLTRATO" %>
    </H2>

     

    Dopo aver chiuso con %> il codice VbScript, apriamo il codice html  e con il tag <H2 > definiamo la dimensione del testo di conferma che inviamo all'utente con l'oggetto RESPONSE (ovviamente riapriamo il <%....%>

    <P><A HREF="contatti.asp">TORNA ALLA PAGINA CONTATTI</A>

    <P><a href="index.htm">HOME</a>

    Con il tag <HREF>, predisponiamo la possibilità per l'utente di spostarsi sulle altre pagine del progetto tramite semplici collegamenti ipertestuali.

     

    Codice Asp  RegistraMessaggio.asp

    <% LANGUAGE = VBSCRIPTS %>
    <%
    'DICHIARO LE VARIABILI
    DIM CN
    DIM SQL
    'CONNESSIONE AL DATA BASE

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.connectionstring= "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=" & Server.MapPath("Messaggi.accdb")
    cn.Open

    sql="INSERT INTO contattiMex (DATAeORA,nome,email,messaggio) VALUES ('"& request.form("dataOra") & "','"& request.form("nome") & "','" & request.form("email") & "','" & request.form("messaggio") & "')"
    'METODO EXECUTE DELL'OGGETTO CONNECTION PER INSERIRE IL RECORD
    CN.EXECUTE SQL
    CN.CLOSE
    SET CN = NOTHING

    %>
     

    <HTML>
    <BODY>
    <H2>
    <% RESPONSE.WRITE "IL MESSAGGIO E' STATO INOLTRATO" %>
    </H2>

    <P><A HREF="contatti.asp">TORNA ALLA PAGINA CONTATTI</A>
    <P><a href="index.html">HOME</a>

    </BODY>
    </HTML>

     

    Risultato RegistraMessaggio.asp

     

     IN SINTESI...

     

    Set nome_connessione=Server.CreateObject("ADODB.Connection") Crea la connessione al database

    cn.Open:apre la connessione

    cn.connectionstring= "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=" & Server.MapPath("Messaggi.accdb"): definisce il tipo di database

    INSERT INTO nome_tabella(campo1,campo2,...campoN) VALUES (dato1,dato2...datoN) : codice sql per caricare i dati in ogni riga della tabella.

    CN.EXECUTE nome stringa: metodo per eseguire il codice della stringa

    SET CN = NOTHING: azzera la connessione

    TORNA SU

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Lezione 14
     
    ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

    LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB


    Per visualizzare i dati di una tabella in una pagina web, dobbiamo utilizzare l'oggetto ADODB.Recordset a cui abbiamo solo accennato nella lezione precedente.

    AREA PROGETTO "Studio legale"

    Proseguiamo realizzando la pagina visualizzamessaggi.asp che prevede la lettura e la visualizzazione di tutti i record della tabella ContattiMex. Come per l'esempio della lezione precedente, prima cosa da fare, sarà definire l'oggetto connessione, definire il connectionstring per definire il tipo di db, e aprire la connessione.

    1 - CONNESSIONE DATABASE

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.connectionstring= "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=" & Server.MapPath("Messaggi.accdb")
    cn.Open

     

    2- STRINGA SQL PER SELEZIONARE TUTTI I CAMPI DELLA TABELLA

    strSQL = "SELECT * FROM contattiMex"
     

    Con questa istruzione, assegno alla variabile strSQL, il risultato del codice Sql risultato della query che produce l'elenco di tutti gli attributi della tabella ContatttiMex secondo la sintassi:

    Select attributo1,attributo2,...attributoN  from  nome_tabella

     

    3 -DEFINIZIONE DI UN RECORD SET

    Set rs=Server.CreateObject("ADODB.recordset")
    rs.Open strSQL, cn

    Nella prima riga di questa istruzione, si definisce l'oggetto recordSet con sintassi;

    Set  nome_recordSet = Server.CreateObject("ADODB.recordset") questo permetterà di aprire la tabella in base alla domanda(query) che abbiamo fatto nell'istruzione sql assegnata alla variabile.Nella seconda riga, apriamo il recordSet attraverso il metodo open passando le variabili strSQL (stringa codice Sql) e cn (variabile connessione) come parametri. Il risultato sarà quello di raccogliere nell'oggetto recordset, tutte le righe della nostra tabella.

     

    4 - LETTURA DI TUTTI I RECORD DELLA TABELLA

    Come detto prima, il recordset ci permetterà di aprire la tabella, ma ciò. non significa che potremo leggere e visualizzare al volo tutti i dati, ma dovremo scorrere tutte le righe per leggere una ad una i dati da queste contenuti. Per scorrere le righe all'interno del set di risultati(recordset), si deve usare il ciclo While (che già avete studiato in visual basic). Per spostarci da una riga all'altra della tabella, utilizzeremo il metodo .movenext, e scorreremo tutti i record fino alla fine del recordset (.eof) secondo la sintassi:

     while not nome_recordset.EOF

              .......

              .......

              nome_recordset.movenext

     wend

    Dove ho messo i puntini, andranno inserite le istruzioni che dovranno essere eseguite per ogni riga della tabella, quindi visto che lo scopo è quello di visualizzare i dati, il codice diventerà:

    while not rs.EOF
    response.write "CODICE: "& rs("id_iscritto")
    RESPONSE.WRITE "--------------------------------"
    response.write "Data e Ora: "& rs("dataEora")
    RESPONSE.WRITE "--------------------------------"
    response.write "NOME: "& rs("nome")
    RESPONSE.WRITE "--------------------------------"
    response.write "E-MAIL: "& rs("email")
    RESPONSE.WRITE "--------------------------------"
    response.write "MESSAGGIO: "& rs("messaggio")
    %>
    <BR><br><br>
    <%
    rs.movenext
    wend

    Il risultato come potete vedere dal punto di vista grafico fa un pò desiderare, dunque si potrà con l'aiuto di un software web editor (come frontpage), e con qualche modifica al codice ottenere un risultato diverso:

    Il codice all'interno del ciclo while sarà modificato così:

    while not rs.EOF
    strid = rs("id_iscritto")
    strdataEora = rs("dataEora")
    strnome = rs("nome")
    stremail = rs("email")
    strmessaggio = rs("messaggio")
    %>
    <form>
    <div align="center">
    <table border="1" width="75%" bgcolor="#CC9900">
    <tr>
    <td>&nbsp;<font face="Arial"><font color="#990000"><b>CODICE:</b></font>
    </font> <input type="text" size="10" name="idarticolo" value="<%=strid%>">
    <b><font face="Arial" color="#990000">DATA:</font></b>
    <input type="text" size="24" name="dataEora" value="<%=strdataEora%>">&nbsp;<b><font color="#990000"><font face="Arial"> NOME:</font>
    </font></b>
    <input type="text" size="34" name="nome" value="<%=strnome%>"><p>&nbsp;<font face="Arial"><b><font color="#990000">EMAIL:</font></b>
    </font>
    <input type="text" size="23" name="email" value="<%=stremail%>">
    <font face="Arial"><b><font color="#990000">&nbsp;MESSAGGIO:</font></b>
    </font><textarea rows="5" name="messaggio" cols="45"><%=strmessaggio%></textarea>&nbsp;
    </p>
    <p>&nbsp;</td>
    </tr>
    <tr>
    <td bgcolor="#C0C0C0" background="bg2.jpg">&nbsp;</td>
    </tr>
    </table>
    </div>
     

    In pratica,  ogni campo del recordset verrà scaricato in una variabile che sarà mandata a video in un textbox di un form html (input type="text") invece di essere inviate a video con response.write. Il codice sembra molto diverso ma in realtà, inserite queste variabili al resto pensa Frontpage.

    5 -CHIUSURA E AZZERAMENTO DELLE VARIABILI DI CONNESSIONE

    rs.close
    Set rs = Nothing
    cn.close
    Set cn = Nothing

    Come già detto procediamo alla chiusura degli oggetti creati e al loro azzeramento liberando così la memoria del server.

    Per rendere più professionale il nostro progetto potremmo proteggere l'accesso a questa pagina con una password.

     IN SINTESI...

     

    Select attributo1,attributo2,...attributoN from nome_tabella    Codice della query sql per selezionare le colonne della tabella.

    Set nome_recordSet = Server.CreateObject("ADODB.recordset") : creazione dell'oggetto recordset che permette di conservare tutti i dati della tabella selezionati con la query.

     while not nome_recordset.EOF
    .......
    .......
    nome_recordset.movenext
     wend   
    Codice vbscript per scorrere tutte le righe della tabella, viene utililzzata l'istruzione di ripetizione While e il metodo movenext per spostarsi da un record all'altro.
     

    TORNA SU