Lezione 15: Salvataggio dei Dati di una Form in un Database | |
Una funzione molto utilizzata delle Active Server Pages è l'abilità di creare, cancellare, recuperare e aggiornare informazioni all'interno dei databse. In questo corso utilizzeremo database di tipo Microsoft Access come sorgente di dati, perciò sarà importante che comprendiate alcuni fondamenti sui database. |
Fausto Marinsalta |
Inserimento Dati La Lezione 6 illustrava un metodo per controllare l'invio di form, piuttosto importante, ma usato raramente. Vediamo un metodo più utilizzato per processare l'invio di una form: la parola chiave INSERT in SQL. Come potete immaginare, INSERT viene utilizzata per inserire dati in un database. La sintassi per la parola chiave INSERT è la seguente:
INSERT INTO [nome tabella] ([lista campi]) VALUES ([lista valori])
La lista campi è opzionale, ma se non state inserendo dati in tutti i campi nella vostra tabella di destinazione, sarà necessario includere la lista campi. La lista valori deve essere nello stesso ordine della lista campi, a meno che la lista campi venga omessa, nel qual caso, la lista valori deve essere nello stesso ordine in cui sono posizionati i campi nella tabella. Io raccomando di utilizzare sempre una lista campi e una lista valori combinate. Questo assicura che i dati verranno inseriti nei propri campi.
Per questo esempio, utilizzeremo la form illustrata in Figura 6.3 nella Lezione 6, con una modifica. Dobbiamo cambiare lo script che processa la form. Individuate la linea <form ...>, ed effettuate i seguenti cambiamenti:
<form action="addstudent.asp" method="post">
Il codice per addstudent.asp è il seguente: <!--#include file="subConn.inc"--> <% sql = "INSERT INTO Studenti (" & _ "SID" & _ ",NOME" & _ ",COGNOME" & _ ",INDIRIZZO" & _ ",CITTà" & _ ",STATO" & _ ",CAP" & _ ") " & _ "VALUES (" & _ "'" & Request.Form("txtSID") & "'" & _ ",'" & Request.Form("txtFName") & "'" & _ ",'" & Request.Form("txtLName") & "'" & _ ",'" & Request.Form("txtAddress") & "'" & _ ",'" & Request.Form("txtCity") & "'" & _ ",'" & Request.Form("txtST") & "'" & _ "," & Request.Form("txtZipcode") & ")" openCN cn.Execute(sql) closeCN %> Rilevamento degli Errori Ora, i dati vengono raccolti e aggiunti alla tabella Studenti. Vi è però un problema con questo script: non c'è un rilevamento degli errori. Cosa succede se proviamo ad immettere uno studente per due volte? Siccome ID Studente è il campo chiave per Studenti, ogni volta che viene immesso un nuovo studente con lo stesso ID Studente si verificherà un errore. Il nostro obiettivo è di rilevare i valori chiave duplicati prima di inserire il record. L'illustrazione 7.1 contiene il nuovo script che rileva gli ID Studente duplicati: <!--#include file="adovbs.inc"--> <!--#include file="subConn.inc"--> <% 'memorizza SID in una variabile in quanto esso verrà ' utilizzato più volte. sid = Request.Form("txtSID")
OpenCN
sql = "SELECT SID FROM Studenti " & _ "WHERE SID='" & sid & "'"
' conta il numero di record restituiti rs.Open sql, cn, adOpenKeyset, adLockReadOnly found=rs.RecordCount rs.Close
' determina il prossimo passaggio: ' se viene restituito 1 record allora ' reindirizza alla schermata di immissione dati ' Altrimenti inserisci il record. if found = 1 then session("msg")="Studente già esistente." nextpage= "frmStudent.asp" else ' Ora realizziamo la stringa SQL sql = "INSERT INTO Studenti (" & _ "SID" & _ ",NOME" & _ ",COGNOME" & _ ",INDIRIZZO" &_ ",CITTà" & _ ",STATO" & _ ",CAP" & _ ") " & _ "VALUES (" & _ "'" & sid & "'" & _ ",'" & Request.Form("txtFName") & "'" & _ ",'" & Request.Form("txtLName") & "'" & _ ",'" & Request.Form("txtAddress") & "'" & _ ",'" & Request.Form("txtCity") & "'" & _ ",'" & Request.Form("txtST") & "'" & _ "," & Request.Form("txtZipcode") & ")"
' Poi selezioniamo l'oggetto connection, ' eseguiamo la query e chiudiamo la connessione. cn.Execute(sql) closeCN session("msg")="Record Aggiunto." nextpage="frmStudent.asp" end if
' Quando lo script ha terminato il processamento, ' ritorna alla schermata di immissione dati. Response.Redirect nextpage %> Applicate ciò che avete appreso Usando la form e lo script che avete creato nella Lezione 6, modificate lo script in modo da poter inserire il record nel database. |