|
Dopo
avere imparato a creare le pagine html contenenti
i nostri prodotti è arrivato il momento di mettere
mano alla parte "amministrativa" del nostro
catalogo in linea. Prima di addentrarci in nuovi argomenti,
vediamo di ricapitolare i passi compiuti finora:
Abbiamo creato un form di ricerca contenente i campi
Titolo, Autore, Casa editrice, Categoria.
Il tasto "cerca" presente nella form è stato
predisposto per inviare i dati inseriti dall’utente
ad un file asp (motor.asp), il quale effettua una
ricerca all’interno di un database Access (libri.mdb)
e visualizza i risultati in una pagina html composta
da una tabella con tutti i libri che rispondono ai
criteri di ricerca.
Ogni titolo visualizzato nella tabella è stato reso
un link ad una pagina asp (libro.asp), che contiene
le informazioni relative al libro selezionato, estratte
dai campi del record associato al libro stesso.
A questo punto l’interfaccia utente del sito è finita;
chiunque può accedere alle nostre pagine e ricercare
un libro, estraendo dal database tutte le informazioni
necessarie ad identificare l’oggetto ricercato. Ora
si tratta di creare, però, gli strumenti per gestire
la base dei dati, ovvero inserire, cancellare un libro,
oppure modificare una o più informazioni ad esso associate.
Come possiamo fare? In effetti abbiamo a disposizione
due possibilità
Modificare in locale il file contenente i dati e poi
caricarlo sulla macchina che gestisce le pagine web.
Agire sulla base di
dati in remoto, utilizzando il navigatore.
La prima soluzione è improponibile dato che rende
estremamente laborioso il lavoro di gruppo su uno
stesso database e implica notevoli trasferimenti da
e verso il server, a meno che questo non sia direttamente
raggiungibile in locale.
La seconda soluzione, invece, permette a più operatori,
anche distanti migliaia di chilometri tra loro, di
lavorare sul database e inoltre non obbliga a scaricare
tutto il file di database anche quando si è modificato
un solo record. Prenderemo quindi in esame la seconda
soluzione, creando gli strumenti appropriati per gestire
in remoto il database del sito che abbiamo appena
creato.
La prima cosa da fare è creare un form html che ci
consenta di proteggere da sguardi indiscreti la parte
del sito dedicata alla gestione; è ovvio che non sarebbe
una soluzione ideale lasciare libero accesso alla
modifica dei dati. In pratica, il form preleva la
password dell’utente e la invia ad un file asp (pass.asp),
che la confronta con quella contenuta in un database
di codici. In caso di responso positivo, il navigatore
potrà accedere alle pagine html più riservate, altrimenti
viene rediretto ad una pagina di default..
Vediamo il codice del file pass.asp :
PASS.ASP :
<%
rem Definisco una variabile pass
dim pass
rem Inserisco nella variabile passw la password scritta
nel form html
pw=request.form("passw")
rem leggo tutti i record della tabella pass del database
pass.mdb
sql="select * from pass"
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "driver={Microsoft Access
Driver (*.mdb)};dbq=c:\inetpub\wwwroot\domini\italystore\annunci\pass.mdb"
Set RS=OBJdbConnection.Execute(sql)
rem Carico nella variabile pw2 il valore del campo
pw del record del datatbase pass.mdb
pw2=rs("pw")
rem Effettuo il confronto tra la password presente
nel db e la password inserita nel form
if pw<>pw2 then
rem Se le due password sono diverse allora ritorno
alla home page
response.redirect "default.asp"
rem Altrimenti inserisco nella variabile pass la stringa
"ok"
else
pass="ok"
%>
rem A questo punto inserisco il file modifica.asp
<!-- #include file="modifiche.asp"
-->
<%end if%>
Se le password sono uguali, l’utente può accedere
al file modifica.asp che permette di scegliere se
aggiungere o cancellare un record del database.
MODIFICHE.ASP :
<%
passb=request.form("pass")
rem Controllo se la variabile pass ha il valore "ok".
La variabile pass viene direttamente dal
rem file pass.asp.
if (pass="ok") then %>
<html>
<HEAD>
<TITLE>Il Database</TITLE>
</HEAD>
<BODY background="sfondo.gif"
BGCOLOR="#C0C0C0" TEXT="#0F0000"
LINK="#0000FF" ALINK="#0000CC"
VLINK="#0000FF"><p>
rem Da qui posso scegliere se aggiungere o cancellare
o aggiornare un record, la mia scelta rem verrà trasmessa
al file
rem scelta.asp
<form method=post action="scelta.asp">
<center>
<input type=submit name="aggiungi"value="Aggiungi">
<input type=submit name="cancella"
value="Cancella">
<input type=submit name="cambia"
value="Cambia Password">
<input type=hidden name="pass"
value="ok">
</center>
</form>
</BODY>
</HTML>
<%
rem Se pass è diverso da "ok" allora torno
alla home page default.asp
else
response.redirect "index.htm"
end if%>
Fin qui nessun problema: tutto concerne la
verifica della password,ma una volta passata questa
fase possiamo concentrarci sul codice che si occupa
delle varie operazioni sul database.
SCELTA.ASP :
<%
pass=request.form("pass")
s=request.form
rem Se si sceglie di aggiungere un record allora entra
in azione questa sezione del programma, che approfondiremo
nelle prossime lezioni
if s="aggiungi=Aggiungi&pass=ok" then%>
<html>
<HEAD>
<TITLE>Il Database</TITLE>
</HEAD>
<BODY background="sfondo.gif"
BGCOLOR="#C0C0C0" TEXT="#0F0000"
LINK="#0000FF" ALINK="#0000CC"
VLINK="#0000FF">
<form method=post action="add.asp">
<center><h2>Aggiungi Libro</h2><br>
<table border=1>
<tr><td align=center>Titolo</td><td
align=center>Autore</td><td
align=center>Anno</td></tr>
<tr>
<TD><input type=text name="titolo"></TD>
<td><input type=text name="autore"></td>
<td><input type=text name="anno"></td>
</tr>
<tr>
<td align=center>Categoria</td><td
align=center>Casa Editrice</td><td
align=center>Prezzo</td>
<tr>
<td><input type=text name="cat"></td>
<td><input type=text name="ed"></td>
<td><input type=text name="prezzo"></td>
</tr>
<tr>
<td align=center>Collana</td><td
align=center>Testo</td><td
align=center>Foto</td>
</tr>
<tr>
<td><input type=text name="collana"></td>
<td><input type=text name="testo"></td>
<td><input type=text name="imm"></td>
</tr>
<tr><td align=center>Pagine</td></tr>
<tr>
<td><input type=text name="pagine"></td>
</TR>
</table> <br>
<input type=hidden name="pass"
value="ok">
<input type=submit name="ok" value="Aggiungi">
</form>
</BODY>
</HTML>
<%end if
rem Se s="cancella=Cancella&pass=ok"
significa che abbiamo scelto l’opzione CANCELLA e
rem che siamo autorizzati ad
rem usarla
if s="cancella=Cancella&pass=ok" then
rem A questo punto creiamo un motore di ricerca che
trovi solo il record che ci interessa
rem cancellare, altrimenti dovremmo visualizzare tutta
la base di dati…
%>
<html>
<head>
<title>Modifica- by Italystore.com</title>
</head>
<body bgcolor="#FfFfff">
<center>
<!—Qui vediamo apparire una casella di testo
da riempire col titolo del libro che ci interessa
cancellare; ovviamente, se non ricordiamo tutto il
titolo possiamo inserire anche solo alcune parole
contenute in esso. Dopo la pressione del tasto CERCA
viene eseguito il file cancscel.asp che effettua una
ricerca per titolo nel database e visualizza i risultati
a video. Chiaramente la ricerca può essere effettuata
su più campi ma, per semplificare, ora utilizziamo
solo il campo titolo-->
<form method="post" action="cancscel.asp">
<p><br>
<b>Cerca il titolo del libro da cancellare:</b>
<input type="text" name="tit"><br>
<!— Con nput type=hidden inviamo il valore
della variabile pass alla pagina chiamata dal form,
ovvero cancscel.asp -->
<input type=hidden name="pass"
value=<%=pass%>>
<input type="submit" name="vai"
value="Cerca">
</form>
</center>
</body>
</html>
<%end if
rem Diamo ora la possibilità di cambiare la password
da web.
if s="cambia=Cambia+Password&pass=ok"
then
sql="select * from tablibri"
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "driver={Microsoft Access
Driver (*.mdb)};dbq=c:\inetpub\wwwroot\domini\italystore\libri\libri.mdb"
Set RS=OBJdbConnection.Execute(sql)%>
<html>
<head>
<title>Modifica- by Italystore.com</title>
</head>
<body bgcolor="#FfFfff">
<br>
<!-- Come al solito c’è un piccolo form
che manda la nuova password al file update.asp, insieme
alla variabile pass che contiene il valore "ok".
In questo modo si evita che qualcuno si colleghi direttamente
alla pagina update.asp senza autorizzazione.-->
<form method="post" action="update.asp?id=<%=rs("id")%>">
Password:
<input type=text name="upw"><br>
<input type=hidden name="pass"
value="ok">
<input type=submit value="Aggiorna">
</form>
</body>
</html>
<%end if%>
Ciò che abbiamo fatto finora non è molto difficile;
anzi si poteva evitare chiedendo all’amministratore
di sistema di proteggere le pagine tramite una password
da server. La soluzione scelta, però, ha il vantaggio
di rendere indipendente il sito dall’amministratore
e di rimettere nelle vostre mani la decisione su chi
debba accedere alle pagine rilevanti, consentendovi
inoltre di modificare i parametri in tempo reale.
Ora passiamo a dare un’occhiata da vicino al file
canc.asp che si occupa di cancellare i record dal
database; nelle prossime lezioni approfondiremo le
altre operazioni rese possibili da questo file.
Prima, però, diamo uno sguardo al cancscel.asp:
CANCSCEL.ASP:
<html>
<head>
<title>Modifica- by Italystore.com</title>
</head>
<body bgcolor="#FfFfff">
<%
rem Solita richiesta della variabile pass per verificare
che siamo autorizzati ad eseguire
rem questo script
pass=request.form("pass")
if pass="ok" then
rem Viene passato anche il valore di tit e inserito
in una variabile chiamata tit
tit=request.form("tit")
rem Si analizza il contenuto di tit: se essa è vuota
allora assumerà il valore "%", che significa
rem "tutti" e consente di visualizzare il
contenuto di tutta la base dati.
if tit="" then tit="%"
sql="select * from tablibri where titolo like
'%"&tit&"%'"
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "driver={Microsoft Access
Driver (*.mdb)};dbq=c:\inetpub\wwwroot\domini\italystore\libri\libri.mdb"
Set RS=OBJdbConnection.Execute(sql)%>
<%
response.write ("<center><h2>Articoli
Presenti</h2><br><br><table
border=1><tr><td>Art.
da Cancellare</td><td>Autore</td><td
align=center>Titolo</td><td>Editrice</td><td>Prezzo</td><td>Cat.</td><td
align=center>Anno</td></tr>")
%>
<%Do while NOT RS.EOF%>
<TR>
<td>
<!—Nella prima cella della tabella inseriamo
un piccolo form che chiama il file canc.asp passandogli
il valore, inserito nella variabile c, del campo ID
del record. Insomma, indichiamo quale dei record deve
essere cancellato. Nella prima cella apparirà un tasto
con etichetta "Cancella" il quale, se premuto,
effettuerà la cancellazione del record. -->
<form method=post action="canc.asp?c=<%=RS("ID")%>">
<input type="hidden" name="pass"
value="<%=pass%>">
<input type="hidden" name="tit"
value="<%=tit%>">
<input type="submit" name="Cancella"
value="Cancella">
</form>
</td>
<TD><%=RS("autore")%></TD>
<td><%=RS("titolo")%></td>
<td><%=RS("editrice")%></td>
<td>
<%=RS("prezzo")%>
</td>
<td><%=RS("cat")%></td>
<td><%=RS("anno")%></td>
</TR>
<%RS.MoveNext
Loop
RS.Close
OBJdbConnection.Close
%>
</table><br>
<form method=post action="modifiche.asp">
<input type=hidden name="pass"
value="ok">
<input type=submit name="back"
value="Torna al menu di gestione">
</form>
<br>
</center>
</body>
</html>
<%else
rem Nel caso in cui il valore di pass sia diverso
da "ok", significa che stiamo tentando di
usare rem il file cancscel.asp senza essere passati
attraverso la richiesta di password iniziale.
response.write "<h1>Accesso Negato
!</h1>"
end if
%>
Adesso abbiamo a video una tabella di uno o
più libri, contenete nella prima colonna un tasto
con etichetta "CANCELLA"; se premiamo il
pulsante eseguiremo il file canc.asp, che eliminerà
il record corrispondente al libro.
CANC.ASP :
<%
rem Come sempre prendiamo i valori di tit e di pass
dal file precedente cancscel.asp
tit=request.form("tit")
pass=request.form("pass")
rem Solita verifica di autorizzazione
if pass="ok" then
rem La variabile canc prende il suo valore dalla variabile
c sulla stringa di comando.
rem C contiene il valore del campo contatore ID che
identifica univocamente il record nel
rem database
canc=request.querystring("c")
%>
<html>
<head>
<title>Cancella - by Italystore.com</title>
<body bgcolor="#FfFfff">
<%
rem Cancella i record selezionati
Set OBJdbConnection2 = Server.CreateObject("ADODB.Connection")
OBJdbConnection2.Open "driver={Microsoft Access
Driver (*.mdb)};dbq=c:\inetpub\wwwroot\domini\italystore\libri\libri.mdb"
rem L’unica rispetto al motore di ricerca è nella
stringa di comandi sql. Infatti, al posto
rem di "Select" abbiamo "Delete",
che significa "cancella". L’espressione
sql tradotta
rem in italiano significa quindi: "Cancella tutti
i campi della tabella tablibri in cui il campo
rem contatore ID è uguale al valore contenuto nella
variabile canc"
sql="Delete * from tablibri where ID="&canc
Set RS2=OBJdbConnection2.Execute(sql)
OBJdbConnection2.close
rem Dopo l’operazione di cancellazione viene visualizzato
un messaggio esplicativo e viene
rem data la possibilità di tornare indietro alla pagina
cancsel.asp tramite un form.
rem Abbiamo scelto di usare un form e non un link
perché in questo modo possiamo passare i rem valori
di pass e tit al file cancscel.asp.
%>
<H2>CANCELLAZIONE EFFETTUATA!</H2>
<br>
<form method=post action="cancscel.asp">
<input type="hidden" name="tit"
value="<%=tit%>">
<input type="hidden" name="pass"
value="ok">
<input type="submit" name="goon"
value="Continua a cancellare">
</form>
</body>
</html>
<% else
rem Se pass è diverso da "ok"
response.write "<h1>Non sei autorizzato
a cancellare !</h1>"
end if %>
Siamo arrivati alla fine. Vi sembra tutto un
po’ lungo e complicato? A dire il vero, l’unica parte
davvero ostica è rappresentata dalle pagine di raccordo
tra le scelte da effettuare (password,cancella, aggiorna,
ecc.) e l’esecuzione dei file asp Il resto è tutto
sommato semplice: il vero strumento per cancellare
i record è costituito dai due file canscel.asp e canc.asp;
inoltre quest’ultimo file è una versione modificata
del motori di ricerca, già visto nelle precedenti
lezioni. Ora è tempo di concludere questa puntata
e lasciarvi sperimentare il nuovo codice che abbiamo
appena esaminato. Nel prossimo numero vedremo come
inserire nuovi record nel database e impareremo qualche
altro comando asp. Alla prossima allora!
|