cstjuste Posted November 2, 2009 Share Posted November 2, 2009 Hi Everyone, I've been working on this code for my shopping cart. The problem is that when I try to update the cart with additional items, it adds the items but also gives me a couple of error messages. For instance, if I have 1 of product A in my cart, and I want to have 3 instead of 1, it gives me a total of 4. Product A - 1 Product A - 3 When I try to remove the the excess product, it removes both line items out of my cart. I was trying to figure this out all day yesterday, but any help would be much appreciated. 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>'; foreach ($contents as $id=>$qty) { $sql = 'SELECT * FROM apple WHERE id = '.$id; $result = $db->query($sql); $row = $result->fetch(); extract($row, EXTR_PREFIX_SAME, 'ink'); $output[] = '<tr>'; $output[] = '<td><a href="cart.php?action=delete&id='.$id.'" class="r">Remove</a></td>'; $output[] = '<td>'.$lip.' '.$printerT.'</td>'; $output[] = '<td><input type="text" name="qty" value="'.$qty.'" size="3" maxlength="3" /></td>'; $total += $qty; $output[] = '</tr>'; } $output[] = '</table>'; $output[] = '<p>Total Quantity: <strong>'.$total.'</strong></p>'; $output[] = '<div><button type="submit">Update cart</button></div>'; $output[] = '</form>'; } else { $output[] = '<p>You shopping cart is empty.</p>'; } return join('',$output); } and here is the function that calls the query /** * Returns an instance of MySQLResult to fetch rows with * @param $sql string the database query to run * @return MySQLResult * @access public */ function query($sql) { if (!$queryResource=mysql_query($sql,$this->dbConn)) trigger_error ('Query failed: '.mysql_error($this->dbConn). ' SQL: '.$sql); return new MySQLResult($this,$queryResource); } } and here is the fetch function /** * Fetches a row from the result * @return array * @access public */ function fetch () { if ( $row=mysql_fetch_array($this->query,MYSQL_ASSOC) ) { return $row; } else if ( $this->size() > 0 ) { mysql_data_seek($this->query,0); return false; } else { return false; } } Notice: Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SQL: SELECT * FROM apple WHERE id = in /home/waldon/public_html/inc/mysql.class.php on line 109 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/waldon/public_html/inc/mysql.class.php on line 151 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/waldon/public_html/inc/mysql.class.php on line 167 Warning: extract() [function.extract]: First argument should be an array in /home/waldon/public_html/inc/functions.inc.php on line 29 Link to comment https://forums.phpfreaks.com/topic/179989-my-shopping-cart-doesnt-add-products-correctly/ Share on other sites More sharing options...
p2grace Posted November 2, 2009 Share Posted November 2, 2009 I would start by verifying the contents of the $contents array. The query fails because $id is empty, which means the contents of the array aren't correct. Link to comment https://forums.phpfreaks.com/topic/179989-my-shopping-cart-doesnt-add-products-correctly/#findComment-949553 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.