Alberto Giuliani
a- a+

Eliminare dei records contemporaneamente

Salve, oggì cercherò di spiegare come eliminare più records da un database contemporaneamente!
Avete presente quando si visiona una webmail? Vediamo un elenco con una casella di scelta quadrata per ogni riga, e abbiamo la possibilità di selezionare le righe che vogliamo ed eliminarle contemporaneamente, solo quelle che vogliamo! Come fare? Cerherò di spiegarvelo nel modo più corretto possibile.

Direi che possiamo iniziare, ambientandoci in una situazione reale, giusto per capire meglio.
Supponiamo di essere nel pannello di amministrazione del nostro guestbook, e abbiamo l’elenco delle firme lasciate, sarebbe bello se potessimo selezionare solo alcune di queste firme e cancellarle, invece di cancellarle una ad una.

Questo è possibile mettendo l’elenco dei records dentro un FORM, dare stesso nome alle caselle di scelta e dare come valore alle caselle l’ID della riga visualizzata. Avendo le caselle stesso nome, quando vengono passati per esempio con GET, otterremo

“pagina.asp?nomecasella=1&nomecasella=3&nomecasella=9”

e richiedendo la varibile “nomecasella” otterremo una stringa così

“1, 3, 9”

Bene, inizieremo adesso a scrivere il codice di una pagina, che simula un elenco di firme e che ci permetterà appunto di eliminarle.

Il codice nella pagina deve avere un certo ordine, percui sarete costretti a capire tutto solo alla fine, come il film Matrix.

Intanto controlliamo se abbiamo l’elenco dei records da eliminare, passato tramite GET, onde evitare errori dello script

<% if request.QueryString("record") <> "" then 


Inizializziamo le variabili che ci serviranno e cominciamo ad entrare ne cuore dello script

i=0
k=1
cont=0


Misuriamo la lunghezza della stringa ottenuta, creiamo un ciclo che dura per tutta la lunghezza della stringa e contiamo quante virgole ci sono nella stringa! Contate le virgole, sappiamo con certezza che ci saranno sempre NUMEROVIRGOLE+1 di valori diversi.

lung=len(request.QueryString("record"))
while i < lung
car=mid(request.QueryString("record"),k,1)
if car = " ," then
cont=cont+1
end if
i=i+1
k=k+1
wend
cicli=cont+1 'NUMEROVIRGOLE+1


Riutilizziamo la variabile i reimpostandola a 0 e utilizziamo il comando “split” che funziona come un array tagliando la nostra stringa ad ogni virgola che trova.

i=0
record=split(request.QueryString("record")," , ")


Utilizzando il valore di NUMEROVIRGOLE+1, creiamo finalmente il ciclo di eliminazione dei records. Una volta eliminati usiamo il response.redirect per aggiornare la pagina priva dei records eliminati.

while cicli > 0
set del = Server.CreateObject("ADODB.Command")
del.ActiveConnection = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mdb-database/guestbook.mdb")
del.CommandText = "DELETE FROM firme WHERE ID="&record(i)&""
del.CommandType = 1
del.CommandTimeout = 0
del.Prepared = true
del.Execute()
cicli=cicli-1
i=i+1
wend
response.redirect("questapagina.asp")


E concludiamo il controllo.

end if 


Adesso creiamo il recordset (DI ESEMPIO) che tira fuori l’elenco delle firme

Dim Firme
Set Firme = Server.CreateObject("ADODB.Recordset")
Firme.ActiveConnection = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mdb-database/guestbook.mdb")
Firme.Source = "SELECT * FROM firme"
Firme.CursorType = 0
Firme.CursorLocation = 2
Firme.LockType = 1
Firme.Open()
%>

Di seguito scriviamo il Form ciclato per i risultati del recordset delle firme

Inizio modulo

<%
while NOT Firme.EOF
%>
<%=Firme("firma")%><input name="record" type="checkbox" id="record" value="<%=Firme("ID")%>">
<%
Firme.MoveNext()
wend
%>
<input type="submit" name="Submit" value="Cancella">


Fine modulo

Cosa manca ancora? NULLA! Abbiamo finito, spostiamoci alle conclusioni.

Avete capito tutto adesso?
Ad inizio pagina abbiamo messo lo script per eliminare i records per evitare di avere prima l’elenco delle firme e poi eliminarle, perché avremmo a video records già eliminati, incappando inevitabilemte in errori! Poi abbiamo creato il recordset di estrazione firme, che ci è servito per creare l’elenco delle firme.
L’elenco delle firme lo abbiamo messo dentro un Form che invia con il metodo GET i valori delle caselle a questa stessa pagina, che provvede ad eliminare!



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Luca
Ti è piaciuto l'articolo?