menios Posted December 9, 2007 Share Posted December 9, 2007 This is the Code for my cart.All works fine but one details spoils everything and i can't figure the mistake.When a new item is added to the cart there are 2 buttons next to it add and remove.All fine here but when i try to add a second item in the cart the add and remove buttons appear but my add button actually works as a remove. Any suggestions on what i m doing wrong? This is my functions [hr]<?php function writeShoppingCart() { $cart = $_SESSION['cart']; if (!$cart) { return '<p>Your Cart is Empty</p>'; } else { // Parse the cart session variable $items = explode(',',$cart); $s = (count($items) > 1) ? 's':''; return '<p>Your Cart contains <a href="cart.php">'.count($items).' book'.$s.' </a></p>'; } } function showCart() { global $db; $cart = $_SESSION['cart']; if ($cart) { $items = explode(',',$cart); $contents = array(); foreach ($items as $item) { $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1; } $output[] = '<form action="cart.php?action=update" method="post" id="cart">'; $output[] = '<table border="0">'; $output[] = '<tr>'; $output[] = '<th bgcolor=#62aac4><strong>Book</strong></th>'; $output[] = '<th bgcolor=#62aac4>Price</th>'; $output[] = '<th bgcolor=#62aac4>Quantity</th>'; $output[] = '<th bgcolor=#62aac4 colspan=3> </th>'; $output[] = '</tr>'; foreach ($contents as $pd_id=>$qty) { $sql = 'SELECT * FROM tbl_product WHERE pd_id = '.$pd_id; $result = $db->query($sql); $row = $result->fetch(); extract($row); $output[] = '<tr>'; $output[] = '<td align=center><strong>'.$pd_name.'</strong></td>'; $output[] = '<td align=center>£'.$pd_price.'</td>'; $output[] = '<td align=right ><input type="text" name="qty'.$pd_id.'" value="'.$qty.'" size="3" maxlength="3" /></td>'; $output[] = '<td align=right><i>£'.($pd_price * $qty).'</i></td>'; $total += $pd_price * $qty; $output[] = '<td align=center><button type="submit">Add</button></td>'; $output[] = '</form>'; $output[] = '<form action="cart.php?action=delete&pd_id='.$pd_id.'" method="post" id="cart">'; $output[] = '<td align=center><button type="submit" class="r">Remove</button></td>'; $output[] = '</tr>'; } $output[] = '</table>'; $output[] = '<p><pre><strong><i> Total: <big></i>£'.$total.'</strong></big></pre></p>'; $output[] = '</form>'; $output[] = '<pre> <a href="testform/forma.php" target="_top">Checkout</a></pre>'; } else { $output[] = '<p>Your Cart is empty.</p>'; } return join('',$output); } ?> And this is the cart [hr]<?php // Include MySQL class require_once('inc/mysql.class.php'); // Include database connection require_once('inc/cartcon.php'); // Include functions require_once('inc/functions.inc.php'); // Start the session session_start(); // Process actions $cart = $_SESSION['cart']; $action = $_GET['action']; switch ($action) { case 'add': if ($cart) { $cart .= ','.$_GET['pd_id']; } else { $cart = $_GET['pd_id']; } break; case 'delete': if ($cart) { $items = explode(',',$cart); $newcart = ''; foreach ($items as $item) { if ($_GET['pd_id'] != $item) { if ($newcart != '') { $newcart .= ','.$item; } else { $newcart = $item; } } } $cart = $newcart; } break; case 'update': if ($cart) { $newcart = ''; foreach ($_POST as $key=>$value) { if (stristr($key,'qty')) { $pd_id = str_replace('qty','',$key); $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart); $newcart = ''; foreach ($items as $item) { if ($id != $item) { if ($newcart != '') { $newcart .= ','.$item; } else { $newcart = $item; } } } for ($i=1;$i<=$value;$i++) { if ($newcart != '') { $newcart .= ','.$pd_id; } else { $newcart = $pd_id; } } } } } $cart = $newcart; break; } $_SESSION['cart'] = $cart; ?> <html> <head> <title></title> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div id="contents"> <h1>Your Shopping Cart</h1> <?php echo writeShoppingCart(); echo showCart(); ?> <p><a href="iframe.html" target="display">Continue Shopping</a></p> </div> </body> </html> Link to comment https://forums.phpfreaks.com/topic/80900-whats-wrong-here/ Share on other sites More sharing options...
koen Posted December 9, 2007 Share Posted December 9, 2007 I don't see a form with action=add? Link to comment https://forums.phpfreaks.com/topic/80900-whats-wrong-here/#findComment-410531 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.