|

AGGIUNGERE O RIMUOVERE UN RECORD DA UN DATABASE
Abbiamo
finora visto come fare per visualizzare il contenuto
di un database.
A questo punto invece vediamo come aggiungere o rimuovere
un record allo stesso database (link.mdb).
Ci
serviremo di due file per l’aggiornamento (“aggiungi.htm”
e “aggiorna.asp”) e di due file per l’eliminazione (“rimuovi.asp”
ed “elimina.asp”), nonchè di un file (“ok.htm”) contenente
un testo di conferma per l’operazione che si è conclusa
con successo e di un file con un messaggio di errore
(“errore.htm”)
Cominciamo da questi ultimi.
OK.HTM
Si tratta di un semplice file html in cui scriveremo
qualcosa del tipo ‘Operazione eseguita con successo’.
Nient’altro.
ERRORE.HTM
E’ anch’esso un semplice file html che contiene
un messaggio errore, del tipo ‘Attenzione! Compilare
TUTTI i campi del modulo. Clicca qui per tornare indietro’,
con un link che faccia riferimento alla pagina ‘aggiungi.htm’.
Vediamo
invece la procedura per eliminare un record da un database.
Nelle pagine precedenti abbiamo visto come sia possibile
passare un valore ad una pagina mediante un link strutturato
in una determinata maniera (mi riferisco alle pagine
‘elenco.asp’ e ‘scheda.asp’).
Utilizzeremo lo stesso concetto anche in questo caso.
RIMUOVI.ASP
In questa prima pagina facciamo in modo di visualizzare
tutti i record contenuti nel database sotto forma di
link. Cliccando su uno di questi link, il record corrispondente
viene rimosso dal database.
Cominciamo
a creare la connessione al database nel solito modo
|
<%
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open
"driver={Microsoft Access Driver (*.mdb)};dbq="
& server.mappath("database/link.mdb")
Dim
rs
Set rs = Server.CreateObject("ADODB.Recordset")
|
Anche
in questo caso selezioniamo tutti i valori presenti
nel database e li ordiniamo in base all’ID decrescente
(se volessimo invece ordinarli inbase all’ID crescente
sarebbe sufficiente rimuovere la parola ‘DESC’)
|
rs.Open
"select * from link order by id DESC",
conn
|
e,
come sempre, chiedo che si vada avanti finchè
non giungiamo alla fine del file (EndOf File)
Ora
creiamo una variabile che chiamiamo ‘id1’ e vi assegniamo
come valore quello preso dal campo ‘id’ del database.
Cominciamo
a mostrare i risultati, i quali saranno linkati alla
pagina ‘elimina.asp’ e avranno, come parametro ‘id’,
valore del contatore di quel record stesso.
Così facendo siamo certi di non avere due link
con lo stesso valore per il parametro.
|
<a
href="elimina.asp?id=<% =id1 %>">
<%
Dim link
link=rs("link")
response.write(link)
%></a></p>
|
Fatto
questo mi sposto al record successivo e ripeto l’operazione
Quando
non ci sono più record e sono giunto pertanto alla fine
del file, chiudo la connessione.
|
RS.Close
Set RS =
Nothing
conn.Close
Set conn=Nothing
%>
|
Vediamo
ora il secondo file
ELIMINA.ASP
Come prima cosa dobbiamo ricavare il valore del
parametro ‘id’ presente nel collegamento su cui abbiamo
cliccato.
Come già abbiamo visto per ottenere il valore di tale
parametro usiamo la stringa 'request.querystring("parametro")'
Quindi avremo
|
<%
Dim id1
id1=request.querystring("id")
|
In
questo modo nella variabile ‘id1’ è memorizzato il valore
del campo ‘id’ del database che, inutile ricordarlo,
è un campo contatore, quindi diverso per ogni record.
Creiamo dunque la solita connessione al database ‘link.mdb’
memorizzato nella cartella ‘database’
|
Dim
Conn
Set Conn
= Server.CreateObject("ADODB.Connection")
conn.Open
"driver={Microsoft Access Driver (*.mdb)};dbq="
& server.mappath("database/link.mdb")
Dim rs
Set rs =
Server.CreateObject("ADODB.Recordset")
|
Fatto
questo scegliamo di eliminare il record a cui corrisponde
tale valore ‘id1’.
|
rs.Open
"delete * from link where id ="&id1,
conn
|
Negli
esempi precedenti avevamo usato ‘select’, in modo da
‘caricare’ i dati che corrispondono al criterio assegnato.
Dato però che ora dobbiamo eliminare tali dati, usiamo
‘delete’.
La stringa così scritta significa: elimina tutti
i dati (delete *) dalla tabella ‘link’ (from
link) dove il campo ‘id’ (where id) è uguale
alla variabile ‘id1’ (=“&id1), ovvero uguale
al valore ‘id’ preso dal collegamento su cui abbiamo
cliccato nel file precedente.
Fatto questo possiamo chiudere il la connessione
|
conn.Close
Set conn=Nothing
|
A
questo punto non ci rimane che caricare la pagina di
conferma ‘ok.htm’ e l’eliminazione di un record dal
database è completa
|
response.redirect("ok.htm")
%>
|
Vediamo
invece come fare per aggiungere dati ad un database.
Continuiamo, per comodità, a far riferimento al database
‘link.mdb’. In
questo caso abbiamo due campi: il campo ‘link’ e il
campo ‘descrizione’.
La prima cosa da fare quindi, è creare una pagina html
con un form avente, per l’appunto due campi di testo:
un campo a riga singola (che chiameremo ‘form_link’)
e un campo di testo a scorrimento (che chiameremo ‘form
_descrizione’).
Infatti nel nostro database abbiamo impostato il campo
‘link’ come semplice testo (quindi una sola riga con
al massimo 255 caratteri), mentre il campo ‘descrizione’
è un campo ‘memo’ che può contenere infiniti caratteri
(quindi necessita di un campo di testo a scorrimento)
AGGIUNGI.HTM
Questa pagina può essere agevolmente creata con
uno qualsiasi dei programmi utilizzati normalmente per
realizzare le pagine html.
Nel caso in cui utilizziate Front Page, è sufficiente
creare un nuovo file e scegliere il comando ‘Inserisci
-> Modulo -> Modulo’. In automatico verranno visualizzati
i due pulsanti ‘Invia’ e ‘Ripristina’.
A questo punto posizionarsi all’interno dell’area tratteggiata
e scegliere ‘Inserisci -> Modulo -> Casella
di testo riga singola’.
A questo punto cliccarvi sopra due volte e scegliere
come nome ‘form_link’ e confermare.
Di nuovo scegliere ‘Inserisci -> Modulo -> Casella
di testo a scorrimento’.
Anche in questo caso cliccarvi sopra due volte e inserire,
come nome, ‘form_descrizione’ (naturalmente senza virgolette).
Infine cliccare col tasto destro in un punto vuoto dell’area
tratteggiata e scegliere ‘Proprietà modulo’.
Nella finestra che appare scegliere ‘Altre destinazioni’
e scrivere, nel primo campo, ‘aggiorna.asp’, mentre
nel secondo campo si dovrà selezionare la voce ‘post’.
A
questo punto salvare il file con il nome ‘aggiungi.htm’
Per
comodità riporto qui sotto il codice html della pagina
così creata
|
<html>
<body>
<form method="POST" action="aggiorna.asp">
<p>Link<br>
<input type="text" name="form_link"
size="20"></p>
<p>Descrizione<br>
<textarea rows="2" name="form_descrizione"
cols="20"></textarea></p>
<p><input type="submit" value="Invia"
name="B1"><input type="reset"
value="Reimposta" name="B2"></p>
</form>
</body>
</html>
|
Nella
pagine precedenti abbiamo detto che uno dei modi per
passare informazioni da una pagina all’altra, è appunto
quello di utilizzare un ‘form’ (o ‘modulo’ per chi parla
italiano). A dir la verità finora abbiamo utilizzato
i link, i quali, strutturati nel modo in cui abbiamo
visto (link.asp?parametro=valore) consentono di passare
uno o più valori alla pagina richiamata. Questo va bene
se si tratta di poche informazioni, per lo più qualche
variabile generata dalla stessa pagina asp (il famoso
valore ‘id’).
In
questo caso però i dati da passare alla seconda pagina
vengono immessi dall’utente nel momento in cui la pagina
stessa è già stata caricata. Quindi non è possibile
utilizzare i collegamenti ipertestuali nel modo in cui
abbiamo precedentemente visto.
Occorre
utilizzare un altro metodo: il modulo, appunto che,
come si vede dal codice, richiama, col metodo ‘post’,
il file ‘aggiorna.asp’.
AGGIORNA.ASP
Qusto file ha il compito di prelevare tali informazioni
dal modulo e di inserirle nel database.
Pertanto
avremo
|
<%
Dim link1
link1=request.form("form_link")
Dim descrizione1
descrizione1=request.form("form_descrizione")
|
Fino
ad ora avevamo utilizzato la funzione ‘request’ nella
modalità ‘request.queystring(“YYY”)’ (dove
YYY corrisponde al nome del parametro di cui ci interessa
avere il valore); dato però che non si tratta di ricavare
informazioni da una ‘stringa’ ma da un modulo, ecco
che la utilizzeremo nel formato ‘request.form(“XXX”)'
(dove XXX rappresenta il nome del campo del form di
cui ci interessa avere il valore).
A
questo punto controlliamo che i due campi non siano
vuoti. In tale caso faremo in modo di visualizzare una
pagina di errore (più avanti vedremo come rendere
obbligatoria la compilazione di tali campi grazie all'utilizzo
di un javascript)
Per
controllare appunto la compilazione di tali campi usiamo
‘if... then... end if...’, funzione che abbiamo già
avuto modo di incontrare.
|
if
link1 = "" then
response.redirect("errore.htm")
end if
if descrizione1
= "" then
response.redirect("errore.htm")
end if
|
Come
si può vedere la struttura di tale verifica è abbastanza
semplice e tradotta in italiano significa: ‘se la
variabile link1 (if link1) è vuota (= “”)
allora (then) caricami la pagina errore.htm
(response.redirect(“errore.htm”))’.
Vale solo la pena ricordare che ‘if... then...’ devono
necessariamente chiudersi con ‘end if’!
Allo stesso modo per la variabile ‘descrizione1’.
Se
le variabili non sono vuote (quindi con valore diverso
da “”) possiamo aggiungere un record al database e in
tale record memorizzare i dati prelevati dal modulo
‘aggiungi.htm’.
Occorre innanzitutto creare la connessione al database
|
Dim
conn
Set conn
= Server.CreateObject("ADODB.Connection")
conn.Open
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
& server.MapPath("database/link.mdb")
|
A
questo punto selezioniamo tutti i valori presenti nella
tabella
|
sql
= "SELECT * FROM link"
Set rs =
Server.CreateObject("ADODB.Recordset")
rs.Open sql,
conn, 3, 3
|
e
vi aggiungiamo un nuovo record
A
questo punto il campo ‘link’ di tale record sarà riempito
con il valore prelevato dal campo ‘form_link’ del nostro
modulo; valore che è memorizzato nella variabile ‘link1’.
Peranto
avremo
e
allo stesso modo per il campo ‘descrizione’
|
rs.Fields("descrizione")=descrizione1
|
Fatto
questo aggiorniamo il database
e
chiudiamo la connessione e il recordset
|
RS.Close
Set RS=Nothing
conn.Close
Set conn=Nothing
|
Come
per il file ‘elimina.asp’ anche in questo caso carichiamo
una pagina di conferma (per risparmiare byte riutilizziamo
la pagina ‘ok.htm’ che abbiamo creato prima)
|
response.redirect("ok.htm")
%>
|
|