Jump to content

My shopping cart doesn't add products correctly


cstjuste

Recommended Posts

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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.