Ja... du kan använda samma array av data som du använder dig av i dina jmail (om dom är i samma dokument). Sök lite om vad jag menar med dina Request.form():
Request.Form("namn på formuläret som du postar ifrån")
Så min fråga är:
Använder du verkligen ett formulär med namnet "MyArray(2,i)"?
Jag har provat detta utan att få in nått av de 3 första.. Resten kommer ju från formuläret som du säger men Artnr, Produkt samt Antal ligger väl i själva kakan.
<%
Response.Buffer = true
namn = Request.Form("namn")
adress = Request.Form("adress")
postnr1 = Request.Form("postnr1")
postnr2 = Request.Form("postnr2")
padress = Request.Form("postadress")
tfn1 = Request.Form("tfn1")
tfn2 = Request.Form("tfn2")
epost = Request.Form("epost")
ovrigt = Request.Form("ovrigt")
info = Array(namn,adress,postnr1,postnr2,padress,tfn1,tfn2,epost,ovrigt)
info2 = ""
For i = 0 to 8
info2 = info2 & info(i)
IF Not i = 8 then
info2 = info2 & "|"
END IF
Next
For i = 0 to 7
IF NOT len(info(i)) <> 0 then
Session("webshopfel") = "Du glömde att fylla i något fält"
session("falt") = info2
Response.Redirect Request.ServerVariables("HTTP_REFERER")
END IF
Next
IF len(info(2)) > 5 then
Session("webshopfel") = "Felaktigt postnummer"
Session("falt") = info2
Response.Redirect Request.ServerVariables("HTTP_REFERER")
END IF
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("webshop.mdb")
Session.Lcid = 1053
varde = Request.Cookies(""& Session.SessionID &"")
hamta = Split(varde,"&")
ReDim MyArray(4,Ubound(hamta))
for x = 0 to ubound(hamta)
hamta2 = Split(hamta(x),"=")
IF Len(hamta2(0)) > 0 AND len(hamta2(1)) > 0 then
SQL = "SELECT * FROM produkter WHERE id =" & int(hamta2(0))
Set RecSet = Connect.Execute(SQL)
MyArray(0,x) = hamta2(0)
MyArray(1,x) = hamta2(1)
MyArray(2,x) = RecSet("artnr")
MyArray(3,x) = RecSet("namn")
MyArray(4,x) = RecSet("pris")
RecSet.Close
Set RecSet = nothing
END IF
next
%>
<!-- #include file = "adovbs.inc" -->
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From bestall"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Artnr") = Request.Form("MyArray(2,i)")
RecSet("Produkt") = Request.Form("MyArray(3,i)")
RecSet("Antal") = Request.Form("MyArray(1,i)")
RecSet("Namn") = Request.Form("namn")
RecSet("Adress") = Request.Form("adress")
RecSet("Postnr1") = Request.Form("postnr1")
RecSet("Postnr2") = Request.Form("postnr2")
RecSet("Ort") = Request.Form("postadress")
RecSet("Tele1") = Request.Form("tfn1")
RecSet("Tele2") = Request.Form("tfn2")
RecSet("Mail") = Request.Form("epost")
RecSet("Ovrigt") = Request.Form("ovrigt")
RecSet("Datum") = Now()
RecSet.Update
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
sida = Request.ServerVariables("HTTP_REFERER") & "&skickad=ja"
Response.Redirect sida
%>
Fortfarande: En array är inte en Formulär.
Du har ingen:
<input type="text" name="MyArray(3,i)"> i dina html dokument hoppas jag?
Det du är ute efter är din array MyArray och din variabel i vet jagi nte vad du är ute efter.. ersätt den med en loop?
Jag har försökt rensar upp din kod + fixar till på ett ungefär vad jag tror du är ute efter:
<%
Response.Buffer = true
'Forms data
namn = Request.Form("namn")
adress = Request.Form("adress")
postnr1 = Request.Form("postnr1")
postnr2 = Request.Form("postnr2")
padress = Request.Form("postadress")
tfn1 = Request.Form("tfn1")
tfn2 = Request.Form("tfn2")
epost = Request.Form("epost")
ovrigt = Request.Form("ovrigt")
info = Array(namn,adress,postnr1,postnr2,padress,tfn1,tfn2,epost,ovrigt)
info2 = join(info,"|")
For i = 0 to 7
If i = 2 And len(info(2)) > 5 Then
Session("webshopfel") = "Felaktigt postnummer"
Session("falt") = info2
Response.Redirect Request.ServerVariables("HTTP_REFERER")
ElseIf Not len(info(i)) <> 0 then
Session("webshopfel") = "Du glömde att fylla i något fält"
session("falt") = info2
Response.Redirect Request.ServerVariables("HTTP_REFERER")
End If
Next
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("webshop.mdb")
Session.Lcid = 1053
varde = Request.Cookies(Session.SessionID)
hamta = Split(varde,"&")
ReDim MyArray(4,Ubound(hamta))
for x = 0 to ubound(hamta)
hamta2 = Split(hamta(x),"=")
IF Len(hamta2(0)) > 0 AND len(hamta2(1)) > 0 then
SQL = "SELECT * FROM produkter WHERE id =" & int(hamta2(0))
Set RecSet = Connect.Execute(SQL)
MyArray(0,x) = hamta2(0)
MyArray(1,x) = hamta2(1)
MyArray(2,x) = RecSet("artnr")
MyArray(3,x) = RecSet("namn")
MyArray(4,x) = RecSet("pris")
RecSet.Close
Set RecSet = nothing
END IF
Next
%>
<!-- #include file = "adovbs.inc" -->
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From bestall"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
For i = 0 To UBound(MyArray,2)
RecSet.AddNew
RecSet("Artnr") = MyArray(2,i)
RecSet("Produkt") = MyArray(3,i)
RecSet("Antal") = MyArray(1,i)
RecSet("Namn") = Request.Form("namn")
RecSet("Adress") = Request.Form("adress")
RecSet("Postnr1") = Request.Form("postnr1")
RecSet("Postnr2") = Request.Form("postnr2")
RecSet("Ort") = Request.Form("postadress")
RecSet("Tele1") = Request.Form("tfn1")
RecSet("Tele2") = Request.Form("tfn2")
RecSet("Mail") = Request.Form("epost")
RecSet("Ovrigt") = Request.Form("ovrigt")
RecSet("Datum") = Now()
RecSet.Update
Next
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
sida = Request.ServerVariables("HTTP_REFERER") & "&skickad=ja"
Response.Redirect sida
%>
Fick det att funka nu med lite pill... Det är som du sa voigtann1 :)
Om man nu kör detta fungerar det helt rätt med 1 produkt.
Om man köper 3 olika saker så skriver den bara in den 1:a i databasen. Man kan loopa ur en mdb men går det på nått sätt att skriva in alla 3 produkterna i mdb?
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From bestall"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
For i = 0 To Ubound(myArray,2)
RecSet.AddNew
RecSet("Artnr") = MyArray(2,i)
RecSet("Produkt") = MyArray(3,i)
RecSet("Antal") = MyArray(1,i)
RecSet("Namn") = Request.Form("namn")
RecSet("Adress") = Request.Form("adress")
RecSet("Postnr1") = Request.Form("postnr1")
RecSet("Postnr2") = Request.Form("postnr2")
RecSet("Ort") = Request.Form("postadress")
RecSet("Tele1") = Request.Form("tfn1")
RecSet("Tele2") = Request.Form("tfn2")
RecSet("Mail") = Request.Form("epost")
RecSet("Ovrigt") = Request.Form("ovrigt")
RecSet("Datum") = Now()
RecSet.Update
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
next
%>
Jag får in allt från produkt 01 i databasen rätt. Men beställer man 2 olika produkter kommer bara den första in i mdb. Jag vet inte om jag är ute efter nått omöjligt nu men undrar om man kan få in dom så här:
Du skriver om två helt olika saker enligt min mening. Kolla vad du sparar ner i din databas, om den sparar ner fler produkter
Sen efter det så skapar du en funktion för att hämta ut alla produkter i din varukorg och skicka mailet. Det jag har kodat ovan har inget med mail mallen att göra alls.
Sorry. Det du kodade ovan fungerar perfekt nu. Detta blev en ny fråga om det går att spara flera produkter eftersom den förra lösta frågan bara sparade den först valda produkten och struntade i de andra. Jag visade oxo hur det ser ut när man får bekräftelse mailet eftersom alla produkterna skrivs ut i det.
Jag kan bara erkänna att jag är helt novis på detta och försöker bara få ett färdigt skript att fungera annorlunda.