Avatar billede andersasp Nybegynder
07. november 2005 - 11:14 Der er 8 kommentarer og
1 løsning

Indkøbskurv melder fejl.

Hejsa eksperter,

Jeg har førhen brugt et script til en indkøbskurv som virker helt perfekt ud fra cookies. Nu har jeg dog tilføjet 2 ekstra felter som er "farve" og "størrelse" hvilket får det til at melde fejl.

Min cookie ser således ud:

1*38*blå*medium|1*23*Rød*s|

antal*produktID*farve*størrelse
| = dette adskiller produkterne.

Min fejl forekommer i dette udsnit som også kan findes forneden i hele scriptet:

for i = lbound(arrVareLinier) to ubound(arrVarelinier)
    'splitter ved *
    arrVare = Split(arrVareLinier(i), "*")
    Call writeLine(arrVare(0), arrVare(1)) '<- her kommer fejlen
next

Nedenstående er mit hele mit script.

'#####################
Set Connshop = Server.CreateObject("ADODB.Connection")
    Connshop.Open MM_database_STRING
   
    set sitesettings = Connshop.Execute("select * from usersettings")
   
response.write "<p>"
arrVareLinier = Split(Request.Cookies("steinshoppingcart"), "|")

if isarray(arrVareLinier) = True then
  for i = lbound(arrVareLinier) to ubound(arrVarelinier)
      arrVare = Split(arrVareLinier(i), "*")
  next
else
  'returnerede ikke array
end if

Sub writeLine(pAntal, pID, Pfarve, Pstorrelse)

    set rsshop = Connshop.Execute("select * from produkter where PID = "& pID &"")
    pris = FormatNumber(rsshop("pPris"), 0)
   
    'l&aelig;g til totalen
    total = total + (pris * pAntal)
    'skriv r&aelig;kke
    with response
        .write "<tr valign='top'>"
        .write "<td><a href='" & sitesettings("Uwebadress") & "extra/03extra/save.asp?howmany=1&whatitem="&rsshop("PID")&"&redirectpath="&Request.ServerVariables("PATH_INFO")&"'><img src='../../admin/ekstras/03extra/images/thumbs/plus.gif' width='9' height='9' border='0'></a> <a href='" & sitesettings("Uwebadress") & "extra/03extra/minus.asp?removethis="&pAntal&"*"&rsshop("PID")&"&redirectpath="&Request.ServerVariables("PATH_INFO")&"'><img src='../../admin/ekstras/03extra/images/thumbs/minus.gif' width='9' height='9' border='0'></a> " & pAntal & "x" & Left(rsshop("Poverskrift"),150) & "</td>"
        .write "<td><div align='right'>kr. " & pris*pAntal & ".-</div></td>"
        .write "</tr>"
    End with
   
    rsshop.Close
   
End Sub

dim total, arrVareLinier, arrVare, cookieShop

cookieShop = Request.Cookies("steinshoppingcart")

if cookieShop <> "" then
   
    'fjerner sidste | - hvis der er et... :o)
    's&aring;ledes at der ikke bliver fejl n&aring;r der splittes
    If Right(cookieShop, 1) = "|" then
        cookieShop = Left(cookieShop, Len(cookieShop) - 1)
    End if
   
    '&aring;ben db conn
    Set Connshop = Server.CreateObject("ADODB.Connection")
    Connshop.Open MM_database_STRING

    'varelinie ser s&aring;dan ud:
    'antal*varenr XX|antal*varenr XX|
    arrVareLinier = Split(cookieShop, "|")
       
    if isarray(arrVareLinier) = False then
        'returnerede ikke array
        Response.Write "Kurven er ikke gyldig!"
        'slutter udf&oslash;rsel
        Response.End
    end if   

    with response
        .write "<table width='100%'  border='0' cellpadding='4' cellspacing='1' bgcolor='#999999'>"
        .write "<tr>"
        .write "<td bgcolor='#62B7BD'><b>Indk&oslash;bskurv</b></td>"
        .write "</tr>"
        .write "<tr>"
        .write "<td bgcolor='#FFFFCC'><table width='100%'  border='0' cellspacing='0' cellpadding='0'>"
   
    for i = lbound(arrVareLinier) to ubound(arrVarelinier)
        'splitter ved *
        arrVare = Split(arrVareLinier(i), "*")
        Call writeLine(arrVare(0), arrVare(1)) #### her kommer fejlen
    next
       
        .write "<tr valign='top'>"
        .write "<td>&nbsp;</td>"
        .write "<td>&nbsp;</td>"
        .write "</tr>"
        .write "<tr valign='top'>"
        .write "<td>Moms<br><b>Total</b></td>"
        'udskriv totalen...
        .write "<td><div align='right'>kr. "& total*0.25 &".-<br><b>kr. " & total  &".-</b></div></td>"
        .write "</tr>"
        .write "<tr valign='top'>"
        .write "<td colspan='2'><div align='right'><br><a href='" & sitesettings("Uwebadress") & "extra/03extra/checkout/index.asp'>Check ud <img src='../../admin/ekstras/03extra/images/thumbs/shoppingcart.gif' width='22' height='26' border='0' align='absmiddle'></a></a></div></td>"
        .write "</tr>"
        .write "</table></td>"
        .write "</tr>"
        .write "</table>"
    end with
   
    'lukker og slukker :o)
    Connshop.close
    set arrVareLinier = Nothing
    set arrVare = Nothing
    set connshop = Nothing
