Jump to content

Trying to change array value


somerandom
Go to solution Solved by somerandom89,

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'

Edited by somerandom
Link to comment
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.

Edited by bsmither
Link to comment
Share on other sites

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>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.