Salve dovrei impostare un carrello che tenga in memoria per l'utente le selezioni effettuate nei 15 giorni precedenti. Questo non è il problema. L'accesso al carrello è possibile solo se si è autenticati e può avvenire dalla pagina dei prodotti cliccando su un pulsante "Seleziona" oppure dal menu cliccando sul link "carrello". Il mio problema è gestire la visualizzazione quando si arriva al carrello cliccando dal menù. Come faccio a far visualizzare tutte le precedenti selezioni. Questo è il pezzo di codice che avevo pensato
<%
var con = Server.CreateObject("ADODB.Connection");
var conString;
conString = "Provider=Microsoft.Jet.OLEDB.4.0; "+ "Data Source=" +Server.MapPath("shop.mdb");
con.Open(conString);
if(String(Request.ServerVariables("HTTP_COOKIE"))= ="undefined"){
Response.Write("
Attenzione, Cookies non abilitati! Questo sito utilizza i Coockies</p>");
Response.Write("
Per abilitare/disabilitare i Cookies: strumenti >> opzioni >> privacy >> impostazioni cronologia-utilizza impostazioni personalizzate.</p>");
}else{
if (Session("utente")==undefined){
Response.write("<h1>Attenzione! il carrello è disponibile solo per gli utenti autenticati.</h1>");
} else {
var rst = Server.CreateObject("ADODB.Recordset");
var sSQLString= "Select * from prods";
rst = con.Execute(sSQLString);
var err=true;
if(Request.ServerVariables("REQUEST_METHOD")=="GET "){
e = new Enumerator(Request.QueryString("qta"));
err = false;
} else if(Request.ServerVariables("REQUEST_METHOD")=="POS T"){
e = new Enumerator(Request.Form("qta"));
err = false;
} else{
Response.Write("Metodo sconosciuto.");
}
%>
<table class="listaProdotti">
<caption>Riepilogo</caption>
<thead>
<tr><th class="listaProdotti">Nome prodotto</th><th class="listaProdotti">Quantità selezionata</th><th class="listaProdotti">Costo unutario</th></tr>
</thead>
<tbody>
<%
if(!err){
var CostoTot=0;
var a;
a=String(e.item());
if (a="undefined"){
while(!rst.EOF){
var b= Request.Cookies(rst("pname"));
if(b!=""){
b=parseInt(b);
if(!isNaN(b)){
var prezzo=parseFloat(rst("price"))/100;
prezzo=prezzo.toFixed(2);
Response.Write("<tr><td class='listaProdotti'> "+rst("pname")+"</td><td class='listaProdotti'>"+b+"</td><td class='listaProdotti'> € "+prezzo+"</td> <td><input type='submit' onclick='Cancella("+rst("pname")+")' value='CANCELLA'></td></tr>");
CostoTot= CostoTot + prezzo*b;
}
}
rst.MoveNext();
}
if(CostoTot<=0 || isNaN(CostoTot)){
Response.Write("<tr><td colspan='3' class='listaProdotti'>Non è stato selezionato alcun prodotto o i valori inseriti non erano corretti.</td></tr>");
}else {
Response.write("<tr><td colspan='3' class='listaProdotti'>Costo finale: € "+CostoTot.toFixed(2)+"</td></tr>");
}
Però mi è venuto in mente che se dalla selezione dei prodotti (dove c'è un <input type="text">) viene scritto undefined si rientra nella casistica.
Posso risolvere il tutto impostando una maxlength per il tag <input> o esiste una soluzione migliore? Grazie!

Rispondi quotando