end if
Avatar billede nielle Nybegynder
07. november 2005 - 11:51 #1
Hvordan lyder fejlbeskeden?

Kan du ikke også vise den stump kode hvor du lægger data i din cookie.
Avatar billede softspot Forsker
07. november 2005 - 12:17 #2
Det er vel fordi den sidste værdi er tom og ikke indeholder noget data (pga. du afslutter med en pipe-katakter (|).

I øvrigt kan du godt smide lbound(..) væk for (denne slags) arrays starter altid ved 0 i VBScript.
Avatar billede andersasp Nybegynder
07. november 2005 - 12:26 #3
Således gemmer/opdaterer jeg min cookie:

if Request.Cookies("steinshoppingcart") <> "" then
savetocookie = Request.Cookies("steinshoppingcart") & request.QueryString("howmany") & "*" & request.QueryString("whatitem") & "*" & request.QueryString("Pfarve") & "*" & request.QueryString("Pstorrelse") & "|"
else
savetocookie = request.QueryString("howmany") & "*" & request.QueryString("whatitem") & "*" & request.QueryString("Pfarve") & "*" & request.QueryString("Pstorrelse") & "|"
end if
Response.Cookies ("steinshoppingcart")= savetocookie
Response.Cookies("steinshoppingcart").Expires = date()+2

if request.QueryString("whatcategory") <> "" then
response.redirect "http://" & Request.ServerVariables("SERVER_NAME") & request.QueryString("redirectpath") & "?whatcategory=" & request.QueryString("whatcategory")
else
response.redirect "http://" & Request.ServerVariables("SERVER_NAME") & request.QueryString("redirectpath") & "?PID=" & request.QueryString("whatitem")
end if

Dette er den fejl jeg får når jeg prøver at fremkalde indkøbskurven, efter jeg har tilføjet Pfarve, Pstorrelse

Sub writeLine(pAntal, pID, Pfarve, Pstorrelse):

Microsoft VBScript runtime error '800a01c2'
Wrong number of arguments or invalid property assignment: 'writeLine'

/kurv.asp, line 190
Avatar billede softspot Forsker
07. november 2005 - 12:27 #4
Prøv evt. at udskifte denne passage:

for i = lbound(arrVareLinier) to ubound(arrVarelinier)
    'splitter ved *
    arrVare = Split(arrVareLinier(i), "*")
    Call writeLine(arrVare(0), arrVare(1)) '<- her kommer fejlen
next


med denne:

for i = 0 to ubound(arrVarelinier)
    'splitter ved *
  if len(arrVareLinier(i)) > 0 then
    arrVare = Split(arrVareLinier(i), "*")
    Call writeLine(arrVare(0), arrVare(1)) '<- her kommer fejlen
  end if
next
Avatar billede softspot Forsker
07. november 2005 - 12:30 #5
du kan ikke bare undlade at angive parametre i et funktionskald, hvis du har defineret at de skal være der:

Sub writeLine(pAntal, pID, Pfarve, Pstorrelse)

forventer 4 parametre og du angiver kun 2

Call writeLine(arrVare(0), arrVare(1)) '<- her kommer fejlen


Så enten må du angive nogle dummy-parametre ellers må du lave en anden definition af funktionen som kun tager 2 parametre...
Avatar billede andersasp Nybegynder
07. november 2005 - 12:34 #6
Ok nu har jeg bare tilføjet 2 ekstra parametre hvilket får den til at virke.. Det er måske ikke den optimale løsning, men nu virker det da:)  tusinde tak for hjælpen alle sammen..

Smider I lige nogle points??
Avatar billede nielle Nybegynder
07. november 2005 - 12:47 #7
Det er vist softspot som skal have dem alle :^)
Avatar billede softspot Forsker
07. november 2005 - 13:14 #8
Velbekomme :)
Avatar billede softspot Forsker
07. november 2005 - 13:32 #9
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester