Jump to content

Trying to change array value


somerandom

Recommended Posts

Can someone tell me why this code will not work? It's supposed to update the quantity in a shopping cart by taking the user input and changing the value of the array. I can add items by clicking the 'add to cart' button, but as you know that only works one at a time. Once you make a selection you have the opportunity to go to the cart and modify the quantity by entering in a numeric value; so instead of clicking 10 times you can just type 1, 0 to get to 10. Is there any other info I can provide to convey what I'm trying to do? I'm new to php so I don't know why it's not working, this looks right according to php.net but something is wrong.

 

 

 

if(isset($_POST['submit'])) {

 

foreach($_POST['quantity'] as $key => $value) {

 

if($value==0) {

 

unset($_SESSION['cart'][$key]);

 

}else{

 

$_SESSION['cart']['$key']['quantity']=$value;

 

}

 

}

 

}

 

 

 

errors below:

 

 

Invalid argument supplied for foreach()

 

illegal string offset 'cart'

Link to comment
https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/
Share on other sites

I will assume the code above is an accurate representation of what you actually have. So,

$_SESSION['cart']['$key']['quantity']=$value;

The $key is delimited by apostrophes (single quotes). Thus, PHP will not treat this as a variable name.

 

In the HTML <form> block, your <input name="quantity"> is not structured as an array. If these inputs are meant to be an array, then the tag should be <input name="quantity[3]"> where 3 is the key index into the cart's array of inventory - probably the product_id value.

I had to create a new account because the password reset function on this site doesn't work, I could never get a reset email, tried it like 10 times. Buy anyway...

 

 

Yeah, I typed the code wrong it's written the way you said it should be but I still get the errors. As for the html part here it is.

 

if(isset($_POST['submit'])){

 

foreach($_POST['quantity'] as $key => $val) {

if($val==0) {

unset($_SESSION['cart'][$key]);

}else{

$_SESSION['cart'][$key]['quantity']=$val;

}

}var_dump($_POST['quantity']); // I tried the suggestion Notion Commotion mentioned and I got this: string '2' (length=1)

 

}

 

 

 

<td><?php echo $row['item']?></td>

<td><input type="text" name="quantity"[<?php echo $row['menu_id']?>]" size="5" value="<?php echo $_SESSION['cart'][$row['menu_id']]['quantity']?>"/></td>

<td><?php echo "$". $row['price']?></td>

<td><?php echo $_SESSION['cart'][$row['menu_id']]['quantity']*$row['price']?></td>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.