Hey Everyone, So I'm making a session shopping cart for one of my clients and I got it pretty much done but I ran into a few problems. If you go to http://kawellphotography.com/prints_main_categories.htm select a portfolio, then a picture and click "add to cart" you will see that this page gets added to the cart. Now, go back to that first page and add 2 (or more) different photos. So when you go back to the cart you should have 3 or more line items (all data is now correct). Now without changing anything in the shopping cart form click "Update Cart". You will now notice that I outputted a few lines to track the data. You can now see the values from the form, values of the session data before the update, and the values after the update. Notice that items 2 and 3 do NOT have the img_size variable in the session before the update, but then after the update the values are put in. BUT when you get down to the form area (where I printed out more information) you can see that just the second item doesn't have the img_size variable. Next, change the last item size to the opposite choice in the drop down and select "Update Cart" again. Doing this changes BOTH the 1st and the 3rd item, the 2nd item still doesn't have a size value. Lastly...go back to the portfolio choices and add another image to the cart (a totally new item). When you add it you will get an error of: Fatal error: [] operator not supported for strings in /var/www/html/cart.php on line 35. Line 35 is: $_SESSION["img_size"][] = 1; SO...I know it's probably simple (or maybe not) but I haven't worked with sessions much and I have no idea where to go from here. So I would greatly appriciate if I could get this solved as soon as possible. Please do not ask why I can't do this another way (like with a database) the customer wanted this done very cleanly without a database of any kind. I have included the full cart.php below. Thank you for your time, -Chris [code=php:0]<?php session_start(); include "header.txt"; switch($action){ case 'add': if (!isset($_SESSION["items"])) { $_SESSION["items"] = array(); $_SESSION["qty"] = array(); $_SESSION["img_size"] = array(); } $page = $_SERVER['HTTP_REFERER']; $page = str_replace('.htm', '', $page); $page = str_replace('www.', '', $page); $page = str_replace('http://', '', $page); //$page = str_replace('kawellphotography.com/', '', $page); $page = str_replace('localhost:8080/www/htdocs/kawell/', '', $page); $page = str_replace('prints_category_', '', $page); $page = str_replace('_', ' ', $page); $i=0; while ($i<count($_SESSION["items"]) && $_SESSION["items"][$i] != $page) $i++; if ($i < count($_SESSION["items"])) //increase current product's item quantity { $_SESSION["qty"][$i]++; } else //no such product in the cart - add it { $_SESSION["items"][] = $page; $_SESSION["qty"][] = 1; $_SESSION["img_size"][] = 1; } echo show_cart(); break; case 'remove': $i = $_GET['remove']; unset($_SESSION["items"][$i]); unset($_SESSION["qty"][$i]); unset($_SESSION["img_size"][$i]); echo show_cart(); break; case 'process': //see what the form wants to do $button = $_POST['button']; if($button == "Update Cart"){ //loop through items $count_items = count($_SESSION["items"]); echo "<br />This does the update.<br />"; $x = 0; while ($x < $count_items): $count = $_POST['count'.$x]; $img_size = $_POST['img_size'.$x]; echo "Info from form: Ses#: $x - img_size: $img_size - Count: $count<br />"; echo "Info from session: Ses#: $x - img_size: ".$_SESSION["img_size"][$x]." - Count: ".$_SESSION["qty"][$x]."<br />"; $_SESSION["qty"][$x] = $count; $_SESSION["img_size"][$x] = $img_size; echo "Info in session after update: Ses#: $x - img_size: ".$_SESSION["img_size"][$x]." - Count: ".$_SESSION["qty"][$x]."<br /><br />"; $x++; endwhile; echo show_cart(); }elseif($button == "Clear Cart"){ unset($_SESSION["items"]); unset($_SESSION["qty"]); unset($_SESSION["img_size"]); session_destroy(); echo show_cart(); }else{ //Complete checkout and clear $email = $_POST['email']; $youremail="XXXXXXXXXXX"; // This is the address that the information submitted will be sent to. $emailsubject="Order from KaWell Photography"; // This will the email's subject $from_who="$email"; $name = $_POST['name']; $address = $_POST['address']; $city = $_POST['city']; $state = $_POST['state']; $zip = $_POST['zip']; $phone = $_POST['phone']; if ($email>"" && $name>"" && $phone>"") { $mailbody="Name:\n=================\n$name\n\n"; $mailbody.="Email:\n=================\n$email\n\n"; $mailbody.="Phone #:\n=================\n$phone\n\n"; $mailbody.="Address:\n=================\n$address\n$city, $state $zip\n\n"; $count_items = count($_SESSION["items"]); $x = 0; $grand_total = 0; $mailbody.= "Item - Size - Qty - Total\n"; while ($x < $count_items): $mailbody.= $_SESSION["items"][$x]." - "; if($_SESSION["img_size"][$x] == 1){ $mailbody.= "16x20";}else{$mailbody.= "24x30";} //find total dollars if($_SESSION["img_size"][$x] == 1){ $total = $_SESSION["qty"][$x] * 700; $grand_total += $total; }else{ $total = $_SESSION["qty"][$x] * 900; $grand_total += $total; } $mailbody.= " - ".$_SESSION["qty"][$x]." - $$total\n"; $x++; endwhile; $mailbody.= "\n\nGrand Total - $$grand_total\n"; $pagebody="Name:\n<br />=================\n<br />$name\n\n<br /><br />"; $pagebody.="Email:\n<br />=================\n<br />$email\n\n<br /><br />"; $pagebody.="Phone #:\n<br />=================\n<br />$phone\n\n<br /><br />"; $pagebody.="Address:\n<br />=================\n<br />$address\n<br />$city, $state $zip\n\n<br /><br />"; $count_items = count($_SESSION["items"]); $x = 0; $grand_total = 0; $pagebody.= "<table>\n"; $pagebody.= "<tr bgcolor=\"#CCCCCC\"><td>Item</td><td>Size</td><td>Qty</td><td>Total</td></tr>\n"; while ($x < $count_items): $pagebody.= "<tr style=\"color:#FFFFFF;\">\n"; $pagebody.= "<td>".$_SESSION["items"][$x]."</td><td>"; if($_SESSION["img_size"][$x] == 1){ $pagebody.= "16x20";}else{$pagebody.= "24x30";} //find total dollars if($_SESSION["img_size"][$x] == 1){ $total = $_SESSION["qty"][$x] * 700; $grand_total += $total; }else{ $total = $_SESSION["qty"][$x] * 900; $grand_total += $total; } $pagebody.= "</td><td>".$_SESSION["qty"][$x]."</td><td>$$total</td>\n"; $pagebody.= "</tr>\n"; $x++; endwhile; $pagebody.= "<tr bgcolor=\"#CCCCCC\"><td></td><td></td><td>Grand Total</td><td>$$grand_total</td></tr>\n"; $pagebody.= "</table>"; mail("$youremail", "$emailsubject", "$mailbody", "From: $from_who"); // Send the email. echo "<br /><br />Please print the following form for you records.<br /><br />"; echo $pagebody; //clear cart unset($_SESSION["items"]); unset($_SESSION["qty"]); unset($_SESSION["img_size"]); session_destroy(); }else{ echo "<br /><br /><div style=\"color:red;\">You have not filled something in correctly.</div><br /><br />"; echo "<META HTTP-EQUIV=Refresh CONTENT=\"2; URL=cart.php\">"; } } break; default: echo show_cart(); break; } function show_cart(){ $count_items = count($_SESSION["items"]); if($count_items == 0){ echo "<br /><br />Your cart is empty.<br /><br />Please add something."; }else{ $x = 0; $grand_total = 0; echo "<br />Show cart:<br />"; echo "<form method=\"post\" action=\"cart.php\"><table>\n"; echo "<tr bgcolor=\"#CCCCCC\"><td>Item</td><td>Size</td><td>Qty</td><td>Total</td><td>Delete</td></tr>\n"; while ($x < $count_items): echo "<tr style=\"color:#FFFFFF;\">\n"; echo "Information to use in form: Ses#: $x - img_size: ".$_SESSION["img_size"][$x]." - Count: ".$_SESSION["qty"][$x]."<br />\n"; echo "<td>".$_SESSION["items"][$x]."</td><td>\n<select name=\"img_size$x\">\n"; if($_SESSION["img_size"][$x] == 1){ echo "<option value=\"1\">16x20</option>\n<option value=\"2\">24x30</option>\n";}else{echo "<option value=\"2\">24x30</option>\n<option value=\"1\">16x20</option>\n";} //find total dollars if($_SESSION["img_size"][$x] == 1){ $total = $_SESSION["qty"][$x] * 700; $grand_total += $total; }else{ $total = $_SESSION["qty"][$x] * 900; $grand_total += $total; } echo "</select>\n<br />SES[\"img_size\"][$x] = ".$_SESSION["img_size"][$x]."</td><td><input type=\"text\" name=\"count$x\" size=\"5\" value=\"".$_SESSION["qty"][$x]."\"></td><td>$$total</td><td><a href=\"cart.php?action=remove&remove=$x\"><img src=\"remove.jpg\" border=0 alt=\"Delete\"></a></td>\n"; echo "</tr>\n"; $x++; endwhile; echo "<tr bgcolor=\"#CCCCCC\"><td></td><td></td><td>Grand Total</td><td>$$grand_total</td><td></td></tr>\n"; echo "<tr> <td colspan=\"4\"> <input type=\"submit\" name=\"button\" value=\"Update Cart\"> <input type=\"submit\" name=\"button\" value=\"Clear Cart\"> </td> </tr> <tr> <td colspan=\"4\"> <table border=\"0\" cellspacing=\"2\" cellpadding=\"4\" style=\"color:#FFFFFF;\"> <tr> <td colspan=2><br /><br />To complete your order please fill out the following and click \"Complete Checkout\"</td> </tr> <tr> <td style=\"text-align:right;\">Name: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"name\" size=\"20\"> *</td> </tr> <tr> <td style=\"text-align:right;\">Phone #: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"phone\" size=\"20\"> *</td> </tr> <tr> <td style=\"text-align:right;\">E-Mail: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"email\" size=\"20\"> *</td> </tr> <tr> <td style=\"text-align:right;\">Address: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"address\" size=\"20\"></td> </tr> <tr> <td style=\"text-align:right;\">City: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"city\" size=\"20\"></td> </tr> <tr> <td style=\"text-align:right;\">State: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"state\" size=\"20\"></td> </tr> <tr> <td style=\"text-align:right;\">Zip: </td> <td style=\"text-align:left;\"><input type=\"text\" name=\"zip\" size=\"20\"></td> </tr> </table> </td> </tr> <td colspan=\"4\"> <input type=\"submit\" value=\"Complete Checkout\"> <input type=\"hidden\" name=\"action\" value=\"process\"> </td> </tr> </table> </form><br /><br />"; } } include "footer.txt"; ?>[/code]