Avatar billede texas2 Nybegynder
22. juni 2001 - 09:15 Der er 5 kommentarer og
1 løsning

Hjælp med indkøbsvogn

Jeg forsøger at lave en indkøbskurv ved hjælp af et 2D array somgemmes i en session :

-- fil1.asp ---
if session(\"status\") <> \"ok\" then
    response.redirect \"opretkurv.asp\"
end if

dim tempkurv(50,3)
tempkurv = session(\"kurv\")

herefter normale operationer med tempkurv
...
...
------------

-- opretkurv.asp ----
dim kurv(50,3)
session(\"kurv\") = kurv
session(\"status\") = \"ok\"

response.redirect \"fil1.asp\"
--------------------

Ovenstående var min ide til hvordan det kunne gøres, men jeg kan ikke få det til at virke.

Findes der en mere elegant måde at gøre det på?
Avatar billede agony Nybegynder
22. juni 2001 - 09:44 #1
Jeg ville i global.asa lave et Dictionary objekt med session scope, sådan.

SUB Session_OnStart

Set Session(\"kurv\") = CreateObject(\"Scripting.Dictionary\")

END SUB

På den måde er du sikker på at alle besøgende før oprettet en kurv.
Fordelen ved at bruge Dictionary er at den har en række metoder som gør livet lidt lettere end ved et array. Feks en add metode som smider lægger noget i din kurv:

item = 562346
antal = 1
kurv = Session(\"kurv\")
kurv.add item, antal

Følgende link har en god beskrivelse af hvordan du kan benyttet et Dictionary metoder:
http://www.w3schools.com/asp/asp_ref_dictionary.asp

Du kan også give mail din mail adresse så kan jeg sende dig en komplet løsning jeg lavde til et projekt på min skole.
Du kan se kurven i action på:

http://intranet.tietgen.dk/dm99516/wwwroot/myMonitor/files/forside.asp

AGOnY :-)
Avatar billede texas2 Nybegynder
22. juni 2001 - 11:20 #2
agony> Tak for hjælpen. At bruge Dictionary objektet var ikke dumt.

Men, jeg kan ikke få overføringen fra sessionen til at virke. Koden : tempkurv = session(\"kurv\") giver følgende fejl :
-------
Microsoft VBScript runtime error \'800a01c2\'

Wrong number of arguments or invalid property assignment: \'tempkurv\'

/butikk2/test.asp, line 4
--------

Set Session(\"kurv\") = CreateObject(\"Scripting.Dictionary\") er blevet udført i global.asa først.
Avatar billede kichian Nybegynder
22. juni 2001 - 12:07 #3
set tempkurv = session(\"kurv\")

Det giver i øvrigt hurtigt ringe performence ved mange brugere at bruge Dictionary Objektet som i en sessionsvariabel.
Avatar billede agony Nybegynder
22. juni 2001 - 12:47 #4
ja men kun hvis der er mange som har noget i deres kurv eller fylder det stort set intet.
Avatar billede kichian Nybegynder
22. juni 2001 - 13:37 #5
Det har intet med hvor meget det fylder eller ej.
Den ringere performence skyldes at du binder en brugers session til een \"thread\" (tråd) i webserveren. Svarende til at du kun kan gå til kasse 1 i dit supermarked selvom andre kasser er åbne og uden kø.
Alle der vil programmere noget \"seriøst\" i ASP bør nok læse:
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnasp/html/ASPtips.asp
Avatar billede agony Nybegynder
22. juni 2001 - 16:10 #6
kommer jo også lidt an på antallet af samtidige brugere og jeg tror ikke der er tale om et nyt amazone.com her, men det er selvfølgelig ingen undskyldning for ikke at lave ordentlig kode, men ud fra personlig erfaring ser jeg min løsning som brugbar.
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