MrL8Knight Posted March 6, 2006 Share Posted March 6, 2006 Hello,I am trying to build a simple php form based shopping cart using a cookie with arrays. I need to use 1 cookie because each order will have over 20 items. With that said, I realize I need to serialize the data to put the array into the cookie. That part of my code is working just fine and displaying fine. The problem I’m having is when I try to unserialize and display; the data does not appear. If I remove my unserialize command line (see page 3) the data displays just fine with the serialization. So basically I need help unserializing and displaying the data so I can display it in my shopping cart nice and clean.[b]Here is page 1(index2.php) which is a form that asks for opening name, width and height.[/b]<?phpif (isset($_COOKIE['count'])) { $count = $_COOKIE['count'] + 1;} else { $count = 1;}setcookie('count', $count, time()+3600);setcookie("Cart[$count]", $item, time()+3600);echo "$count";echo "<form action='add.php?id=$count' method='post'> <input name='name' type='hidden' value='$count'> Opening name<br> <input name='name' type='text' size='30'> </b></p> <p><b> Width<br> <input name='w' type='text' size='30'> </b></p> <p><b> Height<br> <input name='h' type='text' size='30'> </b></p> <p> <input type='image' src='../images/Start-Order.gif' name='submit' alt='Start Order'> <br> </p> </form>"; ?>[b]The second page(add.php) receives the data, creates a serialized array and adds it to the cookie just fine.[/b]<?php$count= $_GET['id'];$name= $_POST['name'];$w= $_POST['w'];$h= $_POST['h'];$serialized_data = serialize (array ($count, $name, $w, $h));setcookie("mycookie[$count]", $serialized_data, time()+13600);echo "Opening was Added<br><br>";echo "$count";echo "<br><br>";echo "$name";echo "$w";echo "$h";echo "<br><br>";echo "<a href='index2.php'>Add another opening!</a><br>";echo "<a href='show.php'>Show!</a><br>";?>[b]Where the problem is when you click show (show.php) you see the serialized data. I am trying to restore the data with an unserialize (see below line 8), but when I add that line of code, my data disappears instead of being stripped of the serialization. When I remove line 8, the data displays serialized. So something is wrong, I guess with my unserialize method.[/b]<?phpif($_COOKIE["mycookie"]) {foreach( $_COOKIE[mycookie] as $key => $value){$value2 = unserialize ($value);echo "Number $key : Description $value2";} echo "<a href='index2.php'>Add Opening</a><br><br>";}else { print "No Items in your cart<br><br>"; echo "<a href='index2.php'>Add Opening</a><br><br>";}?> I have tried all weekend long and could use some help! Thanks - Late Nighter Quote Link to comment Share on other sites More sharing options...
Hooker Posted March 6, 2006 Share Posted March 6, 2006 try something like:[code]<?phpif($_COOKIE["mycookie"]) {foreach( $_COOKIE[mycookie] as $key => $value){$value2 = unserialize ($value);print_r($value2, true); //$value2 now contains output from print_recho "Number $key : Description $value2";}echo "<a href='index2.php'>Add Opening</a><br><br>";}else {print "No Items in your cart<br><br>";echo "<a href='index2.php'>Add Opening</a><br><br>";}?>[/code] Quote Link to comment Share on other sites More sharing options...
MrL8Knight Posted March 6, 2006 Author Share Posted March 6, 2006 Hey Hooker,Thanks for your response!I tried your code for the page 3 and still no data displaying. It will display the key data but still doesn't display the "value" data, if I remove the unserialize command it displays the data fine, but of course serialized. One other thing to note your code did work fine without any errors, just still can't see the data. Any other ideas?Thank you for your help!MrL8Knight Quote Link to comment Share on other sites More sharing options...
MrL8Knight Posted March 7, 2006 Author Share Posted March 7, 2006 I added a print_r($_COOKIE); at the beginning of the page Hooker provided me to display all my cookie values for diagnosis. Here is what my output looks like, I'm still missing the unserialized values, I'm wondering am I storing the values wrong on page 2?, or am I retreiving them wrong on page 3?....Array ( [Cart3] => [mycookie] => Array ( [1] => a:4:{i:0;s:1:\"1\";i:1;s:6:\"tester\";i:2;s:2:\"12\";i:3;s:2:\"12\";} [2] => a:4:{i:0;s:1:\"2\";i:1;s:7:\"tester2\";i:2;s:2:\"48\";i:3;s:2:\"48\";} [4] => a:4:{i:0;s:1:\"4\";i:1;s:5:\"test4\";i:2;s:2:\"23\";i:3;s:2:\"23\";} ) [count] => 4 [phpbb2mysql_data] => a:2:{s:11:\"autologinid\";s:0:\"\";s:6:\"userid\";s:1:\"2\";} [PHPSESSID] => 5c7ba3baf248de93aaf9ff3c7cc32702 ) Number 1 : Description Number 2 : Description Number 4 : Description Add Opening Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted March 7, 2006 Share Posted March 7, 2006 Use stripslashes on the serailized data before unserializing it.[code]<?php $value2 = unserialize(stripslashes($value)); ?>[/code]Ken Quote Link to comment Share on other sites More sharing options...
MrL8Knight Posted March 7, 2006 Author Share Posted March 7, 2006 Ok I finally figured this one out, first thank you to all that have helped me with this problem; I can’t express how much it is appreciated. Here are the 3 working pages, hope someone else finds this simple, PHP form based shopping cart usefull![b]Page 1 (index2.php)(the Form, which starts a cookie to keep an incremental count (Key) for each opening)[/b]<?phpif (isset($_COOKIE['count'])) { $count = $_COOKIE['count'] + 1;} else { $count = 1;}setcookie('count', $count, time()+13600);echo "$count";echo "<form action='add.php?id=$count' method='post'> <input name='name' type='hidden' value='$count'> Opening name<br> <input name='name' type='text' size='30'> </b></p> <p><b> Width<br> <input name='w' type='text' size='30'> </b></p> <p><b> Height<br> <input name='h' type='text' size='30'> </b></p> <p> <input type='image' src='../images/Start-Order.gif' name='submit' alt='Start Order'> <br> </p> </form>"; ?>[b]Page 2 (add.php)(the script to get and serialize data typed in the form and add it to the cookie)[/b]<?php$count= $_GET['id'];$name= $_POST['name'];$w= $_POST['w'];$h= $_POST['h'];$serialized_data = serialize (array ($count,$name,$w,$h));setcookie("mycookie[$count]", $serialized_data, time()+13600);echo "Opening was Added<br><br>";echo "$count";echo "<br><br>";echo "$name";echo "$w";echo "$h";echo "<br><br>";echo "<a href='index2.php'>Add another opening!</a><br>";echo "<a href='show.php'>Show Cart!</a><br>";?>[b]Page 3 (show.php)(the show cart page that checks to see if items are in the cart (or cookie) and if so, shows the unserialized data)[/b]<?phpif($_COOKIE["mycookie"]) {foreach( $_COOKIE[mycookie] as $key => $value){$value2 = unserialize(stripslashes($value));echo "<br>"; print_r($value2[0]);print_r($value2[1]);print_r($value2[2]);print_r($value2[3]);}echo "<br><br>"; echo "<a href='index2.php'>Add Opening</a><br><br>";}else {print "No Items in your cart<br><br>";echo "<a href='index2.php'>Add Opening</a><br><br>";}?>[b]Thanks again everyone… Cheers![/b]-MrL8Knight Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.