Webaperto
  Facili Lezioni Asp - Ottava Lezione     
 
Eventi
<
Luglio
>
L M M G V S D
-- -- -- 01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 --

Messaggi veloci
Messaggetti

Coleporter: Qui puoi inserire direttamente i tuoi messaggi
Coleporter: Ultimate le 8 facili lezioni Asp che trovate nel menu orizzontale.
Canasta: Vero che state per pubblicare dei progetti Asp?
Coleporter: Sì, prossimamente.
Coleporter: Inserita la Mappa del Sito in Menu
Coleporter: In downloads/asp la guida al VBScript
The-BiT: Un caro saluto a Coleporter, dopo mesi di mia assenza su internet
Coleporter: Ricambio sinceramente, Bit

Per imettere messaggi occorre essere registrati.

 
Facili Lezioni Asp - Ottava Lezione

         Ottava Lezione

Sommario:
- Estrarre dal database i dati che interessano
- Aggiungere dati
- Modificare dati
- Cancellare dati  

Estrarre dal database i dati che interessano

Il filtro dei risultati dei dati del database si effettua con l'istruzione SELECT che abbiamo già spiegato nella lezione 7. Facciamo solo qualche precisazione: se, ad esempio, volessimo estrarre solo i records in cui la città dell'utente è Roma, dovremmo scrivere:

<% SQL = Select * From utenti where citta = ' Roma ' %>

Se, invece, volessimo estrarre i records in cui la città dell'utente contiene il valore "ro", scriveremmo:

<% SQL = Select * From utenti where citta like ' % ro % ' %>

con il risultato di visualizzare i records dove la città, ad esempio, Verona o Rovigo o altre contenenti "ro". Su questo principio si basa il search (ricerca) che appare così di frequente nei siti.

Aggiungere dati

Ricordate i moduli trattati nella lezione 5? Bene: ora dobbiamo servircene.
Nella nostra tabella utenti del database dbUtenti.mdb vogliamo aggiungere un record. Vediamo come fare: creiamo il file aggRec.htm contenente il modulo:

<Html>
<body> <Form method="post" action="procAggRec.asp"
<p align="center"><b> Inserimento di Record </b></p>
<p align="left">
Username: <input type="text" name="username"><br>
Password: <input type="text" name="password"><br>
Città : <input type="text" name="citta"><br>
Email: <input type="text" name="email"><br> <input type="submit" value="Invia">
</form>
</body>
</Html>

Sin qui dovrebbe essere tutto chiaro. Passiamo alla pagina che processa il modulo e che chiameremo procAggRec.asp (avremmo potuto effettuare detto recupero nella stessa pagina del modulo ma preferiamo separarlo per maggiore chiarezza):

<!--#include file = "connessione.asp"-->
<%
SQL = "Select * From utenti"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open SQL, Conn, 1, 3

objRS.AddNew
objRS("username") = request.Form("username")
objRS("password") = request.Form("password")
objRS("citta") = request.Form("citta")
objRS("email") = request.Form("email")
objRS.Update

objRS.Close
set objRS = Nothing
conn.Close
set conn = Nothing

Response.write "<b>Hai aggiunto un record nel database</b>"
%>

Analisi:
Dopo aver effettuato la connessione con il file di inclusione, creiamo e apriamo l'oggetto recordset; i parametri 1 e 3 (dopo Conn della terza linea asp)indicano qualcosa di cui non abbiamo mai parlato: il primo parametro dopo la virgola si riferisce al Cursor Type (il par. 1 permette qualsiasi tipo di modifica del record ma non dà la possibilità di vedere le modifiche fatte da altri utenti); il secondo parametro si riferisce al Lock Type (tipo di bloccaggio). Per comprendere meglio, pensiamo che, mentre siamo connessi, altri utenti potrebbero tentare di accedere allo stesso nostro record il che potrebbe creare problemi. Fissando a 3 il parametro del bloccaggio il database blocca solo i records in modifica.
A questo punto vengono introdotti due metodi dell'oggetto recordset "AddNew" e "Update" che, ovviamente, significano "aggiungi un nuovo (record)" e "aggiorna"; tra l'uno e l'altro dei due comandi inseriamo gli oggetti recordset che ci interessano nei quali inseriamo i valori che abbiamo immesso con il modulo e che vengono richiamati dall'istruzione request.Form.
Infine liberiamo risorse chiudendo e annullando gli oggetti connessione e recordset.
Se, dopo aver eseguito l'applicazione, verifichiamo la tabella del database, troviamo il nuovo record che abbiamo aggiunto.

