somerandom Posted October 22, 2014 Share Posted October 22, 2014 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 More sharing options...
bsmither Posted October 22, 2014 Share Posted October 22, 2014 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. Link to comment https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/#findComment-1494439 Share on other sites More sharing options...
NotionCommotion Posted October 22, 2014 Share Posted October 22, 2014 What is the value of $_POST['quantity']? Is it an array? To check, use print_r() or var_dump(). Link to comment https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/#findComment-1494440 Share on other sites More sharing options...
somerandom89 Posted October 25, 2014 Share Posted October 25, 2014 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 https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/#findComment-1494660 Share on other sites More sharing options...
bsmither Posted October 25, 2014 Share Posted October 25, 2014 name="quantity"[<?php echo $row['menu_id']?>]" size="5" I don't like the quote mark between the word quantity and the open bracket. Link to comment https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/#findComment-1494668 Share on other sites More sharing options...
somerandom89 Posted October 25, 2014 Share Posted October 25, 2014 THANKS!!! That was it! Works like a charm. Link to comment https://forums.phpfreaks.com/topic/291999-trying-to-change-array-value/#findComment-1494669 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.