Ciao è da un pò di giorni che non riesco a risolvere questo problema:
Ho realizzato un carrello commerciale:
carrello.asp
<!--#include file="connessione.asp"-->
<!--#include file="verifica.asp"-->
<!--#include file="ADOVBS.INC"-->
<%
'Richiamo l' id del prodotto da inserire
id_prodotto = request("id")
'Aggiunta nuovo prodotto nel Carrello
'Controllo che il prodotto sia già presente nel carrello
if len(id_prodotto) <> 0 then
strSQL = "select id_prodotto, id_user from tbl_Carrello where id_prodotto = " & id_prodotto & " and id_user = " & session("id_utente")
set rs = con.execute(strSQL)
'Se il prodotto non esiste, lo aggiungo
'Altrimenti aggiorno la quantita' di 1 unità
if rs.eof then
'Aggiungo il prodotto
strSQL = "insert into tbl_Carrello(id_user, id_prodotto, quantita) values(" & session("id_utente") & ", " & id_prodotto & ", 1)"
con.execute(strSQL)
else
'Aggiorno la quantità
strSQL = "update tbl_Carrello set quantita = quantita + 1 where id_prodotto = " & id_prodotto & " and id_user = " & session("id_utente")
con.execute(strSQL)
end if
rs.close
set rs = nothing
end if
'Fine
'Aggiorno il carrello
if request("azione") = "aggiorna" then
'Controllo quali prodotti aggiornare o eliminare
set rs = Server.CreateObject("ADODB.Recordset")
rs.activeconnection = con
rs.cursortype = adOpenDynamic
rs.locktype = adLockOptimistic
strsql = "select * from tbl_Carrello where id_user = " & session("id_utente")
rs.open strsql
'Elenco dei prodotti nel carrello
'E modifica...
while not rs.eof
pc = request("pc_" & rs("id_prodotto"))
if isnumeric(pc) then
if pc = 0 then
rs.delete
else
rs("quantita") = pc
end if
end if
rs.movenext
wend
'Fine
rs.close
set rs = nothing
'Fine
end if
%>
<html>
<head>
<title>Il tuo carrello</title>
</head>
<body>
<h1>Il tuo Carrello</h1>
<hr>
<table align="center" width="500" border="1">
<form method="post" action="carrello.asp?azione=aggiorna">
<tr bgcolor="#C0C0C0">
<td align="center" width="300">Prodotto</td>
<td align="center" width="100">Quantita'</td>
<td align="center" width="100">Prezzo</td>
</tr>
<%
'Inizializzo le variabili per il prezzo totale
var_tot = 0
'Visualizzo tutti i prodotti del carrello
strSQL = "select id_prodotto, id_user, quantita from tbl_Carrello where id_user = " & session("id_utente")
set rs = con.execute(strSQL)
'Il carrello e' vuoto ?
if rs.eof then
%>
<tr>
<td colspan="3" align="center">
Il tuo carrello e' vuoto<br>
<a href="prodotti.asp">Torna ai prodotti</a>
</td>
</tr>
<%
end if
'Fine
'Elenco dei prodotti
while not rs.eof
'Prelevo tutti i dati dal carrello
id_prodotto = rs("id_prodotto")
qnt = rs("quantita")
'Richiamo le informazioni relative al prodotto
'e aggiorno il valore del prezzo totale
strSQL = "select nome, prezzo from tbl_Prodotti where id = " & id_prodotto
set rs2 = con.execute(strSQL)
nome = rs2("nome")
prezzo = rs2("prezzo")
var_tot = var_tot + (prezzo * qnt)
rs2.close
set rs2 = nothing
'Fine
'Visualizzo i prodotti nella tabella
%>
<tr>
<td><%=nome%></td>
<td><input type="text" name="pc_<%=id_prodotto%>" value="<%=qnt%>" size="2" maxlength="2"></td>
<td><%=formatnumber(prezzo, 2)%> €</td>
</tr>
<%
if request("azione") = "invia" then
%>
<!-- inizio invio email -->
<!-- #include file ="invioordine.asp" -->
<!-- fine invio email -->
<% end if
rs.movenext
wend
rs.close
set rs = nothing
'Fine
%>
<tr>
<td colspan="2" bgcolor="#C0C0C0" align="center"> <input type="submit" name="Submit2" value="Aggiorna Carrello"></td>
<td>
Tot. <%=formatnumber(var_tot, 2)%> €
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#C0C0C0" align="center"> <p><a href="cancella.asp">svuota
carrello</a>
</tr>
</form>
</form>
</table>
<table align="center" width="500" border="1">
<form method="post" action="carrello.asp?azione=invia">
<tr>
<td> <div align="center">
<input type="submit" name="Submit" value="Invia ordine">
</div></td>
</tr>
</form>
</table>
<p><a href="prodotti.asp">prodotti</a></p>
</body>
</html>
ora vorrei inviare gli ordini che il cliente fa via mail, ma mi invia soltanto un ordine, mi spiego meglio:
se un cliente mette nel carrello 2 prodotti diversi (un divano e una sedia) poi nell'invio mail dell'ordine mi compare soltanto un prodotto i lsecondo non riesco a visualizzarlo, oppure mi compare il secondo e il primo no (cambia in base alla posizione di <!-- #include file ="invioordine.asp" -->).
Ho provato davvero di tutto, ma non so proprio come risolvere la situazione.
invioordine.asp
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<%
'============Linkbruttocane su specifiche MSDN================
'* il corpo finale del messaggio contiene tutti i campi *
'* inseriti nella pagina html, in pratica puoi mettere *
'* tutti i campi che ti servono nel modulo di invio senza *
'* fare altre configurazioni aggiuntive. *
'=============================================================
DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo
'* voce da modificare con il proprio indirizzo email
regmail ="[email protected]"
'* voce da modificare con un indirizzo email che funga da mittente:
'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
'* dato che cdosys supporta questa notifica
miamail = "[email protected]"
'------------fine modifiche necessarie------------------
nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
'*rilevo i campi del form
FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
IF NOT Request.Form(numeroCampi) = "" THEN
corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
END IF
NEXT
'* creo gli oggetti cdosys sul server e li gestisco
DIM iMsg, Flds, iConf
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.aruba.it"
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
Flds.Update
strSQL = "select id_prodotto, id_user, quantita from tbl_Carrello where id_user = " & session("id_utente")
set rs = con.execute(strSQL)
strSQL = "select nome, prezzo from tbl_Prodotti where id = " & id_prodotto
set rs2 = con.execute(strSQL)
'mail a me da chi si registra
With iMsg
Set .Configuration = iConf
.To = miamail
.From = regmail
.Sender = regmail
.Subject = "Nuovo ordine"
while not rs.eof
.TextBody = "Un utente ha effettuato un nuovo ordine: "& Chr(13)&Chr(10)&_
"nome: " &nome& Chr(13)&Chr(10)&_
"quantita: " &qnt& Chr(13)&Chr(10)&_
"prezzo: " &prezzo & Chr(13)&Chr(10)&_
"totale: " &var_tot
rs.movenext
wend
.Send
End With
'mail a chi si è registrato
With iMsg
Set .Configuration = iConf
.To = regmail
.From = miamail
.Sender = regmail
.Subject = "ordine dal sito www.taras_store.com"
.TextBody = "Un utente ha effettuato un nuovo ordine: "& Chr(13)&Chr(10)&_
"nome: " & Request.form("nome")& Chr(13)&Chr(10)&_
"quantita: " &qnt& Chr(13)&Chr(10)&_
"prezzo: " &prezzo & Chr(13)&Chr(10)&_
"totale: " &var_tot
.Send
End With
On Error Resume Next
response.redirect "invio_ok.htm"
%>
Spero che qualcuno mi aiuti.
grazie
Ho realizzato un carrello commerciale:
carrello.asp
<!--#include file="connessione.asp"-->
<!--#include file="verifica.asp"-->
<!--#include file="ADOVBS.INC"-->
<%
'Richiamo l' id del prodotto da inserire
id_prodotto = request("id")
'Aggiunta nuovo prodotto nel Carrello
'Controllo che il prodotto sia già presente nel carrello
if len(id_prodotto) <> 0 then
strSQL = "select id_prodotto, id_user from tbl_Carrello where id_prodotto = " & id_prodotto & " and id_user = " & session("id_utente")
set rs = con.execute(strSQL)
'Se il prodotto non esiste, lo aggiungo
'Altrimenti aggiorno la quantita' di 1 unità
if rs.eof then
'Aggiungo il prodotto
strSQL = "insert into tbl_Carrello(id_user, id_prodotto, quantita) values(" & session("id_utente") & ", " & id_prodotto & ", 1)"
con.execute(strSQL)
else
'Aggiorno la quantità
strSQL = "update tbl_Carrello set quantita = quantita + 1 where id_prodotto = " & id_prodotto & " and id_user = " & session("id_utente")
con.execute(strSQL)
end if
rs.close
set rs = nothing
end if
'Fine
'Aggiorno il carrello
if request("azione") = "aggiorna" then
'Controllo quali prodotti aggiornare o eliminare
set rs = Server.CreateObject("ADODB.Recordset")
rs.activeconnection = con
rs.cursortype = adOpenDynamic
rs.locktype = adLockOptimistic
strsql = "select * from tbl_Carrello where id_user = " & session("id_utente")
rs.open strsql
'Elenco dei prodotti nel carrello
'E modifica...
while not rs.eof
pc = request("pc_" & rs("id_prodotto"))
if isnumeric(pc) then
if pc = 0 then
rs.delete
else
rs("quantita") = pc
end if
end if
rs.movenext
wend
'Fine
rs.close
set rs = nothing
'Fine
end if
%>
<html>
<head>
<title>Il tuo carrello</title>
</head>
<body>
<h1>Il tuo Carrello</h1>
<hr>
<table align="center" width="500" border="1">
<form method="post" action="carrello.asp?azione=aggiorna">
<tr bgcolor="#C0C0C0">
<td align="center" width="300">Prodotto</td>
<td align="center" width="100">Quantita'</td>
<td align="center" width="100">Prezzo</td>
</tr>
<%
'Inizializzo le variabili per il prezzo totale
var_tot = 0
'Visualizzo tutti i prodotti del carrello
strSQL = "select id_prodotto, id_user, quantita from tbl_Carrello where id_user = " & session("id_utente")
set rs = con.execute(strSQL)
'Il carrello e' vuoto ?
if rs.eof then
%>
<tr>
<td colspan="3" align="center">
Il tuo carrello e' vuoto<br>
<a href="prodotti.asp">Torna ai prodotti</a>
</td>
</tr>
<%
end if
'Fine
'Elenco dei prodotti
while not rs.eof
'Prelevo tutti i dati dal carrello
id_prodotto = rs("id_prodotto")
qnt = rs("quantita")
'Richiamo le informazioni relative al prodotto
'e aggiorno il valore del prezzo totale
strSQL = "select nome, prezzo from tbl_Prodotti where id = " & id_prodotto
set rs2 = con.execute(strSQL)
nome = rs2("nome")
prezzo = rs2("prezzo")
var_tot = var_tot + (prezzo * qnt)
rs2.close
set rs2 = nothing
'Fine
'Visualizzo i prodotti nella tabella
%>
<tr>
<td><%=nome%></td>
<td><input type="text" name="pc_<%=id_prodotto%>" value="<%=qnt%>" size="2" maxlength="2"></td>
<td><%=formatnumber(prezzo, 2)%> €</td>
</tr>
<%
if request("azione") = "invia" then
%>
<!-- inizio invio email -->
<!-- #include file ="invioordine.asp" -->
<!-- fine invio email -->
<% end if
rs.movenext
wend
rs.close
set rs = nothing
'Fine
%>
<tr>
<td colspan="2" bgcolor="#C0C0C0" align="center"> <input type="submit" name="Submit2" value="Aggiorna Carrello"></td>
<td>
Tot. <%=formatnumber(var_tot, 2)%> €
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#C0C0C0" align="center"> <p><a href="cancella.asp">svuota
carrello</a>
</tr>
</form>
</form>
</table>
<table align="center" width="500" border="1">
<form method="post" action="carrello.asp?azione=invia">
<tr>
<td> <div align="center">
<input type="submit" name="Submit" value="Invia ordine">
</div></td>
</tr>
</form>
</table>
<p><a href="prodotti.asp">prodotti</a></p>
</body>
</html>
ora vorrei inviare gli ordini che il cliente fa via mail, ma mi invia soltanto un ordine, mi spiego meglio:
se un cliente mette nel carrello 2 prodotti diversi (un divano e una sedia) poi nell'invio mail dell'ordine mi compare soltanto un prodotto i lsecondo non riesco a visualizzarlo, oppure mi compare il secondo e il primo no (cambia in base alla posizione di <!-- #include file ="invioordine.asp" -->).
Ho provato davvero di tutto, ma non so proprio come risolvere la situazione.
invioordine.asp
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<%
'============Linkbruttocane su specifiche MSDN================
'* il corpo finale del messaggio contiene tutti i campi *
'* inseriti nella pagina html, in pratica puoi mettere *
'* tutti i campi che ti servono nel modulo di invio senza *
'* fare altre configurazioni aggiuntive. *
'=============================================================
DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo
'* voce da modificare con il proprio indirizzo email
regmail ="[email protected]"
'* voce da modificare con un indirizzo email che funga da mittente:
'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
'* dato che cdosys supporta questa notifica
miamail = "[email protected]"
'------------fine modifiche necessarie------------------
nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
'*rilevo i campi del form
FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
IF NOT Request.Form(numeroCampi) = "" THEN
corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
END IF
NEXT
'* creo gli oggetti cdosys sul server e li gestisco
DIM iMsg, Flds, iConf
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.aruba.it"
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
Flds.Update
strSQL = "select id_prodotto, id_user, quantita from tbl_Carrello where id_user = " & session("id_utente")
set rs = con.execute(strSQL)
strSQL = "select nome, prezzo from tbl_Prodotti where id = " & id_prodotto
set rs2 = con.execute(strSQL)
'mail a me da chi si registra
With iMsg
Set .Configuration = iConf
.To = miamail
.From = regmail
.Sender = regmail
.Subject = "Nuovo ordine"
while not rs.eof
.TextBody = "Un utente ha effettuato un nuovo ordine: "& Chr(13)&Chr(10)&_
"nome: " &nome& Chr(13)&Chr(10)&_
"quantita: " &qnt& Chr(13)&Chr(10)&_
"prezzo: " &prezzo & Chr(13)&Chr(10)&_
"totale: " &var_tot
rs.movenext
wend
.Send
End With
'mail a chi si è registrato
With iMsg
Set .Configuration = iConf
.To = regmail
.From = miamail
.Sender = regmail
.Subject = "ordine dal sito www.taras_store.com"
.TextBody = "Un utente ha effettuato un nuovo ordine: "& Chr(13)&Chr(10)&_
"nome: " & Request.form("nome")& Chr(13)&Chr(10)&_
"quantita: " &qnt& Chr(13)&Chr(10)&_
"prezzo: " &prezzo & Chr(13)&Chr(10)&_
"totale: " &var_tot
.Send
End With
On Error Resume Next
response.redirect "invio_ok.htm"
%>
Spero che qualcuno mi aiuti.
grazie