Ragazzi, vi state divertendo o lo trovate noioso? Se la risposta è la seconda (if response2 = True ), potrebbe darsi anche che non siate molto portati per la programmazione (o meglio: lo sviluppo), ma forse è più attendibile l'ipotesi che il docente lasci a desiderare.... Speriamo, invece che la risposta sia la prima !!!

Modificare dati

Qui c'è la necessità non solo di immettere nuovi dati ma di farlo sostituendoli ad altri già esistenti nel database. Faremo un esempio più complesso, ma completo e tale che contenga un buon numero di nozioni acquisite, ed anche nuove, in modo da effettuare più pratica possibile.
Creeremo prima un modulo (tipo login) dove inserire Username e Password, con valori già esistenti nella tabella utenti del nostro database dbUtenti.mdb (come, cioè, se ci fossimo già iscritti); poi un'altro file che controlli i dati inseriti nel precedente e restituisca o dei messaggi di errore, oppure trovi nel database i dati immessi e li visualizzi affinchè sia possibile modificarli o lasciarli inalterati; un terzo file servirà per immettere nel record giusto (quello, cioè, dove viene trovato l'username) i dati modificati.
Allora procediamo con il primo file che chiameremo login.htm:

<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="procLogin.asp">
Username: <INPUT TYPE=TEXT NAME="username">
<P>
Password: <INPUT TYPE=PASSWORD NAME="password">
<P>
<INPUT TYPE=RESET> <INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

Come vedete, si tratta solo del modulo con username e password, l'action rinvia alla pagina procLogin.asp che è la seguente. Il commento relativo lo faremo nel seno del listato indicando il contenuto delle righe che seguiranno il commento stesso:

<%@ Language=VBScript %>
<% Option Explicit %>

<HTML>
<BODY>

<!--#include file=""adovbs.inc"-->
<!--#include file="connessione.asp"-->

<%
Dim objRS, bolTrovato, strUsername 
strUsername = Request.Form("username")

'Controlla che sia stato inserito l'username
If strUsername = "" Then
Conn.Close
Set objRS = Nothing
Response.Write "<A HREF='login.html'>"
Response.Write "Devi inserire l'username"
Response.Write "</Algt;"
Response.End
End If

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "utenti", Conn, , , adCmdTable
bolTrovato = False

'ricerca l'username nella tabella
Do While Not (objRS.EOF OR bolTrovato)
If (StrComp(objRS("Username"), strUsername, vbTextCompare) = 0) Then
BolTrovato = True
Else
objRS.MoveNext
End If
Loop

'Se non si trova l'username nella tabella, visualizza un messaggio di errore
If Not bolTrovato Then
objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write "<A HREF='login.html'>"
Response.Write "Username non valido.<P>"
Response.Write "</A>"
Response.End
End If

'Se non si trova la password nella tabella, visualizza un messaggio di errore
If Not (StrComp(objRS("Password"), Request.Form("password"), _
vbTextCompare) = 0) Then
objRS.Close
Set objRS = Nothing
Conn.Close
Set objConn = Nothing
Response.Write "<A HREF='login.html'>" Response.Write "Password non valida.<P>" Response.Write "</A>" Response.End
End If
%>
<!-- crea un Form -->
<FORM METHOD=POST ACTION="modif.asp">
Password: <INPUT TYPE=TEXT NAME="password" VALUE="<%=objRS("password") %>">
<P>
Città: <INPUT TYPE=TEXT NAME="citta" VALUE="<%=objRS("citta")%>>">
%lt;P>
Email: <INPUT TYPE=TEXT NAME="email" VALUE="<%=objRS("email")%>">
<P>
Username: <%=objRS("Username") %>
<INPUT TYPE=HIDDEN NAME="username" VALUE="<%= objRS("Username")%>">
<P>

<INPUT TYPE=SUBMIT><INPUT TYPE=RESET>
</FORM>
</BODY>
</HTML>
<%
  objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
%>

Analisi:

