Just a small bug that I found. If you add an item to the cart, and do not
make any changes and hit update, you get an error You might want to
<cfparam> that checkbox



Error resolving parameter FORM.REMOVE


The specified form field cannot be found. This problem is very likely due
 to
the fact that you have misspelled the form field name.


The error occurred while evaluating the expression:


 form.remove=ListSort(form.remove, "numeric", "desc")



Doug

----- Original Message -----
From: "Owens, Howard" <[EMAIL PROTECTED]>
To: "CF-Talk" <[EMAIL PROTECTED]>
Sent: Thursday, December 27, 2001 10:29 AM
Subject: RE: Pulling My Hair Out (a shopping cart question)


> Jim:
>
> Thanks for responding (and thank you to all who responded).
>
> I appreciate the pointer on CFLock timeouts. Also I like the more
simplified
> code.
>
> I've implemented a version of your simplified code.  The only thing I h
ad
to
> do different than you was retain the conditional with the CFElse for
whether
> it's a new cart or not.  I was getting an error without the either/or
> option.
>
> I was hopeful that changing
>
> session.cartItem= "etc"
>
> to
>
> session.cart="etc"
>
> would fix my problem.
>
> But I get an error if I do that.
>
> For example:
>
> An error occurred while evaluating the expression:
>   FindItem.RecordCount+1 IS ArrayLen(session.cart)
> Error near line 90, column 30.
> Parameter 1 of function ArrayLen which is now "YES" must be an indexed
> object such as an array or a query column
>
>
> That line part of a conditional that makes sure duplicate items are not
> added to the shopping cart if user hits the reload/refresh button.
>
> If you want to see my code in working action, go to
> http://recordoutlet.com.onemerchant.com/  This is a site still under
> development, but the shopping cart works (it's not the site that I'm
> currently having trouble with).  I initially developed this shopping ca
rt
> code for this site and the copied it pretty much verbatim (except for
> changing variable names) for the newer site I'm working on.
>
> H.
>
>
>
> Howard Owens
> Internet Operations Coordinator
> www.insidevc.com
> [EMAIL PROTECTED]
> AIM: GoCatGo1956
>
>
> > -----Original Message-----
> > From: Jim McAtee [SMTP:[EMAIL PROTECTED]]
> > Sent: Wednesday, December 26, 2001 5:22 PM
> > To: CF-Talk
> > Subject: Re: Pulling My Hair Out (a shopping cart question)
> >
> > ----- Original Message -----
> > From: "Owens, Howard" <[EMAIL PROTECTED]>
> > To: "CF-Talk" <[EMAIL PROTECTED]>
> > Sent: Wednesday, December 26, 2001 5:36 PM
> > Subject: Pulling My Hair Out (a shopping cart question)
> >
> >
> > > <cflock timeout="#createtimespan(0,0,30,0)#"
> > > name="#session.sessionID#"
> > >         type="EXCLUSIVE">
> >
> > A cflock timeout value is specified in seconds.  Using CreateTimeSpan
()
> > with
> > 30 minutes gives you a CF date/time object of 1/48th, or 0.625.  Just
> > specify a whole number of seconds.  I've never really seen a guide to
> > determining intelligent cflock timeout values, so I just use somethin
g
> > like
> > 5 or 10 seconds.
> >
> > > session.cart = ArrayNew(1);
> > > session.item = StructNew();
> > > session.item.PRODUCT_ID = 0;
> > > session.item.NAME = "#FindItem.SONG_TITLE#";
> > > session.item.DESCRIPTION = "#FindItem.ARTIST_FIRST_NAME#
> > > #FindItem.ARTIST_LAST_NAME#";
> > > session.item.QUANTITY = 1;
> > > session.item.PRICE = "#request.songprice#";
> > > session.item.ITEMTOTAL = "3";
> > > session.item.SONG_ID = "#FindItem.SONG_ID#";
> >
> > In this block of code, session.item is just used as a temporary
variable,
> > so
> > create it in the variables (or the request) scope.  As a rule, you
should
> > minimize the amount of code encapsulated by a cflock, so this would h
elp
> > toward that goal, since you can create and define the struct outside 
of
> > the
> > lock.
> >
> > >
> > > session.CartItems = ArrayAppend(session.cart, session.item);
> > >
> >
> > Could this be the source of the problems you're having?  Did you mean
 to
> > do
> > this, or do you mean:
> >
> > session.cart = ArrayAppend(session.cart, session.item);
> >
> >
> > Simplified, the code becomes something like:
> >
> > <cfscript>
> > item = StructNew();
> > item.PRODUCT_ID = 0;
> > item.NAME = "#FindItem.SONG_TITLE#";
> > item.DESCRIPTION = "#FindItem.ARTIST_FIRST_NAME#
> > #FindItem.ARTIST_LAST_NAME#";
> > item.QUANTITY = 1;
> > item.PRICE = "#request.songprice#";
> > item.ITEMTOTAL = "3";
> > item.SONG_ID = "#FindItem.SONG_ID#";
> > </cfscript>
> >
> > <cflock name="#session.sessionID#" type="EXCLUSIVE" timeout="5"
>
> >   <!--- If no shopping cart exists, create one --->
> >   <cfparam name="session.newcart" default="no">
> >   <cfif session.newcart is "no">
> >     <cfset session.cart = ArrayNew(1)>
> >     <cfset session.newcart = "yes">
> >   </cfif>
> >   <!--- Add item to the cart --->
> >   <cfset session.cart = ArrayAppend(session.cart, item)>
> > </cflock>
> >
> >
> > Jim
> >
> 
______________________________________________________________________
Get Your Own Dedicated Windows 2000 Server
  PIII 800 / 256 MB RAM / 40 GB HD / 20 GB MO/XFER
  Instant Activation � $99/Month � Free Setup
  http://www.pennyhost.com/redirect.cfm?adcode=coldfusionb
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to