Yes, ArrayAppend() returns a boolean ... on a successful completion of the
append.

ArrayAppend() _should_ add a new index to the array, then it returns a TRUE.

As I wrote the above, I had another idea for a debugging test ... I ran an
output on the results of the arrayappend() and, in fact, it returned true
.. even though the new item is not showing up in the array.

Now this is weird -- the output for the cart is still showing only one item.
BUT, arrayLen() now returns a 2 (as it should) rather than 1, as it did
yesterday.  Which leads me back to looking at my output :-(

Well, OK, so I do an arrayLen() right before I loop through the array and I
get a 1 (while the one right after the append takes place returns 2).

Ummm ... still stumped ... time for lunch than more testing and hair
pulling.

H.


Howard Owens
Internet Operations Coordinator
www.insidevc.com
[EMAIL PROTECTED]
AIM: GoCatGo1956


> -----Original Message-----
> From: Jim McAtee [SMTP:[EMAIL PROTECTED]]
> Sent: Thursday, December 27, 2001 11:34 AM
> To:   CF-Talk
> Subject:      Re: Pulling My Hair Out (a shopping cart question)
> 
> Howard,
> 
> See Pascal's reply.  I was incorrect.  As Pascal said, ArrayAppend()
> returns
> Yes/No, depending on whether the append was successful.  Should be:
> 
> <cfset tmp = ArrayAppend(session.cart, session.item)>
> 
> Jim
> 
> 
> ----- Original Message -----
> From: "Owens, Howard" <[EMAIL PROTECTED]>
> To: "CF-Talk" <[EMAIL PROTECTED]>
> Sent: Thursday, December 27, 2001 11: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
> had
> 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
> cart
> > 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 something
> > > 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
> help
> > > 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