In questo listato ci sono alcune istruzioni che vi risulteranno nuove. Iniziamo con il fileincluso adovbs.inc: è necessario richiamarlo perchè nel listato, invece dell'insieme di oggetti Ole-db che viene riconosciuto dal sistema per default, ci serviamo dell'altro sistema ADO per il quale è necessario richiamare la serie di oggetti contenuta, appunto, nel file adovbs.inc: copia dello stesso la troverete nel download dei files di questa lezione a fondo pagina; ovviamente il file in parola va caricato nella stessa directory del suddetto listato.(Potrete trovare "adovbs.inc" anche in c:/Programmi/File Comuni/System/ADO).
Troverete, poi, qualcosa di nuovo nella seconda linea relativa alla creazione dell'oggetto objRS: non ci addentriamo nella spiegazione della sintassi relativa dal momento che è piuttosto vasta (semmai lo faremo nel forum o in un approfondimento successivo): sappiate, comunque, che è quella che consente la lettura  ed il bloccaggio del cursor type (impedisce la contemporanea manipolazione del record da parte di più di un utente).
Abbiamo poi impostato a false una variabile (da noi chiamata bolTrovato) che diventerà true quando (e se) verrà trovato il recordset contenente lo stesso username inserito dall'utente in login.
C'è poi l'uso della variabile interna Vbasic denominata strComp (v.lezione 2) che, quando assume il valore di 0, significa che la stringa del request.form("username") corrisponde a quella di objRS("username").
Dopo il controllo sul ritrovamento, nei records della tabella, prima dell'username e poi della password [con eventuale uscita dal listato (response.end) nell'eventualità non venga reperito o l'uno o l'altra], si passa, nel caso di intercettamento di ambedue, alla creazione del form sul quale c'è da dire questo: nelle caselle di testo appariranno i valori che gàà erano inseriti nel record in modo che l'utente possa decidere se modificarli o lasciarli come sono. Per ottenere quseta visualizzazione, alla voce value dell'input è stato dato il contenuto dell'oggetto recordset (ad es.: <%=objRS("password")%>). L'unico contenuto che non può essere modificato è quello dell'username che noterete è stato passato con il valore che già ha nella tabella mediante una casella di testo nascosta (hidden): sarà infatti questo il valore che servirà come elemento di controllo nella pagina successiva modif.asp, quella che processerà i valori eventualmente modificati.
Questo il listato:

<%@ Language=VBScript %>
<% Option Explicit %>

<HTML>
<BODY>

<!--#include file="adovbs.inc"-->
<!--#include file="connessione.asp"-->

<% 
Dim objRS, bolTrovato, strUsername 
strUsername = Request.Form("username")

'Controlla che siano stati inseriti i dati
If ((Request.Form("username") = "") OR (Request.Form("password") = "") _
OR (Request.Form("email") = "") OR (Request.Form("citta") = "")) Then
Conn.Close
Set Conn = Nothing
%>

Devi inserire dei valori per tutti i campi. Rirpova cliccando sul tasto "Indietro" del browser oppure

<A HREF="login.html">
clicca qui</A> per tornare al login
<%
Else
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "utenti", Conn, , adLockOptimistic , adCmdTable
bolTrovato = False

'Controlla se l'username compare nella tabella
Do Until objRS.EOF OR bolTrovato
If (StrComp(objRS("Username"), strUsername, vbTextCompare) = 0) Then
BolTrovato = True
Else
objRS.MoveNext
End If
Loop

'Se non si trova l'Username, visualizza un messaggio
If Not bolTrovato Then
objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write "<A HREF='login.htm'>"
Response.Write "Username non valido.<P>"
Response.Write "</A>"
Response.End
End If

objRS("password") = Request.Form("password")
objRS("citta") = Request.Form("citta")
objRS("email") = Request.Form("email")
objRS.Update
objRS.Close
Set objRS = Nothing
End If
Conn.Close
Set Conn = Nothing
%>

Modifica dei dati effettuata.
</BODY>
</HTML>

Analisi:
Noterete che questa pagina non è molto dissimile dalla precedente: c'è prima il controllo sull'inserimento di tutti i dati, poi sulla corrispondenza dell'username inviato a quello risultante nella tabella ed, infine, l'aggiornamento con i nuovi dati. Il controllo dell'username potrebbe sembrare superfluo dal momento che dalla pagina precedente è passato il valore che già era nella tabella attraverso un input nascosto; la risposta sta nel fatto che non necessariamente tale campo della tabella doveva contenere qualche valore.
Una volta eseguita l'applicazione, controllate la tabella del database e vedrete che i dati sono stati modificati come da voi indicato.

Cancellare dati

Per cancellare dati in un database ci serviremo di un esempio con due files: il primo, cancel.htmè un modulo dove vanno inseriti username e password del record da cancellare; il secondo, procCancel.asp, provvede all'effettiva cancellazione dei dati (si pensi al caso in cui si intenda cancellare un utente dal database). Ecco i listati:

<HTML>
<BODY>
<FORM METHOD=POST ACTION="procCancel.asp">
Username: <INPUT TYPE=TEXT NAME="username">
<P>
Password: <INPUT TYPE=PASSWORD NAME="password">
<P>
<FONT COLOR=RED>Sei sicuro di voler procedere? Questa azione è irreversibile! </FONT>
<P>
<INPUT TYPE=SUBMIT VALUE="Cancella Utente"><INPUT TYPE=RESET>
</FORM>
</BODY>
</HTML>

