Home > Archive > PHP Language > October 2004 > Updating elements in an array
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Updating elements in an array
|
|
|
| Hi,
I am quite new to PHP, so appologies is this sounds too simple.
I am developing a shopping cart to be included in my website. When an item
is added to the basket, I use the following code to store the product id
number and quantity in an associated array:
$product_details = array("qty" => $quantity, "productID" => $product_id);
if(isset($_SESSION['cart'][$product_id])
)
{
//Increase quantity
$_SESSION['cart'][$product_id]['qty']+=$
product_details['qty'];
}
else
{
//Add a new element to the array
$_SESSION['cart'][$product_id]=$product_
details;
}
When the user views the basket, the following code displays the contents:
foreach($_SESSION['cart'] as $value)
{
// Lookup product information from the database - i.e. name, price etc,
//Ouptut HTML source to display this intormation
}
When I output the product information, there is a text box corrasponding to
each item that is initially populated with the quantity value which is
recalled from the associated array.
The user is able to adjust the figures in each of these text boxes to change
the quantity required of each item.
My question is, when the user clicks the 'Update Basket' command button, how
do I update the Qty field for each element in the array to reflect the new
quantity values from the text boxes on the form?
Many Thanks.
| |
| Janwillem Borleffs 2004-10-13, 8:55 pm |
| Rob wrote:
> I am quite new to PHP, so appologies is this sounds too simple.
>
> I am developing a shopping cart to be included in my website.
It's funny how many new users are building shopping carts...
> My question is, when the user clicks the 'Update Basket' command
> button, how do I update the Qty field for each element in the array
> to reflect the new quantity values from the text boxes on the form?
>
Assuming that the form method you are using is POST and that the input field
names equal the stored session keys and that only positive integers are
allowed, you could do something like the following:
foreach($_SESSION['cart'] as $k => $v) {
if (isset($_POST[$k])) {
if (preg_match("/^\d+$/", $qty = $_POST[$k])) {
$_SESSION['cart'][$k] = $v;
} else {
// Quantity is not a positive integer, handle the error
}
}
}
HTH;
JW
| |
| Janwillem Borleffs 2004-10-13, 8:55 pm |
| Janwillem Borleffs wrote:
> foreach($_SESSION['cart'] as $k => $v) {
> if (isset($_POST[$k])) {
> if (preg_match("/^\d+$/", $qty = $_POST[$k])) {
> $_SESSION['cart'][$k] = $v;
> } else {
> // Quantity is not a positive integer, handle the error
> }
> }
> }
>
>
Sorry, this should read:
foreach($_SESSION['cart'] as $k => $v) {
if (isset($_POST[$k])) {
if (preg_match("/^\d+$/", $qty = $_POST[$k])) {
$_SESSION['cart'][$k] = $qty;
} else {
// Quantity is not a positive integer, handle the error
}
}
}
JW
|
|
|
|
|