Ho modificato la pagina carrello.asp secondo le mie esigenze. Il tutto funziona: aggiornare q.tà, svuotare carrello e aggiungere altri prodotti.
Ultima cosa che non riesco a modificare e rendere funzionante, e' la possibilità di eliminare un solo articolo dal carrello.
Ecco il codice che gestisce il tutto, ricordo che la collection di dati e' contenuta in una variabile di sessione quindi 1,4,65,23
Questa parte di codice, visualizza gli articoli ordinati:
Ora qui controllo l'azione dell'utentecodice:<form ACTION="carrelloprova.asp" METHOD="post" onSubmit="return checkForm()"> <table border="1"> <tr bgcolor="#dddddd"> <td>Elimina</td> <td>Film</td> <td align=center>Quantità</td> <td>Prezzo</td> </tr> <% 'Apro la connessione verso il database usando ADO Set rsArticoli = Server.CreateObject("ADODB.RecordSet") StrConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("database\archivio.mdb") rsArticoli.open "select * from film where idfilm in(" & codici & ")",StrConn 'where codice in(" & articoli & ") 'Costruisco la tabella articoli con una casella di conferma acquisto 'Assegno ad una variabile la collezione dei campi Set campi=rsArticoli.fields riga=0 for k=0 to ubound(carrello,2) NewTd="<TD align=center><input type=checkbox name=elimina value=" & campi("idfilm") & ">" NewTd=NewTd & "<TD width=150>" & campi("FILM") & "</TD>" NewTd=NewTd & "<TD align=center><input type=text size=3 name=qta value=" & carrello(1,k) & "></TD>" totale=totale+campi("PREZZO")*carrello(1,k) 'NewTd=NewTd & "<TD>" & formatCurrency(campi("PREZZO")*carrello(1,k)) & "</TD>" NewTd=NewTd & "<TD>" & campi("PREZZO")*carrello(1,k) & "</TD>" NewRow="<TR>" & NewTd & "</TR>" Response.write NewRow rsArticoli.MoveNext next response.write "<TR><TD colspan=3 align=right>Totale:<TD><font color=red>" & totale & "<font><TD></TR>" RsArticoli.Close Set RsArticoli=nothing %> </table> <input type=submit name="action" value="Aggiorna carrello"> <input type=submit onclick="return confirm('Sei sicuro di voler eliminare il contenuto del carrello ?')" name="action" value="Svuota carrello"> <input type=button value="Conferma ordine" onclick="location.href='conferma.asp'"> </form>
qui di seguito inserisco la routine VB che cancella l'articolo dal carrello.codice:<% 'ANALISI DELLE RICHIESTE 'Imposto una variabile bool che tiene traccia della presenza 'di elementi nell'array if isArray(session("carrello"))=0 then dim carrello() presenti=0 else carrello=session("carrello") presenti=1 end if 'Verifico l'azione scelta dall'utente if request("action")="Aggiorna carrello" then 'Verifico se l'utente ha eliminato degli articoli o variato alcune quantità cancellaArt=request("elimina").count if cancellaArt>0 then cancellaArticoli else aggiornaDati end if end if ...
se seleziono un checkbox di un articolo e poi aggiorno il carrello, non lo elimina!!! :master:codice:<script runat=server language=vbscript> ... sub cancellaArticoli() 'Questa routine elimina un articolo dal carrello 'con una tecnica di shifting degli elementi articoli=split(request("elimina"),",") presenti=true for k=0 to ubound(articoli) x=0 do if cint(carrello(0,x))=cint(articoli(k)) then 'Verifico se si tratta dell'ultimo elemento if x<ubound(carrello,2) then ultimo=ubound(carrello,2) carrello(0,x)=carrello(0,ultimo) carrello(1,x)=carrello(1,ultimo) end if if ubound(carrello,2)=0 then erase carrello presenti=false else redim preserve carrello(1,ubound(carrello,2)-1) end if exit do else x=x+1 end if loop next end sub

Rispondi quotando