Eliminare più record con Dreamweaver tramite checkbox
Il metodo che descrivo, ovviamente, non è l'unico; ce ne saranno altri ma, a mio modo di vedere è molto semplice, non richiede molto codice e molti passaggi, che già conosciamo, si possono fare grazie a Dreamweaver ed i suoi comportamenti server.
Per l'esempio in oggetto, ho creato una tabella nel database Access; tale tabella l'ho chiamata tabUtenti. Essa è composta dai seguenti campi:
- ID
- Nome
- Cognome
Di seguito l'immagine che raffigura la suddetta tabella in visualizzazione struttura in Access:

Ovviamente ho inserito dei nomi di fantasia...
Fatto questo, possiamo aprire Dreamweaver e creare una pagina che io ho chiamato elenco.asp. In questa pagina si deve procedere con:
- configurazione sito (se non è stata fatta precedentemente)
- connessione al database
- recordset; (nel mio esempio l'ho nominato: rsUtenti)
Dando per scontato che ormai questi passaggi sappiamo padroneggiarli e che siano andati a buon fine, inserire un form (possiamo accettare il nome e l'id di default del programma) che abbia l'action impostato su una seconda pagina, che ci servirà in seguito. Dovremmo avere un codice del genere:
<form name="form1" id="form1" method="post" action="processa.asp">
...codice tabella...
</form>
Inserire una tabella nel form che abbia 1 riga e 4 colonne (quanti sono i campi del database, escludendo il campo id). Nella quarta cella di destra metteremo un checkbox; anche questo elemento si ripeterà parallelamente ai record.
Dal pannello Applicazione di Dreamweaver, indivisuare il recordset creato, cliccare sul tab Associazioni ed espandere rsUtenti. Trascinare nella prima cella di sinistra il nome, poi il cognome ed infine l'email. Nella quarta cella, come preannunciato, inseriamo un checkbox, dal pannello Moduli. La struttura che avremo in vista codice di quanto appena scritto sarà come l'immagine di seguito:

Una cosa alla quale fare attenzione è la quarta cella, quella con il checkbox; il suo codice deve essere:
<input type="checkbox" name="del" id="del" value="<%=(rsUtenti.Fields.Item("id").Value)%>" /> Come si può vedere, il valore (value) del checkbox deve per forza essere uguale a quello del campo id della tabella del database altrimenti, in fase di cancellazione, riceveremo un messaggio di errore.
Il prossimo, ed ultimo passaggio, da fare in questa pagina è l'area ripetuta. Individuare il secondo gruppo di celle contraddistinte da
<tr>
<td>codice</td>
....
</tr>
Aprire il pannello Applicazione, fare clic sul tab Comportamenti server e selezionare Area Ripetuta. Seguire i passaggi e selezionare il Recordset sorgente (rsUtenti nel nostro caso); accettare 10 per volta o spuntare "Tutti" e premere OK.
All'esterno della tabella inserire un pulsante di submit con un value indicativo di quello che stiamo facendo; per esempio: <input type="submit" value="CANCELLA SELEZIONATI" /> Salvare e aggiornare la pagina nel browser; dovremmo essere arrivati al seguente punto:

La pagina "processa.asp"
Questa è la pagina che processa l'azione della pagina precedente; per prima cosa copiare il recordset della pagina elenco.asp.
Subito dopo, aggiungere il seguente codice:
<%
strIDs = Replace(Request.Form, "&del=", ",")
strIDs = Replace(strIDs, "del=", "")
set DoDelete = Server.CreateObject("ADODB.Command")
DoDelete.ActiveConnection = MM_NomeConnessione
DoDelete.CommandText = "DELETE FROM tabUtenti WHERE ID IN (" & strIDs & ")"
DoDelete.CommandType = 1
DoDelete.CommandTimeout = 0
DoDelete.Prepared = true
DoDelete.Execute()
Response.Redirect("elenco.asp")
%>
Non serve altro in questa pagina. Possiamo salvare e richiamare dal nostro localhost la pagina elenco.asp. Selezionare almeno 2 record e premere il pulsante. Vengono eliminati? :)
Alla prossima.
| < Prec. | Succ. > |
|---|

