Scrittura dei dati in un database
Vediamo adesso come inserire, attraverso un form HTML, i dati all'interno della tabella "autori" e della tabella "libri" con due esempi di differente difficoltà.
Una premessa fondamentale è quella che è necessario assegnare le autorizzazioni in lettura e scrittura al database ed all'intera cartella "test_db" che stiamo utilizzando, operazione che potrebbe essere indispensabile, su alcuni sistemi, anche per la sola lettura dei dati, come visto nel capitolo precedente.
Cliccate col tasto destro del mouse sulla cartella "test_db" e selezionate le proprietà. Scegliete la scheda "Condivisione Web" e spuntate la voce "Condividi la cartella". Nel riquadro "Alias" comparirà il nome della cartella: cliccateci due volte e si aprirà una finestra in cui dovrete selezionare "Lettura" e "Scrittura" e confermare la scelta.
Iniziamo col file "aggiungi_autore.asp":
<%@LANGUAGE = VBScript%>
<%
Dim sc, cn, rs
sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sc & Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
%>
<html>
<head>
<title>Aggiungi un autore</title>
</head>
<body>
<h1>Aggiungi un autore</h1>
<form method="post" action="aggiungi_autore.asp">
Inserisci il nome dell'autore<br><br>
<input type="text" name="nome" maxlength="50"><br><br>
<input type="submit" name="aggiungi" value="Aggiungi un autore">
</form>
<%
If Request.Form("aggiungi") <> "" Then
Dim nome
nome = Request.Form("nome")
If nome = "" Then
%>
<p>Inserisci il nome dell'autore</p>
<%
Else
rs.Open "autori", cn, 3, 3
rs.AddNew
rs("aut_nome") = nome
rs.Update
rs.Close
%>
<p>Inserimento effettuato con successo!</p>
<%
End If
End If
%>
</body>
</html>
<%
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Io ho aggiunto "C. Dickens".
Lanciate il file all'indirizzo
http://localhost/test_db/aggiungi_autore.aspper testare il risultato.
Apriamo la Connection ed il Recordset, facendo riferimento al database MS Access creato in precedenza.
Nel corpo della pagina creiamo il modulo di inserimento che necessita del solo campo "nome" ed assegnamo un nome anche al bottone di invio, in modo da eseguire lo script di controllo ed eventuale inserimento solo se il modulo risulta inviato.
Per maggiori informazioni sul metodo di invio e recupero delle informazioni da un modulo HTML con ASP e col metodo post consiglio vivamente la lettura dell'articolo Trucchi per l'utilizzo del metodo POST.
Una volta inviate le informazioni per prima cosa recupero il campo di testo, verifico che sia stato compilato correttamente e, in caso positivo, effettuo l'inserimento del dato utilizzando il metodo "AddNew" per indicare al Recordset che si tratta di un inserimento, ed il metodo "Update" per aggiornare la tabella.
Passiamo adesso all'inserimento di un nuovo libro, a cui va associato l'autore, ragion per cui la filosofia non cambia ma si amplia.
Vediamo dunque il codice del file "aggiungi_libro.asp":
<%@LANGUAGE = VBScript%>
<%
Dim sc, cn, rs
sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sc & Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
%>
<html>
<head>
<title>Aggiungi un libro</title>
</head>
<body>
<h1>Aggiungi un libro</h1>
<form method="post" action="aggiungi_libro.asp">
Seleziona l'autore del libro da inserire:<br><br>
<select name="autore">
<option value=""></option>
<%
rs.Open "SELECT * FROM autori ORDER BY aut_id ASC", cn, 1
While rs.EOF = False
%>
<option value="<%=rs("aut_id")%>"><%=rs("aut_nome")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select><br><br>
Inserisci il titolo del libro<br><br>
<input type="text" name="titolo" maxlength="50"><br><br>
<input type="submit" name="aggiungi" value="Aggiungi un libro">
</form>
<%
If Request.Form("aggiungi") <> "" Then
Dim autore, titolo
autore = Request.Form("autore")
titolo = Request.Form("titolo")
If autore = "" Or titolo = "" Then
%>
<p>Tutti i campi sono obbligatori</p>
<%
Else
rs.Open "libri", cn, 3, 3
rs.AddNew
rs("lib_autore") = autore
rs("lib_titolo") = titolo
rs.Update
rs.Close
%>
<p>Inserimento effettuato con successo!</p>
<%
End If
End If
%>
</body>
</html>
<%
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Io ho aggiunto "Oliver Twist" di Dickens.
Lanciate il file all'indirizzo
http://localhost/test_db/aggiungi_libro.aspper testare il risultato.
Apriamo la Connection ed il Recordset, facendo riferimento al database MS Access creato in precedenza.
L'unica cosa che cambia rispetto al codice del primo file di inserimento esaminato in questa lezione è che costruiamo dinamicamente una selectbox, popolandola con i nomi dell'autore e con l'ID di appartenenza.
Per il resto ci siamo limitati ad agire in scrittura sulla tabella "libri" piuttosto che sulla tabella "autori".







