INDICE 1.01 - Introduzione alle Active Server Page 1.02 - Struttura di uno script 1.03 - Le variabili 1.04 - I tipi di variabile 1.05 - Dichiarare le variabili 1.06 - Array 1.07 - Strutture di controllo 1.08 - Logica condizionale: if … then 1.09 - APPENDICE - ESEMPI Dal sito HTML.it Guida ASP Ritorna all'indice 1.01 - Introduzione alle Active Server Page L’Active Server Page (Asp) è un linguaggio di programmazione per le pagine web introdotte dalla Microsoft con la versione 3 di IIS (Internet Information Server). Grazie all’Asp è possibile creare vere e proprie applicazioni per il nostro sito web senza dover ricorrere, come accadeva un tempo, alle CGI (Common Gateway Interface). Come dice il nome stesso, la tecnologia Asp consente di elaborare delle informazioni Server Side (lato server) per poi inviarle tramite la grande rete (Internet) al Client Side (lato dell’utente). Una volta arrivate dall’utente le pagine elaborate in precedenza False dal server, verranno mostrate a video dal browser di navigazione utilizzato. Vediamo ora graficamente cosa accade quando l’utente richiede una determinata pagina web. Richiesta pagina non dinamica: Richiesta pagina dinamica: Com’è possibile osservare dalle immagini sovrastanti, solamente nella richiesta di pagina dinamica vi è l’intervento del server per elaborare e gestire le informazioni richieste per poterle poi inviare al visitatore. Già con questo schema grafico è possibile capire quali sono le potenzialità delle pagine dinamiche. Ritorna all'indice 1.02 - Introduzione alle Active Server Page Prima di mostrare come si definisce uno script in Asp, è meglio capire cosa rappresenta uno script e indicare i due tipi fondamentali di scripting. Per script si intende una porzione di codice definita intelligente che è in grado di svolgere operazioni in modo autonomo. Per poter svolgere questa funzione, lo sviluppatore del sito web dovrà programmare in modo corretto ed idoneo alle proprie esigenze lo script interessato. Come accennavo prima, esistono due tipi fondamentali di scripting: scripting lato client e scripting lato server. Per quanto riguarda il lato client, il linguaggio di scripting più noto è il JavaScript (noto in gergo tecnico anche come Js a causa delle sue iniziali). Un esempio di definizione di uno script client side in JavaScript è il seguente: <script language=”Javascript”> <!– Nascosto ai browser incompatibili –> </script> Per quanto riguarda invece il server side (ss) esistono due linguaggi fondamentali. Uno di essi è il Php (Personal Home Page) utilizzato per lo sviluppo di siti web su server di tipo Unix/Linux , mentre il secondo è l’Asp (Active Server Page) utilizzato sui server con tecnologia NT: Ecco un esempio di come si definisce lo script in php: <?php /* Codice di scripting */ ?> Ecco un esempio di come si definisce lo script in Asp: <% ‘ Codice di Scripting %> Soffermiamoci ora a discutere la definizione dello script Asp, in quanto sarà fondamentale per capire il suo funzionamento e proseguire senza problemi nel corso delle lezioni. Incominciamo col dire che lo script proposto non fa assolutamente nulla, ma quello che mi sta a cuore è di mostrare la sua struttura. Lo script in Asp si apre con i caratteri <% e si chiude con %> . Questi due simboli sono chiamati tag di delimitazione di script asp. La riga contenuta invece all’interno di questi due tag, incomincia col seguente carattere ‘ e serve per indicare un commento dello sviluppatore. Vedremo successivamente come si usano i commenti. Ritorna all'indice 1.03 - Le variabili Prima di spiegare quali sono e come si usano le variabili in ASP, è utile ricordare cosa si intende per variabile. Definiamo con variabile una porzione di memoria volatile in grado di contenere un determinato valore in un determinato istante di tempo t. Tale spazio verrà identificato tramite un nome, che il programmatore assegna nel codice. Come il suo stesso nome rivela, la variabile è qualcosa che varia col tempo. Facciamo il classico esempio della variabile contatore che memorizza il numeo di visite di un sito. Se utente A si collega all’istante t1 (un certo istante di tempo) vedrà che il contatore segna n visite (n è il numero dei visitatori precedenti, maggiore di zero). Se utente B si collega all’istante t2=t1+k (k è l’intervallo tra le due visite) troverà un numero maggiore di visite (n+z). In istanti diversi, il contenuto della variabile identificata con il nome contatore è cambiato. Il linguaggio più utilizzato per realizzare pagine ASP è Visual Basic, per questo possiamo approfittare di una delle caratteristiche particolari di questo linguaggio: le variabili di tipo Variant. Se, dal punto di vista delle codifica questo può essere un vantaggio, dal punto di vista delle performance non sempre paga. Inoltre dobbiamo fare attenzione ai nomi che assegnamo alle variabili. È consigliabile stabilire una convenzione e rimanerle fedele per tutto il progetto. Ecco un esempio di nomi convenzionali, che tengono cono del tipo di dati. Ritorna all'indice 1.04 - I tipi di variabile Numero Intero Per numero intero, si intende un numero che non ha nessuna parte frazionaria. Per esempio, i numeri 0, 2, 4 e i numeri -5, -6, -20 sono numeri interi in quanto non hanno parte decimale. Al contrario i numeri 1.3, 2.9, -6.4 non possono rientrare in questa categoria in quanto hanno la parte decimale diversa da zero. Numero in Virgola Mobile Per numero in virgola mobile, si intendono tutti quei numeri che presentano una parte decimale. Ad esempio 4.6, -5.8. Nella tabella abbiamo definito due nomenclature diverse per indicare lo stesso tipo di numero, poiché esistono due tipi diversi di numeri in virgola mobile: single (sng) e double (dbl). La differenza consiste nella precisione che servirà per rappresentare il numero in questione e quindi memoria necessaria. Il tipo double, utilizzerà il doppio dello spazio per memorizzare il valore rispetto al tipo single. Stringa Per variabile stringa si intende una qualunque sequenza di simboli, numeri, lettere concatenate tra loro. I valori sono tipicamente scritti tra doppi apici ". Data Questo tipo serve a memorizzare le date. Il formato dipende dal contesto culturale dell’applicazione. Se il contesto è impostato in italiano avremo date rappresentate nel formato gg/mm/aa oppure gg/mm/aaaa (giorno, mese e anno). In ogni caso è possibile governare la rappresentazione delle date. Boolean Questo tipo di variabile può contenere solo due valori: True e False (vero e falso). Generalmente queste variabili vengono sfruttate nelle strutture di controllo e nelle operazioni condizionali. Valuta (Currency) Questo tipo di dato consente di memorizzare e gestire e rappresentare valuta, denaro. Anche in questo caso sono importanti, ma governabili le impostazioni di contesto culturale. Ritorna all'indice 1.05 - Dichiarare le variabili Dopo aver spiegato le variabili bisogna spiegare come dichiararle e utilizzarle. Per dichiarazione di una variabile si intende un passaggio in cui avvisiamo la macchina che deve preparare (allocare) uno spazio di memoria per accogliere una variabile di un certo tipo. La dichiarazione può avvenire in due modalità: non tipizzata e tipizzata. La prima sfrutta le possibilità delle variabili di tipo Variant, con una modalità simile alla seguente modalità: dim mia_variabile Se vogliamo indicare da subito il tipo di dato, invece, utilizziamo una sintassi simile a questa: int mia_variabile In questo caso la variabile mia_variabile potrà memorizzare solo numeri interi. Dichiarare una variabile non tipizzata ci permette di assegnare il tipo in modo implicito. In questo caso la variabile assume il tipo del primo valore che le assegnamo. mia_variabile = 5 'in questo caso la variabile è un intero mia_variabile = "testo" 'in questo caso la variabile è una stringa Ritorna all'indice 1.06 - Array Esiste un altro tipo di variabile, ma rispetto alle precedenti è un po’ più complesso. Questo tipo viene definito Array. Per array indichiamo una serie di variabili che fa riferimento allo stesso nome, ma riconoscibile tramite un indice. Per capire meglio cos’è un array, paragoniamolo ad un armadio pieno di ante. Adesso assegniamo ad ogni anta un numero univoco (cioè senza ripetizioni) che va da 0 a n-1 (dove n è il numero delle ante). Il concetto di array è più o meno questo. Per aprire l’anta numero K (K compreso tra 0 ed N-1) basta indicare l’armadio ed il numero di anta. Adesso adattiamo questa “operazione di vita quotidiana” all’ambiente Asp. La variabile verrà dichiarata specificando il tipo dei dati. dim intDati(2) 'array di 3 elementi: da 0 a 2 intDati(0) = 0 'inizizzazione dei tre elementi intDati(1) = 1 intDati(2) = 2 In conclusione, gli array non sono molto complessi da usare, basta solo sapere con esattezza la cella su cui bisogna puntare per accedere al dato specifico. Ritorna all'indice 1.07 - Strutture di controllo Come sempre, prima di mostrare la sintassi Asp, vediamo in linea teorica ciò che metteremo in pratica. Prima di tutto dobbiamo definire cosa si intende per “struttura di controllo” indipendentemente dal linguaggio di programmazione o scripting. Per poterlo capire meglio, riprendiamo la definizione di script usata in precedenza: “Per script si intende una porzione di codice definita intelligente che è in grado di svolgere operazioni in modo autonomo”. L’idea è quella di rendere il nostro script capace di eseguire una serie di operazioni per un numero determinato di volte oppure di saper valutare delle condizioni. Per rendere meglio il concetto, proviamo a pensare ad un bambino piccolo a cui insegniamo i numeri e a quando imparerà a contare da 1 a 10. L’idea di imparare a contare è coadiuvata da quella di poter scegliere l’intervallo in cui contare, il ché pone condizioni sull’inizio e la fine della conta. Dopo questa breve introduzione, esaminiamo i tipi di logica che servono per realizzare le strutture di controllo e ciò che si può ottenere con esse. Dopo aver visto uno specchietto riassuntivo dei tre diversi tipi di logiche che compongono l’Active Server Page, vedremo nelle prossime pagine come si compone il loro codice, quali sono le loro caratteristiche e condizioni per esser eseguite correttamente e capirne il loro funzionamento tramite esempi semplici ed efficaci. Ritorna all'indice 1.08 - Logica condizionale: if … then Questo tipo di logica, dopo aver valutato una condizione, determina quali sono le istruzioni da eseguire. Osservando l’immagine è possibile notare come il normale flusso del programma venga deviato dalla valutazione della condizione sul ramo opportuno a seconda della verifica della condizione stessa. Possiamo anche provare a stabilire una semplice regola per tradurre l’operazione condizionale dall’italiano al Visual Basic utilizzato con ASP. Adesso finalmente arriva il codice ASP: <% dim strNome 'Dichiarazione delle variabili strNome="innovatel" if strNome="innovatel" then 'Verifica condizione 'Blocco di istruzione se la condizione è vera response.write "Il visitatore èinnovatel." else 'Blocco di istruzione se la condizione è falsa response.write "Visitatore Anonimo." end if %> In questo caso viene mostrata a video la scritta “Il visitatore è innovatel.” in quanto la condizione è vera. Se provate a variare il contenuto della stringa strNome con un qualunque valore diverso da "innovatel", verrà mostrata a video l’altra stringa “Visitatore Anonimo”. Dopo questo semplice esempio di condizione, voglio complicare la situazione. Supponiamo che nel blocco di azioni del ramo falso voglia mettere un’altra condizione. Come posso fare? Esistono due modalità. La prima consiste nel nidificare un secondo if all’interno del primo. Nidificare, o annidare, significa proprio “inserire” una struttura in un’altra. Ecco un esempio: <% dim strNome strNome = "innovatel" if strNome="pippo" then response.write "ciao pippo" else if strNome="tizio" then response.write "Ciao tizio" else response.write "Ciao innovatel" end if end if %> Dopo l’esempio dell’uso di condizioni nidificate, vediamo l’altra possibilità che ci viene offerta dal linguaggio per eseguire lo stesso codice asp. <% dim strNome strNome="innovatel" if strNome="pippo" then response.write "ciao pippo" elsif strNome="tizio" then response.write "Ciao tizio" else response.write "Ciao innovatel" end if end if %> In questo codice notiamo che dalla “fusione” di else ed if abbiamo il costrutto elsif. Naturalmente, dopo elsif, va posta una condizione. Prima di “abbandonare” il costrutto if per mostrarne uno simile devo specificare una cosa non detta il precedenza: il ramo della condizione vera è OBBLIGATORIO, mentre quello della condizione falsa è facoltativo. Composizione if: if CONDIZIONE then 'Ramo vero '-- Inizio Parte Opzionale else 'Ramo Falso '-- Fine Parte Opzionale end if Ritorna all'indice APPENDICE - ESEMPI TEST1: test personali su esempi trovanti nel WEB TEST2: test personali su esempi trovanti nel WEB CorsoWEB: il mio primo programma ASP (Voto: 10) SampleDB: esempio di query parametrica con risultato immediato (Voto: 8) Gestione record: tabella formato excel con possibilità di aggiungere, cancellare e modificare record (Voto: 6) Tab editor: amministrazione remota (via Web) di database Access (Voto: 8) DataGrid: Paging DataGrid: DBConn_Exist DataGrid: New_DBConn Data Grid Class è una classe che emula in ambiente ASP classico uno dei più importanti controlli ASP.NET (Voto: 7) Asp DB Admin Control: semplice ma efficace strumento di amministrazione via web di database Access. Offre, tra l'altro, una funzione di login, un pannello di controllo e la possibilità di modificare, aggiungere e cancellare record. L'installazione richiede semplicemente la modifica della stringa di connessione al database (Voto: 9) DBList1 DBList2 Con DBList è possibile effettuare tramite una semplice pagina web tutte le operazioni più comuni su tabelle di database: visualizzazione, modifica, cancellazione, aggiunta di record, filtro, ricerca. dbList può essere scaricata direttamente dal sito personale dell'autore (Voto: 9) iGallery iGallery è un'applicazione completa per la generazione di gallerie di immagini su sistemi Windows + ASP. Basata sull'utilizzo di un database Access 2000 contenuto nello zip allegato, è dotata di una ricca interfaccia di amministrazione e di una serie completa di strumenti di gestione (Voto: 9)