From: Shawn McKenzie on 24 Oct 2009 13:01 Ron Piggott wrote: > The code I have so far for orders is below. When a product hasn't been > added it does what I want it to --- in giving the message "Your shopping > cart is empty". When a product is added, but then the user changes > their mind I use the following lines of code to remove the selection: > > UNSET($_SESSION['order'][$reference]['quantity']); > UNSET($_SESSION['order'][$reference]); > > It still leaves the variable $_SESSION['order'] as an array, even if > there are no selections in it. The PHP command is_array is useless of > weed out when there are no products. > > What I would like to have happen is if the shopping cart is empty then > the message "Your shopping cart is empty" be displayed 100% of the time. > How do I achieve this? What changes to my code below need to happen? > > <?php > if ( isset($_SESSION['order']) ) { > #customer has begun creating order > > foreach ($_SESSION['order'] AS $key => $value ) { > echo "Product: " . $key . " Quantity: " . > $_SESSION['order'][$key]['quantity'] . "<br>\r\n"; > } > > } else { > #no products selected > > echo "<ul class=\"lists\">\r\n"; > echo "<li>Your shopping cart is empty</li>\r\n"; > echo "</ul>\r\n"; > > } > Or use unset, but unset the entire order: unset($_SESSION['order']) -- Thanks! -Shawn http://www.spidean.com
From: Jim Lucas on 24 Oct 2009 13:35 Ron Piggott wrote: > The code I have so far for orders is below. When a product hasn't been > added it does what I want it to --- in giving the message "Your shopping > cart is empty". When a product is added, but then the user changes > their mind I use the following lines of code to remove the selection: > > UNSET($_SESSION['order'][$reference]['quantity']); > UNSET($_SESSION['order'][$reference]); > > It still leaves the variable $_SESSION['order'] as an array, even if > there are no selections in it. The PHP command is_array is useless of > weed out when there are no products. > > What I would like to have happen is if the shopping cart is empty then > the message "Your shopping cart is empty" be displayed 100% of the time. > How do I achieve this? What changes to my code below need to happen? > > <?php > if ( isset($_SESSION['order']) ) { > #customer has begun creating order > > foreach ($_SESSION['order'] AS $key => $value ) { > echo "Product: " . $key . " Quantity: " . > $_SESSION['order'][$key]['quantity'] . "<br>\r\n"; > } > > } else { > #no products selected > > echo "<ul class=\"lists\">\r\n"; > echo "<li>Your shopping cart is empty</li>\r\n"; > echo "</ul>\r\n"; > > } > Try this <?php .... if ( isset($_SESSION['order']) && # Does it exist is_array($_SESSION['order']) && # Is it an array count($_SESSION['order']) > 0 # Does it have at least 1 element ) { #customer has begun creating order foreach ($_SESSION['order'] AS $key => $value ) { echo "Product: {$key} Quantity: {$_SESSION['order'][$key]['quantity']}<br>\r\n"; } } else { #no products selected echo "<ul class=\"lists\">\r\n"; echo "<li>Your shopping cart is empty</li>\r\n"; echo "</ul>\r\n"; } .... ?> > -----Original Message----- > From: Martin Scotta <martinscotta(a)gmail.com> > To: ash(a)ashleysheridan.co.uk > Cc: ron.piggott(a)actsministries.org, PHP General > <php-general(a)lists.php.net> > Subject: Re: [PHP] Array > Date: Sat, 24 Oct 2009 11:50:14 -0300 > > > > On Sat, Oct 24, 2009 at 7:59 AM, Ashley Sheridan > <ash(a)ashleysheridan.co.uk> wrote: > On Sat, 2009-10-24 at 06:57 -0400, Ron Piggott wrote: > > > The following line gives me an error message when there aren't > any > > values in the array --- how do I accommodate this? > > > > Warning: Invalid argument supplied for foreach() > > > > foreach ($_SESSION['order'] AS $key => $value ) { > > > > > > > > > Do an isset() on $_SESSION['order'] first to determine if the > variable > even exists, then do is_array() to determine if it's an array or > not > before trying to iterate it. My guess is that $_SESSION['order'] > isn't > an array all the time. > > > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > > > > foreach works with array and instances. > Unless the class implements Transversable, it's public properties are > used on the loop. > > > foreach($object as $prop => $value ) > //php translates the foreach into something like this... > foreach(get_object_vars($object) as $prop => $value ) > -- Jim Lucas "Some men are born to greatness, some achieve greatness, and some have greatness thrust upon them." Twelfth Night, Act II, Scene V by William Shakespeare
First
|
Prev
|
Pages: 1 2 Prev: all local sites stopped working ... Next: cannot compile PHP 5.2.11 on Mac OS X 10.6.1 |