You are here: Re: [PHP] array, trouble updating « PHP « IT news, forums, messages
Re: [PHP] array, trouble updating

Posted by Jason Wong on 10/20/79 11:16

On Tuesday 17 May 2005 21:18, mayo wrote:
> I usually work with cold fusion and took on a little project to get my
> feet wet in php and am spinning my wheels. What I thought might be
> difficult was easy and what I thought would be a piece of cake has
> caused me much grief over the last few days.

It appears that your overall problem is a misunderstanding of how arrays
work in PHP and how easy it is to manipulate them.

First:

> if (session_is_registered('ses_basket_items')){

In general, for practical purposes (if PHP is installed using the
recommended default setup, ie register_globals disabled),
session_is_registered() is deprecated and should not be used. Use:

if (isset($_SESSION['ses_basket_items'])) { ... };


Second:

> if ($action == "empty")
> {
> while ($ses_basket_items > -1)
> {
> array_splice ($ses_basket_name,
> $ses_basket_items, 1);
> array_splice ($ses_basket_amount,
> $ses_basket_items, 1);
> array_splice ($ses_basket_price,
> $ses_basket_items, 1);
> array_splice ($ses_basket_id,
> $ses_basket_items, 1);
> $ses_basket_items--;
> }
> }

You seem to be using multiple single dimension arrays to store your basket
details. That is not the optimal way of doing things. You should have a
*single* multi dimension array, there are many ways to do this, here's a
couple:

1)
$basket[1] = array('name' => 'name of product',
'id' => 'product id',
'price' => 'price of product',
'amount' => 'quantity required');
$basket[2] = array('name' => 'name of product',
'id' => 'product id',
'price' => 'price of product',
'amount' => 'quantity required');

2)
$basket['a_product_id'] = array('name' => 'name of product',
'price' => 'price of product',
'amount' => 'quantity required');

$basket['another_product_id'] = array('name' => 'name of product',
'price' => 'price of product',
'amount' => 'quantity required');


OK, so how do you operate on them? In the examples below 2 forms will be
given corresponding to how you defined the arrays as per above.

To remove an item:

1) unset($basket[n]); // where n is an integer
2) unset($basket['product_id']; // if product_id is an integer
// then you don't need the single-quotes
// note that also applies when first
// define the array, ie:
// $basket[product_id] = array(...);

To change an attribute, eg the amount:

1) $basket[n]['amount'] = 5;
2) $basket['product_id'] = 10;


To display an attribute, eg price:

1) echo $basket[n]['price'];
2) echo $basket['product_id']['price'];


When playing around with arrays, print_r() is your friend, use it
liberally.

--
Jason Wong -> Gremlins Associates -> www.gremlins.biz
Open Source Software Systems Integrators
* Web Design & Hosting * Internet & Intranet Applications Development *
------------------------------------------
Search the list archives before you post
http://marc.theaimsgroup.com/?l=php-general
------------------------------------------
New Year Resolution: Ignore top posted posts

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация