Session Variable for Shopping Cart

Discussion in 'ASP General' started by TRB_NV, Apr 12, 2006.

  1. TRB_NV

    TRB_NV Guest

    I'm losing information from my Session when I change pages or start the same
    page over again. I simplified the code so the example is really clear. The
    sample code that follows is supposed to generate a random number and put it
    into an Array and store it in the Session variable and then when it runs the
    next time, generate another random number and display the entire Array
    contents, by pulling the information out of the Session. I'd greatly
    appreciate someone with fresh eyes taking a look at this code. Thanks.

    <%@ LANGUAGE="VBSCRIPT" %>

    <%
    if Request.Form("clear") = "true" then
    Session.Contents.Remove("ShoppingCart")
    Session("ItemCount") = 0
    clearcart = ""
    end if

    dim cart(999,9)

    Randomize Timer
    r1 = Rnd
    r1 = r1 * 1000000
    intOrderID = 1000000 + Int (r1)

    intItemCount = Session("ItemCount")

    if intItemCount = 0 then
    intItemCount = 1
    Session("ItemCount") = intItemCount
    else
    intItemCount = intItemCount + 1
    Session("ItemCount") = intItemCount
    end if

    Session("ItemCount") = intItemCount

    cart(intItemCount,1)=intOrderID
    Session("ShoppingCart")=cart

    xcart=Session("ShoppingCart")

    for x = 1 to intItemCount
    response.write x & " " & xcart(x,1) & "<br>"
    next

    %>
    <form action="array.asp" method="post">
    <input type="hidden" name="clear" value="true">
    <input type="Submit" name="Submit" value="Clear Shopping Cart">
    </form>
    <form action="array.asp" method="post">
    <input type="hidden" name="clear" value="false">
    <input type="Submit" name="Submit" value="Reload">
    </form>
    TRB_NV, Apr 12, 2006
    #1
    1. Advertising

  2. "TRB_NV" <> wrote in message
    news:...
    > I'm losing information from my Session when I change pages or start the

    same
    > page over again. I simplified the code so the example is really clear.

    The
    > sample code that follows is supposed to generate a random number and put

    it
    > into an Array and store it in the Session variable and then when it runs

    the
    > next time, generate another random number and display the entire Array
    > contents, by pulling the information out of the Session. I'd greatly
    > appreciate someone with fresh eyes taking a look at this code. Thanks.
    >
    > <%@ LANGUAGE="VBSCRIPT" %>
    >
    > <%
    > if Request.Form("clear") = "true" then
    > Session.Contents.Remove("ShoppingCart")
    > Session("ItemCount") = 0
    > clearcart = ""
    > end if
    >
    > dim cart(999,9)
    >
    > Randomize Timer
    > r1 = Rnd
    > r1 = r1 * 1000000
    > intOrderID = 1000000 + Int (r1)
    >
    > intItemCount = Session("ItemCount")
    >
    > if intItemCount = 0 then
    > intItemCount = 1
    > Session("ItemCount") = intItemCount
    > else
    > intItemCount = intItemCount + 1
    > Session("ItemCount") = intItemCount
    > end if
    >
    > Session("ItemCount") = intItemCount
    >
    > cart(intItemCount,1)=intOrderID
    > Session("ShoppingCart")=cart
    >
    > xcart=Session("ShoppingCart")
    >
    > for x = 1 to intItemCount
    > response.write x & " " & xcart(x,1) & "<br>"
    > next
    >
    > %>
    > <form action="array.asp" method="post">
    > <input type="hidden" name="clear" value="true">
    > <input type="Submit" name="Submit" value="Clear Shopping Cart">
    > </form>
    > <form action="array.asp" method="post">
    > <input type="hidden" name="clear" value="false">
    > <input type="Submit" name="Submit" value="Reload">
    > </form>
    >



    You have a hidden field whose value is always true. Hence the code at the
    top of your page that resets everything always runs.
    Anthony Jones, Apr 12, 2006
    #2
    1. Advertising

  3. TRB_NV

    TRB_NV Guest

    Remarked out the part about clearing the Session contents, but I'm still not
    getting the data from the Array I stored in it:

    'if Request.Form("clear") = "true" then
    ' Session.Contents.Remove("ShoppingCart")
    ' Session("ItemCount") = 0
    ' clearcart = ""
    'end if

    From everything I've read, it appears that I can store an Array in a Session
    variable and recall it. Some how it's not working properly.
    TRB_NV, Apr 12, 2006
    #3
  4. "TRB_NV" <> wrote in message
    news:%239%...
    > Remarked out the part about clearing the Session contents, but I'm still

    not
    > getting the data from the Array I stored in it:
    >
    > 'if Request.Form("clear") = "true" then
    > ' Session.Contents.Remove("ShoppingCart")
    > ' Session("ItemCount") = 0
    > ' clearcart = ""
    > 'end if
    >
    > From everything I've read, it appears that I can store an Array in a

    Session
    > variable and recall it. Some how it's not working properly.
    >
    >


    You've got these lines in your code too

    Session("ShoppingCart")=cart

    xcart=Session("ShoppingCart")

    Are you saying xcart does contain the same data as cart?

    What if you change this to:-

    xcart = cart does it still fail?
    Anthony Jones, Apr 12, 2006
    #4
  5. TRB_NV

    Mike Brind Guest

    TRB_NV wrote:
    > I'm losing information from my Session when I change pages or start the same
    > page over again. I simplified the code so the example is really clear. The
    > sample code that follows is supposed to generate a random number and put it
    > into an Array and store it in the Session variable and then when it runs the
    > next time, generate another random number and display the entire Array
    > contents, by pulling the information out of the Session. I'd greatly
    > appreciate someone with fresh eyes taking a look at this code. Thanks.
    >
    > <%@ LANGUAGE="VBSCRIPT" %>
    >
    > <%
    > if Request.Form("clear") = "true" then
    > Session.Contents.Remove("ShoppingCart")
    > Session("ItemCount") = 0
    > clearcart = ""
    > end if
    >
    > dim cart(999,9)
    >
    > Randomize Timer
    > r1 = Rnd
    > r1 = r1 * 1000000
    > intOrderID = 1000000 + Int (r1)
    >
    > intItemCount = Session("ItemCount")
    >
    > if intItemCount = 0 then
    > intItemCount = 1
    > Session("ItemCount") = intItemCount
    > else
    > intItemCount = intItemCount + 1
    > Session("ItemCount") = intItemCount
    > end if
    >
    > Session("ItemCount") = intItemCount
    >
    > cart(intItemCount,1)=intOrderID
    > Session("ShoppingCart")=cart
    >
    > xcart=Session("ShoppingCart")
    >
    > for x = 1 to intItemCount
    > response.write x & " " & xcart(x,1) & "<br>"
    > next
    >
    > %>
    > <form action="array.asp" method="post">
    > <input type="hidden" name="clear" value="true">
    > <input type="Submit" name="Submit" value="Clear Shopping Cart">
    > </form>
    > <form action="array.asp" method="post">
    > <input type="hidden" name="clear" value="false">
    > <input type="Submit" name="Submit" value="Reload">
    > </form>


    You're not preserving the array. Every time the page loads, you create
    an array called cart, with 10 columns and 100 rows. Arrays are empty
    when you first declare them. All you are doing is populating row
    intItemCount with a value. That's why, as you refresh the page, you
    see one (changing) value slowly crawling down the page.

    Declaring such a large array as you do, when you can only use 2 cols,
    is massively expensive on memory Each element in an array is a
    variant, and is 16 bytes. You have created a structure in memory that
    will consume 10*100*16 bytes - that's 15.625 kilobytes per session.

    It's much easier, and cheaper to store your order numbers in a comma
    delimited string in one session variable, along with a counter to tell
    you how many there are. Then you can use the split function to convert
    the string to a one-dimensional array and iterate through the elements.

    <%
    Dim orders, i, r1, intOrderID
    Randomize Timer
    r1 = Rnd
    r1 = r1 * 1000000
    intOrderID = 1000000 + Int (r1)

    If Session("Item") = "" Then
    Session("Item") = Session("Item") & intOrderID
    Session("ItemCount") = 1
    Else
    Session("ItemCount") = Session("ItemCount") + 1
    Session("Item") = Session("Item") & "," & intOrderID
    End If

    orders = split(Session("Item"),",")
    For i = 0 to Session("ItemCount")-1
    response.write i + 1 & " " & orders(i) & "<br>"
    Next
    %>

    --
    Mike Brind
    Mike Brind, Apr 12, 2006
    #5
  6. TRB_NV

    Mike Brind Guest

    Mike Brind wrote:
    > TRB_NV wrote:
    > > I'm losing information from my Session when I change pages or start the same
    > > page over again. I simplified the code so the example is really clear. The
    > > sample code that follows is supposed to generate a random number and put it
    > > into an Array and store it in the Session variable and then when it runs the
    > > next time, generate another random number and display the entire Array
    > > contents, by pulling the information out of the Session. I'd greatly
    > > appreciate someone with fresh eyes taking a look at this code. Thanks.
    > >
    > > <%@ LANGUAGE="VBSCRIPT" %>
    > >
    > > <%
    > > if Request.Form("clear") = "true" then
    > > Session.Contents.Remove("ShoppingCart")
    > > Session("ItemCount") = 0
    > > clearcart = ""
    > > end if
    > >
    > > dim cart(999,9)
    > >
    > > Randomize Timer
    > > r1 = Rnd
    > > r1 = r1 * 1000000
    > > intOrderID = 1000000 + Int (r1)
    > >
    > > intItemCount = Session("ItemCount")
    > >
    > > if intItemCount = 0 then
    > > intItemCount = 1
    > > Session("ItemCount") = intItemCount
    > > else
    > > intItemCount = intItemCount + 1
    > > Session("ItemCount") = intItemCount
    > > end if
    > >
    > > Session("ItemCount") = intItemCount
    > >
    > > cart(intItemCount,1)=intOrderID
    > > Session("ShoppingCart")=cart
    > >
    > > xcart=Session("ShoppingCart")
    > >
    > > for x = 1 to intItemCount
    > > response.write x & " " & xcart(x,1) & "<br>"
    > > next
    > >
    > > %>
    > > <form action="array.asp" method="post">
    > > <input type="hidden" name="clear" value="true">
    > > <input type="Submit" name="Submit" value="Clear Shopping Cart">
    > > </form>
    > > <form action="array.asp" method="post">
    > > <input type="hidden" name="clear" value="false">
    > > <input type="Submit" name="Submit" value="Reload">
    > > </form>

    >
    > You're not preserving the array. Every time the page loads, you create
    > an array called cart, with 10 columns and 100 rows. Arrays are empty
    > when you first declare them. All you are doing is populating row
    > intItemCount with a value. That's why, as you refresh the page, you
    > see one (changing) value slowly crawling down the page.
    >
    > Declaring such a large array as you do, when you can only use 2 cols,
    > is massively expensive on memory Each element in an array is a
    > variant, and is 16 bytes. You have created a structure in memory that
    > will consume 10*100*16 bytes - that's 15.625 kilobytes per session.
    >


    Actually, the array you create is 10 cols by 1 thousand rows so it's
    156.25 kilobytes in memory! If you have a business plan that shows you
    will get 1000 orders per customer per session, lemme see it!

    ;-)

    --
    Mike Brind
    Mike Brind, Apr 13, 2006
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. GeorgeF

    Perl Shopping Cart Scripts

    GeorgeF, May 21, 2005, in forum: Perl
    Replies:
    1
    Views:
    3,250
    James T
    May 22, 2005
  2. Paul Hobbs

    Shopping Cart - database vs session

    Paul Hobbs, Dec 4, 2003, in forum: ASP .Net
    Replies:
    2
    Views:
    2,751
    Jaxon
    Dec 4, 2003
  3. Adil Akram

    Shopping cart, session on SSL

    Adil Akram, Sep 26, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    604
    Hans Kesting
    Sep 27, 2004
  4. anony
    Replies:
    0
    Views:
    400
    anony
    Nov 11, 2004
  5. TRB_NV

    Session based Shopping Cart

    TRB_NV, May 26, 2006, in forum: ASP General
    Replies:
    0
    Views:
    147
    TRB_NV
    May 26, 2006
Loading...

Share This Page