Modifica dei dati di un database
La modifica di un dato di un database attraverso un modulo HTML è paradossalmente un'operazione filosoficamente più complicata del semplice inserimento, dato che è necessario prima selezionare il record da modificare e poi effettivamente modificarlo.
Segue il codice del file "modifica_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")
Dim id
id = Request.QueryString("id")
%>
<html>
<head>
<title>Modifica un autore</title>
</head>
<body>
<h1>Modifica un autore</h1>
<form method="post" action="modifica_autore.asp?id=<%=id%>">
Seleziona l'autore da modificare:<br><br>
<select name="autore"
onchange="location.href='modifica_autore.asp?id='+this.value">
<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>
<%
If id <> "" Then
rs.Open "SELECT * FROM autori WHERE aut_id = " & id, cn, 1
%>
Nome dell'autore da modificare<br><br>
<input type="text" name="nome" maxlength="50"
value="<%=rs("aut_nome")%>">
<br><br>
<input type="submit" name="modifica" value="Modifica un autore">
</form>
<%
rs.Close
End If
If Request.Form("modifica") <> "" Then
Dim nome
nome = Request.Form("nome")
If nome = "" Then
%>
<p>Specifica il nome dell'autore</p>
<%
Else
Dim SQL
SQL = "SELECT * FROM autori WHERE aut_id = " & id
rs.Open SQL, cn, 3, 3
rs("aut_nome") = nome
rs.Update
rs.Close
%>
<p>Modifica effettuata con successo!</p>
<%
End If
End If
%>
</body>
</html>
<%
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Ecco cos'abbiamo fatto: abbiamo popolato una selectbox con i record presenti nella tabella su cui agire, in modo da scegliere il record che ci interessa; una volta selezionato il record ricarichiamo la pagina passando nella querystring l'ID del record che ci interessa e lo usiamo come filtro su di una query che popola il modulo HTML col record da modificare.
A questo punto scriviamo quello che ci interessa nel campo di testo ed inviamo i nuovi dati; usiamo il Recordset per leggere il record che ci interessa, agiamo sul campo desiderato e lo aggiorniamo. Il codice somiglia molto a quello dell'inserimento dei dati, con la differenza che non usiamo, ovviamente, il metodo "AddNew".
Volendo possiamo anche non usare il Recordset ma semplicemente il metodo "Execute" dell'oggetto Connection come segue:
Dim SQL SQL = "" SQL = SQL & "UPDATE autori SET aut_nome = '" & nome & "' " SQL = SQL & "WHERE aut_id = " & id cn.Execute(SQL)al posto di:
Dim SQL
SQL = "SELECT * FROM autori WHERE aut_id = " & id
rs.Open SQL, cn, 3, 3
rs("aut_nome") = nome
rs.Update
rs.Close
Lanciate il file all'indirizzo
http://localhost/test_db/modifica_autore.aspper testare il risultato.
Lascio al lettore il compito di implementare la pagina per la modifica di un libro.