Ormai siete sufficientemente preparati per comprendere il suddetto listato senza bisogno di spiegazioni.
Ecco il secondo listato:

<%@ Language=VBScript %>
<% Option Explicit %>

<HTML>
<BODY>

<!--#include file="adovbs.inc"-->
<!--#include file="connessione.asp"-->

<% 
Dim objRS, bolTrovato, strUsername 
strUsername = Request.Form("username")

'Controlla che l'Username sia stato inserito
If strUsername = "" Then
Conn.Close
Set Conn = Nothing
Response.Write "<A HREF='cancel.html'>"
Response.Write "Devi inserire l'Username"
Response.Write "</A>"
Response.End
End If

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "utenti", Conn, , adLockOptimistic, adCmdTable
bolTrovato = False

'Controlla che l'Username digitato sia nella tabella
Do While Not (objRS.EOF OR bolTrovato)
If (StrComp(objRS("Username"), strUsername, vbTextCompare) = 0) Then
BolTrovato = True
Else
objRS.MoveNext
End If
Loop

'Se non si trova l'Username nella tabella, visualizza un messaggio
If Not bolTrovato Then
objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write "<A HREF='cancel.html'>"
Response.Write "Username non valido.<P>"
Response.Write "</A>"
Response.End
End If

'Se non si trova la Password nella tabella, visualizza un messaggio
If Not (StrComp(objRS("Password"), Request.Form("password"), _
vbTextCompare) = 0) Then
objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write "<A HREF='cancel.html'>"
Response.Write "Password non valida.<P>"
Response.Write "</A>"
Response.End
End If

objRS.Delete

objRS.Close
Set objRS = Nothing
Conn.Close
Set Conn = Nothing
%>

L'Utente da te indicato è statocancellato dal database.
</BODY>
</HTML>

Non c'à molto da dire su questo file: è quasi ripetitivo dei precedenti  che provvedono all'aggiunta e alla modifica dei dati; unica differenza sta nel metodo delete dell'oggetto recordset.

_____________________________

A questo punto le vere e proprie lezioni potrebbero essere considerate concluse ma noi intendiamo continuare con approfondimenti su vari argomenti e, soprattutto, con l'analisi di applicazioni Asp (già pronte) e l'eventuale manipolazione delle stesse ( e questo sarà l'aspetto pratico che veramente vi farà ben metabolizzare la teoria svolta finora)...e, se possibile, con qualche progettino Asp.

Se vi sono problemi su questa o su successive lezioni, comunicatecelo nel forum  oppure scriveteci.

    Back
Stampa questa pagina

Continuate a leggere le Lezioni Asp. Vi gioverà e vi piacerà anche.
 
Visitatori
Visitatori Correnti : 1
Membri : 0

Per visualizzare la lista degli utenti collegati alla community, devi essere un utente registrato.
Iscriviti
Log in
Login
Password
Memorizza i tuoi dati:
Più recenti - Siti
NicolaPiscopoART (IT)
danzaclassica.net (IT)
Luisa Signorelli, danzatrice e coreografa (IT)
Webstyling.it (IT)
realizzazione biopiscine (IT)
piccolo principe counseling (IT)
I Misteri di Patricia Cornwell (IT)
coop soc l'arcoiris (IT)
vba di excel (IT)
Festival di Sanremo (IT)
umbria travel (IT)
Hotel Roma (IT)
Portale culturale e turistico sul Cilento e Paestu (IT)
annunci (IT)
Sito di A.P.T. (IT)
New Point City (IT)
DISKA's PHOTOS (IT)
Antichi sapori del Salento (IT)
PubbliCartoMania (IT)
Il mio Jazz (IT)
LuciaGardellin (IT)
Parabita Online (IT)
Arte Attacchi (IT)
La Bottega di Nina (IT)
Pittura e Poesia (IT)
Ricerca Creativa (IT)
Mondo Antico..... (IT)
Don Dialetto (IT)
Fianello Borgo (IT)
The-Bit (IT)
Maryart-Gallery (IT)
Jan Friend (IT)
Il Mondo di Krilù (IT)
Sitoaperto (IT)
I preferiti
Il Mondo di Krilù (897)
Jan Friend (738)
Sitoaperto (547)
Il mio Jazz (481)
Don Dialetto (345)
Maryart-gallery (325)
The-Bit (310)
Fianelloborgo (295)
Parabita Online (293)
PubbliCartoMania (283)
Labottegadinina (265)
DISKA's PHOTOS (249)
Cerca nel Sito


 
 © 02/2007 Webaperto  -   Contattami  -   Realizzato con © ASP-Nuke 2.0.7
Questa pagina è stata eseguita in 0,09375secondi.
Versione stampabile Versione stampabile